<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title><![CDATA[Unity Blog RSS Feed]]></title><description><![CDATA[Latest blog posts from Unity]]></description><link>https://unity.com</link><generator>RSS for Node</generator><lastBuildDate>Tue, 19 May 2026 03:07:22 GMT</lastBuildDate><atom:link href="https://unity.com/blog/feed" rel="self" type="application/rss+xml"/><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>Latest blog posts from Unity</itunes:subtitle><item><title><![CDATA[Turning purchase data into outcomes in mobile gaming: Unity and Attain’s partnership]]></title><description><![CDATA[Programmatic teams are expected to do more than drive reach and efficiency. You are measured on whether audience strategies actually move products off shelves and drive incremental sales. However, connecting impressions in environments like mobile gaming to verified purchase behavior is still difficult. Unity’s new partnership with Attain is designed to help close that gap.Attain provides verified real-time purchase data from its direct, permissioned relationship with more than 14 million consumers*. When combined with Unity’s global mobile gaming supply, this gives programmatic buyers a way to activate purchase-based audiences in premium gaming environments and measure how those audiences perform on real-world sales outcomes.Why this matters for programmatic buyersMost audience strategies start with a simple question: Which consumers are most likely to buy, and how do you reach them efficiently?In gaming, the opportunity includes:Players who are highly engaged and return frequentlyInventory that is viewable, brand-safe, and increasingly addressableBudgets that are shifting toward environments where attention is highThe ability to tie audience activation directly to sales, not just proxies such as clicks or completed viewsWhat the Unity and Attain collaboration enablesAdvertisers and agencies can activate purchase-based audiences in mobile gaming, and use Attain’s real-time, verified purchase data to reach high-intent consumers and optimize media effectiveness with live sales performance monitoring across Unity’s mobile inventory.For programmatic teams, this collaboration enables you to:Target audiences across approximately 256 million unique monthly active devices¹ running Made with Unity mobile apps in the U.S., based on real-time, verified purchase dataMeasure sales impact and incremental sales lift from mobile gaming campaigns on Unity inventoryAdjust and optimize media placement and creative strategies “in-flight” based on real-time sales signalsIf you’re exploring outcome-based buying strategies and want to understand how mobile gaming can contribute to incremental sales, talk to your Unity representative about activating Attain audiences and measurement offerings on Unity’s mobile inventory.Talk with a Unity representative today to learn more.Sources:1 - Apptopia, UAds. Disclaimer: This estimate is based on Apptopia data from December 2025, and unique device and installation level identifiers from internally available data (mobile and desktop devices only).* - Attain, internal data, 2026]]></description><link>https://unity.com/blog/attain-partnership-measuring-mobile-gaming-sales-outcomes</link><guid isPermaLink="true">https://unity.com/blog/attain-partnership-measuring-mobile-gaming-sales-outcomes</guid><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity for Humanity 2026 Winner Announcement]]></title><description><![CDATA[We are thrilled to introduce the 2026 Unity for Humanity Grant winners! This year, we recognize 10 winners and 3 honorable mentions, with recipients spanning eight different countries. The projects address complex global challenges aligned with the UN Sustainable Development Goals.With more than 515 applications received, this marks a second consecutive year of record submissions, reflecting the growing global momentum behind using real-time 3D to drive positive change.We are proud and honored to allocate a prize pool of $600,000 USD from the Unity Charitable Fund to support a roster of projects which bring impactful, valuable, and viable contributions and demonstrate innovative technological and content solutions to address important problems. Funding can be allocated towards the development of the project, building a working prototype, or marketing and distribution.Creators are changemakers and Unity is the platform for bringing their vision for a better world to life. We hope that our funding accelerates their progress and helps drive lasting real world impact.Join us to celebrate the winners!Congratulations to all of this year’s winners and honorees! We are excited to follow their journeys and share more about their groundbreaking projects. Join our upcoming Unity for Humanity livestream on YouTube (or simulcast to Twitch) on Thursday, May 21st from 12-1pm Eastern Standard Time to hear directly from the winners and learn more about their work. Click through to the Youtube event and select 'notify me' to get a reminder.Meet the 2026 Grant Winners (Listed alphabetically by project title)Amaru Reimagined (Six Wing Studios, Inc) - An expanded remake of the beloved title Amaru: The Self-care Virtual Pet. Amaru Reimagined builds beyond Amaru’s “self-care app meets pet game foundation” with endless multiplayer play, seasonal events, localization, and more. Amaru supports players in forming self-care habits like mindfulness meditation and gratitude journaling that help build resilience to these conditions.What we liked about this project: Amaru has a proven track record, with 1MM downloads and university study showed that playing Amaru reduces anxiety and depression in players at clinically meaningful levels. We like how the studio is taking all the learnings from the existing iteration and applying them to the remake, for the purpose of making it financially sustainable, continuing to serve its large community of users, and expanding its beneficial reach even further.Country: USABalboa Park Alive! (Arizona State University): Balboa Park Alive! immerses families in a journey through one of America's most biodiverse regions, where children plant native gardens, release endangered butterflies from their hands, and see firsthand how climate change reshapes local ecosystems. A mobile AR app and companion storybooks with AR-activated content extend the experience from park to home, supporting caregiver-mediated informal learning through play.What we liked about this project: The app is free, mobile-first, and built for informal settings: parks, backyards, living rooms. It also widens access to environmental literacy for families often left out, those without proximity to museums or structured programming.Country: USAFuture Mountain (Bren School of Environmental Science, University of California, Santa Barbara) - An interactive gamified visualization tool that translates complex Earth System Model data into an explorable landscape, allowing non-experts to view how water in streams and groundwater, fire regimes, and vegetation in their local environment interact and respond to climate at different time and spatial scales. By turning visible and invisible environmental processes into playable spatial narratives, the project builds climate literacy, fire risk awareness, and promotes public engagement with the scientific research that supports climate adaptation and risk management choices.What we liked about this project: We liked how it originated from the scientific field and has the goal of turning complex data into accessible knowledge. It aims to improve climate literacy for non-experts, support systems-level understanding of how climate, vegetation, fire and water co-evolve, enabling informed community dialogue around wildfire, floods and droughts.Country: USAHandSolo: Play your way back (University of San Martín) - a VR rehabilitation game that helps chronic stroke survivors regain lost hand dexterity using motor training backed by scientific research. Affordable and designed for use at home, it makes high-quality therapy accessible beyond specialized clinics, democratizing access to recovery.What we liked about this project: Stroke is a leading cause of long-term disability, with impaired finger dexterity among its most limiting consequences, and this game’s core innovation is the delivery of biologically timed rehabilitation at home. The Unity for Humanity grant funding will enable them to transition to a clinically deployable product within the public healthcare system.Country: ArgentinaI NEED SPACE (Khalayan Arts) - The game is artfully designed to be a reflection of unattractive environmental issues such as climate change, coastal fracking, deforestation, waste management challenges - all woven into the fabric of a cautionary tale, with the ultimate aspiration of encouraging a significant portion of our audience into adopting eco-friendly lifestyles and participating in environmental initiatives.What we liked about this project: The studio has an established track record of impact-oriented game development (we supported another project of theirs, Samudra, in 2020) and lives what it preaches through multiple other initiatives it organizes or participates in. We are thrilled to see their evolution into a beacon of sustainability initiatives in Indonesia with their gorgeous looking new project.Country: IndonesiaNoWay! (Patouch Association) - This educational video game helps young people understand violence, recognize their role in a conflict situation, and respond appropriately. Through immersive and interactive scenes, it combines prevention, learning, and reflection, while inspiring players to pursue further training.What we liked about this project: The studio’s decades-long practical experience with highly engaging work in violence prevention, that is underlying the game - including playful educational tools, tailored workshops, a confidential helpline, a print magazine, and more. The game aims to bring the benefits of their successful approach to an international audience, thus expanding its impact.Country: SwitzerlandProject Ember (Buckinghamshire Health Research & Innovation Centre) - a Mixed Reality platform that democratizes "gold standard" burn management training by replacing £120,000 physical mannequins with free, scalable digital simulations. It is the first medical training tool to feature a dynamic skin-tone engine, eliminating diagnostic bias and ensuring equitable life-saving care for the global majority.What we liked about this project: The smart application of real-time 3D technology to solve a problem in a way that is both better and cheaper. Instead of relying on expensive props providing a limited training scenario, the mixed reality dynamic system allows the creation of unlimited training scenarios for realistic digital burns that vary by skin tone, age, depth, type, location, etc., directly addressing a major global health and training gap.Country: United KingdomMonster Walk (Talofa Corporation) - a “walk-to-play” game which turns your daily steps into fuel for your journey through a world on the rise from ruin. The creators are cultivating a community that integrates gaming, wellness, and social connection to foster healthier lifestyles. This dual-world approach - where physical activities translate into virtual progress - encourages consistent engagement, making exercise feel more rewarding and less daunting.What we liked about the project: Gamifying the healthy behavior of spending time outside and getting your steps in - and in a way that was has proven success: they exceeded 1 billion steps taken by players in the first 2 weeks of launch. The Unity for Humanity grant funds will be used to refine the platform and expand the content with mini games and new fitness types.Country: USAReclaim! Azhe-giiwewining (returning home) (Grassroots Indigenous Multimedia) - As Miskwaa, forge a path through a forest teaming with spirits, stories, and intricate puzzles inspired by Ojibwe (Native American) culture and language in this all-new point and click adventure. It invites you to immerse yourself in a world where language is the key to coming home, and the game is playable in the indigenous language, Ojibwemowin or Anishaanbemowin, one of the three largest indigenous language groups in North America.What we liked about the project: This game is aimed at preserving an indigenous language threatened by extinction. Only by speaking the language with the NPCs in the game, and listening to their responses and pointers, will the player be able to solve the puzzles. The studio has also developed a free language learning tool, and has repurposed scripts and assets from the game into the lessons in the tool. Unity for Humanity grant funds will help build a mobile version of the existing PC game.Country: USAWe Grew Up in War (Charles Games s.r.o.) - We Grew Up in War is a powerful testimony based on real stories of children who lived through wars in Ukraine and Bosnia. Experience their world shaped by fear and imagination and witness their memories in all their raw, haunting truth.What we liked about this project: This game takes the perspective of children, and takes a different focus - one of resistance and resilience and hope.The well established track record of the studio with games aimed at social and historical educational impact, driven by a founder who holds a PhD for his work on the transformative power of video games.Country: Czech RepublicHonorable MentionsLSI Adaptive Sports League (Limbitless Solutions University of Central Florida): They are developing the first adaptive digital sports platform powered by facial muscle flex, enabling individuals with progressive neuromuscular conditions to compete, train for real-world wheelchair independence, and reclaim their role as athletes regardless of physical decline.What we liked about this project: Their student development team includes designers with personal experience developing for mobility devices in clinical settings. This lived experience ensures they address nuanced accessibility that outside designers often miss, moving beyond optics to functional, insider-led innovation.Country: USAStoriweave (Organized Khaos): StoriWeave is an innovative "physical-digital" learning platform. Their debut story, Kuukua's Science Adventures: Harnessing the power of the Sun, is an interactive story, where kids can play the story and make different decisions to learn, a physical deck of cards, children (ages 6-13) can arrange to build a solar-powered fan in AR, which when scanned with their free Unity-powered AR app, the cards trigger interactive 3D animations, turning any tabletop into a functioning solar farm, and finally physical science kits that kids can put together to make their own fans all from one story.What we liked about this project: the StoriWeave app is completely free, meaning kids who cannot afford the AR cards can still enjoy the free interactive stories on the platform and can learn with or without the AR experience, and Organized Khaos is a Ghanaian-led studio building specifically for African children.Country: GhanaUnimora - Building Empathy and Attraction for the Future of Care (Mindflight 7): Unimora is a high-agency VR platform that allows students to inhabit the sensory reality of aging before mastering the life-changing skills of a professional career. By transforming clinical tasks into human-centered Unity-based interactions, they inspire Gen Z to solve the global care crisis with confidence and compassion.What we liked about this project: The global aged care sector faces a critical worker shortage because young people cannot "see" themselves in the role. Unimora changes this by providing an immersive and rewarding career experience.Country: AustraliaIf you are interested in the Unity for Humanity Program, please join our Discord channel and sign up to receive updates, or view our website.]]></description><link>https://unity.com/blog/unity-for-humanity-2026-winner-announcement</link><guid isPermaLink="true">https://unity.com/blog/unity-for-humanity-2026-winner-announcement</guid><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Architecting Albion Online: How Sandbox Interactive built a PvP MMO to scale across platforms]]></title><description><![CDATA[Officially launched in 2017, Albion Online is one of the longest-running MMOs built with Unity. Sandbox Interactive began developing the game in 2012 with the ambitious goal of creating a hardcore, PvP-focused online game. As a small independent team they needed a strong technical foundation that could support large numbers of concurrent players and deliver performant gameplay as Albion Online expanded to additional platforms.Today, Albion Online operates seamlessly across PC, Mac, Linux, iOS, Android, and most recently, Xbox Series X|S via Xbox Game Pass. We interviewed the studio’s engineering leads to dig into the game’s technical foundations and hear about the player-first development approach that has kept this cross-platform MMO going for a decade.One build to rule them allA major pillar of Albion Online’s longevity is its seamless cross play. Players can easily switch between mobile, desktop, and consoles using one login, engage in large-scale PvP combat across platforms, and enjoy regular content updates that hit all supported devices simultaneously. To enable this consistent experience, Sandbox Interactive operates the game from a single Unity project.“We ship from one Unity project with platform-specific UI profiles,” explains principal game engineer Johannes Kosanetzky. “In the Editor, I can flip to our mobile UI so we test layouts, navigation, and performance without leaving the desktop. Input is abstracted and with Unity Remote we validate touch quickly – so iteration stays fast.”When designing new features, the team takes a “desktop-first” approach to ideation, but Android serves as their absolute performance baseline. To maintain a unified experience, Albion Online’s gameplay logic remains identical across all platforms; only the visual fidelity scales. Currently, the mobile build turns off post-processing and utilizes forward rendering, while the desktop version relies on deferred rendering. Looking ahead, Sandbox Interactive plans to transition from Unity's Built-In Render Pipeline to the Scriptable Render Pipeline (SRP) to better tune graphics per device.To maintain stability across their platform builds, the team relies on an extensive CI/CD pipeline. Jenkins provides daily builds for every platform, while built-in validation tools catch missing references, mesh size limits, and game-data errors before they become an issue. Every developer can run the full server-client stack locally, drastically speeding up feature work and debugging.Decoupling simulation from visualizationIn a combat-heavy, skill-based MMO with potentially hundreds of players battling on screen in a single instance, performance is paramount; players shouldn’t feel like they’re at a disadvantage on one platform over another. To ensure smooth and fair gameplay, Sandbox Interactive made the crucial early decision to keep core game logic strictly separate from what the player sees on screen.“Our core simulation layer is completely independent of Unity,” says principal game engineer David Eibensteiner. “We even run our own bots locally to simulate large-scale battles for testing. Unity is used heavily for input handling and rendering.”In practice, the game client is essentially broken into three distinct layers:The input layer determines what action is triggered based on the specific platform.The simulation layer predicts that action on the client while sending updates to the authoritative server.The visualization layer displays those actions and state changes client-side.This decoupled Model-View-Controller (MVC) architecture ensures that client-side rendering never bottlenecks the underlying game logic.Bringing the battle to consolesHaving already done the hard work of optimizing Albion Online for mobile devices, Sandbox Interactive were ready to hit the ground running on console development. However, console architecture still came with a few surprises.“On consoles, one big difference is stability rules: the platform can crash on errors that would not be fatal elsewhere,” notes Kosanetzky. “Hardware-wise, consoles offer more powerful GPUs but weaker single-thread performance compared to high-end PCs. To make best use of that, we’re moving more work off the main thread into worker threads or directly onto the GPU. On memory, we’re less constrained than on mobile, which gives us room for larger caches and higher-quality assets.”Beyond raw performance, balancing cross-platform PvP is a monumental task where the health of the game is always at stake. In certain situations (for example, FPS games), players using mouse-and-keyboard setups can be said to have an advantage over players using gamepads, and touchpad controls add another layer of balancing complexity.“Different input methods are simply better at different things,” Eibensteiner explains. “On mobile and controller, character movement and positioning can feel more natural, while precise targeted or skill-shot abilities tend to work better with a mouse and keyboard.” To solve this, Sandbox Interactive designs controls from scratch for every new platform rather than simply porting UI layouts, ensuring each input method feels natural.Building a dedicated player communityAlbion Online’s solid technical foundations make the game run, but its passionate community is what keeps it thriving. Sandbox Interactive credits the game’s long success to actively involving players and content creators in development decisions. By getting input on new features from some of their most dedicated players early, they can refine and improve them before they go out to the broader playerbase. However, Sandbox still makes the final call on what ends up in the game.“Players are great at touching on problems – or symptoms of underlying problems – but the right solution is usually something different from their suggestion. Our job is to figure out what’s actually bugging them,” says Eibensteiner.In one example, Eibensteiner shared how community growth and feedback led the studio to adapt Albion Online’s server infrastructure for a more global playerbase. Until that point, Albion Online had operated on a single global server in the United States, but as the game grew in popularity, Sandbox began to get feedback about the quality of the experience from their global audience.“In order to provide a better experience to more players and to allow us to make the combat even more reactionary, we decided to split up the servers, initially adding one in Asia followed by one in Europe,” he says. “While it fragmented the existing community slightly, it also resulted in a massive boost in player numbers and drastically improved the latency for Albion Online players worldwide.”Takeaways from Albion Online’s long reignAlbion Online’s success demonstrates how technical vision and a deep commitment to the player community combine to create longevity. By building a unified, scalable architecture on Unity – from a single project to a decoupled simulation layer – Sandbox Interactive enables fair, high-performance PvP at scale across mobile, desktop, and console. This solid technical foundation is sustained by continuous engagement with their dedicated playerbase. “I think the most important thing you can do to keep a long-running game successful is to actively and consistently improve it by listening to your community, while also expanding its reach to as many platforms as make sense for the game,” says Eibensteiner.Albion Online is available on PC, MacOS, Linux, Android, iOS, and Xbox via Xbox Game Pass. Explore more Made with Unity games on our Steam Curator page, and check out more stories from Unity developers on the Unity Blog and Resource Hub.]]></description><link>https://unity.com/blog/albion-online-cross-platform-pvp-mmo-architecture</link><guid isPermaLink="true">https://unity.com/blog/albion-online-cross-platform-pvp-mmo-architecture</guid><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[What is Unity Pipeline Automation?]]></title><description><![CDATA[Unity Pipeline Automation is a Unity Cloud service that automates and orchestrates complex, compute‑intensive pipelines for real-time 3D production and live operations.Building real-time 3D experiences requires massive amounts of data processing, complex file conversions, and intricate toolchains and data pipelines. Technical teams often spend significant time on repetitive, compute-intensive pipeline tasks that drain local resources and impede production velocity. Modern development environments demand scalable systems that handle these heavy workloads efficiently while integrating seamlessly with existing technology infrastructure.This is where Unity Pipeline Automation (UPA), a cloud-based pipeline automation service, delivers value at scale.This guide examines how UPA enables teams to streamline workflows in real-time 3D production and live operations. We analyze its core architecture, examine key features, and show how it optimizes development cycles for enterprise-scale projects.Key takeaways: Unity Pipeline AutomationUnity Pipeline Automation is a Unity Cloud service that automates compute‑intensive pipelines for real-time 3D production and live operations.It lets teams design custom, parameterized workflows that orchestrate Unity services and third‑party tools in a single, cloud‑based pipeline.By offloading heavy processing to the cloud, Unity Pipeline Automation frees local hardware and accelerates development and release cycles.Common use cases include CAD data translation, automated asset processing, and integration pipelines for validation and notifications.Unity Pipeline Automation overviewUnity Pipeline Automation is a Unity Cloud service that lets technical teams create, trigger, and monitor custom pipelines for real-time 3D production and live operations. It functions as a centralized pipeline orchestrator for demanding computational tasks, integrating both native Unity capabilities and third-party services into cohesive workflows.UPA addresses bottlenecks in repetitive and resource-intensive workflows. Real-time 3D production and live operations require continuous iteration, asset optimization, and data translation. By migrating these compute-intensive operations to cloud infrastructure, Unity Pipeline Automation frees up local hardware resources and enables engineers and artists to concentrate on creative problem-solving rather than monitoring processing queues.Whether converting extensive CAD assemblies into optimized formats or managing complex live operations updates, Unity Pipeline Automation provides the cloud infrastructure required to automate processes at enterprise scale with enterprise-grade security and reliability.Use cases for Unity Pipeline AutomationTechnical teams across industries leverage Unity Pipeline Automation to automate and scale highly custom, complex workflows. With UPA, expert users can reduce hours spent on asset prep, management, and collaborative tasks, and teams can scale small bottlenecked 3D programs to essential enterprise-wide programs.A prevalent application involves automating CAD data translation. Teams can scale and democratize the power of Unity's Asset Transformer solution with automated asset prep workflows. With Unity Pipeline Automation, pipelines can be configured to automatically retrieve engineering models, process them for USD format translation, and seamlessly upload optimized assets into Unity Asset Manager for immediate real-time simulation use.Teams also implement advanced asset management operations, building workflows that execute custom data processing scenarios, such as running specialized Python scripts on 3D geometry to tag and categorize specific sub-components, without manual intervention, using Unity Pipeline Automation’s cloud-based execution.Collaboration pipelines are another common implementation. Using Unity Pipeline Automation, teams establish workflows that monitor specific development process events, execute automated validation checks on 3D assets, and automatically notify teams through third-party messaging systems with detailed result analysis.Key features of Unity Pipeline AutomationUnity Pipeline Automation delivers a set of capabilities engineered specifically for enterprise technical teams' needs. The following features make it a key tool for scaling real-time 3D production environments and live operations pipelines.Custom workflowsTeams maintain complete control over automated task execution. Unity Pipeline Automation enables teams to construct custom action sequences tailored to organizational requirements. Rather than constraining teams to inflexible, predetermined processes, you can define dependencies that accurately reflect production pipeline architecture.Parameterization for reusabilityHard-coded values create fragile pipelines that fail when project parameters evolve. Unity Pipeline Automation addresses this through pipeline-level parameterization. Teams can construct adaptable pipelines that accept variable inputs, such as specific file identifiers or configuration strings, when they trigger a run. The pipeline dynamically substitutes placeholder references with concrete values during execution, enabling identical workflows to process diverse datasets without underlying logic modifications and supporting scalable pipeline automation across projects and teams.Extensive integration capabilitiesProduction environments typically depend on numerous specialized tools. UPA integrates with Unity Virtual Private Cloud (VPC) deployments, facilitating secure resource and data management. Additionally, it connects with third-party systems, enabling external event triggering or data transmission to messaging systems, ensuring effective pipeline communication with broader enterprise architecture.Advanced workflow logicComplex scenarios require more than linear automation. Unity Pipeline Automation supports advanced logic patterns, including conditional steps that direct execution flow based on specific criteria. It also features dynamic steps that automatically generate parallel tasks at runtime based on input arrays, enabling variable-size dataset processing without manual intervention or configuration updates.How Unity Pipeline Automation worksExamining Unity Pipeline Automation's underlying architecture reveals its flexibility for technical workflows.Pipeline architectureConsider a pipeline as a directed graph where each node represents a specific step or action. Each edge represents a dependency between steps. These actions encompass operations from downloading large datasets from Unity Asset Manager to executing custom Python scripts through microservices. Entire pipelines can be nested within other pipelines, creating modular pipelines that treat complex workflows as single, reusable nodes within larger systems.Execution flow and dependenciesTeams control node execution order through dependency definition. By default, steps without defined dependencies execute in parallel, maximizing computational efficiency and reducing overall processing time. When sequential execution is required, linking is straightforward. If "Step B" requires completed data from "Step A", Unity Pipeline Automation enforces this sequential execution, ensuring prerequisite completion before subsequent phases begin.Data flow and output referencesActions generate data that subsequent steps require to run. Pipelines manage this through a reference syntax that creates continuous data flow between nodes. Output generated by one action automatically becomes available as input variables for another, enabling highly complex, multi-stage processing workflows where assets undergo continuous refinement and transformation as they progress through the graph.Benefits for technical teamsImplementing Unity Pipeline Automation changes how teams approach real-time 3D development and operations.Enhanced operational efficiencyBy migrating compute-intensive tasks to cloud infrastructure and automating them with Unity Pipeline Automation, teams reduce the processing burden on local workstations. Engineers and artists no longer experience productivity losses waiting for heavy CAD file optimization or lightmap-baking jobs.Enterprise-wide scalabilityAs project complexity increases, automation scales proportionally. With Unity Pipeline Automation, dynamic task generation and parallel processing capabilities enable handling much larger datasets without proportional increases in processing time or manual oversight.Strategic flexibilityProduction requirements evolve continuously. In Unity Pipeline Automation, heavily parameterized and modular pipelines enable rapid workflow adaptation to new project requirements. Teams avoid infrastructure reconstruction when stakeholders request different output formats or target platforms.Sustainable maintainabilityVisualizing automation as directed graphs simplifies debugging and maintenance. When steps fail, teams can precisely identify problematic nodes. Pipeline nesting and reusability promote cleaner architecture, reducing duplicated effort across projects and teams.Getting started with Unity Pipeline AutomationImplementing scalable, cloud-based automation in production environments requires access to Unity Pipeline Automation.Access UPA from the Unity Dashboard by navigating to the Products section and selecting Tools. From there, teams can access the interface to begin developing initial pipelines.We recommend reviewing the official Unity Pipeline Automation technical documentation to understand reference syntax and available native actions. You can also check out this short tutorial video. Begin by constructing simple, two-step pipelines, such as asset downloading and notification sending, before moving on to complex conditional logic and nested workflows.ConclusionUnity Pipeline Automation helps technical teams manage the most demanding workflows in real-time 3D production. Through robust custom workflows, reliable data flow, and cloud scalability, it streamlines complex data processing workflows.Eliminate repetitive task bottlenecks in production environments. Explore Unity Pipeline Automation today and establish the scalable, efficient infrastructure your team requires to deliver high-quality real-time experiences.Unity Pipeline Automation FAQsQ1. What is Unity Pipeline Automation?Unity Pipeline Automation is a Unity Cloud service that automates and orchestrates complex, compute‑intensive pipelines for real-time 3D production and live operations. It lets technical teams create, trigger, and monitor custom cloud-based workflows that connect Unity services and third-party tools.Q2. What can Unity Pipeline Automation be used for?Unity Pipeline Automation is commonly used to automate CAD data translation, large-scale asset processing, and collaboration workflows. Teams can build pipelines that retrieve engineering models, convert them into optimized formats like USD, run custom Python scripts on 3D geometry, and send validation results or notifications through third-party messaging systems.Q3. How does Unity Pipeline Automation work?Unity Pipeline Automation represents workflows as directed graphs, where each node is a step and each edge defines a dependency. It supports parameterized inputs, conditional logic, and dynamic steps that generate tasks at runtime. Actions can run in parallel when there are no dependencies, allowing pipelines to process large datasets efficiently in the cloud.Q4. How do I get started with Unity Pipeline Automation?You can access Unity Pipeline Automation from the Unity Dashboard by navigating to the Products section and selecting Tools. Start with simple, two-step pipelines, such as downloading an asset and sending a notification, then incrementally add conditional logic, dynamic steps, and nested pipelines as your workflows evolve. Reviewing the official Unity Pipeline Automation technical documentation will help you understand available actions and reference syntax.]]></description><link>https://unity.com/blog/automating-3d-production-pipelines-with-unity</link><guid isPermaLink="true">https://unity.com/blog/automating-3d-production-pipelines-with-unity</guid><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making fire feel alive: Real-time fluid simulation in Ignitement]]></title><description><![CDATA[In today’s guest post, solo dev Sørb breaks down the technical artistry behind the impressive fire and lava VFX in his upcoming action roguelite, Ignitement.The first thing you notice when looking at Ignitement is the VFX. There’s something immediately different about them, especially the fire. It doesn’t just look animated, it feels alive, reactive, and deeply integrated into the world.So what’s going on under the hood?Why you should care about fire VFXFire, and fluid-like effects in general, are notoriously difficult to get right in games. Traditional particle systems can look great, but they often lack true interaction with the world. On the other end of the spectrum, full 3D simulations are usually far too expensive for real-time gameplay.A few games have explored fluid simulation as a core mechanic. In Little Inferno by the Tomorrow Corporation (above), fire behavior is central to the experience, while Steve Mason’s Plasma Pong (below) builds its entire gameplay around reactive, flowing motion. These examples highlight how powerful fluid-based systems can be when they directly influence gameplay.The core ideaInstead of relying on particle systems, Ignitement uses a fully dynamic, real-time fluid simulation.At first glance, this might sound expensive.“But doesn’t that just set your PC on fire and tank performance?”At least not the hardware.The simulation is entirely 2D and runs through Graphics.Blit, updating a small set of textures (primarily 1024×1024 and 512×512). In practice, this makes it comparable in cost to a few post-processing effects.Another deliberate choice was to stick with fragment shaders instead of compute shaders. This lets the system take advantage of built-in texture filtering and interpolation, while also keeping compatibility high, even on older hardware or potential console targets.To make things easier to follow, we can break the system into three parts:SimulationRenderingLightingFluid simulation breakdownAt its core, the system is a standard fluid simulation implemented entirely via Graphics.Blit passes. The simulation operates on several textures, each representing a different physical property:Density (1024×1024, RGBA half) This is your smoke, everything that makes the air feel thick and visible.Velocity (512×512, RG half) This controls how things move. If something flows, drifts, or swirls, this is why.Temperature (1024×1024, single-channel half) Determines how hot different regions are.Reaction (1024×1024, RGBA half) This is where the actual fire lives, its intensity, spread, and behavior.Keeping this structure in mind, the fluid solver can be outlined with this pseudo-code:The reaction data even escapes the GPU from time to time. It’s downsampled and read back on the CPU to drive gameplay effects like damage. So yes, the fire doesn’t just look dangerous, it actually is!The simulation domain itself isn’t fixed in the world. Instead, it follows the camera and shifts as the player moves. This creates the illusion of an endless, continuous simulation, even though only a relatively small region is actually being computed at any given time. Smoke everywhere, cost nowhere.RenderingOnce all that data is in place, the next step is making it look like something you’d actually want to stare at.FireFire is rendered from the reaction texture, which is treated a bit like a heightmap. A parallax-style trick in the fragment shader gives it a pseudo-3D look, adding depth without the cost of true volumetrics.SmokeSmoke and fog come mostly from the temperature information. These are interpreted in the shader to produce soft, evolving shapes that feel surprisingly volumetric for something that’s technically just a couple of textures being pushed around.EmbersAnd of course, no fire is complete without embers.These are GPU-driven particles that sample the velocity field, meaning they naturally follow the flow of the simulation. No extra logic needed, they just go with the flow (literally).These ember particles are updated and advected using a custom GPU implementation (no Shuriken, no VFX Graph). So just a ComputeBuffer for all the particle data, a ComputeShader.Dispatch call to update them, and a Graphics.DrawProcedural call to render them to the screen.LightingCalculating the light mapLighting is handled using a simple trick that ends up doing a lot of heavy lifting.The reaction texture is downsampled and blurred, turning it into a dynamic light map. It’s not physically accurate, but it doesn’t need to be. It just needs to look right!Applying lighting to the environmentWhen rendering objects, lighting comes down to a single texture lookup in a custom shader.Instead of sampling directly at the surface, the lookup is nudged slightly along the surface normal: 

worldPosition + worldNormal * cThis tiny offset goes a long way. It creates the impression that light is coming from the environment, giving surfaces a convincing sense of depth and directionality.All of that, from one texture sample. Not bad.If you want to know the details, here is the shader-function I use:I just put this function and all needed uniform variables in a .cginc file and conveniently use it in any shader that wants to read from the light map.Extending the light map beyond lightingOne of the nicest side effects of this setup is that the light map isn’t just for lighting.In Ignitement, parts of the UI actually use it as well. Elements with normal maps sample the light map to fake reflections. For example, the glass of the health container picks up the surrounding fire, making it feel connected to the world instead of just sitting on top of it.This also opens the door for more unusual effects.In one area, the environment is made up of “flesh walls” (because why not?). These use the light map to control how strongly they wiggle. The more intense the nearby fire, the more the walls react, giving the impression that the environment itself is alive and not particularly happy about being on fire.Even better, this is all done in the vertex shader, making it extremely cheap for something that looks this dynamic.How do fire VFX affect gameplay?Visuals are nice, but a good VFX system alone doesn’t make a good game. In Ignitement, fire directly affects gameplay: any enemy touching it receives a burning debuff that deals damage over time.To make this work, the simulation data has to be available on the CPU. Each frame, the reaction texture is downsampled and read back using AsyncGPUReadback.RequestIntoNativeArray. Instead of doing expensive per-object queries on the GPU, the system reads the texture once and performs cheap lookups on the CPU for every enemy. Using a simple threshold, this effectively behaves like a single, highly dynamic collider that perfectly matches the shape of the fire at any given moment.Limitations and trade-offsOf course, this approach isn’t perfect.Because the simulation is 2D, anything happening vertically is more of an approximation than a physically correct solution. Also, shifting the simulation domain requires a bit of care to avoid visible seams or popping.That said, these trade-offs are very intentional. They keep the system fast, scalable, and widely compatible, while still delivering results that feel rich and reactive.Key takeaways2D fluid simulations can go a lot further than you might expectReusing simulation data is where a lot of the magic happens“Looks right” often beats “is physically correct”GPU-to-CPU readback is perfectly viable when kept smallOne well-designed system can drive visuals, gameplay, and UI all at onceBy building everything on top of a shared fluid simulation, Ignitement ends up with a cohesive visual style where fire, lighting, UI, and even parts of the environment all speak the same language.The result isn’t just better visuals, it’s a world that feels more connected, more reactive, and more alive.And all of that starts with a few textures, a couple of shaders… and setting everything on fire.If you like fluid simulation and survivor-likes / roguelikes feel free to wishlist Ignitement on Steam and join the Discord. Explore more Made with Unity games on our Steam Curator page, and check out more stories from Unity developers on the Unity Blog and Resource Hub.]]></description><link>https://unity.com/blog/real-time-fluid-simulation-fire-vfx-ignitement-breakdown</link><guid isPermaLink="true">https://unity.com/blog/real-time-fluid-simulation-fire-vfx-ignitement-breakdown</guid><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Advertise across EEA with confidence: Unity becomes one of the first in-game ad networks to join IAB Europe's Transparency & Consent Framework]]></title><description><![CDATA[We’re excited to announce that Unity is now an approved participant in IAB Europe’s Transparency & Consent Framework (TCF), the industry-standard solution for compliant, transparent data use across the digital advertising ecosystem.What is TCF?The TCF is a voluntary framework developed by IAB Europe to help technology providers, publishers, and advertisers facilitate compliance with certain provisions of the ePrivacy Directive and the GDPR. It standardizes how consent signals are collected, communicated, and respected across digital advertising, giving users clear choices about their personal data while helping partners operate with confidence.What this means for your campaigns in EEAFor those activating in European markets, Unity's TCF participation means you can reach our engaged mobile gaming audiences through TCF-verified pipelines that align with industry GDPR compliance standards end to end. For advertisers and agencies, that translates to consent-verified inventory, standardized consent signals across partners, greater transparency into how user data is processed, and reducing compliance complexity across your EEA buys.By joining the TCF as a registered vendor, Unity reaffirms our commitment to:Transparency: Aligning with industry-wide standards for consent and data processing disclosures.Compliance: Supporting GDPR-aligned user consent flows and interoperability with TCF-enabled partners.Trust: Building confidence with developers, advertisers, and audiences across European markets.“Joining the Transparency & Consent Framework marks an important step in Unity’s ongoing work to support privacy, transparency, and compliance across digital experiences,” said Chris Feo, SVP of Programmatic at Unity. “We look forward to contributing to a more unified, user-centric standard for consent across Europe.”As the EU’s data privacy landscape continues to evolve, Unity remains focused on building solutions that help companies scale responsibly and transparently.]]></description><link>https://unity.com/blog/unity-joins-iab-europe-tcf-compliant-data-use-advertising</link><guid isPermaLink="true">https://unity.com/blog/unity-joins-iab-europe-tcf-compliant-data-use-advertising</guid><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: March 2026 in review]]></title><description><![CDATA[March is always a busy month in games between the Game Developer’s Conference, the Steam Spring Sale, and Steam Next Fest. In addition to hundreds of incredible Next Fest demos, we also saw the launch of many top-tier games, including Christoffer Bodegård’s narrative RPG Esoteric Ebb (read his guest blog here),  Homura Hime from Crimson Dusk, and RACCOIN: Coin Pusher Roguelike from Doraccoon. And let’s not forget the indie developers who won big at the Independent Games Festival awards this year…2026 IGF awardsA round of applause for this year’s IGF finalists and winners, including the games made with Unity:Titanium Court, AP Thompson, Fellow Traveler (Seumas McNally Grand Prize, Excellence in Design)Baby Steps, Gabe Cuzzillo, Maxi Boch, Bennett Foddy, Devolver Digital (Excellence in Audio)Eclipsium, Housefire, CRITICAL REFLEX (Excellence in Visual Art)HORSES, Andrea Lucco Borlera, Santa Ragione (Nuovo Award)Made with Unity Steam Curator PageBe sure to stay up to date with the latest Unity creations on Steam by checking out our Steam Curator page.Games made with Unity: March 2026Want your next game to be included in our release round-up? Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in March 2026, either into early access or full release. Add to the list by sharing any that you think we missed.ActionOver the Top: WWI, Flying Squirrel Entertainment (March 6)AI LIMIT - Eirene's Furnace of War, Sense Games (March 27)RUSHING BEAT X: Return Of Brawl Brothers, CITY CONNECTION (March 19)Subsequence, Zoemi Games (March 13)Vellum: Raid Night Study Hall, Alvios Games (March 9)Cargo Hunters, Order of Meta (March 9 – early access)Mirage 7, Drakkar Dev (March 6)Banquet for Fools, Hannah and Joseph Games (March 5)Genome Guardian 2, Alpherior (March 5 – early access)Homura Hime, Crimson Dusk (March 4)Bullet Heaven / Bullet HellRoyal Revolt Survivors, Team Warriors, (March 16)Net.Attack() - Code or Die!, ByteRockers' Games (March 12)Mech Fortress, Some Sugar Studio (March 5)Chickenauts, SneakyBox, Kautki Cave (March 3 – early access)Cards, dice, and deckbuildersBLOODLETTER, ALDAMAMI GAMES (March 30 – early access)Rabbit Samurai, Zerterek (March 28)Deckland, JellySnow Studio (March 22 – early access)Heroes of Magic & Cards, First Day Entertainment Inc. (March 19)Shuffles 'n Scuffles, Sour Circuit Studios (March 13)Runeborn, iDream Interactive (March 10)Wireworks, JJJ (March 9)Card Corner, Conradical Games (March 9)Casual, rhythm, and partyLost and Found Co., Bit Egg Inc. (March 6)PUMP IT UP RISE, ANDAMIRO (March 30)Keep on Mining! - Worlds, EagleEye Games (March 30)The Wide Open Sky is Running out of Catfish, ZIPITI Games (March 27)GRIDbeat!, Ridiculous Games (March 26)Roombattle, Dust Games (March 25)Scritchy Scratchy, Lunch Money Games (March 18)Foodslingers, Ardent Games (March 18)Timber Rush, Allerton Apps (March 17)Piece by Piece, Gamkat (March 11)The Artifactory, Berries Studios (March 10)Desktop Raid, Lee_Studio (March 9)Sashimi Slayer, Shrimp Fried Rice Games (March 6)Gnaughty Gnomes, SandCastles Studio (March 3)PROJEKT GODHAND, Anarch Entertainment (March 3)City and colony builderTimberborn, Mechanistry (March 12)Nova Roma, Lion Shield (March 26 – early access)Going Medieval, Foxy Voxel (March 17)Bubblegum Galaxy, Smarto Club (March 11)Humanica, PanfachDev (March 3 – early access)ComedyFROGGONIT, Fuz Games (March 6)In My Bubble •°, Juicy House, Jungle Game Lab (February 5)YAPYAP, Maison Bap (February 3)Pie in the Sky, Monster Shop Games (February 2)Experimental or surrealistENA: Dream BBQ, ENA Team (March 27)Extreme Evolution: Drive to Divinity, Sam Atlas (January 16)NIDANA, lvl374 (July 28)ExplorationA Completely Fictional Story About a City Inside a Whale, In404, akinat0 (March 27)Eternal Afternoon, Alex Klexber (March 3)Whisper of the Swallows, Blown Leaves (January 29 – early access)Super Chipflake Ü: Quest for the Uncooked Schnitzel, SalsaShark Studios (January 24)Cozy Caravan, 5 Lives Studios (January 8)FPSPOLY IMPULSE, Dani Bedmar, Moromon (March 18)Tower Tag, Steinfatt GmbH (March 13)Galactic Vault, MeepMeep Games (March 10)HorrorGHOST CAM, Arch Rebels (March 13)Paragnosia: Museum, Sine Code (March 30)The Scourge | Tai Ương, Rare Reversee (March 28)BUTLER GUILLOTINE, GOODBYE STATIC (March 27)Project Songbird, FYRE GAMES, Conner Rush (March 26)Darkwater, Targon Studios (March 26)No Vacation for an Executioner, JayO (March 23)Seen Before, DepthinVision (March 12)Crabmeat, Nicholas McDonnell, Mitchell Pasmans (March 10)Pink Noise, Somber Games (March 6 – early access)Management and automationITER-8, fluckyMachine, FireShrine Games (March 9)CFS (Chinese Football Simulator), 悟空实验室 (March 12)Angel Engine, HMS Studios, Black Lantern Collective (March 6)MetroidvaniaSolateria, Studio Doodal (March 12)Face the Immortal, DY (March 19 – early access)Fallen Tear: The Ascension, Winter Crew Studios (March 17 – early access)Narrative and mysteryThe Ratline, Owlskip Games (March 17)S4U: CITYPUNK 2011 AND LOVE PUNCH, U0U Games (January 8)Cat Detective Albert Wilde, beyondthosehills (January 24)Urban Myth Dissolution Center, Hakababunko (February 12)Weirdo, CASCHA GAMES (February 14)Afterlove EP, Pikselnesia (February 14)Do No Harm, Darts Games (March 6)Expelled!, inkle Ltd (March 12)The Darkest Files, Paintbucket Games (March 25)YOUR HOUSE, PATRONES & ESCONDITES (March 27)Beholder: Conductor, Alawar (April 23)Human Within, Signal Space Lab, Actrio Studio (April 3 - Steam release)Duck Detective: The Ghost of Glamping, Happy Broccoli Games (May 22)Replicomica, enyevg (June 16)Arctic Awakening, GoldFire Studios (September 18)Mind Diver, Indoor Sunglasses (September 28)My Little Puppy, Dreamotion Inc. (November 6)Goodnight Universe, Nice Dream (November 11)The Berlin Apartment, btf (November 17)Beholder: Conductor, Alawar (April 23)PlatformerPlanet of Lana II: Children of the Leaf, Wishfully (March 5)Mr. Sleepy Man, Devin Santi, Monster Theater (March 10)Sophie: Starlight Whispers, Youth Gaming (March 10)Soulwander, MYMEStudio (March 10)Return to Dark Castle, Z Sculpt Entertainment (March 3)Puzzle adventurePieced Together, Glowfrog Games (March 6)The Succession of Changing Kings, KwaKwaGames (March 4)Apopia: Sugar Coated Tale, Quillo Entertainment Limited (March 3)Roguelike/liteRACCOIN: Coin Pusher Roguelike, Doraccoon (March 31)Cinderia, MyACGStudio (March 30 – early access)Valor of Man, Legacy Forge (March 19)Sculplings, Connor Garity, Liam Kerrigan (March 17)Echoes of Myth, Shifting Reality Interactive (March 12)生命火热 / Desperate 1, 痴青游戏 Lunatico Game (March 10)Kritters, LJF Games (March 10)Hive Blight, OptizOnion (March 9 – early access)Dice Goblin's Den, babachoo (March 9)Barda, Mudita Games (March 9 – early access)Rogue Monster Rush, Ghost Vibes LLC (March 7)Guardians of Dao, George Financial Holding Limited Company (March 6 – early access)Cupiclaw, Typin (March 5)RPGRhell: Warped Worlds & Troubled Times, SlugGlove, Yogscast Games (March 12)Etrange Overlord, Gemdrops, Inc., Superniche LLC, BROCCOLI Co. (March 26)SHINONOME ABYSS The Maiden Exorcist, WODAN, Inc. (March 25)Heroes of Science and Fiction, Oxymoron Games (March 17)BRAVELY DEFAULT FLYING FAIRY HD Remaster, Square Enix, Cattle Call Inc. (March 12)THYSIASTERY, DIRGA (March 9)Metal Hunter, 常州市华蓝德软件科技有限公司 (March 6)Banquet for Fools, Hannah and Joseph Games (March 5)Esoteric Ebb, Christoffer Bodegård, March 3SandboxCreature Creation Station, Xenon Fossil Games (March 16)Drill and Delve, NoOne (March 13)Genesis Relic: Idle Sandbox Simulator, BambooCopter (March 12)SimulationThe Coin Game, devotid (March 19)Island Market Simulator, Zentium Studio (March 27 – early access)Little Chef: Cozy Cooking, Julien Truebiger, Hello Erika, Danny van Duist (March 16 – early access)Sherman Commander, Iron Wolf Studio S.A. (March 14)Egypt Frontiers, FreeMind S.A. (March 12)Spacefleet: Heat Death, Spacezero Interactive (March 10 – early access)Space Reign, Propulsive Games (March 10)Wasteland with Robots, Gamesforgames (March 8)Stellar Industrialist, PcZ Games (March 7)The Walking Trade, Microwave Games (March 5)Box Bakery, mangobox games (March 5)Docked, Saber Interactive (March 5)Beer Manufacture Simulator, Games Incubator (March 5)Sports and racingRacket Pinball, NiVision (March 26)Turbo Dismount® 2, Secret Exit Ltd (March 13)blahStrategySpace Tales, Saigon Dragon Studios (March 13 – early access)Banana Drama, Dommenuss, Pikachau (March 29)Bloodgrounds, Exordium Games (March 12)STARWEAVE, Studio Starweave (March 9)Temporal Titans, Lost Tower Games, (March 9 – early access)Stellarcraft, DreamStudios, Sandstorm in a Bottle (March 9)Rogue Monster Rush, Ghost Vibes LLC (March 7)Tabletop Fantasy War, EdenDev Studio (March 6)Heart of the Machine, Arcen Games, Hooded Horse (March 6)Machine Mind, Chudo-Yudo Games (March 5)SurvivalBlossom: The Seed of Life, Pebbledust Games (March 9)Here Comes The Swarm, Cablehook Games (March 5 – early access)Blood Night, Team (March 1 – early access)That’s a wrap for March 2026. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-march-2026-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-march-2026-releases</guid><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[The hidden costs of traditional 3D tools and the smarter way to build interactive experiences]]></title><description><![CDATA[3D visualization is no longer a niche capability reserved for game studios or engineering labs. Today, designers, product marketers, trainers, and industrial teams increasingly rely on 3D content to communicate complex ideas; whether it’s a product demo, a factory layout review, or an immersive training module.Yet despite the promise of interactive 3D, many teams hesitate to adopt it.Why?Because the tools traditionally used to build 3D experiences often come with hidden costs: financial, operational, and organizational. What starts as an exciting initiative can quickly turn into a slow, expensive process that requires specialized development skills.The good news: it doesn’t have to be that way.With the rise of no-code 3D tools like Unity Studio, teams can now create interactive 3D experiences without the heavy overhead traditionally associated with real-time development.Let’s unpack where those hidden costs come from, and how a new generation of tools is changing the equation.The real cost of traditional 3D toolsWhen teams think about adopting 3D visualization software, they often focus on obvious expenses: licenses, hardware, or training.But the true costs are often buried inside workflows.1. The developer bottleneckMost traditional real-time 3D tools require programming expertise. Designers and domain experts typically need to rely on developers to implement interactivity, logic, and publishing workflows.That dependency creates friction.A typical scenario might look like this:A designer prepares CAD or 3D assets.A developer imports them into a 3D engine.Interactions are coded manually.A build is generated and shared.Feedback comes in and the process starts again.Each iteration requires developer time.In organizations where developers are already stretched across multiple projects, this can create a serious bottleneck. Instead of experimenting freely, teams wait days, or sometimes weeks, for small updates.The result? Slower innovation and higher costs.2. Long iteration cyclesDesign work thrives on rapid iteration.Whether you're validating an automotive HMI concept, creating a training module, or preparing a product launch demo, feedback loops are critical.But traditional 3D pipelines tend to slow that process down:Assets must be exported and optimizedDevelopers rebuild applicationsStakeholders review static buildsChanges require another full iterationA single design update can take days instead of minutes.For industries like manufacturing, architecture, and training, this can mean delays in decision-making, slower product launches, and lost productivity.3. Expensive software ecosystemsMany teams also underestimate the stack of tools required to produce interactive 3D experiences.A usual workflow might involve:CAD or BIM toolsRendering software3D engines development environmentsDeployment toolsCollaboration platformsEach tool comes with licensing costs, integration complexity, and training requirements.Even when organizations already have strong design capabilities, using traditional software packages, the step into interactive 3D often requires entirely new technical expertise.That’s a significant barrier, especially for teams focused on design, marketing, or training rather than software development.4. Gap between static design and real-time 3DThis is where many teams find themselves, unavoidably stuck between two less-than-ideal options.On one side are static assets such as:Rendered imagesVideosInteractive PDFsSlide presentationsThese formats are easy to produce but limited in their ability to communicate complex spatial concepts.On the other side are advanced real-time tools, which offer incredible capabilities but require specialized development knowledge.For many organizations, neither option is ideal.What they need is something in between: an approachable way to build interactive 3D without the complexity of full-scale development pipelines.A game-changing new approach: Interactive 3D without codingThis is exactly the gap Unity Studio was designed to fill.Unity Studio is a web-based no-code 3D editor that allows teams to create interactive 3D experiences quickly without programming or complex workflows.Instead of relying on developers, designers and domain experts can:Import CAD or 3D assetsBuild scenes using drag-and-drop toolsAdd interactivity through visual logicShare experiences instantly across devicesAll from a web browser.The goal is simple: make interactive 3D accessible to the people who understand the content best.Faster feedback, faster decisionsOne of the biggest advantages of a no-code 3D workflow is dramatically faster iteration cycles.Because Unity Studio removes the need for manual coding and build processes, teams can:Quickly test ideasShare interactive scenes with stakeholdersAdjust content based on feedbackPublish updates instantlyShorter feedback loops mean better decisions and faster project completion.Imagine an industrial design review where engineers, designers, and product marketers explore the same 3D model together without waiting for a developer to rebuild the experience. Or a training team that updates an interactive procedure in hours rather than weeks.That is a true paradigm shift for creators.Turning existing CAD Data into interactive experiencesAnother major barrier to interactive 3D adoption has traditionally been data preparation.Industrial teams work with complex CAD and BIM models that aren’t always easy to convert into real-time experiences.Unity Studio addresses this by supporting 70+ file formats and automatically transforming complex models into usable assets for interactive scenes.That means teams can:Convert CAD models into web-based 3D viewersCreate interactive product demosBuild training simulationsPrototype factory layouts- all using the same data they already have.By enabling teams to explore, validate, and present designs in interactive 3D, Unity Studio also reduces the need for costly physical prototypes, helping cut both production expenses and the time required to bring ideas to life.Instead of rebuilding assets from scratch, teams can extend the value of existing design data.Real-world scenarios where the savings add upTo understand the impact, let’s look at a few common scenarios.Product marketingTraditional approach:Marketing teams rely on static renders or videos to showcase new products. Interactive 3D often requires external agencies or internal development teams.With Unity Studio:Marketing designers can create interactive 3D product demos directly from CAD models and share them via the web; accelerating product launches and reducing external production costs.Training and instructional designTraditional approach:Training content is delivered through manuals, videos, or static diagrams. Updating materials can be slow and expensive.With Unity Studio:Instructional designers can create interactive training modules and 3D manuals where users explore equipment, procedures, or environments directly.This improves engagement while reducing production timelines.Design reviews and prototypingTraditional approach:Teams review screenshots, renders, or physical prototypes. Iterations require new assets or builds.With Unity Studio:Designers can create interactive prototypes and share them instantly for feedback helping teams validate concepts earlier in the design process, and significantly reduce costs associated with physical prototyping.Built for designers, not developersOne of the most important factors behind Unity Studio is who it empowers.Instead of relying on engineering teams, Unity Studio puts interactive 3D creation directly in the hands of:3D designersVisualization artistsTraining content developersProduct marketing teamsIndustrial engineersInnovation managersand many more roles.These professionals already understand the product, the training workflow, or the design challenge.Now they can bring those ideas to life in interactive 3D without needing to write code - all directly from a web browser.The future of accessible 3D creationInteractive 3D is becoming essential across industries, from automotive and manufacturing to healthcare and education.But widespread adoption depends on removing the barriers that have traditionally slowed teams down.By simplifying workflows, eliminating developer dependencies, and integrating with existing design data, Unity Studio makes interactive 3D creation accessible to far more teams.And when more people can create in 3D, organizations unlock entirely new ways to communicate ideas, collaborate across disciplines, and accelerate innovation.Because the future of 3D isn’t just about powerful tools.It’s about making those tools usable by everyone who has an idea worth visualizing.Ready to experience interactive 3D without the complexity?See what your team can build.No coding. No heavy setup. Just fast, accessible 3D creation.Start your 30-day Unity Studio trial and begin creating interactive 3D experiences today.
]]></description><link>https://unity.com/blog/hidden-costs-traditional-3d-tools</link><guid isPermaLink="true">https://unity.com/blog/hidden-costs-traditional-3d-tools</guid><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Rendering at 500 km/h in Gear.Club Unlimited 3]]></title><description><![CDATA[Eden Games has spent 25 years building racing games, where performance is as critical as visual fidelity. Their latest release, Gear.Club Unlimited 3 (GCU 3), pushes that balance further: It’s a 60 fps arcade racer capable of streaming large environments at speeds approaching 500 km/h while targeting hardware ranging from consoles to high-end PCs with ray tracing.Released on February 19, 2026, GCU 3 is also the first title to ship with Eden Games’s fully matured custom rendering pipeline, debuting on the Nintendo Switch™ 2 before expanding to additional platforms later this year.We spoke with Nasim Bouguerra, lead graphics programmer, and Florian Falavel, senior rendering programmer, about building a GPU-driven architecture, scaling ray tracing across platforms, and maintaining stable performance under extreme streaming constraints.What were the biggest rendering challenges the team faced while building GCU 3?Nasim Bouguerra (NB): One of our main challenges was sustaining a stable 60 fps while streaming world data at speeds up to 500 km/h. At that velocity, even minor stalls, such as asset loading, synchronization points, and garbage collection, immediately break gameplay immersion. Eliminating those spikes became a primary engineering goal.GCU 3 was also our first game on the Nintendo Switch 2, so we were optimizing against new hardware under tight deadlines. In parallel, this was the first production release of our complete in-house rendering pipeline. That meant stabilizing the architecture, validating scalability across platforms, and tuning platform-specific paths simultaneously.Why did you decide to build a custom Scriptable Render Pipeline?NB: Back in 2019, we built our own Scriptable Render Pipeline to scale across very different hardware. It gave us full control over performance and features, enabled a fully GPU-driven system, and supported modern technologies like DLSS 4.5, FSR 4, XeSS 2, and path tracing. Since then, we’ve shipped four games on this pipeline, and GCU 3 represents its most significant evolution yet.How has Unity 6 influenced your rendering pipeline and low-level graphics stack?Florian Falavel (FF): Unity 6 gives us greater access and flexibility at the rendering backend, letting us leverage low-level graphics features and build optimized, tailored solutions. We also rely on Native Rendering Plugins to integrate features not yet exposed in Unity, such as NVIDIA DLSS on PC and Nintendo Switch 2, the NRD denoiser for ray tracing, and other advanced tools. This level of control is essential for high-performance streaming while maintaining stable visual quality across all our target platforms.How does GPU-driven rendering change the way you approach building environments and race tracks?FF: GPU-driven rendering removes CPU submission bottlenecks, allowing much denser environments and more complex race tracks. We pair this with a custom virtual texturing system for terrain and props, so artists can use high-resolution assets while keeping memory and performance predictable. The result is higher scene complexity without compromising 60 fps frame rate.At speeds approaching 500 km/h, streaming becomes critical. How do you handle rendering, asset streaming, and memory management to avoid stutters?NB: Streaming was one of our biggest challenges. We built a fully multithreaded streaming system, capable of saturating Nintendo Switch 2 I/O without hitches. We also spent time removing as much GC allocation as possible during gameplay, and enabled incremental garbage collection to ensure that garbage collection-related frame drops are rare in races.Our terrain and virtual texturing systems also use feedback loops to load only the data needed, exactly when it’s needed. This approach keeps streaming smooth even at extreme speeds.What rendering techniques and GPU optimizations were key to hitting 60 fps on the Nintendo Switch 2?FF: On the Nintendo Switch 2, every stage of the pipeline had to justify its cost. We tightly integrated DLSS with our dynamic resolution system to stay within GPU budgets, and we leaned heavily on asynchronous compute to overlap workloads and maximize occupancy.Our GPU-driven architecture also reduced CPU overhead, which helped maintain consistency during heavy gameplay scenarios. Extensive platform profiling guided decisions at the pass level, where we trimmed bandwidth-heavy stages, reorganized resource transitions, and eliminated synchronization stalls.Variable Refresh Rate provided an additional safety margin, smoothing rare edge cases without masking systemic issues.How does your rendering approach differ across platforms beyond the Nintendo Switch 2?NB: We begin with a feature-complete configuration, then profile each system under real gameplay conditions. From there, we selectively scale or specialize features per platform rather than maintaining entirely separate rendering paths, and iterate to find the best uses of what the platforms can offer.On PC, we give players access to the full suite of rendering features we support, including HDR, ultrawide support, DLSS, and real-time path tracing. We also provide scalability options so that even on low-power devices like the Steam Deck, players can enjoy the game with the same core visuals.The goal isn’t different pipelines. It’s controlled degradation within a single, scalable framework.What motivated your team to lean so heavily into ray tracing, and how did that decision shape both your visual goals and your technical constraints during development?NB: Ray tracing is essential for both physically accurate visuals and faster iteration for our lighting artists. We integrated it from initial development to level production and runtime, and ensured all systems, from terrain and props to lighting and materials, work as expected. It also requires high-memory GPUs for artists during production as ray tracing acceleration structure (RTAS) memory is a key bottleneck with ray tracing.Can you walk us through how you baked global illumination (GI) using a reference path tracer, and how that work informed or contrasted with the real-time path tracing solution used in the PC version?FF: Ray tracing is the backbone of our global illumination workflow. We built a reference path tracer for accuracy, which validates our baked GI system and gives artists predictable results. This speeds up iteration, letting them preview near-final lighting before triggering the full bake.On PC, we added a real-time ReSTIR-based path tracer for high-end hardware, staying close to the ground truth. Ray tracing is a long-term investment, and we collaborated closely with Unity to refine and stabilize the rendering APIs.How did the collaboration with Unity’s ray tracing team influence the final rendering pipeline?FF: Our GPU-driven pipeline required ray tracing functionality that early Unity versions did not provide. We added the ability to inject GPU-generated data into the acceleration structure, introducing APIs like RayTracingAccelerationStructure.AddInstancesIndirect, and integrated NVIDIA Shader Execution Reordering via a Native Rendering Plugin to boost path tracing performance. This collaboration shaped our final architecture, letting us extend ray tracing while staying true to our GPU-driven approach.How do modern upscaling technologies fit into your overall rendering strategy?NB: Modern upscaling is essential for balancing visual sharpness and performance. Machine learning–based solutions can even provide better anti-aliasing than traditional methods like temporal anti-aliasing (TAA). On PC, we support our own temporal upsampler, NVIDIA DLSS 4.5, AMD FSR 4, and Intel XeSS 2, giving maximum flexibility.That said, upscaling isn’t a magic fix. It works best when the underlying pipeline is already efficient, letting us balance sharpness, performance, and image quality, especially on consoles with stricter constraints.What advice would you give developers for building a rendering strategy?NB: Start by understanding what your artists and players actually need, and design your rendering systems to meet those needs efficiently. Avoid unnecessary complexity, focus on getting the most from existing systems, and keep your approach simple and scalable. Always profile on your target hardware. Optimizations can reduce performance if they are not tested where it matters.FF: I’d echo that. Identify the visual features that truly matter and build your strategy around them. Don’t feel pressured to implement every feature. Prioritize what’s important to maintain both performance and visual quality.To read more about projects made with Unity, visit the Resources page.*Nintendo Switch is a trademark of Nintendo.]]></description><link>https://unity.com/blog/eden-games-gear-club-unlimited-3</link><guid isPermaLink="true">https://unity.com/blog/eden-games-gear-club-unlimited-3</guid><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[10 questions to ask before starting your first 3D project]]></title><description><![CDATA[10 questions to ask before starting your first 3D projectInteractive 3D experiences are transforming how businesses design products, train employees, and engage customers. From detailed product configurators to immersive safety simulations, the applications of 3D visualization software are vast. However, many teams hesitate to begin their first 3D project, often due to concerns about technical complexity and resource limitations. Fortunately, the rise of no-code platforms is breaking down these barriers, making powerful interactive 3D software approachable to everyone.This guide provides a practical framework for planning your first 3D project. By asking the right questions upfront, you can navigate common challenges and set your team up for success. A web-based platform, such as Unity’s new web-editor, Unity Studio, can empower your team to bring ideas to life, regardless of their technical background.Why planning matters for 3D projectsA well-defined plan is the foundation of any successful project, and for 3D creation, it is especially critical. Answering key questions before you begin helps you save time, manage costs, and align stakeholders around a clear vision. Without this initial planning, teams risk facing scope creep, budget overruns, and frustrating delays caused by inefficient workflows.Choosing the right tools from the start is a crucial part of this planning process. A modern 3D visualization tool streamlines everything from initial concept to final review. For teams working with industrial data, having an effective CAD to 3D viewer integrated into the workflow is essential. A web-based 3D design tool simplifies collaboration, allowing team members to contribute and provide feedback from anywhere, without needing powerful hardware or complex software installations.The 10 essential questionsTo build a solid foundation for your project, your team should address these ten questions.1. What is the purpose of your 3D project?First, define your primary objective. Are you creating a marketing tool to boost sales, a training simulation to improve employee skills, or an interactive prototype for stakeholder reviews? A clear purpose will guide every decision you make, from the level of detail required to the features you need. For instance, a training manager will prioritize features for an easy 3D training tool, while a marketing team will focus on visual fidelity and user engagement.2. How will you measure success?Define what success looks like. Establish key performance indicators (KPIs) to measure your project's impact. These could include user engagement rates, training completion times, lead generation, or a reduction in design review cycles. Tracking these metrics will help you demonstrate ROI and refine your strategy for future projects.3. Who is your target audience?Your audience determines the user experience. Are you building for internal stakeholders, technical experts, or customers? An internal design review for engineers may require a high level of technical accuracy, while a customer-facing product configurator must be intuitive and visually appealing. Understanding your user helps you tailor the experience to their expectations and needs.4. What level of interactivity do you need?Not all 3D projects require the same degree of interaction. A simple architectural visualization might only need navigation controls, whereas a training module could demand multi-step interactions with virtual objects. Define whether your project needs static viewing, simple clicks, or interactive real-time 3D prototyping capabilities to meet its goals.5. What assets and data do you already have?Take inventory of your existing resources. Do you have 3D models, CAD files, or other data that can be used? Ensure your chosen platform can handle your file formats. A robust 3D design tool should offer seamless CAD visualization and support for various file types, minimizing the need for complex data conversion processes.6. What are the technical skills of your team?Honestly assess your team's technical capabilities. Do you have experienced developers, or are you a team of designers, marketers, and subject matter experts? A no-code 3D design tool is designed for the latter, empowering users without coding knowledge to create rich, interactive experiences. This approach democratizes 3D creation and unlocks your team’s full creative potential.7. What is your timeline and budget?Establish a realistic timeline and budget early on. Factor in all stages of the project, from asset creation and scene building to testing and deployment. No-code tools significantly reduce costs and timelines by minimizing the reliance on specialized developers, allowing your domain experts to build and iterate directly.8. What tools and platforms will you use?The right tool can make or break your project. Look for a web-based editor, like the Unity web editor, that offers an intuitive interface and built-in asset libraries. This kind of 3D visualization software empowers non-technical users and fosters seamless collaboration, allowing your team to work efficiently without getting bogged down by technical hurdles.9. How will you gather feedback and iterate?Iteration is key to refining any creative project. How will your team collect and implement feedback? Modern 3D collaboration software simplifies this process with features like shareable links and real-time commenting. This enables rapid feedback loops, ensuring stakeholders are aligned and projects stay on track.10. How will you share and publish your project?Finally, consider how your final project will be delivered to your audience. Will it be embedded on a website, accessed on mobile devices, or viewed in a virtual reality headset? A flexible platform that allows for easy, one-click publishing across multiple devices ensures your experience reaches your audience wherever they are. A powerful 3D visualization tool will ensure this process is smooth and efficient.How no-code design and visualization tools simplify 3D creationAnswering these questions highlights a recurring theme: the need for approachable, efficient tools. Traditional 3D development often involves steep learning curves and dependence on specialized programmers. A no-code 3D design tool like Unity Studio changes the equation.This powerful interactive 3D visualization software is built to address the core challenges non-technical teams face. It provides an intuitive, web-based platform for real-time 3D prototyping and industrial 3D visualization. By removing the coding barrier, it allows designers, engineers, and training managers to take control of their projects. The platform also serves as effective 3D collaboration software, allowing teams to iterate faster and bring their vision to life without waiting on developer resources.Get started on your 3D journeyPlanning is the most important step in turning an ambitious 3D idea into a successful reality. By thoughtfully considering these ten questions, you can create a clear roadmap, choose the right tools, and empower your team to innovate. No-code platforms have made 3D creation more approachable than ever, allowing you to move from concept to interactive experience faster.Ready to dive deeper into the world of no-code 3D creation? Download our free e-book, The no-code revolution: How Unity Studio democratizes interactive 3D creation, to learn more about how you can simplify your workflows and achieve your goals.]]></description><link>https://unity.com/blog/10-questions-first-no-code-3d-project</link><guid isPermaLink="true">https://unity.com/blog/10-questions-first-no-code-3d-project</guid><pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[The challenge of interactive writing: Designing a nonlinear RPG like Esoteric Ebb]]></title><description><![CDATA[Esoteric Ebb is taking Steam by storm – but how does a branching narrative CRPG like this come together? In this guest blog, Christoffer Bodegård unpacks complex narrative design decisions and his eight-year journey learning how to manage the creation of a truly nonlinear, dialog-based story.Ever since the first public playtest of Esoteric Ebb back in 2023, I have been asked one simple question over and over again: “How do you keep track of everything?” It’s a good question – a difficult one. Most likely, I have answered it in several different ways over the years, but never in a really satisfying way.… So let’s give it a try.(But first, a little background on Esoteric Ebb)Esoteric Ebb is a massive, narrative-focused, nonlinear CRPG. No traditional combat, almost entirely dialog-based, a playtime anywhere between 45 minutes and 50 hours, and so, so many choices… Actual choices, the type that actively changes your experience in fundamental ways all the way up to credits. Yes, it’s one of those games. And it took a while to make: about eight years from start to finish, half of which was spent doing nothing, sitting alone in a room, learning how to do interactive writing.The three constraints of interactive writingI define interactive writing within three somewhat arbitrary constraints/goals. These being:A high choice-to-text ratio>50% of content being dynamicAn open-ended designTake or leave them as you wish, but if you hit these three, then you’ve got a recipe for intense (potential) positive player agency. But immediately by looking at this you might run into a few thousand problems.Let’s go over them.Optimizing player engagement through the choice-to-text ratioWhy high choice-to-text ratio mattersA high choice-to-text ratio sounds lovely. It’s a great tool to keep the player awake and engaged, for one. If you force them to read too many blocks of text, then the average player’s eyes will just glaze over. But if you keep poking and prodding at them – forcing them to answer interesting questions, pushing them into difficult decisions, or just forcing them to respond to rude accusations – then it’s like injecting an energy drink into their veins. They’ll jolt awake, and actually engage with the text. At least, statistically they’ll be more likely to do it.The problem here is simple, though: You’d have to be insane to want to add that level of branching to your dialog. It takes a lot of work, and I think more specifically, it requires a very specific toolset. (Skills too, sure, but the tool has to be flexible and quick in order for the process of branching to not turn into an endurance test).Choosing the right toolThe tool I use is the magnificent and incredibly wonderful ink script created by the studio Inkle. By making this open-source tool – that works flawlessly in Unity, by the way – they have quite literally made my career. I owe them a lot. And ink is a tool that, apart from all the other cool stuff it does, is extremely well-suited for fast and nimble branching.When I write a dialog in ink, I write with the same speed as with linear content. As long as there is a loose design outline prepared, I can just go to town. Adding player expressions, managing visuals, or handling dice checks – all take seconds, since everything is handled through basic (mostly customized-to-fit-Ebb) tags and custom code, alongside the regular (and well-designed) ink functions.Planning for variability: Dynamic content and open-ended designBut what about item number two of our list of constraints (“>50% of content being dynamic”)? Dynamic content and open-ended (or nonlinear) designs both stem from a similar goal: to create variability based on player input.Just let them do whatever they want! Go nuts! Have an open world, where you can go in any direction! Well, that’s one way to do it. But the important distinction here is that interactive writing always focuses on an authorial-intent-driven design. In other words, everything is controlled by the writer.You can still do systematic design, and there’s a big overlap, but the practical art of interactive writing is specifically when you do not let emergent storytelling do its thing.What I mean by this is: You have to have variables. And you have to keep track of them. For every choice the player makes, whether it’s stats chosen during character creation, or how mean they were against that goblin chieftain – all of it needs some type of feedback in order to invoke the phenomenon of agency. Whether that involves a dynamic quip towards the end of the game, or an entire branching plotline, those moments of feedback are just as important as the choices themselves, if not more.Keeping track of variablesMy method of tracking variables is simple and flexible: I call it the Story Variable (SV) system. Using the tag system, whenever those tags begin with a punctuation, that indicates the usage of a variable. If that variable has never been encountered before, the SV is created in one giant list. Otherwise, it just accesses the already-existing SV, and either sets or checks it as commanded.
A string and an int – usually used as a boolean, but when needed expands to increase or decrease whenever needed. The commands I implemented for Ebb were “==”, “=”, “>=”, “<=”, “+=”, and “-=”.The question then becomes one of organization. I got better at this as I went along, but each SV uses a prefix based on the location or quest. “TE” in this case refers to the Tea Shop area. An SV with the “Q” prefix refers to a quest, and a “QP” refers to a Quest Point –as in, a log entry in the Questing Tree, your quest journal.Narrative design gainsIt’s a rough system, with one major productivity gain: You can just keep writing. Need a new variable for a dynamic dialog choice? Just add it, then copy-paste it into the file where it needs to be set. Easily check for any variable usage via a project-wide CTRL+F, or manage sweeping changes via basic text management. There’s no database to manage. The list itself is just chronological. Forgot the name of a variable? Just search for the relevant area or quest prefixes, and look over the list.I did not expect this to work at first. An average playthrough can end up with more than 3,000 Story Variables in that list by the end of the game. But – like with most things I did on Esoteric Ebb – Unity just worked with it. And ink’s Unity integration has never failed me, not once, even after using it for almost a decade now. A recompile of the ink files takes seconds. Customizing the features to Esoteric Ebb’s liking has always been extremely efficient. And as strange as it might sound, I’m still surprised all these years later that it just flows. If I am able, I want to keep developing this pipeline for years to come.Beyond that, I use Notepad++ for all my writing on Esoteric Ebb. While you could obviously use any text editor of your preference, keeping it lightweight and snappy makes for such a smoother experience. Searching through a million words in a split second is exactly what allowed me to write (and to bugfix!) such a massive game.Final thoughts: Bugfixing and learning to embrace the branchBut that’s also the biggest negative of this system: the bugfixing. I should have invested more time in technical solutions to broken logic and syntax, but really, I ended up just brute-forcing the whole ordeal via playtesting.As Esoteric Ebb receives its 1.1 patch, I have managed to fix approximately 704 ‘text errors’ – whether spelling or code related – in less than four days of work (very chill days, too). This is, again, because the system is extremely nimble. Even still, those bugs were there when we launched Esoteric Ebb because of the setup here as well. It is an insane amount of text, with a ridiculous amount of branching. But I am also certain that I would not have been able to write even a quarter of the final word count had I not been blessed with ink.Afterword: More recommended tools for narrative designersink makes the practical art of interactive writing a fast one, for me. I’ve always had trouble with visual scripting, but I know many writers have the exact opposite problem. So I always recommend looking into other solutions as well to find the one that fits you and your team the best, with some examples being articy:draft, Arcweave, and Yarn Spinner.Esoteric Ebb is available now on Steam. Explore more Made with Unity games on our Steam Curator page, and check out more stories from Unity developers on the Unity Blog and Resource hub.
]]></description><link>https://unity.com/blog/interactive-writing-challenges-for-nonlinear-rpg-design</link><guid isPermaLink="true">https://unity.com/blog/interactive-writing-challenges-for-nonlinear-rpg-design</guid><pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Vector-Powered D28 IAP ROAS Campaigns & Simplified ROAS Campaign Onboarding]]></title><description><![CDATA[Today, we are launching two major upgrades to Unity’s user acquisition capabilities powered by Vector: D28 IAP ROAS campaigns and simplified ROAS campaign onboarding.
D28 IAP ROAS CampaignsD28 IAP ROAS campaigns powered by Vector can now help you scale your campaigns to acquire users with higher retention and stronger long-term value. This is particularly valuable for games focused on in-app-purchases (IAP) with longer payback periods, where significant IAP revenue tends to occur well beyond the first week post-install.Unlock Incremental Value & Maximize Overall Returns: By running D28 alongside D7 campaigns, advertisers can unlock new, high-value user segments who spend beyond Day 7 that drive incremental growth to capture both long- and short-term value, maximizing overall returns.Powered by Vector: Set your D28 ROAS targets directly in the dashboard, and our models will predict the revenue a user is likely to generate over 28 days and dynamically adjust bids to optimize towards the target.Our partners are already seeing strong results with D28 IAP ROAS campaigns, including Homa who saw a 14% uplift in D28 ARPU¹ compared to their D7 IAP ROAS campaign over the same period and a 63% uplift in D28 retention². See case study here.Simplified ROAS Campaign OnboardingWe’ve now simplified the ability for advertisers to launch Vector-powered ROAS campaigns with a new onboarding flow in Unity Ads that assists with data readiness to give advertisers direct access to configure and launch ROAS campaigns.Direct Access to Vector-powered ROAS Campaigns: Advertisers can now launch ROAS campaigns directly within the Unity Ads user acquisition dashboard globally. We’ve also made it more intuitive for users to understand any data enablement and validation steps needed to launch their ROAS campaigns.Optimized and Transparent Learning Phase: With Vector, the data requirements and learning phase have been improved to make it easier and faster for ROAS campaigns to go live and scale. You’ll know when the campaign is still in its learning phase and accumulating data for Vector through a campaign status of “Learning”, and once the data threshold is reached, the campaign will be set to “Live”.Ready to Level Up with Vector?Log in to get started.¹ Source: Internal Unity Data, based on Homa campaigns. Cohorted D28 ARPU & D28 retention measured June 2025 to December 2025.² Source: Internal Unity Data, based on Homa campaigns. Cohorted D28 retention measured from June 2025 to December 2025.]]></description><link>https://unity.com/blog/uads-march-updates</link><guid isPermaLink="true">https://unity.com/blog/uads-march-updates</guid><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Kinetic Publishing: Indie teams get guidance from the Phasmophobia team]]></title><description><![CDATA[Kinetic Games has had to learn a lot the hard way. Their 2020 breakout hit Phasmophobia began as a solo project by the studio’s founder, Daniel Knight; at launch, this ghost-hunting co-op sold tens of millions of copies and defined a whole new horror genre.Now, the team’s putting that hard-won wisdom to good use with Kinetic Publishing, a recently announced venture to support and empower other indie devs with funding alongside access to technical, operational, and marketing support. I sat down with Knight and head of marketing Asim Tanvir to talk about why they created the publishing imprint, what they’re hoping to achieve there, and what they watch for in prospective games.Emily Raine (Unity): It’s been a few weeks since launch, and I know you’ve had a lot of submissions. What would you say you’re looking for as you review them?Asim Tanvir: We’ve had over 300 submissions already, which has been amazing, and slightly overwhelming in the best way. For us, it’s about creativity and passion. We’re looking for indie games that bring a unique twist to a genre, or just feel fresh. But just as important as the game is the team behind it. This is a partnership, and we want to work with people we genuinely get on with.You can always tell when someone’s poured their heart into a pitch. It shows in everything – the deck, the email, the gameplay videos. We had one recently where the dev did a full walkthrough while playing the demo and was just talking through everything. They were so excited, almost giddy about it, and that energy was infectious. It really stood out.From the business side, we’re not trying to trip anyone up. But knowing your USPs [unique selling points], having a rough idea of your audience, and understanding your numbers, even at a basic level, really helps move things along.Daniel Knight: Yeah, passion is the big one for me. It could be a great concept, but if the dev doesn’t really love what they’re making and is just chasing a trend, it shows. That walkthrough Asim mentioned, you could literally hear how excited they were in their voice. That kind of thing sticks with you.We’re also asking ourselves, “Can we genuinely help this team?” We’ve learned a lot the hard way over the last five years. If we can use that experience to make someone else’s journey smoother, that’s what we’re looking for.What’s the impetus behind doing this right now?DK: This has honestly been a long-term goal for me. Pretty much as soon as I started hiring people, I was saying that one day I’d love for us to get into publishing. I’ve learned so much from self-publishing Phasmophobia, a lot of it the hard way, and it felt right to eventually pass that knowledge on.The timing now just makes sense. We’re approaching 50 people as a studio, and we’ve grown a lot in terms of experience and structure. We finally have the bandwidth to do this properly, without stretching ourselves thin. It’s really about giving back to the indie space. That’s where I started, and it’s where so much of the most exciting stuff is happening.What is the most exciting thing about the indie game space right now?AT: There’s just so much cool stuff happening. Every few weeks there’s a new indie game popping up on Steam that makes you go, “I didn’t even know I wanted this.” I’m currently playing Cairn by The Game Bakers – who would’ve thought a climbing game would be that tense and fun? And seeing it do well is brilliant. I love seeing those success stories.That’s what excites me most, the creativity. Whether it’s a solo dev like Dan was a few years ago, or a small team of five or ten people, that’s where you see really bold ideas. And when indie games succeed, it’s good for everyone. A rising tide lifts all boats. It brings more players into the space and highlights how strong indie development is globally.DK: To Asim's point, I think indie teams can take risks in ways bigger studios sometimes can’t. That’s where innovation comes from.We’ve already had some incredible games pitched to us that just need a bit of support, funding, marketing, guidance, to get over the finish line. There’s so much potential out there.Any tips you can share with devs on how to make a game stand out to publishers?DK: A demo goes a long way. It’s not mandatory, but being able to actually play something, even if it’s rough, makes a huge difference. It doesn’t need to be polished or content-complete. Just show us the core idea and the direction you want to go in.AT: From a marketing side, know your USPs and lean into them. What makes your game different? Why would someone talk about it? And know your numbers. It sounds simple, but having a rough handle on budgets, timelines, or audience targets really helps the process.Dan, you’ve grown this studio from one person to over 50. What advice would you give to smaller dev studios as they’re growing, on hiring or filling skillsets they don’t have?DK:The biggest thing is having the right advisors around you from the very start, especially legal and financial. Accountants, lawyers, even if you’re just one person, that support is really important. Having experienced people around you can save you a lot of stress later.Is the publishing being run by people who are on the team already or do you have external people that you bring in?DK: It’s mostly internal. We’re leaning heavily on the experience we’ve built up through Phasmophobia and the wider industry. We’ve hired one dedicated person to focus specifically on publishing, particularly on the production side, and we’ll grow that side carefully as we go. If we need specialist support, we’ll absolutely bring people in, but we want this to feel hands-on and personal.AT: Yeah, we don’t want it to feel like a big corporate machine. We’ve been through the indie journey ourselves, especially Dan. We know how tough it can be. So the goal isn’t to sign loads of games, it’s to work closely with a smaller number of teams and properly support them. That’s what matters to us.

Learn more about Kinetic Publishing here, and check out Unity's Indie Survival Guide for more tips on succeeding as a small team. ]]></description><link>https://unity.com/blog/kinetic-publishing-indie-games</link><guid isPermaLink="true">https://unity.com/blog/kinetic-publishing-indie-games</guid><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: February 2026 in review]]></title><description><![CDATA[February went by fast. Congratulations to this year's D.I.C.E. Award nominees and winners, including Blue Prince, Ghost Town, Baby Steps, Umamusume: Pretty Derby, and more. And don't forget: Steam Next Fest ends today. Look out for our rundown of Next Fest demos coming soon. While you wait, check out some of the latest releases from February, all made with Unity. Dig into Goblin Sushi, run a gas station with your "fellow humans" in Roadside Research, feed strange woodland critters their favorite snacks in Creature Kitchen, or unleash your inner demon in Dead Pets: A Punk Rock slice of Life Sim.Made with Unity Steam Curator PageBe sure to stay up to date with the latest Unity creations on Steam by checking out our Steam Curator page.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in February 2026, either into early access or full release. Add to the list by sharing any that you think we missed.ActionGoblin Sushi, Old Cake Factory, Metaroot (February 9 – early access)Strange Brew, Electric Monk Media (February 24)Forgotlings, Throughline Games (February 17)JACKAL, Transhuman Design (February 5)Banished Knight, Moss Studio ((February 1)Bullet Heaven / Bullet HellKey Fairy, Owl Machine, (February 16)PengPong: Prologue, SANDY FLOOR, Gamirror Games (February 20)Supercat Survivors, Happy Universe Studios (February 10)Skewer Squad, Fake Owls (February 1)Cards, dice, and deckbuildersDobbel Dungeon, Gamepie (February 16)Lethal Dungeon, Nihohe Soft (February 20)Placid Plastic Deck: A Quiet Quest, turbolento games, Fantastico Studio (February 17)Flan's BN, Geism, Nyads Games (February 12)ANTHEM#9, koeda, SHUEISHA GAMES (February 5)Pirate's Gambit, Domestic Black Cat, Studio Amateur (February 5)Feng Shui Meowjong, Wavebreak Studio, HARRISONWORLD CO., LTD (February 3)Monster Train 2: Destiny of the Railforged DLC, Shiny Shoe, Big Fan Games (February 2)Casual, rhythm, and partySUPER BOMBERMAN COLLECTION, RED ART GAMES, KONAMI (February 5)Reigns: The Witcher, Nerial Ltd, Devolver Digital, (February 25)Stacked!, SoloQ (February 25)Disaster PR+, TamaniDamani, (February 14)Captain Whiskers: Incremental Seas, Happy Universe Studios (February 10)Who's Next?, HellAssociation (February 6)City and colony builderTerritory: Farming and Warfare, Wit Studio, (February 4)Feastopia, White Star Studio (January 29)City Tales - Medieval Era, Irregular Shapes (January 28)Earth of Oryn, Earth of Oryn (January 19 – early access)Craftlings, ARIANO Games (January 15)ComedyRoadside Research, Cybernetic Walrus (February 12 – early access)In My Bubble •°, Juicy House, Jungle Game Lab (February 5)YAPYAP, Maison Bap (February 3)Pie in the Sky, Monster Shop Games (February 2)Experimental or surrealistENA: Dream BBQ, ENA Team (March 27)Extreme Evolution: Drive to Divinity, Sam Atlas (January 16)NIDANA, lvl374 (July 28)ExplorationLittle Gods of the Abyss, PLAY Mephistowalz (January 21)Whisper of the Swallows, Blown Leaves (January 29 – early access)Super Chipflake Ü: Quest for the Uncooked Schnitzel, SalsaShark Studios (January 24)Cozy Caravan, 5 Lives Studios (January 8)FPSREPEATER, Sean Smith (February 2)They Killed Your Cat, Vekaria (February 25)ENCHAIN, mattlawrdev (February 13)HorrorPARANORMASIGHT: The Mermaid's Curse, Square Enix (February 19)DEDA, deepins corp. (February 13)Jaden Williams' The Stalking Stairs, Jaden Wiliams (February 6)Heaven Does Not Respond, Rise Studios (February 6)The Run, PRM Games (February 5)SECTOR ZERO, Ondrej Angelovic (February 3)Management and automationTiny Bookshop, neoludic games (August 7)Viking Chef: Feast Frenzy, Yew Rune Creations (February 3)Blood Bar Tycoon, Clever Trickster Studio (February 4)Astronomics, Numizmatic (February 10 – early access)
Mind over Magic, Sparkypants (February 12)Ale Abbey, Hammer & Ravens (February 18 – early access)Monster Care Simulator, Banana Tiger Studio (April 4 – early access)Assemblands, Tafusoft (April 15)Animal Spa, Sinkhole Studio, Moonlab Studio (May 13)Blacksmith Master, Untitled Studio (May 15 – early access)Plan B: Terraform, Gaddy Games (August 29)Mars Attracts, Outlier (September 15 - early access)ShapeHero Factory, Asobism.Co.,Ltd (September 17)Ale Abbey - Monastery Brewery Tycoon, Hammer & Ravens (September 17)Witchy Business, Rogue Duck Interactive (September 22)Little Rocket Lab, Teenage Astronauts (October 7)The Farmer Was Replaced, Timon Herzog (October 10)Kokoro Kitchen, Mango Leaf Games (October 17)Tavern Keeper, Greenheart Games 💚(November 3 - early access)News Tower, Sparrow Night (November 18)MineMogul, NoodleForge (Gvarados & Diomonder) (December 4 - early access)MetroidvaniaSELINI, Cymban (February 12 – early access)VonGarland Castle: Beyond Blood, Ash Jackson (January 30)The Perfect Pencil, Studio Cima, Doyoyo Games (January 29)The Last Faith: Awakened Ancients DLC, Kumi Souls Games, PlayStack (January 18)Narrative and mysteryThief's Roulette, hirogame (January 24)S4U: CITYPUNK 2011 AND LOVE PUNCH, U0U Games (January 8)Cat Detective Albert Wilde, beyondthosehills (January 24)Urban Myth Dissolution Center, Hakababunko (February 12)Weirdo, CASCHA GAMES (February 14)Afterlove EP, Pikselnesia (February 14)Do No Harm, Darts Games (March 6)Expelled!, inkle Ltd (March 12)The Darkest Files, Paintbucket Games (March 25)YOUR HOUSE, PATRONES & ESCONDITES (March 27)Beholder: Conductor, Alawar (April 23)Human Within, Signal Space Lab, Actrio Studio (April 3 - Steam release)Duck Detective: The Ghost of Glamping, Happy Broccoli Games (May 22)Replicomica, enyevg (June 16)Arctic Awakening, GoldFire Studios (September 18)Mind Diver, Indoor Sunglasses (September 28)My Little Puppy, Dreamotion Inc. (November 6)Goodnight Universe, Nice Dream (November 11)The Berlin Apartment, btf (November 17)Beholder: Conductor, Alawar (April 23)PlatformerDemon Tides, Fabraz (February 19)Neva: Prologue DLC, Nomada Studio (February 19)Hoverflow, Simon in Motion (February 4)Puzzle adventureCadence, Made With Monster Love (February 12)HAMSTERMIND, Righteous Tree (February 16)D1AL-ogue, CherryPicker, Jungle Game Lab, (February 11)Theta and Paralldox on Worldlines, XXela, Delta Theta (February 4)Roguelike/liteOmelet You Cook, Dan Schumacher, Hjalte Tagmose (February 8 – early access)Sealchain: Call of Blood, AliveGameStudio (February 20)Monday Syndrome, hyesmo (February 9)No Mana, Just Dice, Dice Capital, Jungle Game Lab (February 5)Cartapli: Fold Quest, ManduPod, Jungle Game Lab (February 5)Nonentity Galaxy, Brick-Up Studio, 2P Games (February 3)RPGVampire's Fall 2, Early Morning Studio (February 12)WiZman's World Re;Try, CITY CONNECTION, GRAVITY (February 18)迷鹿：Terreno di caccia, 桃记糖浆批发行, Cosmic Train (February 14)SandboxCreature Kitchen, The Rat Zone (February 6)Rise of Piracy, IrishJohnGames, MicroProse Software (February 24)Seclusa, Studio Nienta (February 16)Roboco, Filament Games (February 6)SimulationDead Pets: A Punk Rock Slice of Life Sim, Triple Topping, Akupara Games (February 6)Railroad Corporation 2, Corbie Games (February 25)Dead in Antares, Ishtar Games (February 19)The Slaverian Trucker, SawyerK Games (February 17)Starsand Island, Seed Sparkle Lab (February 11 – early access)Streamer Life Simulator 2, Cheesecake Dev (February 5)Tailor Simulator, Zoady (February 5)Megastore Simulator, Yolo Games Studio (February 2)Sports and racingSuper Battle Golf, Brimstone, Oro Interactive (February 19)New Heights: Realistic Climbing and Bouldering, Wikki Works (February 26)RC Overdrive, Game Development Alexander Lamers (February 22)Neon Curves Racing, Ghost Machine, Entropy Digital Games (February 12)StrategyMaster of Piece, I M GAME, I M FINE (February 4)Sunbreak War, Candelight Studio (February 28)Hold the Mine, Hookaria Games (February 17)Roach Post, KARP GAMES (February 16)Underboard, Headless (February 6)Be Queen Bee, Three Blanket Studio, Jungle Game Lab (February 5)Trust Me, I Nailed It, Team Afternoon, Jungle Game Lab (February 5)MENACE, Overhype Studios (February 5)Dead Grid Atom Void (February 4)SurvivalNested Lands, 1M Bits Horde, META Publishing (February 25)Aloft, Astrolabe Interactive Inc. (January 15 – early access)Into the Dead: Our Darkest Days, PikPok (April 9 – early access)Lost Skies, Bossa Studios (April 18 – early access)Oppidum, EP Games® (April 25)Survival Machine, Grapes Pickers (May 7 – early access)Dino Path Trail, Void Pointer (May 9)Salt 2: Shores of Gold, Lavaboots Studios (November 12)ANGST: A TALE OF SURVIVAL, Cherrypick Games (December 5)That’s a wrap for February 2026. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/games-made-with-unity-february-2026-releases</link><guid isPermaLink="true">https://unity.com/blog/games/games-made-with-unity-february-2026-releases</guid><pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Redesigned Offerwall Monetization Dashboard: What’s New and Next]]></title><description><![CDATA[Tapjoy from Unity’s offerwall is equipped with economy optimization features designed to increase the impact of publishers’ offerwall integrations. In order for publishers to get the most out of these optimization features, we have made a significant investment in rebuilding the offerwall publisher dashboard from the ground up to provide a cohesive and holistic view.What’s new for publishersThe new dashboard introduces a suite of new features to improve monetization. These include new reporting tools and metrics to help publishers arrive at deeper insights:- Partner and app overview: Analyze your data in detail with advanced filtering, break-by dimensions, and dynamic visual reports.- New app-level metrics: Get a clearer understanding of the funnel and areas for improvement with metrics like Daily Active Users (DAU), Daily Unique Viewers (DUV), and Daily Unique Converters (DUC).- Redesigned Placement Page: See a clear bird's-eye view of your offerwall monetization across all entry points, making it easier to monitor and manage.- Refreshed A/B testing flow: Set up and run tests more simply and intuitively. Once tests are complete, publishers will now be able to view outcomes directly from the App and Content Overview page.New dashboard availability and what’s nextThe new dashboard is now available for all partners. To try it out and test the new features, simply log in to the Tapjoy dashboard here. Please note that the legacy Tapjoy publisher dashboard will be deprecated at a later date. You can continue to use your existing login credentials to access the new dashboard.]]></description><link>https://unity.com/blog/offerwall-publisher-dashboard</link><guid isPermaLink="true">https://unity.com/blog/offerwall-publisher-dashboard</guid><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 top trends redefining industry in 2026]]></title><description><![CDATA[Over the past decade, immersive technology has quietly moved from experimental lab projects to everyday infrastructure. What started as one-off demos in R&D centers is now shaping how cars are designed and marketed, how hospitals train clinicians, how factories are commissioned, and how customers shop online.As we look to 2026, one thing is clear: we’ve entered a convergence era. Real-time 3D, extended reality (XR), and artificial intelligence are no longer separate innovation streams. Combined with a sharpened focus on sustainability, they’re becoming the foundation of how leading organizations design, operate, and grow.That’s the story at the heart of the Unity Industry Trends Report 2026.This year’s report brings together perspectives from 14 Unity customers and partners across manufacturing, automotive, healthcare, aerospace, retail, sports and entertainment, and geospatial technology. Rather than speculating about the future, they share what’s already working and producing remarkable results - and where they see the biggest shifts coming next.Below is a glimpse of the top 5 key trends we’ve identified for 2026 based on these expert industry insights.1. Shift from experimentation to executionFrom pilots to production: virtual-first becomes the defaultFor years, immersive tech lived in the “pilot graveyard”: impressive proofs-of-concept that never quite scaled.That’s changed.In the report, you’ll see how manufacturers, healthcare, and automotive leaders are embracing virtual-first system engineering and simulation, reducing commissioning time, expanding clinical capacity, and transforming how complex systems are designed, validated, and brought to market. You’ll learn how industry experts are:Slashing commissioning time by 30-50%.Reducing scan time for medical examination by over 50%.Running thousands of “what if” scenarios safely and sustainably.Accelerating clinical training and diagnostics.Aligning dispersed engineering, operations, and customer teams around a shared virtual reference.The result? Shorter time-to-market, fewer surprises on the factory floor, expanded clinical capacity, and more time-and cost-efficient product training with hardware that hits the ground better tested from day one. 2. AI + XR: Powering the next generation of experiencesIntelligent immersion, not just visualizationAnother clear signal from this year’s contributors: XR is no longer just a new screen. When combined with AI, it becomes an intelligent interface that understands context and responds in real time.In the report you’ll find examples like:Industrial human–machine interfaces where faults appear directly on 3D machines, with AI surfacing the right procedures at the right moment.Sports and entertainment experiences where “infinite stadiums” adapt to each fan, both in-venue and remotely.Indoor cycling and fitness platforms that generate photorealistic 3D routes from real-world footage and tailor training plans to each athlete. These are experiences built on Unity’s real-time 3D engine and increasingly enhanced by AI, systems that learn from data, adapt to users, and quietly make complex decisions feel simple.3. Immersive training for skills: Upskilling & reskillingImmersive training at scale: from hospitals to orbitSkills gaps, safety requirements, and workforce churn are putting pressure on traditional training models. Contributors from healthcare and aerospace show how immersive training is shifting from “nice to have” to mission-critical.Highlights from the report include:Healthcare organizations using VR to train nurses and clinicians in realistic, high-stakes scenarios - while capturing objective performance data rather than relying on subjective assessments.How VR training is improving performance by 230% compared to traditional methods.Space agencies and partners using XR simulators to prepare astronauts for zero-gravity locomotion and complex tasks aboard the International Space Station.These stories share a common pattern: safer practice, more repeatable training, and richer data for leaders who need to understand where their teams are truly ready - and where they’re not.4. Democratization of 3D data across teams for improved accessibility and collaborationFrom specialist tools to shared languageA recurring theme across industries is the need to get more people, not just more specialists, involved in 3D workflows.In the report, you’ll see how organizations are:Turning massive CAD, BIM, and geospatial datasets into living digital twins that anyone can explore.Giving designers, trainers, and subject-matter experts the ability to create interactive experiences without writing code.Reusing the same real-time 3D assets across product design, training, marketing, and service.This is where the Unity Industry ecosystem: solutions like Unity Studio, Unity Asset Manager, Asset Transformer, and Unity AI, come into play. Together, they help teams move from static files scattered across departments to a shared, real-time 3D foundation that supports collaboration at scale.5. Tech for good: Implementing sustainable practicesSustainability and safety as core outcomesFinally, the report surfaces a powerful throughline: sustainability is no longer separate from productivity and safety.By shifting testing, training, and customer decision-making into virtual environments, companies are:Reducing physical prototypes and rework.Cutting travel for commissioning, training, and troubleshooting.Designing safer machines and work environments before they’re built.From “safe-by-design” industrial systems to smarter, more sustainable commerce experiences, the organizations featured here show how immersive tech and AI can drive environmental and social impact alongside financial returns.Why this report, and why now?The Unity Industry Trends Report 2026 is not a technology brochure. It’s a snapshot of how leaders across sectors are closing the gap between vision and value with real-time 3D and AI, built on Unity.If you’re wondering:How do we move beyond pilots and scale immersive solutions?Where are peers in my industry actually seeing ROI today?What are some best practices and real-world use case examples I can take inspiration from?What capabilities will define competitive advantage in 2026 and beyond?…this report is for you.We’re still early in the convergence era, but the direction of travel is clear.The next wave of industry leaders will be those who can turn immersive, AI-driven, sustainable solutions from isolated projects into the backbone of how their organizations operate.Explore what they’re building - and what you could build next.Download the Unity Industry Trends Report 2026 to read the full stories and dive deeper into each trend.]]></description><link>https://unity.com/blog/top-trends-redefining-industry-in-2026</link><guid isPermaLink="true">https://unity.com/blog/top-trends-redefining-industry-in-2026</guid><pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: 2025 in review]]></title><description><![CDATA[2025 was a great year for the Unity community. From ambitious new titles like Jump Space, to breakout hits like Megabonk or Schedule 1, to the long-awaited historical release of Hollow Knight: Silksong, it's been a fun year watching and celebrating what the Unity community put out in the world. Along the way, we tried to do our part by highlighting and celebrating that work, from cheering on the IGF Award winners at the start of the year to hosting our first-ever  Steam Sale for the Unity Awards. 

We spent the year trying to spotlight that work where we could, and this post is a recap of some of those Unity-made releases.IGF Awards
Huge congrats to all the IGF finalists, especially the games made with Unity that dominated the awards this year — including Consume Me, which took home three wins! Fresh off their Audience Award win at the IGF Awards, The WereCleaner team joined us on stream. Check it out:Made with Unity Steam Curator Page
Be sure to stay up to date with the latest Unity creations on Steam by checking out our Steam Curator page.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in 2025, either into early access or full release. Add to the list by sharing any that you think we missed.Match-3 survival horror comedy RPG MatchroidvaniaCreepy Redneck Dinosaur Mansion 3, Strange Scaffold (April 22)ActionTerminator 2D: NO FATE, Bitmap Bureau (December 12)Escape From Duckov, Team Soda (October 16)Shotgun Cop Man, DeadToast Entertainment (May 1)Deliver At All Costs, Studio Far Out Games (May 22)Gorn 2, Cortopia, Free Lives (April 17)THE DARK SIDE OF CECLON, SOLIDS Studio (January 20)Butcher's Creek, David Szymanski (January 23)ReSetna, Today's Games (January 31)Grapples Galore, Zoteling (February 7)
METAL SUITS: Counter-attack, Eggtart Inc (February 13)LIZARDS MUST DIE 2, the Bratans, Smola Game Studio (March 7)Castle Of Alchemists, Team Machiavelli (April 10)Knock'Em Out, BBear Studio (April 17)CyberCorp, Megame LLC (April 22)Badlands Crew, Runner Duck (April 28)Pipistrello and the Cursed Yoyo, Pocket Trap (May 28)Astro Prospector, Incrementalist (July 14)Mage Arena, jrsjams (July 24 – early access)FUMES, FUMES team (July 28 – early access)NINJA GAIDEN: Ragebound, The Game Kitchen (July 31)Stick It to the Stickman, Free Lives (August 18 – early access)The Knightling, Twirlbound (August 28)Jump Space, Keepsake Games (September 19 – early access)Onirism, Crimson Tales (October 23)Mech Havoc, Mid Development (October 27 - early access)Brush Burial: Gutter World, Knife Demon Software (November 19)Astro Prospector, Incrementalist (July 14)FUMES, FUMES team (July 28 – early access)Bullet HeavenJotunnslayer: Hordes of Hel, Games Farm, ARTillery (September 3)Deep Rock Galactic: Survivor, Funday Games (September 17)Megabonk, vedinad (September 18)Whisker Squadron: Survivor, Flippfly LLC (February 20)Rogue: Genesia, Ouadi Huard (March 7)Fur and Fables, Double Crow Games (April 3 – early access)Nautical Survival, Idan Rooze (April 9 – early access)Conquest Dark, Eldritch Sword Games (April 30 – early access)Broventure: The Wild Co-op, Alice Games (May 15)Tower of Babel: Survivors of Chaos, NANOO (May 19 – early access)Bioprototype, Emprom Game (May 19)Gunlocked 2, FromLefcourt (August 21 - early access)Book Shooter, SOS GameLab. (August 22)Machick 2, Deadpixel (September 10)Frogmageddon, Frog Mage Udon, Sunset Dreamland (November 6)Shard Squad, The Root Studios (November 10)Power Fantasy, Lava Lamb Games (December 4)Cards, dice, and deckbuildersDeath Howl, The Outer Zone (December 9)Monster Train 2, Shiny Shoe (May 21)XIII - A Final Game of Tarot With Death, Indigo Dreams (January 9)Pairs & Perils, Little Horror Studios (January 20)None Shall Intrude, Aeterna Ludi (January 21)Die in the Dungeon, ATICO (February 21 – early access)Knights in Tight Spaces, Ground Shatter (March 4)Dice Eater: A Supernatural Mystery Card Game, Team Tetrapod (March 11)Kingdom of Cards, Rubber Duck Games (March 24 – early access)DEMONS, Andrew Fender, Alastair Headden (March 25 – early access)Bramble Royale: A Meteorfall Story, Slothwerks (March 26)LONESTAR, Math Tide (April 3)Call of Clans, Call of Clans (April 7)Throne of Bone, Windmill Slam (April 22)Skogdal, Erlend Kirkeboe, Kay Arne Kirkeboe (April 28)Into the Restless Ruins, Ant Workshop Ltd (May 15)Luck & Loot, SMARTcreative (August 1)Sizzle & Stack, Arvis Games (August 5)Rogue Hex, Topstitch Games (August 9)Rana Card, VisionRana (September 16)Cubic Cosmos, Inkstone Atelier (September 17 - early access)DOG WITCH, Heckmouse (November 5)Into The Grid, Flatline Studios (November 10 - early access)Cross Blitz, Tako Boy Studios LLC (November 24)Dogpile, Studio Folly, Toot Games, Foot (December 10)Casual, rhythm, and partyLEGO® Party!, SMG Studio (September 30)UNBEATABLE, D-CELL GAMES (December 9)Among Us 3D, Schell Games, Innersloth (May 6)Rift of the NecroDancer, Brace Yourself Games, Tic Toc Games (February 5)Mika and The Witch's Mountain, Chibig, Nukefist (January 22)Bao Bao's Cozy Laundromat, Destroyer Doggo (March 6)Spilled!, Lente (March 26)Vaporwave Pinball, Jamie D, Mixtape Games UK (April 4)Pilo and the Holobook, Mudita Games (April 10)Lose Ctrl, Play From Your Heart Ug (haftungsbeschränkt) (April 15)Polterguys: Possession Party, Madorium Ltd (April 17)Laser Battle Cats - travel & destroy!, HowDeerYou (April 18 – early access)Ithya: Magic Studies, BlueTurtle (May 7)Kulebra and the Souls of Limbo, Galla (May 16)Bugtopia, Nocturnal Games (May 21)Kabuto Park, Doot, Zakku (May 28)Dunk Dunk, Badgerhammer Limited (May 8)POPUCOM, Hypergryph (June 1)Stronghold Crusader: Definitive Edition, FireFly Studios (July 15)Park It!, Mishleto (July 28)Tiny Terraces, VuVuu (July 31 – early access)Ratatan, TVT Co. Ltd., Ratata Arts (September 18 - early access)HYPERBEAT, Alice Bottino, Chancellor Wallin (October 22)NoSlack Pets: Lo-Fi Paws, Lynkpin Game (November 3)Desktop Defender, Conradical Games (November 4)Restaurats, toR Studio (November 7)THRASHER, Puddle (November 7)Rhythm Doctor, 7th Beat Games (December 6)City and colony builderFarthest Frontier, Crate Entertainment (October 23)The Wandering Village, Stray Fawn Studio (July 17)Airborne Empire, The Wandering Band LLC (January 13 – early access)Tiny Kingdom, neltile (January 30)Mini City: Mayhem, Rogue Duck Interactive, cukuto (February 17)Microtopia, Cordyceps Collective (February 18)Time to Morp, Team HalfBeard (March 6)Terraformers, Asteroid Lab (March 9)HEXAROMA: Village Builder, Almost a Game Company (March 10)KAISERPUNK, Overseer Games (March 21)Edge Islands, LS Games (March 24)Roman Triumph: Survival City Builder, Coreffect Interactive (April 3 – early access)Synergy, Leikir Studio (April 16)Havendock, YYZ Studio (April 22)MEMORIAPOLIS, 5PM Studio (April 30)Darfall, SquareNite (May 8)Preserve, Bitmap Galaxy (May 15)Worshippers of Cthulhu, Crazy Goat Games (May 22)City Tales - Medieval Era, Irregular Shapes (May 22 – early access)Kity Builder, Sambero, irx99, YerayToledano, Juan Hust (June 17)ISLANDERS: New Shores, The Station (July 10)Fill Up The Hole, Fluffy Lotus (July 17)Star Birds, Toukana Interactive (September 10 - early access)Twinkleby, Might and Delight (September 23)Becastled, Mana Potion Studios (October 22)Super Fantasy Kingdom, Super Fantasy Games (October 24 - early access)ComedyWhile Waiting, Optillusion (February 5)Turbo Dismount® 2, Secret Exit Ltd. (January 23 – early access)Pick Me Pick Me, Optillusion (May 28 – early access)Cheese Rolling, The Interviewed (August 19)Dinocop, Pieces Games (November 6)Tingus Goose, SweatyChair (December 1)Experimental or surrealistENA: Dream BBQ, ENA Team (March 27)Extreme Evolution: Drive to Divinity, Sam Atlas (January 16)NIDANA, lvl374 (July 28)ExplorationLEGO® Voyagers, Light Brick Studio (September 15)Herdling, Okomotive (August 21)Baby Steps, Gabe Cuzzillo, Maxi Boch, Bennett Foddy (September 23)Once Upon A KATAMARI, RENGAME (October 23)FPSForefront, Triangle Factory (November 6 - early access)Moros Protocol, Pixel Reign (September 18)BOWLOUT, Sep Horsthuis, Quint Winter (January 7)Arken Age VitruviusVR (January 16)Cheaters Cheetah, Acmore Games (March 10)GRIMWAR, BookWyrm (May 16)Bloodshed, com8com1 Software (May 22)Noga, Ilan Manor (May 30)Mycopunk, Pigeons at Play (July 10 – early access)INCISION, SmoothBrainDev (August 28)PIGFACE, titolovesyou (September 18 - early access)Moros Protocol, Pixel Reign (September 18)Darkenstein 3D, Rowye (October 21)Forefront, Triangle Factory (November 6 - early access)7 Days Blood Moons, iLLOGIKA (November 4 - early access)HorrorNo, I'm not a Human, Trioskaz (September 15)Total Chaos, Trigger Happy Interactive (November 20)Kiosk, Vivi (January 28)Little Lighthouse of Horror, Codiwans (January 28)Studio System : Guardian Angel, alreti circle (February 4)Blood Typers, Outer Brain Studios (February 20)Moonbase Lambda, Thunderfox Studio (March 6)Lost Lullabies: The Orphanage Chronicles, Pugsy Studios (March 7 – early access)The Children of Clay, Balazs Ronyai (March 7)ORDER 13, Cybernetic Walrus (March 10)Centum, Hack The Publisher (March 11)LiDAR Exploration Program, KenForest (April 2)White Knuckle, KenForest (April 17 – early access)The Boba Teashop, Mike Ten (April 21)Out of Hands, Game River (April 22)Darkwater, Targon Studios (April 22 – early access)One-Eyed Likho, Morteshka (July 28)Whisper Mountain Outbreak, Toge Productions (August 11 - early access)Vigil, Singularity Studios (August 15)Eclipsium, Housefire (September 19)It Has My Face, NightByte Games (September 23 - early access)CARIMARA: Beneath the forlorn limbs, Bastinus Rex (October 6)House of the Vigil, Zapster (October 15)Amanda the Adventurer 3, MANGLEDmaw Games (November 6)SIDE EFFECTS, hirohun, Mr.Pootsley, Jaybooty, Lofar42 (November 21)The Silence After, Vancouver Film School (December 4)I'm on Observation Duty 8, Notovia, Dreamloop Games (December 5)The Boba Teashop, Mike Ten (April 21)Out of Hands, Game River (April 22)Darkwater, Targon Studios (April 22 – early access)Management and automationTiny Bookshop, neoludic games (August 7)Two Point Museum, Two Point Studios (March 4)Viking Chef: Feast Frenzy, Yew Rune Creations (February 3)Blood Bar Tycoon, Clever Trickster Studio (February 4)Astronomics, Numizmatic (February 10 – early access)
Mind over Magic, Sparkypants (February 12)Ale Abbey, Hammer & Ravens (February 18 – early access)Monster Care Simulator, Banana Tiger Studio (April 4 – early access)Assemblands, Tafusoft (April 15)Animal Spa, Sinkhole Studio, Moonlab Studio (May 13)Blacksmith Master, Untitled Studio (May 15 – early access)Plan B: Terraform, Gaddy Games (August 29)Mars Attracts, Outlier (September 15 - early access)ShapeHero Factory, Asobism.Co.,Ltd (September 17)Ale Abbey - Monastery Brewery Tycoon, Hammer & Ravens (September 17)Witchy Business, Rogue Duck Interactive (September 22)Little Rocket Lab, Teenage Astronauts (October 7)The Farmer Was Replaced, Timon Herzog (October 10)Kokoro Kitchen, Mango Leaf Games (October 17)Tavern Keeper, Greenheart Games 💚(November 3 - early access)News Tower, Sparrow Night (November 18)MineMogul, NoodleForge (Gvarados & Diomonder) (December 4 - early access)MetroidvaniaHollow Knight: Silksong, Team Cherry (September 4)Constance, btf (November 24)Oirbo, ImaginationOverflow (February 11 – early access)SteamDolls - Order Of Chaos, The Shady Gentlemen (February 11 – early access)Narrative and mysteryThe Séance of Blake Manor, Spooky Doorway (October 27)despelote, Julián Cordero, Sebastian Valbuena (May 1)Black Mirror: Thronglets, Night School, Netflix Games (April 10)S4U: CITYPUNK 2011 AND LOVE PUNCH, U0U Games (January 8)Cat Detective Albert Wilde, beyondthosehills (January 24)Urban Myth Dissolution Center, Hakababunko (February 12)Weirdo, CASCHA GAMES (February 14)Afterlove EP, Pikselnesia (February 14)Do No Harm, Darts Games (March 6)Expelled!, inkle Ltd (March 12)The Darkest Files, Paintbucket Games (March 25)YOUR HOUSE, PATRONES & ESCONDITES (March 27)Beholder: Conductor, Alawar (April 23)Human Within, Signal Space Lab, Actrio Studio (April 3 - Steam release)Duck Detective: The Ghost of Glamping, Happy Broccoli Games (May 22)Replicomica, enyevg (June 16)Arctic Awakening, GoldFire Studios (September 18)Mind Diver, Indoor Sunglasses (September 28)My Little Puppy, Dreamotion Inc. (November 6)Goodnight Universe, Nice Dream (November 11)The Berlin Apartment, btf (November 17)Beholder: Conductor, Alawar (April 23)PlatformerPEAK, Landcrab (June 16)Haste, Landfall (April 1)Bionic Bay, Psychoflow Studio, Mureena Oy (April 17)Yooka-Replaylee, Playtonic Games (October 9)Bauhaus Bonk, Spoonful Games (February 6)JUMP KING QUEST, Nexile (February 12 – early access)PEPPERED: an existential platformer, Mostly Games (April 7)Ninja Ming, 1 Poss Studio (April 10)Seafrog, OhMyMe Games (April 15)Once Upon A Puppet, Flatter Than Earth (April 23)PaperKlay, WhyKev (March 27)Blessed Burden, Podoba Interactive (June 18)Everdeep Aurora, Nautilus Games (July 10)Tempest Tower, Half Past Yellow (August 19)NODE: The Last Favor of the Antarii, Lapsus Games (August 28)This is No Cave, monome.studio (October 17)Stuck Together, Hugecalf Studios (November 17)Puzzle adventureBlue Prince, Dogubomb (April 10)The Drifter, Powerhoof, Dave Lloyd (July 17)Is This Seat Taken?, Poti Poti Studio (August 7)Monument Valley 3, ustwo games (July 22 - PC & Console launch)Escape Simulator 2, Pine Studio (October 27)Ghost Town, Fireproof Games (April 24)Spirit Swap: Lofi Beats to Match-3 To, Soft Not Weak, LLC (February 3)Götz, Sleepy Seed (January 3)Reviver, Cotton Game (January 8)Cyber Manhunt 2: New World - The Hacking Simulator, Aluba Studio (January 20)LOK Digital, Letibus Design, Icedrop Games (January 23 - mobile version)Slender Threads, Blyts (February 7)Do No Harm, Darts Games (March 6)Elroy and the Aliens, Motiviti (April 2)Leila, Ubik Studios (April 7)Tempopo, Witch Beam (April 17)BOKURA: planet, ところにょり (April 24)Amerzone - The Explorer's Legacy, Microids Studio Paris (April 24)Pup Champs, Afterburn (May 19)Strings Theory, Beautiful Bee (Console release)Kathy Rain 2: Soothsayer, Clifftop Games (May 20)Poco, Whalefall (May 20)Axona, Onat Oke (May 28)Projected Dreams, Flawberry Studio (May 29)Squeakross: Home Squeak Home, Alblune (June 7)CIPHER ZERO, Zapdot (July 22)Secrets of Blackrock Manor - Escape Room, Biri Biri (August 1)Henry Halfhead, Lululu Entertainment (September 16)Strange Antiquities, Bad Viking (September 17)The Curse We Made, Potion Pixel (December 4)Roguelike/liteBALL X PIT, Kenny Sun (October 15)Shape of Dreams, Lizard Smoothie (September 10)Monsters are Coming! Rock & Road, Ludogram (November 20)Morsels, Furcula (November 18)The Rogue Prince of Persia, Evil Empire, Ubisoft (August 20)Slots & Daggers, Friedemann (October 24)CloverPit, Panik Arcade (September 26)Lost in Random: The Eternal Die, Stormteller Games (June 17)The Last Flame, Hotloop (January 9)Nunholy, Chowbie (January 16)Cryptical Path, Old Skull Games (January 29)Psionic Sentry : Infinite, Roy, 響雨互動娛樂, HowlingRain (February 2 – early access)Astral Throne, Zero Sun Games (February 7)Grimoire Groves, Stardust (March 4)Reignbreaker, Studio Fizbin (March 18)33 Immortals, Thunder Lotus (March 18 – early access)Nordhold, StunForge (March 25)Rogue Loops, Fubu Games (April 4)Slimekeep, BenBonk (April 7)Kādomon: Hyper Auto Battlers, Dino Rocket (April 7)Sandwalkers, Goblinz Studio (April 8)Vellum, Alvios Games (May 2)Savara, Doryah Games (May 6)Yasha: Legends of the Demon Blade, 7QUARK (May 14)An Amazing Wizard, Tiny Goblins (May 22 – early access)Garden of Witches, Team Tapas (May 23 – early access)Nightmare Frontier, Ice Code Games (June 16)He Is Coming, Chronocle (July 17 – early access)Day of the Shell, Duper Games (July 29)Gatekeeper, Gravity Lagoon (August 1)GUNTOUCHABLES, Game Swing (August 7)Dinotica, XA Studio (August 12 – early access)Bendy: Lone Wolf, Joey Drew Studios (August 15)BAPBAP, BAP HQ (August 19)Starlight Re:Volver, Pahdo Labs (August 27 – early access)Mortal Sin, Nikola Todorovic (August 29)Star Fire: Eternal Cycle, Ethereal Fish Studio (September 8)Flick Shot Rogues, Butter By The Fish (September 17)SWORN, Windwalk Games (September 23)Aethermancer, moi rai games (September 23 - early access)Touhou Dystopian, Kay Lnk (October 17)Forestrike, Skeleton Crew Studio, Thomas Olsson (November 17)RPGTainted Grail: The Fall of Avalon, Questline (May 23)Deadeye Deepfake Simulacrum, nodayshalleraseyou (September 18)Consume Me, Jenny Jiao Hsia, AP Thomson, Jie En Lee, Violet W-P, Ken "coda" Snyder (September 24)Demonschool, Necrosoft Games (November 19)Fretless - The Wrath of Riffson, Ritual Studios (July 17)Citizen Sleeper 2: Starward Vector, Jump Over The Age (January 31)Lightracer: For Judge, Smartmelon Games (January 7)Sea Fantasy, METASLA (January 7)Lords of Ravage: Dread Knights, Synthetic Domain (January 10)Tales of Graces f Remastered, TOSE CO., LTD. (January 16)The Quinfall, Vawraek Technology Inc. (January 24 – early access)Tails of Iron 2: Whiskers of Winter, Odd Bug Studio (January 28)Coridden, Aftnareld (January 29)Cabernet, Party for Introverts (February 20)Reality Break, Element Games, LLC (February 10)Everhood 2, Chris Nordgren, Jordi Roca (March 4)Suikoden I&II HD Remaster Gate Rune and Dunan Unification Wars, KONAMI (March 6)Song of Rats, Tesseract Games (March 10)FATE: Reawakened, gamigo US Inc., Tableflip Entertainment AB (March 12)Geo Mythica, Guin Entertainment, LLC (March 20)AI LIMIT, Sense Games (March 27)Velev, Chaf (April 9 – early access)Gedonia 2, Kazakov Oleg (April 9 – early access)Willow Guard, MiTale (April 10)Traveler's Refrain, Red Essence Games (April 11)Erenshor, Burgee Media (April 14 – early access)Maliki: Poison Of The Past, Blue Banshee (April 22)Sunderfolk, Secret Door (April 23)Eydigard, Frostisen Studio (April 29 – early access)The Monster Breeder, Fantasy Creations (May 6)Yes, Your Grace 2: Snowfall, Brave At Night (May 8)Yaoling: Mythical Journey, RAYKA STUDIO (June 19)BitCraft Online, Clockwork Laboratories, Inc. (June 21 – early access)RAIDOU Remastered: The Mystery of the Soulless Army, ATLUS (June 19)The Necromancer's Tale, Psychic Software (July 17)Back to the Dawn, Metal Head Games (July 17)The RPG, Dionysus Acroreites (August 7)OFF, Mortis Ghost, Fangamer (August 15)City of Springs, The Naked Dev, Alterego Games (August 18)The Lonesome Guild, Tiny Bull Studios (October 23)Kingdom of Night, Friends of Safety (December 2)SandboxMars First Logistics, Shape Shop (September 25)ANEURISM IV, Vellocet (March 11)Urban Jungle, Kylyk Games (March 21)Islands & Trains, Akos Makovics (May 29)I Fetch Rocks, SarumXR (August 1)MakeRoom, Kenney (August 7)Wobbly Life, RubberBandGames (September 18)Midori no Kaori, TheLaba (October 21)SimulationSchedule I, TVGS (March 24 – early access)PowerWash Simulator 2, FuturLab (October 23)Easy Delivery Co., Sam C (September 18)Slime Rancher 2, Monomi Park (September 23)Supermarket Simulator, Nokta Games (June 19)Cast n Chill, Wombat Brawler (June 16)Dinkum, James Bendon (April 22)My Summer Car, Amistech Games (January 8)Behind Glass: Aquarium Simulator, BitBros Inc (January 9)Skystead Ranch, ToastieLabs (January 17)Hello Kitty Island Adventure, Sunblink (January 30 - Steam and console release)Arctic Motel Simulator, One Slice of Pizza Games (February 11)Corner Kitchen Fast Food Simulator, Purple Heads Games (March 4)Hope's Farm 2, Green Sauce Games (March 26)Locomoto, Green Tile Digital (April 8)Aviassembly, Jelle Booij (April 11 – early access)Medieval Blacksmith, OGO Play (April 14)Doloc Town, RedSaw Games Studio (May 7)The Precinct, Fallen Tree Games Ltd (May 13)Tales of Seikyu, ACE Entertainment (May 21 – early access)Trash Goblin, Spilt Milk Studios Ltd (May 28)Liquor Store Simulator, Tovarishch Games (May 2)Toy Shop Simulator, PaperPixel Games (May 16)Alien Market Simulator, Silly Sloth Studios, Kheddo Entertainment (May 25 – early access)Plant Nursery Simulator, Robot Assembly (June 16 – early access)Grimshire, Acute Owl Studio (July 22 – early access)Ritual of Raven, Spellgarden Games (August 7)Gemporium: A Cute Mining Sim, Merge Conflict Studio (August 7)Robert on Earth, Remrofsnart (August 14)Waterpark Simulator, CayPlay (August 22 - early access)STORY OF SEASONS: Grand Bazaar, Marvelous Inc. (August 27)Whisper of the House, 元气弹工作室(GD Studio) (August 27)Supercar Collection Simulator, Kiki Games (September 8)Little Witch in the Woods, SUNNY SIDE UP (September 14)Bookshop Simulator, Blep Games (September 16 - early access)Goblin Cleanup, Crisalu Games (September 18 - early access)Sunken Engine, Two Nomads Studio (October 16 - early access)Politics The Game, Simplicity Games (October 22)Mall Simulator, F13 Games (November 3 - early access)Mon Bazou, Santa Goat (December 18)Food Processing Simulator, Bewolba Studios (December 18 - early access)Ranch Farm and Food Store Simulator, Bewolba Studios (December 18)My Winter Car, Amistech Games (December 29 - early access)

Sports and racingSkate Story, Sam Eng (December 8)Football Manager 26, SEGA Sports Interactive (November 4)Wheel World, Messhof (July 23)Lonely Mountains: Snow Riders, Megagon Industries (January 21)Umamusume: Pretty Derby, Cygames, Inc. (June 24)Helskate, Phantom Coast (January 20)Hover REV Hispeed Burst, JKK_WORKS (February 5)Turbo Takedown, Hanging Draw (March 3)Sledders, Hanki Games (March 20)#DRIVE Rally, Pixel Perfect Dude (April 16)The Last Golfer, Pixel Perfect Dude (May 28)Driftwood, Stoked Sloth Interactive (August 1)Torso Tennis, Michael Mato (September 24)Hoop Land, Koality Game (October 21 - early access)StrategyTeenage Mutant Ninja Turtles: Tactical Takedown, Strange Scaffold (May 22)Cataclismo, Digital Sun (March 20)Diplomacy is Not an Option: Shareware, Door 407 (April 30)Yield! Fall of Rome, Billionworlds (January 20 – early access)IDUN - Frontline Survival, IDUN Interactive (January 20)Those Who Rule, Eldin Turulja (January 27)The Stone of Madness, The Game Kitchen (January 28)Heart of the Machine, Arcen Games (January 31 – early access)Dark Times, Gromov Studio (February 9)GIRLS' FRONTLINE 2: EXILIUM, SUNBORN Information Co., Ltd. (February 11)Kingshot, Century Games PTE. LTD. (February 22)The Deadly Path, Owlskip Enterprises (March 25)Grit and Valor - 1949, Milky Tea Studios (March 26)Legend of Heroes: Three Kingdoms, Free Wing (March 26 – early access)Hollywood Animal, Weappy Wholesome (April 10 – early access)Desperate Place, BruceGalaxy (April 22)Tower Dominion, Parallel 45 Games (May 7)9 Kings, Sad Socket (May 23 – early access)Broken Arrow, Steel Balalaika (June 19)Stronghold Crusader: Definitive Edition, FireFly Studios (July 15)ERA ONE, Team Complex LTD (August 6 – early access)The Bazaar, Tempo (August 13 - Steam release)Dice Gambit, Chromatic Ink (August 14)ENDLESS™ Legend 2, AMPLITUDE Studios (September 22 - early access)Relic Guardian - Tower Defense, Mystrigger (October 22)Q-UP, Everybody House Games (November 5)There Are No Orcs, BaseTrade Studio (November 6)BattleGroupVR2, SpaceOwl Games (November 7)SurvivalWinter Burrow, Pine Creek Games (November 12)Len’s Island, Flow Studio (June 19)Survival Machine, Grapes Pickers (May 7 – early access)Aloft, Astrolabe Interactive Inc. (January 15 – early access)Into the Dead: Our Darkest Days, PikPok (April 9 – early access)Lost Skies, Bossa Studios (April 18 – early access)Oppidum, EP Games® (April 25)Survival Machine, Grapes Pickers (May 7 – early access)Dino Path Trail, Void Pointer (May 9)Salt 2: Shores of Gold, Lavaboots Studios (November 12)ANGST: A TALE OF SURVIVAL, Cherrypick Games (December 5)That’s a wrap for the year 2025. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/games-made-with-unity-2025-releases</link><guid isPermaLink="true">https://unity.com/blog/games/games-made-with-unity-2025-releases</guid><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: December 2025 in review]]></title><description><![CDATA[December closed out the year strong with award winners both at The Game Awards (Congrats Silksong and Umamusume: Pretty Derby) as well as our own celebration at the 17th Unity Awards. Anyway, let's get to the final release highlights of the year.
IGF Awards
Huge congrats to all the IGF finalists, especially the games made with Unity that dominated the awards this year — including Consume Me, which took home three wins! Fresh off their Audience Award win at the IGF Awards, The WereCleaner team joined us on stream. Check it out:Made with Unity Steam Curator Page
Be sure to stay up to date with the latest Unity creations on Steam by checking out our Steam Curator page.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in December 2025, either into early access or full release. Add to the list by sharing any that you think we missed.ActionTerminator 2D: NO FATE, Bitmap Bureau (December 12)Onirism, Crimson Tales (October 23)Mech Havoc, Mid Development (October 27 - early access)Astro Prospector, Incrementalist (July 14)FUMES, FUMES team (July 28 – early access)Bullet HeavenPower Fantasy, Lava Lamb Games (December 4)Shard Squad, The Root Studios (November 10)Cards, dice, and deckbuildersDeath Howl, The Outer Zone (December 9)Dogpile, Studio Folly, Toot Games, Foot (December 10)Casual, rhythm, and partyRhythm Doctor, 7th Beat Games (December 6)UNBEATABLE, D-CELL GAMES (December 9)City and colony builderFarthest Frontier, Crate Entertainment (October 23)Super Fantasy Kingdom, Super Fantasy Games (October 24 - early access)Becastled, Mana Potion Studios (October 22)ComedyTingus Goose, SweatyChair (December 1)Experimental or surrealistNIDANA, lvl374 (July 28)ExplorationOnce Upon A KATAMARI, RENGAME (October 23)Baby Steps, Gabe Cuzzillo, Maxi Boch, Bennett Foddy (September 23)FPSForefront, Triangle Factory (November 6 - early access)Moros Protocol, Pixel Reign (September 18)7 Days Blood Moons, iLLOGIKA (November 4 - early access)HorrorDeadly Delivery, Flat Head Studio (December 4)The Silence After, Vancouver Film School (December 4)I'm on Observation Duty 8, Notovia, Dreamloop Games (December 5)The Boba Teashop, Mike Ten (April 21)Out of Hands, Game River (April 22)Darkwater, Targon Studios (April 22 – early access)Management and automationMineMogul, NoodleForge (Gvarados & Diomonder) (December 4 - early access)MineMogul, NoodleForge (Gvarados & Diomonder) (December 4 - early access)MetroidvaniaConstance, btf (November 24)SteamDolls - Order Of Chaos, The Shady Gentlemen (February 11 – early access)Narrative and mysteryGoodnight Universe, Nice Dream (November 11)My Little Puppy, Dreamotion Inc. (November 6)The Berlin Apartment, btf (November 17)Beholder: Conductor, Alawar (April 23)PlatformerStuck Together, Hugecalf Studios (November 17)This is No Cave, monome.studio (October 17)Puzzle adventureThe Curse We Made, Potion Pixel (December 4)Strings Theory, Beautiful Bee (Console release)Strange Antiquities, Bad Viking (September 17)Roguelike/liteMonsters are Coming! Rock & Road, Ludogram (November 20)Morsels, Furcula (November 18)Slots & Daggers, Friedemann (October 24)CloverPit, Panik Arcade (September 26)Forestrike, Skeleton Crew Studio, Thomas Olsson (November 17)RPGKingdom of Night, Friends of Safety (December 2)Moonlighter 2: The Endless Vault, Digital Sun (November 19 - early access)Kingdom of Night, Friends of Safety (December 2)SandboxMidori no Kaori, TheLaba (October 21)Wobbly Life, RubberBandGames (September 18)SimulationMy Winter Car, Amistech Games (December 29 - early access)Mon Bazou, Santa Goat (December 18)Food Processing Simulator, Bewolba Studios (December 18 - early access)Ranch Farm and Food Store Simulator, Bewolba Studios (December 18)

Sports and racingSkate Story, Sam Eng (December 8)Turbo Takedown, Hanging Draw (March 3)StrategyBattleGroupVR2, SpaceOwl Games (November 7)Q-UP, Everybody House Games (November 5)There Are No Orcs, BaseTrade Studio (November 6)SurvivalANGST: A TALE OF SURVIVAL, Cherrypick Games (December 5)Survival Machine, Grapes Pickers (May 7 – early access)Salt 2: Shores of Gold, Lavaboots Studios (November 12)That’s a wrap for December 2025. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/games-made-with-unity-december-2025-releases</link><guid isPermaLink="true">https://unity.com/blog/games/games-made-with-unity-december-2025-releases</guid><pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[2025's brightest stars: A holiday customer story round-up]]></title><description><![CDATA[As we wrap up another incredible year, it feels like the perfect time to open a few presents early. While the holidays bring cheer and reflection, we’re unpacking something special: the gift of our customers' success. 2025 was a remarkable year for innovation, and we've been inspired by the groundbreaking work of our partners across diverse industries. From revolutionizing in-car experiences in the automotive world to pioneering new frontiers in healthcare and manufacturing, our customers have used Unity to turn bold ideas into reality. This year-end celebration isn't just about looking back; it's about honoring the creativity and drive that pushed boundaries. Join us as we share some of our favorite success stories that made 2025 a year to remember.Automotive innovations drive forwardImage credits: BMW Group, Toyota Motor Corporation, Mercedes Benz Group.The automotive industry accelerated its digital transformation in 2025, and our customers were in the driver's seat. Real-time 3D technology is no longer a futuristic concept but a core component of modern vehicle design, engineering, and the in-cabin experience. This year, we saw leaders in the space leverage Unity to create more efficient workflows and more engaging experiences for their customers.A standout story comes from BMW Group, which showcased its digital evolution by mastering complex 3D assets with Unity's Asset Manager. For a global manufacturer, managing a vast library of digital assets is a monumental task. BMW streamlined this process, ensuring consistency and accelerating development cycles. This allows their teams to iterate faster and bring innovations to market with greater speed and quality.Similarly, Toyota and Lexus pushed the boundaries of next-generation Human-Machine Interface (HMI) development. They used Unity to design intuitive and visually rich in-car systems that delight drivers and passengers. We also saw Mercedes-Benz continuing to focus on the delight of in-vehicle experiences, creating immersive and responsive interfaces that transform drive time into quality time.Discover more Automotive customer stories.Breakthroughs in healthcare and life sciencesImage credits: Philips, Medtronic, Random42.The healthcare industry continued its remarkable evolution, using technology to improve patient outcomes, enhance medical training, and visualize complex biological data. Unity's real-time 3D capabilities have been central to many of these advancements, providing the tools to build everything from surgical simulators to interactive patient education platforms.In 2025, Philips continued to lead with healthcare innovations that bridge the gap from the operating room to the living room. Their work demonstrates how immersive technology can support both clinical procedures and at-home patient care, making healthcare more accessible and effective. We also celebrated Medtronic's use of Unity to build digital twins for robotic surgery. These virtual replicas allow for precise data logging, playback, and visualization, enabling surgeons to refine their techniques and improve procedural success.Medical visualization also took a giant leap forward with Random42. They are revolutionizing how scientific and medical stories are told, using Unity to create stunning and accurate visualizations of complex biological processes. This work helps researchers, doctors, and patients better understand the mechanisms of disease and the promise of new treatments.Take a look at some more Healthcare customer stories.Smarter, faster, better manufacturingImage credits: SEW EURODRIVE & realvirtual.io, Siemens & EducationXR, Bridgestone Americas.Efficiency, safety, and innovation are the pillars of modern manufacturing. This year, our customers demonstrated how real-time 3D is a powerful tool for achieving all three. From employee training to factory floor simulation, Unity is helping manufacturers build the future of production.SEW-EURODRIVE revolutionized virtual commissioning by integrating Unity with MOVIKIT® Custom SimInterface and realvirtual.io, enabling engineers to test and refine automation logic in a risk-free digital twin environment. This approach reduced commissioning time by 70%, ensuring faster ROI and minimizing on-site logistical errors.Workforce training also saw significant advancement. Siemens is rewiring the electrical workforce with immersive XR training modules, providing safe, scalable, and highly effective learning experiences. In a similar vein, Bridgestone Americas reformed its engineering operations with in-house developed VR applications, allowing teams to collaborate and solve problems in a shared virtual space, reducing the need for physical prototypes and travel.Check out more Manufacturing customer stories.The revolution in retail and customer engagementImage credits: Wren Kitchens, Kohler.The retail landscape is more competitive than ever, and customer engagement is the key to success. In 2025, brands used Unity to create unique, interactive, and personalized experiences that captured attention and drove results.Kohler embarked on an impressive 3D content journey to scale customer engagement. By transforming their product catalog into interactive 3D assets, they allow customers to explore products in detail from the comfort of their homes, leading to more confident purchasing decisions.By leveraging Unity, Wren Kitchens enhanced their design and visualization processes, giving customers a clearer picture of their future kitchen while optimizing their own operational workflows. This is a perfect illustration of how immersive experiences can drive both customer satisfaction and business efficiency.Explore other Retail customer stories.Building the immersive worlds of tomorrowImage credits: Esri, ROUVY, TomTom, Google Maps.Beyond specific industries, Unity is providing the foundation for the next generation of digital experiences, including smart cities and interconnected virtual worlds. These ambitious projects require a platform that can handle massive datasets and deliver real-time performance, and our customers rose to the challenge in 2025.We saw incredible progress in building dynamic smart digital twins. These projects use real-world data to create immersive simulations, helping planners model traffic, analyze environmental impact, and design more connected facilities. The collaboration between ArcGIS and Unity empowered The Port of Corpus Christi and The Acceleration Agency to create a rich, geographically accurate digital twin, blending real-world data with creative vision.ROUVY revolutionized indoor cycling by blending real video footage, 3D data, and live sensor input into ultra-realistic augmented reality routes using Unity. With features like the ROUVY Route Creator, users can transform their own footage and GPS data into rideable AR experiences, adding 20 TB of new content weekly. Map design and visualization workflows are the focus for TomTom, who use Unity to create simulated environments that combine automotive navigation software in virtual worlds.Redefining navigation with its Immersive View for Android XR, Google Maps created a means for users to explore cities, landmarks, and venues in stunning 3D detail. Powered by Unity, this groundbreaking application seamlessly transitions from 2D maps to fully immersive experiences, offering unparalleled confidence in trip planning and discovery.Dive into more customer stories about immersive applications.Looking ahead to a bright 2026Reflecting on these stories from 2025 fills us with excitement for the year ahead. The innovation we've seen from our customers is a testament to their vision and hard work. They are the ones turning possibilities into realities, and we are honored to be part of their journey.As we look toward 2026, the road ahead is full of opportunity, and we can’t wait to see what our customers will build next.We wish you a joyful holiday season and a new year filled with inspiration, success, and groundbreaking innovation.
]]></description><link>https://unity.com/blog/industry-customer-success-stories-2025-round-up</link><guid isPermaLink="true">https://unity.com/blog/industry-customer-success-stories-2025-round-up</guid><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Celebrating excellence: Unity Awards 2025 winners.]]></title><description><![CDATA[As we look back on an incredible year of creativity and innovation, we're thrilled to celebrate the winners of the 17th Unity Awards, 2025.Unity Awards 2025 by the numbers700+ project submissions – A record-breaking year showcasing the breadth of Unity development14,000 community voters – Our largest voting community yet36,000+ votes cast – Representing passionate engagement across allCategoriesMultiple categories with razor-thin margins – Demonstrating theexceptional quality of this year's nomineesThis year's competition was fiercer than ever, with many categories decided by narrow margins that reflect the outstanding caliber of submissions. While we celebrate our winners, we also extend our congratulations to all nominees who've contributed to this remarkable showcase of talent and creativity in the Unity community.Unity Award winnersFor the second year in a row, we announced the Unity Award winners during a live showcase that also highlighted updates and exclusives from Unity developers across our community. Congratulations to all the winners and nominees, and a huge thank you to everyone who tuned in live to watch the show.
]]></description><link>https://unity.com/archive/blog/</link><guid isPermaLink="true">https://unity.com/archive/blog/</guid><pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Celebrating excellence: Unity Awards 2025 winners]]></title><description><![CDATA[As we look back on an incredible year of creativity and innovation, we're thrilled to celebrate the winners of the 17th Unity Awards, 2025.The Unity Awards 2025 by the numbers700+ project submissions – A record-breaking year showcasing the breadth of Unity development14,000 community voters – Our largest voting community yet36,000+ votes cast – Representing passionate engagement across all categoriesMultiple categories with narrow margins – Demonstrating the exceptional quality of this year's nomineesThis year's contest was the most competitive yet, with many categories decided by narrow margins that reflect the outstanding quality of submissions. While we celebrate our winners, we also extend our congratulations to all nominees who've contributed to this remarkable showcase of talent and creativity in the Unity community.The Unity Awards Showcase 2025For the second year in a row, we announced the Unity Award winners during a live showcase. This event also highlighted updates and exclusives from Unity developers across our community. We featured recently released trailers from Den of Wolves, Vampire Crawlers, and Ferocious, along with first looks and developer insights – and even our very first world premiere. Here's a short recap of the games we featured during the show.SymbiosisAberratic announced the demo for their hardcore base defense action RPG will release on January 26, 2026.The War of the Worlds: Siberia1C Game Studios showcased new gameplay from their upcoming game, releasing in 2027.Planet of Lana IIWe got an exclusive first look at new gameplay from Wishfully and Thunderful Publishing, with insight from the development team.Darkside Detective: The Backside of the MoonWe had our very first world premiere, courtesy of Spooky Doorway and Akupara Games. In this reveal trailer, we got a first look at the new mind-melting mysteries that await Detective McQueen and Officer Dooley.SublustrumDevelopers Brickworks Games gave us insight into the development of the remake of their classic 2008 psychological adventure.NocturneWe enjoyed an exclusive look at new gameplay and insights from Pracy Studio.Unity Award winnersIn our showcase, we also announced the winners in all Unity Awards categories. Congratulations to all the winners and nominees, and a huge thank you to everyone who tuned in live to watch the show.GamesBest 2D VisualWinner: NevaRunner-ups: Hollow Knight: Silksong, Thank Goodness You're Here!, Magical Ink, Slender Threads, Fretless: The Wrath of Riffson, Urban Myth Dissolution Center, Berserk or DieBest 3D VisualWinner: Tainted Grail: The Fall of AvalonRunner-ups: Blue Prince, LEGO® Voyagers, Deliver At All Costs, Herdling, Lost in Random: The Eternal Die, Wheel World, Mine ForestBest AR/VR GameWinner: Ghost TownRunner-ups: GORN 2, Detective VR, Underworld Overseer, Vibe Punch, Battlenauts, THRASHER, CraftriumBest Desktop/Console GameWinner: Hollow Knight: SilksongRunner-ups: Blue Prince, Tainted Grail: The Fall of Avalon, Two Point Museum, Tiny Bookshop, Shape of Dreams, despelote, Urban Myth Dissolution CenterBest Mobile GameWinner: DredgeRunner-ups: Prince of Persia: The Lost Crown, MONUMENT VALLEY 3, Enter the Gungeon, Is This Seat Taken?, Cat Cottage, Greak: Memories of Azur, SD Gundam G Generation EternalBest MultiplayerWinner: Void CrewRunner-ups: Dinkum, Lost Skies, Lonely Mountains: Snow Riders, Sunderfolk, Gatekeeper, Shooting Girls (KR Only), Shape of DreamsMost Anticipated GameWinner: Sledding GameRunner-ups: Jump Space, Into the Dead: Our Darkest Days, Garden of Witches, Outbound, ENDLESS™ Legend 2, NIMRODS, Dreams of AnotherThe Golden CubeWinner: Blue PrinceRunner-ups: Hollow Knight: Silksong, Tainted Grail: The Fall of Avalon, Sunderfolk, Mabinogi mobile, Baby Steps, Lost in Random: The Eternal Die, Urban Myth Dissolution CenterCommunityBest DevlogWinner: Thomas BrushRunner-ups: samyam, David Cantón Nadales, GingerNingerish, AIA, tsitski, Emily PitcherBest LivestreamerWinner: Code MonkeyRunner-ups: Lana Lux, Thomas Brush, Golden Character Design, Emily PitcherBest Tutorial SeriesWinner: git-amendRunner-ups: Code Monkey, SpeedTutor, Sunny Valley Studio, Christina Creates GamesUnity's Choice AwardWinner: NaichilabRunner-ups: Binary Impact, git-amend, Emily Pitcher, Code MonkeyUnity Asset StoreBest Artistic ContentWinner: Fantasy Medieval TownRunner-ups: Coast & Dunes Environment - Dynamic Nature (Beach Sea Islands Dry Desert), Sweet Land, Wild Harvest: Crop & Plant Bundle | RPG Gathering Assets, Iconic Music Bundle Vol. I, 3D Breakable Core Pack, FANTASTIC - Seaside Town, Pure Nature 2 : Oasis DesertBest Artistic ToolWinner: Cozy BuilderRunner-ups: UModeler X Plus, KWS2 Dynamic Water System, All In 1 3D-Shader, Reactional Music System, Lattice Modifier for Unity, Oceanis 2024 Pro URP Water Framework, Linework: Outlines and Edge DetectionBest Development ToolWinner: Code Monkey ToolkitRunner-ups: vHierarchy 2, Behavior Designer Pro, Scriptable Sheets, Timeline Mixer, Magic Time, Photon Quantum - Deterministic Game Engine, Sub-Assets ToolboxPublisher of the YearWinner: Synty StudiosRunner-ups: ithappy, Opsive, UModeler, Inc., NatureManufacture, kubacho lab, Photon Engine, KronnectBreakthrough PublisherWinner: Kay LousbergRunner-ups: Josh Stubblefield, October Studio, Kyle Rhoads, Luna Wolf Studios LLC, Idle Games Studio, Friday Night Studio, Honda Motor Co.Students/EducationBest Student Project (over 18)Winner: The Silence AfterRunner-ups: BlockWorld Ai, Breaking News, DRIFTED, Incorporeal, Rephobia, The Chroma: from the wasteland, Train WreckIndustryInnovation Award winnersCelebrating groundbreaking projects that pushed the boundaries of technology and creativity:AWSIM | TIER IV, incHybrid Space Series: Virtual Database Pavilion | Studio RimeoModel Vista | INNOWORKS INC.Smart Construction XR | EARTHBRAIN Ltd.D-Day | TARGOGoogle Maps on Android XR | GoogleXR Intubation Simulation | Lucid Reality Labs3D Mine | BMWSocial ImpactSocial Impact Award winnersRecognizing projects that made positive contributions to social change:BlueberryHello MapleLife BelowMonster WalkSands of Time VRUpskill.HealthAmaru: The Self-Care PetSea Hero QuestCelebrate the winners: Unity Awards Steam SaleReady to experience these award-winning games? We've launched Unity's first-ever Steam Sale, running until December 16, 2025, featuring this year's winners, nominees, and past Unity Award champions.What's included:2025 Unity Award winners and nominees at special pricingPrevious years' champions from Unity Awards historyHidden gems from our Made with Unity collectionSponsored by our friends at Akupara Games, this sale is your chance to dive into the games that captured the Unity community's imagination this year. Whether you're drawn to the stunning visuals of our 2D and 3D winners or the innovative gameplay of our breakthrough titles, there's something for every gamer.Explore the Unity Awards Steam Sale.Looking aheadThe success of the Unity Awards 2025 sets an exciting foundation for the future. As we witnessed this year's record-breaking participation and incredible diversity of submissions, we're excited to see what the new year brings for our community.Stay connected with Unity:X • Bluesky • Facebook • Instagram • LinkedIn | Share your Unity creations using #MadeWithUnity and #UnityAwardsThe Unity Awards celebrate more than just individual achievements – they showcase the collective creativity and innovation that drives our community forward. Thank you for making the Unity Awards 2025 an incredible success.We extend our heartfelt congratulations to all participants in this year's Unity Awards. Your creativity and dedication continue to inspire us and drive the industry forward. Here's to another year of innovation and excellence!]]></description><link>https://unity.com/blog/17th-unity-awards-wrap-up-2025-winners-revealed</link><guid isPermaLink="true">https://unity.com/blog/17th-unity-awards-wrap-up-2025-winners-revealed</guid><pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: October 2025 in review]]></title><description><![CDATA[October was a packed month for the Unity community shipping games. From SteamNext Fest and stand-out demos like YAPYAP, Cairn, Roadside Research, Tears of Metal, Desktop Defender, and more.

The Australian Game Developer Awards also kicked off with Unity games heavily represented. Congrats to The Drifter (Game of the Year, Excellence in Visual Art, Excellence in Narrative, Excellence in Sound Design), Mars First Logistics (Excellence in Gameplay), Tempopo (Excellence in Music, Excellence in Accessibility), Feed the Deep (Excellence in Mobile), Shattered (Excellence in Extended Reality), Copycat (Excellence in Impact), PROXIMATE (Excellence in Debut), and Massive Monster (Studio of the Year).
IGF Awards
Huge congrats to all the IGF finalists, especially the games made with Unity that dominated the awards this year — including Consume Me, which took home three wins! Fresh off their Audience Award win at the IGF Awards, The WereCleaner team joined us on stream. Check it out:Made with Unity Steam Curator Page
Be sure to stay up to date with the latest Unity creations on Steam by checking out our Steam Curator page.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in October 2025, either into early access or full release. Add to the list by sharing any that you think we missed.ActionEscape From Duckov, Team Soda (October 16)Onirism, Crimson Tales (October 23)Mech Havoc, Mid Development (October 27 - early access)Astro Prospector, Incrementalist (July 14)FUMES, FUMES team (July 28 – early access)Bullet HeavenJotunnslayer: Hordes of Hel, Games Farm, ARTillery (September 3)Machick 2, Deadpixel (September 10)Cards, dice, and deckbuildersRana Card, VisionRana (September 16)Cubic Cosmos, Inkstone Atelier (September 17 - early access)Casual, rhythm, and partyHYPERBEAT, Alice Bottino, Chancellor Wallin (October 22)Cheese Rolling, The Interviewed (August 19)City and colony builderFarthest Frontier, Crate Entertainment (October 23)Super Fantasy Kingdom, Super Fantasy Games (October 24 - early access)Becastled, Mana Potion Studios (October 22)ComedyCheese Rolling, The Interviewed (August 19)Experimental or surrealistNIDANA, lvl374 (July 28)ExplorationOnce Upon A KATAMARI, RENGAME (October 23)Baby Steps, Gabe Cuzzillo, Maxi Boch, Bennett Foddy (September 23)FPSDarkenstein 3D, Rowye (October 21)Moros Protocol, Pixel Reign (September 18)GRIMWAR, BookWyrm (May 16)Noga, Ilan Manor (May 30)HorrorCARIMARA: Beneath the forlorn limbs, Bastinus Rex (October 6)House of the Vigil, Zapster (October 15)The Boba Teashop, Mike Ten (April 21)Out of Hands, Game River (April 22)Darkwater, Targon Studios (April 22 – early access)Management and automationThe Farmer Was Replaced, Timon Herzog (October 10)Little Rocket Lab, Teenage Astronauts (October 7)Kokoro Kitchen, Mango Leaf Games (October 17)MetroidvaniaHollow Knight: Silksong, Team Cherry (September 4)SteamDolls - Order Of Chaos, The Shady Gentlemen (February 11 – early access)Narrative and mysteryThe Séance of Blake Manor, Spooky Doorway (October 27)Mind Diver, Indoor Sunglasses (September 28)Beholder: Conductor, Alawar (April 23)PlatformerYooka-Replaylee, Playtonic Games (October 9)This is No Cave, monome.studio (October 17)Puzzle adventureEscape Simulator 2, Pine Studio (October 27)Strings Theory, Beautiful Bee (Console release)Strange Antiquities, Bad Viking (September 17)Roguelike/liteBALL X PIT, Kenny Sun (October 15)Slots & Daggers, Friedemann (October 24)CloverPit, Panik Arcade (September 26)Touhou Dystopian, Kay Lnk (October 17)RPGThe Lonesome Guild, Tiny Bull Studios (October 23)Consume Me, Jenny Jiao Hsia, AP Thomson, Jie En Lee, Violet W-P, Ken "coda" Snyder (September 24)The RPG, Dionysus Acroreites (August 7)City of Springs, The Naked Dev, Alterego Games (August 18)SandboxMidori no Kaori, TheLaba (October 21)Wobbly Life, RubberBandGames (September 18)SimulationPowerWash Simulator 2, FuturLab (October 23)Sunken Engine, Two Nomads Studio (October 16 - early access)Politics The Game, Simplicity Games (October 22)Sports and drivingHoop Land, Koality Game (October 21 - early access)Turbo Takedown, Hanging Draw (March 3)StrategyRelic Guardian - Tower Defense, Mystrigger (October 22)ERA ONE, Team Complex LTD (August 6 – early access)Dice Gambit, Chromatic Ink (August 14)SurvivalLen’s Island, Flow Studio (June 19)Survival Machine, Grapes Pickers (May 7 – early access)Oppidum, EP Games® (April 25)That’s a wrap for October 2025. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/games-made-with-unity-october-2025-releases</link><guid isPermaLink="true">https://unity.com/blog/games/games-made-with-unity-october-2025-releases</guid><pubDate>Mon, 03 Nov 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The power of play: Unlocking growth with playables]]></title><description><![CDATA[According to AppAgent, playable ads are the fastest-growing ad format, and for good reason. The ad format uses interactive mini-games to give users a direct, hands-on taste of your app's core gameplay or concept. Playables aren't just about showing your game, they’re about giving players an experience. In them, users aren't passive viewers; they're active participants, experiencing the fun of your game firsthand.A design philosophy we use at the Ad Design Studio is that playables are the snack that sells the meal - they give players a taste, and they'll come back hungry for more.However, in the past, playables showed immense promise but faced challenges and misconceptions that sometimes limited their full potential. For example, we saw pervasive myths revolving around the significant development work and investment in creating playable elements.A new era of playable performanceUnity has invested heavily in advancing playable performance, and the results are transformative. Playables now run at 60 frames per second, with smooth interaction at any point in the experience, even when hosted externally. Unity valuation logic has also been updated, ensuring high-performing playables are identified and prioritized.On top of that, ad delivery has been streamlined and playable ad type blocks have been removed on Unity Ads. We now see consistent performance improvements across the network for playables. For example, on Unity Ads for iOS*:- 12% increase in D1 ARPU since our improvements launched.- 6.9% increase in D1 ROAS, a clear indicator of higher quality users.- Top 20 iOS advertisers consistently report CVR lifts after testing with updated playables.We’ve also seen significant monetization uplift for iOS with playables on the ironSource Ads network, both in the short and mid-term. On average**:- D0 ARPU increased 30.5%, showing immediate revenue impact per user since our improvements.- D14 ARPU improved 15.2%, suggesting playable improvements are leading to more engaged spenders.- D14 ROAS rose 5.4% demonstrating better long-term returns from playables.These aren't just incremental gains. They're proof that playables, when optimized and strategically deployed, deliver high-quality users who stick around.Technical best practices from the Ad Design StudioPlayable ad efficacy is about more than just fixing technical issues; it's also about thoughtful, user-centric design. At the Ad Design Studio, we’ve distilled years of data and creative expertise into a set of best practices that maximize playable performance for our partners.Focus on experience length:A first interaction should ideally happen around 5 seconds, and subsequent ones around 3 seconds, focus on crafting an experience that lasts around a minute or more. While this also correlates with interaction count, it’s not the most important part. We’re looking for the players who engage for a longer time, since they’re more than just attracted to the creative; they're hooked by the core game mechanic, indicating a stronger likelihood of long-term retention post-install.Orientation agility:Design with a squared composition in mind, keeping crucial elements away from corners. This should make it simpler to adapt your playable for both portrait and landscape orientations by merely repositioning UI elements and saving valuable development time.Strategic testing:Always test variations. Try different lengths, difficulties, characters, or levels to find what works best for your playable. Remember that a trend isn't a guarantee that a concept will work and is no replacement for rigorous testing. Including in your testing needs to be comparing standalone playables versus video and playables. It's crucial to test both configurations since a video can help set expectations, while a standalone playable might entice all on its own - so you need to find out which one is right for your game.Design best practicesUsers aren't looking for a tutorial from playables, they want instant gratification. You have a short window to grab their attention and keep it. Your goal is to give them the flavor of your game, not satisfy them completely. Playable design should focus on immediacy to hook users, clear and concise instructions on how to interact, and a direct CTA to close the deal.Capture and engage with hooks:Effective playables grab attention immediately. A strong intro hook is critical to nailing this. Your intro hook could be a dramatic video scene, a clear gameplay goal reveal (then panning back to the start), or a "ghost tutorial" showing what needs to be done without actually playing it out. The most important is that it's short and gets players to want to see what happens next.Animate to captivate:Humans are wired to react to movement, we can’t help but look. Ensure your playable has constant, purposeful motion to leverage this natural instinct. Key moments for animation are the start (before interaction) and on each interaction (interaction feedback). "Juice up" transitions between scenes or interactions with "wow effects" to maintain attention. Just be mindful not to overwhelm with jittery animations when users need to focus.Guide users’ attention with hierarchy:You need to have a plan for how users' attention will travel through your playables. Decide where and when you want them to focus and then use contrast, light, and color to direct them. Textual hierarchy is a huge help here, use it to create the order of operations for your playables.Keep mechanics simple:If your playable requires a lengthy tutorial or isn’t intuitive, it’s already failed. Keep interactions simple with visual indicators, like arrows and hand gestures, to teach the user. Another simple way to guide users is by using feedback to demonstrate they’ve succeeded or failed, such as confetti or “womp womp” sound effects.End with a clear CTA:You could do everything else and still fail to convert users if your call to action is confusing or unclear. Once users have progressed through the playable, your CTA should create urgency, connecting their positive experience with the playable with your game as quickly as possible. Also critical, is to only send users to the store after they've achieved a sense of fun so they have arrived at the app stores with that same feeling.Campaign management best practicesEven the best playable won't perform optimally without smart campaign strategy. Here are some quick tips to ensure your playables are performing.- Warm up creatives: Apply a 20% bid increase until new creatives reach 10K starts to ensure full exploration.- Align budget with volume: For example, use 3-5 creatives for a $500 daily cap, or a $100 per creative rule for smaller budgets.- Test iteratively: Refresh and rotate creatives frequently to avoid fatigue.- Track performance early: Monitor engagement, CTR, and CVR from day one to identify winners.- Assign to ROAS campaigns: Playables shine in ROAS-driven campaigns, especially on iOS, by pre-qualifying users for higher LTV.The future is playableThe enhancements we've made at Unity, combined with these proven best practices, mean that playable ads can, and should, be a cornerstone of your user acquisition. They deliver not just clicks, but quality users who are genuinely excited about your game.One of the best parts of playables is how easy it’s now become to create them. Tools like Unity Playworks help to make building playables easier and faster. With Playworks, using a Unity Engine plugin, you can quickly build playable ads, customize with dynamic variations, and even publish to channels, like Unity Ads and ironSource Ads. It’s what we use at the Ad Design Studio.We’re here to help you utilize this powerful ad format and grow your app. Whether you need creative audits, competitor insights, or fresh ideas for testing, our team of experts is ready to partner with you.*Source: Internal Unity Ads data. Disclaimer: Reported increases occurred on iOS devices between April-May 2025.**Source: Internal ironSource Ads data. Disclaimer: Reported increases occurred on iOS devices between July-September 2025.]]></description><link>https://unity.com/blog/unlocking-playables</link><guid isPermaLink="true">https://unity.com/blog/unlocking-playables</guid><pubDate>Wed, 22 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tailoring digital play by age: How StoryToys built the LEGO® Bluey app]]></title><description><![CDATA[StoryToys was founded in 2008 with the mission of bringing educational apps to kids of all ages. Over the past 17 years, they’ve released apps including Hungry Caterpillar Play School, LEGO® DUPLO® World, Disney Coloring World and LEGO® DUPLO® Peppa.
Their latest title, LEGO® Bluey, launched on August 14, 2025. Developed in collaboration with the LEGO Group and BBC Studios, it targets kids age two to four, and blends fun with early learning.We spoke with Devon Wolfgang, the principal engineer at StoryToys, and Ryan Dykes, the app’s lead developer about the struggles and milestones of designing an app for kids of different ages and levels of motor skills, emotional intelligence, problem-solving, and humor.What was the biggest technical challenge when building the app?Ryan Dykes: Designing for both two- and four-year-olds was a unique challenge. Kids that young engage very differently with apps – two-year-olds often explore through tapping without fully understanding mechanics, while four-year-olds aim to master them.For example, in the surfing activity, younger players might tap to see Bluey move and react, while older ones will try to collect all the shells and avoid obstacles.Devon Wolfgang: We designed the app to support that developmental range. In the 2+ LEGO DUPLO experience, brick building is limited to 2D. In the 4+ LEGO play packs, we introduce full 3D building – kids can rotate and position bricks freely, adding more difficulty while keeping it fun for everyone.Ryan: The progression is key. The 2+ LEGO DUPLO mode uses a 2.5D plane, while the 4+ LEGO play pack moves into an isometric 3D space. We wanted skills to build naturally. What kids learn in the simpler mode carries into the advanced one, with no contradictions.This was our first time implementing full 3D brick building using Unity’s physics-based penetration testing. Previously, we used a 2D matrix with polygon colliders. Now, bricks can be rotated, stacked, or can even hang off edges. This is especially important for older kids.One major challenge was shifting from fixed brick placement to a flexible system. This introduced complex interactions like minifigs holding bricks while standing on other minifigs, or dynamic stacks being thrown around. It gave players freedom, but required tight control of pegs, holes, and snapping mechanics to avoid chaos.How did you handle communication for input across age groups?Ryan: We avoid direct instruction like glowing prompts or full guidance. Instead, we rely on subtle visual cues like wobbles or animations to invite interaction. The goal is for kids to discover things on their own.For example, when stacking bricks on a car, tapping a brick makes a minifig pick it up, and tapping the car places it. Over time, kids realize they can drag the brick directly. This builds understanding through experimentation – and that’s where visual communication becomes essential.Devon: We also made a firm rule: no text. Our users can’t read yet, so every interaction has to be communicated visually or through animation. Cues don’t highlight the correct answer – they just show what’s interactive.Ryan: And to make the experience consistent, we created a custom touch input wrapper around Unity’s drag, tap, and click events. This standardized input handling across the team and made prototyping faster and more reliable. If we teach tapping in one activity, it needs to work the same way everywhere else.What challenges came with combining system bricks and LEGO DUPLO bricks in the same app?Devon: The design challenges were more difficult than the technical ones. For example, we had to redesign the loading screen because using a LEGO DUPLO character didn’t fit with the system bricks. Keeping the visual language distinct while using shared systems required a lot of iteration.Ryan: We unified LEGO DUPLO and minifig systems under the same core codebase – only the visuals differ. This allowed us to reuse systems without building separate apps, which was key for sustainability.How did Unity help you hit your eight-week window?Ryan: Prefabs were crucial. For LEGO DUPLO bricks, each developer worked in separate scenes that loaded at runtime. For the 4+ LEGO play packs, prefabs let multiple team members collaborate on different parts, like cars or animations, without scene conflicts.How were Addressables instrumental during development?Devon: We relied heavily on Addressables. Each play pack is a group of Addressable bundles, with most loaded remotely.Ryan: We used to bundle all assets per play pack, which meant large, redundant downloads. With Addressables, shared assets like the Bluey model are stored once and reused, reducing download size from 200 MB to 60 MB. Updates are faster too, as only changed files are redownloaded.Devon: Builds used to take eight hours. Now, with Addressables, it’s down to 20 minutes for the smaller app and around an hour for the larger one.How was Unity Navigation used in this project?Ryan: The old 2D navigation system worked fine, but the new one allows for more complexity. Now, minifigs can move off flat planes – like walking up a narrow bridge – which adds depth and flexibility.What performance-related issues did you run into?Ryan: One of our main challenges was draw calls. A shader change broke batching, pushing us over 500 draw calls. Using Unity’s Profiler and Frame Debugger, we quickly traced the issue and fixed the shader to properly batch materials. We also optimized our backgrounds by marking them static.We also noticed background elements like bushes weren’t atlased, causing unnecessary draw calls. Using Unity's sprite atlas system, we grouped them without needing Photoshop, and brought draw calls down to about 200.What advice would you give a developer looking to build apps for kids of diverse ages and developmental stages?Devon: Playtest early and often. Get kids in the target age range interacting with your work as soon as possible. Don’t rely on assumptions, and enjoy their reactions – they’re both valuable and fun.Ryan: Set deliverables early. We use a P1/P2/P3 system: P1 is essential (core loop), P2 adds polish (e.g., celebrations, secondary animations), and P3 is nice-to-have (e.g., like a fish jumping). This keeps focus when cuts need to happen.Clear project structure is just as important. For LEGO DUPLO, we know it’s four scenes and a master scene. For the 4+ LEGO play packs, it’s isometric in a boxed area. These constraints help focus creativity and avoid scope creep.Lastly, reusability is key. With our shared systems like touch input and unified code for DUPLO and system bricks, we reuse assets and behaviors across all play packs. This saves time and makes the user experience more consistent.To read more about projects made with Unity, visit the Resources page.]]></description><link>https://unity.com/blog/tailoring-digital-play-by-age-how-storytoys-built-the-lego-bluey-app</link><guid isPermaLink="true">https://unity.com/blog/tailoring-digital-play-by-age-how-storytoys-built-the-lego-bluey-app</guid><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Synergiz Harbor innovates student learning through mixed reality]]></title><description><![CDATA[About SynergizFounded in 2011, Synergiz is a French company specializing in intuitive, connected, and interactive solutions, with strong expertise in Mixed Reality. With a commitment to technological excellence, Synergiz positions itself as a key player in digital transformation, collaborating with renowned partners such as Microsoft, Meta, Magic Leap, RealWear, HTC Vive, Apple, etc. Synergiz supports companies in their digital projects from start to finish through its comprehensive offering of hardware, software, and service solutions, as well as creation and development.In education, innovation has consistently been a driving force behind improved student learning outcomes. One of the key advancements in recent years has been the integration of mixed reality (MR) technology into learning environments. Harbor is at the forefront of this digital transformation by providing XR experiences that enhance knowledge sharing training, and engagement for students. Developed with Unity, Harbor is redefining how institutions like Bâtiment CFA Bretagne run training programs.Read on to learn how:- Harbor can be used to create custom mixed reality scenarios or projects.- Synergiz used Unity to build the Harbor software suite.- A training and apprenticeship center developed two hands-on MR workshops with Harbor to improve student learning outcomes.What is Synergiz Harbor?Harbor is an off-the-shelf, no-code software suite designed to facilitate immersive mixed reality experiences in educational and professional training settings. With Harbor, teachers can independently create their course materials in mixed reality. By combining the physical and digital worlds, this platform delivers dynamic, interactive environments where students can learn, practice, and perfect skills using a blend of virtual and real-world elements. Harbor is compatible with a variety of devices, including Apple Vision Pro, Microsoft HoloLens 2, Meta Quest 3, Magic Leap 2, as well as tablets, smart phones, and plans to support additional headsets.How Synergiz used Unity to develop HarborWhen Synergiz began developing Harbor in early 2020, the development team chose Unity Industry as its foundation. The decision was simple–Unity offered all the tools needed to bring their vision to life while aligning with their existing Unity expertise.Here’s why Unity was the ideal choice:1. Fast, efficient developmentLeveraging Unity enabled rapid prototyping and shortened Synergiz’s overall development timeline. The team’s prior experience with Unity tools meant they could jump right in and spend more time fine-tuning the user experience.2. Comprehensive XR development supportUnity’s suite of XR development solutions, including XR Interaction Toolkit, AR Foundation, and Unity OpenXR Plugin, enabled Synergiz to create advanced MR applications. These tools allowed for seamless integration of XR features into Harbor’s software.3. Cross-platform readinessThe initial version of Harbor was designed specifically to support the HoloLens 1. When the Synergiz team was ready to expand their platform support, Unity made it easy to expand Harbor’s compatibility to other AR and VR devices such as the Meta Quest 3 and Apple Vision Pro.4. Ongoing support and trainingUnity’s customer support and training programs played a vital role in overcoming technical challenges. Whether it was optimizing 3D models or supporting Universal Windows Platform (UWP) features, Unity’s expert resources kept the Synergiz team ahead of the curve with the latest XR advancements and rendering pipelines.Using Harbor to improve learning outcomes in training programsAt Bâtiment CFA Bretagne, Harbor was used to develop educational workshops for technician apprenticeships. Here, Erwan Gry, Electricity Trainer, collaborated with the team at Synergiz to implement two mixed reality workshops, built for the MetaQuest 3 using Harbor, into the Technician of Connected Infrastructures and Equipment diploma at CFA Morbihan.Within the platform, the two workshops trained students in motor mechanics and electrical safety. The electrical training workshop enables students to safely engage in solo training, with a guided 3D electrical procedure following step-by-step actions. The motor mechanic workshop involves a collaborative training around a 3D model of an asynchronous motor. The professor can modify the motor model by adding 3D animations, videos, and images for the students to interact with.These workshops resulted in several key benefits:Improved student outcomes: Students move beyond theoretical study, actively participating in simulations that mirror the real-world job.Scalability of coursework: The professor is able to reuse the content indefinitely, making it faster to tailor and adapt scenarios in the future.Risk-free practice: Students can safely make and correct mistakes without real-world consequences, building both confidence and competence.Feedback from the CFA has been overwhelmingly positive. Students report stronger engagement and higher degrees of confidence, while professors highlight the efficiency and adaptability of the MR-based workshops. One student from Bâtiment CFA Morbihan said, “it’s rewarding to try out new digital tools as part of our training,” another remarked, “integrating mixed reality gives us a more complete and also different perspective on our profession”.“For me, it makes perfect sense to incorporate mixed reality into this technical training. I'm very proud to have invested in this technology, which is now essential to our training program. – Erwan Gry, Electricity Trainer at Bâtiment CFA MorbihanUnlocking MR innovation with Synergiz HarborAs mixed reality continues to gain momentum in education, solutions like Harbor offer a glimpse into a future where learning is not only more accessible and engaging, but also more effective in building the skills required for tomorrow’s challenges. By leveraging Unity Industry, Synergiz not only was able to build out a cutting edge MR-solution, but they enabled their customers to develop immersive custom experiences.Synergiz’s impact extends beyond individual classrooms or educational training. Their broader mission is to support the creation of MR experiences across industries. Whether it's preparing students for high-stakes technical roles, or optimizing the layout of an industrial site without interfering with current operations, Synergiz is accustomed to helping organizations achieve their own digital transformation.]]></description><link>https://unity.com/blog/synergiz-harbor-innovates-student-learning-mixed-reality</link><guid isPermaLink="true">https://unity.com/blog/synergiz-harbor-innovates-student-learning-mixed-reality</guid><pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Split-screen and GameShare networking in Survival Kids]]></title><description><![CDATA[This summer, Unity released its first game, created in close collaboration with publisher partner KONAMI. Survival Kids is a fun-filled update to the classic kids’ game that launched as a day-one Nintendo Switch™ 2 title.The game was built entirely on Unity 6, so the dev team was working with new software toward launching the game on a new platform – a huge challenge. On top of that, the game can be enjoyed in a variety of network configurations, so the small Unity team working on the project had to build a robust multiplayer architecture that would support these options.Check out the first instalment of the multiplayer networking story for Survival Kids, where we share how the fundamentals behind the game’s network architecture came together. This post expands on this base to show how the team built the game’s split screen and Nintendo Switch 2 GameShare capabilities.Nintendo Switch is a trademark of Nintendo.After we’d solved a lot of the problems in the game’s network architecture, we started to think about how we were going to do split screen, which isn’t supplied out of the box in Netcode for Entities. This was a different challenge. With split screen, there’s got to be more than one player, but those players belong to a client.Netcode for Entities assumes that there’s one player per client – if there’s a separate game, with a separate console connecting to it, then it has one player. When that changes and there are actually two players or three players, there’s no way to send the input up for each individual player. They have to be sent up as one.We effectively created a virtual input player that nobody can see. It’s totally invisible, but it collects all the input for all the local players, up to four of them (although in the end we didn’t do four-player split screen). It manages all the input that comes in, and then it sends all that input up the server every frame.In the game, players don’t manage their own input. The imaginary virtual input player tells them what the input is for a frame. Previously, Netcode for Entities assumes that a player is responsible for getting its input and using its input to do all its movement, but here there’s this other player that doesn’t do any movement but holds all the input for everything else.Split screen was the main challenge from a network point of view. To avoid having a multiple cameras problem, we started by having a second player that would run around while the camera stayed with the first player. That came together pretty quickly, but then we encountered other problems, like how to set up a second camera? How to keep one camera on the left of the screen and the other on the right side of the screen? We had to solve UI problems, too, because there’s quite a bit of UI that only one player can see. For example, if one player is in front of a log, they would see a little prompt button that says, “Hey, press X to pick up this log,” but of course you don’t want the other player to see that.We had to figure out how to hide the UI so that if the other player is nearby, they won’t see it. We used layers for that, but our fix related more to UI than to the network. We had decided that we ultimately wanted to lock the game to two split-screen players for a better gameplay experience – even if it’s on a big screen, there can only be two local players. We could do four on a split-screen internally, and we kept that going for quite a while because it was a great way of stress-testing performance, since every player adds a bit more processing, a bit more rendering, another player to simulate.One of the features during development for Nintendo Switch 2 is GameShare. You’re effectively sending a video feed to another console – really, it’s just split screen from a network perspective – except the system sends one camera to another console instead of rendering it on a screen.Our four-player split screen was the basis for how we approached GameShare mode. We could connect as many players as we want as long as the performance is okay and we can stream video to that console. The main reason we didn’t want to do four-player split screen was just about screen size, really. Unless you have a massive TV, it’s really hard to see the windows – but if you have your own console, the video can stream over to that.We pushed hard to differentiate from our two-player split screen mode so we could support an extra third player in GameShare. You can have a host and two guests while still offering players a great experience and smooth performance. We weren’t willing to lower our standards on that, but we were still able to use the split-screen architecture to power GameShare.One really helpful feature that we added was a debug command. We have a dev menu, so you can press a button, call up the menu, and then type commands into it. This was handy because it let us run loads of debug stuff – it’s all compiled out of the final game, so of course nobody could do that in the final game that people buy and play. But one of the modes that we had in split screen was that you could duplicate the main player – this let you have a split screen where one controller runs both players. It was a great way to test the split screen without needing to have loads of controllers around, and this made it easier to test.The split screen setup also effectively ran all the normal networking code that we did. Since the players were separate from each other, the server would send information to show how the online game works. But it’s also possible to test whether code worked in multiplayer mode without connecting a player to another client by firing up split screen mode with another controller in the Editor to play there. There’s no need to do a new build since it’s possible to test the code on split screen as a proxy for a normal online game.There were another two Unity tools that we found really useful, although we didn’t use them until right at the end of the project. Unity 6 includes new Multiplayer Play Mode tools, which enables us to test without a separate player build.Opening the Editor, it takes over an hour to do a clean player build because there’s so much art and other information, so testing code with a remote player means waiting at least that long. It’s not particularly good for iterating. But Multiplayer Play Mode enables you to effectively spin up another window, like another virtual version of the Editor, and connect like that.Netcode for Entities also has Play Mode tools to simulate bad network connections. You can specify and simulate a specific level of ping – say, a 300-millisecond ping, a really horrible round trip to simulate what it would be like to play with a friend who tethered their phone to their laptop in an airport and connected to the game that way. Then you can test that in the Editor to find out how laggy or unstable it is. Sometimes that doesn’t work on a network connection that’s losing data and dropping packets, and we could simulate that easily.This testing happened all the time. For a while, we had a rule that nobody was allowed to play in the Editor with the simulator turned off – everyone had to play with some kind of simulated lag, since none of our players were going to play on a perfect connection. That way, we could never fool ourselves into believing that a super high-speed office broadband was representative.In the end, all of this testing paid off – we were able to deliver a smooth, performant game at 60 fps across really different networks and multiplayer setups. Since the game's release a few weeks ago, we've seen players continuing to engage online through Lobby and Relay, hopefully enjoying a seamless and robust gaming experience, regardless of their home network conditions.Check out the other instalments of our blog series deep dive into Survival Kids production: 
- "Graphics and rendering tips from Survival Kids"
- "Level layout and terrain workflows in Survival Kids"
- "Inside the Survival Kids multiplayer network infrastructure"To learn more about projects made with Unity, visit the Resources page. ]]></description><link>https://unity.com/blog/split-screen-and-gameshare-networking-in-survival-kids</link><guid isPermaLink="true">https://unity.com/blog/split-screen-and-gameshare-networking-in-survival-kids</guid><pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Inside the Survival Kids multiplayer network infrastructure]]></title><description><![CDATA[This summer, Survival Kids launched as a day-one release for Nintendo Switch™ 2. The game was built entirely on Unity 6, marking Unity’s first-ever end-to-end development project, working closely with publisher partner KONAMI.Developing for a new platform on Day 1 is a huge challenge, but the small internal team that built this project included seasoned Unity developers, many of whom have been working in Unity and on games for decades. This blog is part of an ongoing series diving into how the game was made, how this work fueled Unity’s commitment to production verification, plus lessons other Unity gamedevs can take and apply to their own projects.This is the first instalment of an ongoing behind-the-scenes series digging into team lessons from working on Survival Kids.Nintendo Switch is a trademark of Nintendo.Survival Kids was built by a very small team within Unity. The core group was about 10 developers of various disciplines (artists, engineers, and designers). At our peak, we were around 20 as people from other Unity teams came onboard. For example, Steven, our rendering engineer, worked with us a lot, but he wasn’t always on the project.As a small team, we had some advantages, though. The engineers were vastly experienced – most of us have been writing games for 20-odd years, mostly in the AAA space, so we’ve learned a lot of lessons and we’ve made a lot of mistakes. And of course we’re really experienced in Unity because most of us have been here for some time.Some of us have also worked on customer projects as part of Unity support teams like Professional Services/Accelerate Solutions, now Unity Studio Productions. We advise customers on how to optimize their projects and even embed with project teams to work alongside them and help solve their hard technical problems, so we’re quite well-versed in the mistakes that studios often make and how to fix them. Working on Survival Kids, we could architect the project and put it on the right path from the start because we knew where all the pitfalls would be, and that saved us a lot of time and resources.Today, I want to dig into the game’s network architecture. We used Unity to drive multiplayer networking, and Survival Kids offers players a number of different ways to play the game, all from the same networking base. So let’s dive into how this came together, and hopefully some of this can help you in your projects, too.Survival Kids can be played a few ways: single player, local co-op, and online with friends. On the Nintendo Switch™ 2, players can also use GameShare to stream the video to another Nintendo Switch 2 or even an original Switch, then play multiplayer with someone on the TV or a device, which is really cool.We wanted our setup to drive all of that and other combinations. For example, you could have two players playing split screen on one television that’s connected to another two players playing split screen on a different TV – so four players using two devices. That flexibility was something that we really wanted to design into the architecture to enable play in lots of different ways.To do this, we decided on Netcode for Entities. Once we’d pitched the concept for Survival Kids to KONAMI, we went straight into prototyping to find the fun for our multiplayer game. We used an existing project as a launch point, one that I’d written previously as a proof of concept for how we could use Netcode for Entities as a backend network, then write a GameObject layer on top of it to take advantage of Prefabs and animations. Not everyone on the team had experience working with Entities, so we decided to use GameObjects and MonoBehaviour together.We also wanted to keep the gameplay logic in GameObjects and MonoBehaviours because they make it really easy to prototype – this setup lets you throw things together and write scripts and download scripts off the internet or use Asset Store packages for prototyping. We wanted that fast iteration and freedom, but we also liked that Netcode for Entities gave us a performant network layer. I’d already used it on a few customer projects and personal research projects, so I knew that its quality level could drive the level of gameplay we wanted.When we first started, about three years ago, Netcode for GameObjects existed, but it still lacked a few of the features we wanted, especially client-side prediction. With client-side prediction, if there’s ever a lag between the server and client, the client predicts what the server is going to do and does it instantly – so players’ controls feel responsive even when there’s lag. You don’t have to wait for the server to tell you that a player has moved or what have you – you’re already doing it. That’s something that Netcode for Entities had from the start.For prototyping, we basically grabbed a project we already had and jumped in. We started with simple things – picking up objects, chopping down trees – and gradually, we started fleshing out what some of the gameplay would be. We were still prototyping, so we didn’t really worry about code quality too much. We were trying to find the fun and looking at our game pillars, including “survival for everyone.” We wanted a survival game, but we didn’t want it to be super hard or punishing – we were trying to distill what’s really fun and exciting about this genre.We asked ourselves: What do people love about crafting and resource gathering? What don’t they care about? That helped us define how players get resources, how they move them from one place to another, how they do crafting. We figured that all out by prototyping and iterating quite quickly using GameObjects and MonoBehaviours.Because we started from that little proof-of-concept demo, we could connect by internet address, right from the word go. It was possible to connect using a computer IP, but we also used Unity’s Relay service, which lets you host a game on a Relay server in the cloud. With Relay, anyone can join that game using a join code, and people can connect from home or the office without a VPN or known IP. That meant that we could get into a rhythm of weekly playtests – and we were doing them at work and on our home networks, which let us stress-test our network architecture alongside the gameplay with all kinds of different connection speeds. In the end, we kept Relay in production.We tried to stay as close to the publicly released packages as possible. If we found a bug in one of the packages, we’d identify it, bring the package locally, and try to fix it. Sometimes we’d go to Slack after and message Unity’s Netcode team to explain the problem and our fix so they could take that and do the PRs – and sometimes get it into the final version. We weren’t involved in the fix necessarily, but by working in a production environment, we found some issues that they hadn’t yet (although sometimes they already had a better fix than whatever we’d come up with, or they’d tell us we’re using it wrong).Because we developed this way, remotely through Relay, we didn’t add an offline mode until later, close to release. The offline mode doesn’t open up any network sockets, and it uses something called an in-process driver. It effectively behaves like it’s a network, with a server and a client, but they execute in the same process and communicate with one another. Instead of sending it through the network, they send it directly to the client. It’s called an in-process connection, and it’s very fast because you don’t have to wait for actual bytes to travel across the network, but it goes through all of the same flow as our gameplay does.Working this way, we didn’t need to code a different version – this is our single-player mode and our multiplayer mode. Single player and offline are still a network game, it’s just that we don’t use the network – it all just happens internally.This basically meant that we had one code architecture that we could use everywhere. The cost of that, though, is that when you’re hosting or on single player, you’re simulating the server and the client, creating a performance challenge to run both at the same time. With dedicated servers, a server might go off and live in a server farm somewhere, so that all you need is what’s called the client, which makes it all look nice and respond to whatever the server’s communicating. But on single-player, since we’re simulating, the game has to do both and can’t just sit off on a dedicated server somewhere.That ended up being one of our biggest performance challenges, optimizing so that the server and client could sit in the same game, in the same frame, and still hit our 60 frames per second target at a good resolution. That target was really important to us.Check out the other instalments of our blog series deep dive into Survival Kids production:
- "Graphics and rendering tips from Survival Kids"
- "Level layout and terrain workflows in Survival Kids"
- "Inside the Survival Kids multiplayer network infrastructure"To learn more about projects made with Unity, visit the Resources page.]]></description><link>https://unity.com/blog/inside-the-survival-kids-multiplayer-network-infrastructure</link><guid isPermaLink="true">https://unity.com/blog/inside-the-survival-kids-multiplayer-network-infrastructure</guid><pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Be front and center: Drive app downloads this holiday shopping season with Aura]]></title><description><![CDATA[The period between Black Friday and the holidays is not just a frenzy of purchases; it's a golden opportunity for app marketers to reach high-quality users. This period, also known as the shopping season, is the time of year when users are focused on making purchases, whether it’s upgrading their own tech or buying gifts for others. For app marketers, it’s a goldmine.Here’s why the shopping season matters:- More devices: The shopping season is also peak time for smartphone sales. Millions of phones are purchased, unboxed, and activated.- More buyers: Consumer spending soars during this period, and buyers are highly intentional. This means they’re ready to invest in new experiences, including apps and in-app purchases. In fact, in-app purchases accounted for 54.5% of all online revenue during the 2024 holiday season, delivering $131.5 billion in spend.*- More attention: In 2024, Q4 digital ad spend hit $34 billion with impressions reaching a staggering 3.8 trillion.** This means users are tuned in, making this the perfect time to capture their attention.A surge in new high-end devicesSmartphones are the ultimate holiday gift, with millions unboxed and activated during this busy shopping season. Shoppers tend to choose high-end devices, and these users are eager to download apps that enhance their experience, actively searching for tools to make the most of their new phones for years to come.Early downloads lead to long-term loyalty95% of users download 60%+ of their apps within the first 48 hours of activation.*** This means the moment a user powers on their new phone, a critical engagement window opens. During this time, users are most likely to download the apps that will become permanent fixtures on their devices. The potential becomes even more powerful once you consider that  the average user keeps their phone for 3.6 years.****As a result, securing a download during this window gives your app the potential to remain on the device for the entire lifespan of the phone, which is a tremendous opportunity.There are several reasons why apps downloaded early tend to stick around:- Apps downloaded right after activation often become part of a user’s daily habits.- These apps feel familiar and trusted simply because they have been on the device from the beginning, making users less likely to uninstall them.- Early downloads secure a spot on the home screen or in the initial app layout, giving them a visibility advantage over apps downloaded later.Being one of the first apps downloaded positions your app as a core part of the user’s digital experience, which increases the likelihood that it will remain on the device for years to come.
Win the shopping season with AuraHow do you ensure your app is front and center during this high-stakes period? That’s where Aura comes in. Aura’s on-device solution integrates your app into the device’s native UI. This allows you to:Be the first app users seeAura ensures your app is suggested as part of the onboarding experience when users activate their new phones. This secures visibility during the critical 48-hour window when users are most likely to download apps.Reach users throughout the device lifecycleAura aligns your app with the moments that matter most in the device lifecycle, like unboxing, OS updates, and holidays. By being part of these moments, your app becomes a natural choice for users.Build long-term loyaltyBy being one of the first apps on a user’s device, you build a strong foundation for user loyalty for the full 3.6 year lifespan of the device.
Unbox your app’s potentialThe shopping season is a time for unboxing opportunities. With millions of new devices being activated, the stakes are high. But with Aura, you can ensure your app is part of this moment, maximizing visibility, engagement, and loyalty. Don’t miss out on the most critical window of the year.Ready to make your app the first choice for new users? Learn more about Aura.*Source: 2024 holiday shopping report (2024), Adobe**Source Q4 2024 Digital Market Index, Sensor Tower, February 2025

***Source: Aura from Unity, June 2023 to June 2024. Disclaimer: This statistic is based on Android device data only.

****Source: How often do people upgrade their phone?, SellCell, November 22, 2023


]]></description><link>https://unity.com/blog/holiday-season-shopping-app-downloads</link><guid isPermaLink="true">https://unity.com/blog/holiday-season-shopping-app-downloads</guid><pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Unity Audience Hub helps marketers reach mobile gaming audiences and gains industry recognition]]></title><description><![CDATA[In today’s mobile gaming landscape, developers and marketers face a unique challenge: how do you reach and engage players in impactful ways, while maintaining privacy and navigating ever-evolving data standards?At Unity, we’ve spent years working alongside the world’s top game creators to build and grow their games. In fact, 85 of the top 100 mobile games use Unity to grow their games*, whether through Unity Ads, the Tapjoy offerwall, programmatic exchanges, or Ad Quality tools. Our mission has always been to empower our community at every step, from building immersive games to scaling their reach globally.But as the ecosystem matured, we saw an opportunity to do more.
Building a solution for today’s marketersMarketers today are looking for ways to move beyond basic targeting. Mobile gaming audiences are an engaged and high-value audience with immense potential, yet they’ve long been under-utilized by brand marketers. We wanted to bridge that gap with a solution that balanced powerful targeting with privacy-first design.Introducing Unity Audience HubUnity Audience Hub blends federated, privacy-first insights from Unity’s ads ecosystem with trusted third-party data sources. Powered by Optable, Unity Audience Hub delivers curated, high-intent audiences to brand marketers, who can then build custom audiences and activate them across Unity’s mobile app and game inventory and even beyond, on channels like CTV through our partnership with Roku.Unity Audience Hub is just one part of how we’re helping our partners succeed. Another recent innovation is Unity Vector. Unity Vector leverages self-learning AI and data from across the Unity ecosystem to deliver deeper insights, optimize campaigns, and drive even better results for our customers. By continually learning and adapting, Vector helps marketers and developers achieve greater efficiency and effectiveness in their campaigns, unlocking more value from every impression.Industry recognitionRecently, Unity was named the “Best Mobile Games Marketing Platform” in the 8th annual MarTech Breakthrough Awards program. This recognition from MarTech Breakthrough, a leading market intelligence organization, means a lot to our team, especially as the 2025 program attracted thousands of nominations from companies across more than 15 countries.Here’s what Alex Blum, COO at Unity, had to say about the win:“With Unity Audience Hub, we’re helping brands reach players in meaningful, privacy-conscious ways, bridging the gap between the worlds of gaming and marketing. This award reflects our commitment to delivering value across the ecosystem for developers, advertisers, and players alike.”And as Steve Johansson, Managing Director at MarTech Breakthrough, shared:“Marketers, more than ever, are looking for ways to move beyond basic targeting—and mobile gaming audiences are an engaged and high-value market with immense potential that has long been underutilized by brand marketers. With Unity Audience Hub, advertisers have a powerful, privacy-first way to understand and reach their audiences. By combining curated insights with enriched targeting, omnichannel reach, and strategic partnerships, Unity helps brands maximize performance and drive measurable results across mobile, web, and CTV.”More to comeWe’re just getting started. As the mobile landscape evolves, we’ll keep innovating to ensure Unity Audience Hub and Unity Vector empower both developers and marketers to connect with players in ways that are impactful, privacy-safe, and future-proof.Ready to learn more about how Unity Audience Hub and Unity Vector can help you reach new audiences and grow your business?Let’s connect or learn more about our solutions here.__________________________________________________________________________________________About the MarTech Breakthrough AwardsThe MarTech Breakthrough Awards celebrate innovators, leaders, and visionaries shaping the future of marketing, sales, and advertising technology. Learn more at martechbreakthrough.com.Source: Data.ai and internal network data. Disclaimer: Top 100 games based on worldwide total downloads on the Apple App Store and Google Play between April 27 and May 10, 2025. “Grow their games” is defined as having more than $1 in activity using Unity’s uAds, iAds, Tapjoy OW, LevelPlay, Aura, or Ad Quality services.]]></description><link>https://unity.com/blog/unity-audience-hub-helps-marketers-reach-mobile-gaming-audiences</link><guid isPermaLink="true">https://unity.com/blog/unity-audience-hub-helps-marketers-reach-mobile-gaming-audiences</guid><pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: August 2025 in review]]></title><description><![CDATA[August 2025 was a reminder of how wide the spectrum of Unity-made games can be. From the stylish co-op roguelite Starlight Re:Volver to the cozy storytelling of Tiny Bookshop, and other gems (literally) like Gemporium: A Cute Mining Sim, Unity powered teams chasing wildly different dreams.IGF Awards
Huge congrats to all the IGF finalists, especially the games made with Unity that dominated the awards this year — including Consume Me, which took home three wins! Fresh off their Audience Award win at the IGF Awards, The WereCleaner team joined us on stream. Check it out:Made with Unity Steam Curator Page
Be sure to stay up to date with the latest Unity creations on Steam by checking out our Steam Curator page.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in August 2025, either into early access or full release. Add to the list by sharing any that you think we missed.ActionStick It to the Stickman, Free Lives (August 18 – early access)The Knightling, Twirlbound (August 28)Astro Prospector, Incrementalist (July 14)FUMES, FUMES team (July 28 – early access)Bullet HeavenGunlocked 2, FromLefcourt (August 21 - early access)Book Shooter, SOS GameLab. (August 22)Cards, dice, and deckbuildersSizzle & Stack, Arvis Games (August 5)Luck & Loot, SMARTcreative (August 1)Rogue Hex, Topstitch Games (August 9)Casual, rhythm, and partyCheese Rolling, The Interviewed (August 19)Cheese Rolling, The Interviewed (August 19)City and colony builderThe Wandering Village, Stray Fawn Studio (July 17)ISLANDERS: New Shores, The Station (July 10)Fill Up The Hole, Fluffy Lotus (July 17)ComedyCheese Rolling, The Interviewed (August 19)Experimental or surrealistNIDANA, lvl374 (July 28)ExplorationHerdling, Okomotive (August 21)FPSINCISION, SmoothBrainDev (August 28)GRIMWAR, BookWyrm (May 16)Noga, Ilan Manor (May 30)HorrorWhisper Mountain Outbreak, Toge Productions (August 11 - early access)Vigil, Singularity Studios (August 15)The Boba Teashop, Mike Ten (April 21)Out of Hands, Game River (April 22)Darkwater, Targon Studios (April 22 – early access)Management and automationTiny Bookshop, neoludic games (August 7)Plan B: Terraform, Gaddy Games (August 29)Plant Nursery Simulator, Robot Assembly (June 16 – early access)MetroidvaniaOirbo, ImaginationOverflow (February 11 – early access)SteamDolls - Order Of Chaos, The Shady Gentlemen (February 11 – early access)Narrative and mysteryVigil, Singularity Studios (August 15)Duck Detective: The Ghost of Glamping, Happy Broccoli Games (May 22)Beholder: Conductor, Alawar (April 23)PlatformerNODE: The Last Favor of the Antarii, Lapsus Games (August 28)Tempest Tower, Half Past Yellow (August 19)Once Upon A Puppet, Flatter Than Earth (April 23)PEPPERED: an existential platformer, Mostly Games (April 7)Ninja Ming, 1 Poss Studio (April 10)Seafrog, OhMyMe Games (April 15)Puzzle adventureIs This Seat Taken?, Poti Poti Studio (August 7)Strings Theory, Beautiful Bee (Console release)Secrets of Blackrock Manor - Escape Room, Biri Biri (August 1)Roguelike/liteThe Rogue Prince of Persia, Evil Empire, Ubisoft (August 20)Starlight Re:Volver, Pahdo Labs (August 27 – early access)Mortal Sin, Nikola Todorovic (August 29)Gatekeeper, Gravity Lagoon (August 1)GUNTOUCHABLES, Game Swing (August 7)Dinotica, XA Studio (August 12 – early access)Bendy: Lone Wolf, Joey Drew Studios (August 15)BAPBAP, BAP HQ (August 19)RPGOFF, Mortis Ghost, Fangamer (August 15)The RPG, Dionysus Acroreites (August 7)City of Springs, The Naked Dev, Alterego Games (August 18)SandboxMakeRoom, Kenney (August 7)I Fetch Rocks, SarumXR (August 1)SimulationGemporium: A Cute Mining Sim, Merge Conflict Studio (August 7)Ritual of Raven, Spellgarden Games (August 7)Robert on Earth, Remrofsnart (August 14)Waterpark Simulator, CayPlay (August 22 - early access)STORY OF SEASONS: Grand Bazaar, Marvelous Inc. (August 27)Whisper of the House, 元气弹工作室(GD Studio) (August 27)
Sports and drivingDriftwood, Stoked Sloth Interactive (August 1)Turbo Takedown, Hanging Draw (March 3)StrategyThe Bazaar, Tempo (August 13 - Steam release)ERA ONE, Team Complex LTD (August 6 – early access)Dice Gambit, Chromatic Ink (August 14)SurvivalLen’s Island, Flow Studio (June 19)Survival Machine, Grapes Pickers (May 7 – early access)Oppidum, EP Games® (April 25)That’s a wrap for August 2025. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-august-2025-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-august-2025-releases</guid><pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Level layout and terrain workflows in Survival Kids]]></title><description><![CDATA[Survival Kids is Unity’s first end-to-end development project, created in collaboration with KONAMI. The small team that built it tapped into decades of gamedev experience, and this blog series dives into how they approached this ambitious project. The first instalment explored the team’s frame and rendering work, while this edition looks at level and environment design.While mostly we’ve talked about how we achieved the looks you see onscreen, we wanted to dig into what we did to improve our workflows, making them faster so we could deliver the project on time.Due to the team’s size and the scope of the project, we put a lot of consideration into the level layout and terrain workflows. We needed something that was easy for a level designer to iterate ideas on, but our approach also had to need minimal-to-no rework once the levels were handed over to the art team. We opted for an approach that has a very white box-like workflow for the level designers while we were already working with final game assets.Survival Kids uses a set of reusable building blocks to create the main layout of the levels. It is a set of prefabs with cliff rock sides and a mesh terrain patch on top, configured in different sizes and shapes.The cliff sides are eight separate meshes, sides, and corners, each with a simplified mesh collider. They all share the same material, which speeds up their rendering.This setup allows the level designer to use these building blocks to create most of the levels using the final game assets but with a fast workflow that’s very close to white-boxing, to allow quick iteration on ideas.This terrain module “building block” approach resulted in many overlapping modules due to the organic shapes of the levels. It also led to most of the cliff sides being inside or behind other modules and never seen by the game camera. To solve this, we created an Editor tool that went through each module one by one, checking to see if any part of them could ever be seen from the game camera’s angle and removing all of the unseen ones.
We used a Houdini Engine tool to create continuous terrain meshes based on the different sections of the terrain modules.A modified version of Unity’s Polybrush package was used to paint the different materials on the terrain meshes. The modification was that Polybrush would paint a control texture, similar to how Unity’s terrain system does, instead of painting values to the vertices of the mesh.Ambient Occlusion is then baked into the vertex color of the terrain meshes to better visually ground the objects placed on it.A custom tool was then used to distribute small objects such as grass, flowers, and small rocks onto the terrain meshes. The distribution of the objects is controlled individually using parameters like density, underlying material, terrain curvature, or proximity to larger objects. Throughout the project, we stayed with very low density to minimize the performance impact of small vegetation.We then used another custom tool to split the mesh colliders of the different terrains. We did this in two ways:- As a grid, to reduce the triangle count and volume of each mesh collider and improve the game’s physics performance- By material, so that the game can generate different sounds and footstep VFX based on which material the characters are walking on (grass, sand, snow, ice, etc.)Check out the other instalments of our blog series deep dive into Survival Kids production:
- "Graphics and rendering tips from Survival Kids"
- "Level layout and terrain workflows in Survival Kids"
- "Inside the Survival Kids multiplayer network infrastructure"To learn more about projects made with Unity, visit the Resources page.]]></description><link>https://unity.com/blog/level-layout-and-terrain-workflows-in-survival-kids</link><guid isPermaLink="true">https://unity.com/blog/level-layout-and-terrain-workflows-in-survival-kids</guid><pubDate>Wed, 03 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Graphics and rendering tips from Survival Kids]]></title><description><![CDATA[This summer, Unity released the first game developed end-to-end in-house, an update on the co-op family game Survival Kids, in partnership with KONAMI. The game was built by a small internal team of about 20 people at its max, so the team had to find innovative ways to stay within the scope of the project and release timeline with limited resources, just like any indie studio. In this post, we dig into how we created the game’s visual frame and rendering.We wanted to achieve something visually interesting. Our goals were very artistic, but we also wanted to make it very cheap in terms of performance since we didn’t know what kind of device capabilities we’d be working with at first.The first part of the project was just visually exploring – we had an art diorama that we were using to show how we imagined the art to be. Part of that is a very stylized lighting setup, including customized shadows.We went with the Universal Render Pipeline (URP) since it has a great track record for performance on a wide range of devices, and it’s relatively easy to create any new features we need to make it hit the game’s visual targets. The rendered frame is very close to vanilla URP in Forward mode, since the game mostly has only one light source, the sun. We have a few modifications here and there, like the custom shadows, ambient occlusion, and a couple of other custom render features, but overall it’s vanilla URP onscreen.The biggest addition was to the shaders to support the very specific look of the art direction since we needed to make modifications to how lighting was calculated. Making custom shaders isn’t particularly new, however we wrote our own custom Shader Graph targets to ensure that anyone could contribute. Using AssemblyDefinitionReferences allowed us to add project specific Shader Graph targets without needing to have a completely custom URP version. This let us stick to the vanilla URP with just our local Shader Graph targets, which worked really well for our project.One of our aims was to have dynamic lighting – we wanted the option to be able to change the lighting color, intensity, etc. That meant we couldn’t easily bake lighting information using lightmaps, so we would be missing out on some of the lighting detail you would get from baking in bounce lighting / global illumination. We needed to think of different ways to balance high visual quality and good performance with a dynamic lighting approach, since it is normally more expensive. This led us to use LightProbes initially and also relying more heavily on Ambient Occlusion (AO) to help ground objects.Because we knew that global illumination was going to be very important for this project, we initially implemented a custom solution that would update LightProbes at runtime. But then when we moved to Unity 6, the team really wanted to switch over to Adaptive Probe Volumes (APVs) because the visual quality was considerably better than the system we’d knocked together while having comparable performance impact. When you have the option of upgrading from something good to something really good that’s high quality and performant, you just switch.The ocean was heavily based on a Unity URP demo project Boat Attack, but with a more stylized look. One of the things we really wanted to do was have wake coming off from the island and other elements in the water. This is usually implemented by using the depth buffer to work out the coastline by distance – but we don’t have a coastline, really, we have a Whurtle-island.With the Whurtle-island, you have a sudden dropoff, and there’s not enough depth falloff for the effect, especially taking into account the terrain submerged under the water. The best idea we came up with was to use a signed distance field, or SDF – it’s basically a texture that encodes the signed distance of an object, or, in our case, the coastline. This way, we can start the wake at a certain distance from the coastline, then use sine wave and some distortion textures to give it an interesting look.In the end, we had an Editor tool that bakes the signed distance for the coastline based on four set water heights. Then we did some blending and lerping between them for a rough approximation of where the coastline actually was, since the water level in most levels changes depending on the player’s progress. We relied on this pre-baked SDF information for several different effects, from adjusting ocean wave height to adding foam, wake, and caustics.
For visual interactions, a capsule is rendered from a top-down view around anything we needed to track the position of, like players, carriable objects, tools, etc., into a RenderTexture. The texture is based in world space with a sliding window as the player’s camera moves around.We generate an offset (red, blue) from the center of the capsule, as well as worldspace height information (green). In the alpha channel, we store a falloff value for the strength. That’s then used by different shaders for creating effects such as vegetation bending, animated ripples on water surfaces, or darkening the terrain a bit to create a very soft shadow effect.
For a performance optimization, we used a depth prepass, which fills the depth buffer before we render objects normally, reducing the cost of rendering those objects due to early depth test rejection.We dealt with dithered objects separately in a custom pass because we need to render them differently depending on their state and which player is viewing them. They’re in a different GameObject layer that is excluded from Opaque Layer Mask in the renderer so they’re not automatically rendered, and this means we need to render them in a custom pass. We used MaterialPropertyBlocks to set individual values for objects and applied stencils to mark up the objects that are dithered so we can blur those sections later on. However, since this breaks SRP batching, we needed to limit its use. We decided to only apply MaterialPropertyBlocks as needed and remove them when done, restoring objects to a batchable state.In the end, we have a whole pass that just deals with how we render that particular layer into the depth buffer. Next, we apply a stencil on the depth buffer to mark off which pixels are part of the objects that we’re fading away, and then that gets used later when we’re doing anti-aliasing.
Part of our art style was to have colored shadows with a gradient along the direction of the shadow. To achieve this, we had a custom screenspace texture generated from a RenderFeature that would sample the shadow map in world space, but also look ahead in the XZ plane to determine a shadow blend value. This is similar to a PCF filter used in soft shadows, but in one direction. This was rendered into a downsized texture about quarter the size of the screen, and we then blended the shadow color between three colors.Unfortunately for us, the SSAO provided with URP wasn’t quite suited to our needs. While it’s a mobile-friendly implementation, for the look we were going for we needed to set the radius value quite high, which took a significant chunk of our frame budget (~4ms). Instead, we reused the MSVAO implementation from the old PostProcessing Stack v2 package, with some minor changes to make it more efficient and integrate our shadow color.Survival Kids has the standard rendering passes you expect in URP (Opaque, Skybox, Transparency), but we also have an additional pass to handle our dithered objects, just after the opaque pass. This is where we will actually render our dithered geometry due to the fact that geometry in this layer is not rendered in the opaque pass. We also do a depth equals test in this pass to ensure we only render where we prefilled the depth buffer.For objects that are dithered, we need to disable Ambient Occlusion on them due to the artefacts that will occur due to MSVAO treating the “holes” in the depth buffer as occlusion.After the scene is rendered, we apply our anti-aliasing. Unfortunately, the areas that are dithered will trip up the algorithm (SMAA), causing visual artefacts. To avoid this, we need to deal with these areas separately. Areas that are dithered (determined by the stencil) are blurred, producing an alpha blend effect on those areas, and then SMAA is processed in the areas that aren’t dithered. This is skipped in certain circumstances, but we end up with a cleaned-up final image ready for post processing.We kept our post-processing effects as cheap as possible, using just a bit of Tonemapping, Bloom, and Color Correction.At one point, we used URP’s Blur in post-processing to soften the game behind the UI, but we replaced that with a cheaper Kawase blur RenderFeature later on. Our UI system is built on UGUI with a bit of custom rendering for the fading.The way we initially set up our UI, we were fading menus in and out, but this approach caused some issues due to how the alpha is done for the UI. At first, we started rendering the UI into a separate texture via a camera, then blit that correctly so we can fade the UI into the main image, we changed this so it could be achieved using a RenderFeature rather than using an entire extra camera.Check out the other instalments of our blog series deep dive into Survival Kids production:
- "Graphics and rendering tips from Survival Kids"
- "Level layout and terrain workflows in Survival Kids"
- "Inside the Survival Kids multiplayer network infrastructure"]]></description><link>https://unity.com/blog/graphics-and-rendering-tips-from-survival-kids</link><guid isPermaLink="true">https://unity.com/blog/graphics-and-rendering-tips-from-survival-kids</guid><pubDate>Wed, 27 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The evolution of rewards: From marketing model to loyalty driver]]></title><description><![CDATA[Earlier this year, I joined fellow Unity experts to forecast mobile gaming trends for 2025. One of my predictions was the continued growth of the rewards ecosystem – not at the explosive pace of previous years, but through more steady and strategic expansion.What’s fascinating about this evolution is how rewards now fuel every stage of the marketing funnel and user experience. As mobile and digital platforms evolve, rewards are becoming increasingly essential across games, apps, and web-based platforms. In this blog, I’ll explore key factors driving this growth, break down the core characteristics of the rewards space, and hopefully debunk a few myths.Why rewards are thriving nowRewards as incentives are deeply ingrained in human nature and have long been a cornerstone of games and gamification. While reward mechanisms aren’t new, several recent trends have propelled the rewards space into exponential growth:Users want moreOver time, user behavior has shifted significantly, especially with the rise (and decline) of the Play-to-Earn Web3 era. Today’s users want more than just entertainment. They’re looking for tangible value from their investment, like virtual currencies, cashback, coupons, or real monetary rewards. While Web3 Play-to-Earn is no longer the prevailing trend, users' behaviors and desires remain unchanged.Macroeconomic shiftsPost-COVID economic uncertainty led to cautious spending habits. Users are more selective with their entertainment, while advertisers face tighter budgets - making rewards an appealing option for both.Privacy challenges in user acquisitionAs the regulatory focus on privacy grows, acquiring high-quality users has become harder. Rewards offer a way to diversify UA channels, boost engagement, and deepen user relationships.Today’s rewards have evolved beyond traditional live ops campaigns and rewarded video ads. More games and apps now use offerwalls to boost their economies and monetization. Offerwalls attract highly engaged users who generate greater long-term value.Where does loyalty come into play?The rewards market is growing quickly, and the recent rise of the rewards app trend has been driving more attention to it with an expansion from in-app rewards to standalone rewards apps, resulting in a large number of rewards apps entering the market. But not all rewards apps or programs succeed. The key to long-term success lies in balancing user retention, engagement, performance of advertisers, and monetization.Are loyalty programs and rewards apps the same? Not quite – they each have a different focus. Loyalty programs prioritize building long-term relationships with customers, and usually have more features like levels, badges, special offers, and community features to help people feel connected to the brand. Rewards apps, on the other hand, have a more transactional focus in which they encourage repeat purchases, frequently with a spend-and-earn approach.When developing a loyalty program, ask yourself: Who am I building this for? Whether you’re a publisher, advertiser, or user acquisition channel owner, aligning interests is essential. Misalignment often leads to low engagement and lower ROAS in deeper cohorts.From a publisher’s perspective, loyalty can be a key driver of your in-app economy. Standard elements like live ops campaigns are great, but introducing an offerwall can take things to the next level. The best part? Offerwalls allow advertisers to subsidize user rewards, reducing the cost burden on you.How to make rewards work for youWhether you’re new to rewards or already implementing them, here are some tips for maximizing their impact:1. Refine your user journey to drive in-game progressionDesign rewards to enhance your users’ progression within your app or game. Choose the right flow, optimize bids, and ensure the rewards users receive align with what they should be earning.2. Leverage data to focus on the right cohortsPay close attention to the depth of cohorts you’re aiming to reach and select the best channel or vendor for support. Strategically tailor your approach for short or long-term cohorts with data-driven decisions.3. Prioritize UX in monetizationWhen monetizing through rewards, ensure offers align with your app’s core mechanics. Consider the optimal revenue model, offer types, and overall value proposition for both you and your users.The rewards ecosystem plays a pivotal role in increasing engagement, retention, and monetization. By understanding the factors driving this growth and aligning your rewards strategy with user expectations, you can unlock the full potential of rewards for your app or game. Whether you’re building a loyalty program or exploring offerwalls, the key is to create value for all stakeholders while delivering a seamless and engaging user experience.]]></description><link>https://unity.com/blog/evolution-of-rewards-driving-loyalty</link><guid isPermaLink="true">https://unity.com/blog/evolution-of-rewards-driving-loyalty</guid><pubDate>Tue, 12 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Scaling industrial AR: How Visometry uses Unity and model tracking on the factory floor]]></title><description><![CDATA[From precision tracking to quality inspection, Visometry and Unity are enabling next-gen augmented reality across manufacturing and engineering.Visometry GmbH is a deep-tech company based in Germany, specializing in enterprise-grade augmented reality (AR) solutions for industrial use. A spin-off from the renowned Fraunhofer Institute, Visometry is best known for its powerful model tracking SDK, VisionLib, which enables precise, real-time object tracking in complex industrial environments. From automotive to mechanical engineering, Visometry’s tools help companies deploy scalable AR applications that drive efficiency, quality, and innovation.In this article, Visometry explores how they are leveraging Unity’s real-time 3D engine to bring advanced tracking and 3D visualization to life — from inspection systems like Twyn to immersive interactive experiences, and enabling Visometry to streamline industrial AR development and make high-performance solutions accessible to developers, integrators, and manufacturers alike.
Industrial AR today: From pilot to productionAR has quietly transformed the industrial world. Over the past decade, industrial AR has progressed from experimental trials to mission-critical tools that are reshaping how companies inspect, maintain, and interact with complex machinery and infrastructure.As the sector confronts new challenges—rising demand, an aging workforce, and the constant push for precision—AR offers compelling answers to improve operational efficiency, reduce errors, and make smarter use of skilled labor.Visometry has been part of this evolution from the beginning, leveraging Unity’s real-time 3D engine to bring advanced tracking and 3D visualization to life. Originally spun out of the Fraunhofer Institute, the company today focuses on a critical layer of industrial AR: enterprise-ready object tracking. This core technology enables the precise alignment of 3D content and data layers with real-world machines and components.

Enabling precise AR with VisionLibAt the heart of many AR solutions is VisionLib, a software development kit (SDK), built on Unity, that brings industrial-strength object tracking to AR applications. Already in use by leading companies across automotive and mechanical engineering sectors, VisionLib provides stable, real-time, markerless tracking of one or more physical objects—even under challenging lighting or motion conditions.Using CAD and 3D data, VisionLib enables high-precision pose estimation that anchors digital content directly onto real-world components. This technique, known as model tracking, has become a foundational capability for industrial AR, enabling developers to overlay visual data with accuracy and without manual alignment or markers.
Unlike consumer-grade AR, which typically relies on simultaneous localization and mapping (SLAM) -based camera tracking and can suffer from content drift, model tracking ensures precise placement of 3D elements even in dynamic or reflective environments. That level of precision is key for industrial use cases such as quality inspection, guided assembly, and training.From SDK to solution: Twyn for AR-based quality inspectionWhile VisionLib is designed for developers and platform integrators, Visometry also brings AR directly to manufacturing teams through Twyn — a ready-to-use AR inspection solution.Twyn enables interactive, CAD-based quality inspection on the shop floor, allowing teams to detect deviations between digital models and physical parts quickly and flexibly. By combining VisionLib’s tracking with Unity’s visualization engine, Twyn delivers enterprise-ready performance in an intuitive interface, even for teams without deep expertise in 3D graphics or AR development.This approach exemplifies Visometry’s mission: democratize access to industrial-grade AR by abstracting complexity and enabling other organizations to offer offering scalable solutions that work out of the box.
Why Unity: Developer speed and cross-platform reachFrom the outset, VisionLib has been designed with developers in mind. Leveraging Unity's plugin architecture, VisionLib SDK seamlessly integrates into the Unity ecosystem, enabling developers to create industrial-grade AR applications with precise object tracking and robust anchors for digital content, all managed directly from the Unity tech stack.Unity has long played a pivotal role in democratizing model tracking, particularly through its ARFoundation framework, which bridges platform-specific AR modules like ARKit and ARCore.Building on this foundation, VisionLib SDK extends Unity's capabilities to meet the demands of industrial applications. Designed for enterprise-grade augmented reality, VisionLib combines CAD data with advanced image processing to deliver true 3D object tracking for mixed and augmented reality scenarios.Unity developers can harness this cutting-edge technology directly within the Unity Editor to craft high-quality XR experiences. Moreover, VisionLib SDK integrates seamlessly with ARFoundation, enhancing interoperability and expanding its reach. This streamlined workflow empowers developers to rapidly prototype, efficiently implement AR features, and deploy across a wide range of devices, including smartphones, tablets, AR glasses, and stationary industrial hardware.
Real-world AR: A closer look at Atelier MarkgraphOne standout industrial use case is Atelier Markgraph, a design studio specializing in spatial communication. For years, they’ve been using AR to stage products and complex systems in dynamic, interactive ways—often at high-profile events.Working with Mercedes-Benz, Markgraph created AR-driven experiences to showcase vehicles and engines. Rather than display a static engine block, they used VisionLib and Unity to deliver layered, explorable, and interactive 3D visualizations.“It’s super complex to physically cut through an engine,” explains Christoph Diederichs, Head of Interactive Experiences at Markgraph. And it’s difficult to convey engineering finesse just by presenting a block of steel – it’s not interactive, it’s not dynamic.”According to Diederichs, AR makes it possible to add an interactive digital 3D layer to the real world, enabling spectators “to grasp” things that are otherwise hard to communicate in a short amount of time. Tracking and interacting with a real object delivers on the “tangible feel” and the appeal of a real engine, while AR is virtually making the invisible visible.
“In our industry, time is always a critical factor,” says Diederichs. Especially during the final stages of a project, when everything needs to come together under pressure: 3D models need to be swapped, last-minute change requests incorporated."At one event, there was virtually no time for testing: …and it just had to work”, Diederichs recalls. The new engine, still a closely guarded secret until its public unveiling, could only be viewed and tested once in advance. The rest had to be developed under lab conditions only.
The future of industrial AR: From guidance to validationAccording to Jens Keil, founder and product manager at Visometry, AR in industrial settings is entering a new phase. The early days were about enabling tracking. Then came platforms for scaling content. Now, there is a shift toward using AR not just for guidance, but for verification.That means going beyond simply showing what to do—and instead confirming whether a task was performed correctly. VisionLib is already ahead of the curve with multi-model tracking, which can independently track and validate multiple objects or subcomponents within a larger assembly.In one example, Visometry highlights how its tracking tech automatically detects and flags misaligned components on steel structures. Combined with advances in AI and machine vision, this approach moves AR toward more intelligent, closed-loop validation tools.“We’re exploring ways to enable users to combine AR, AI, and other techniques,” says Keil. “Our goal is to democratize access through simple developer tools and platform-independent solutions.”Visometry is not just creating tools for today’s AR but building a foundation for the next generation of spatial computing—where AR, AI, and computer vision come together to empower industry-wide transformation.
]]></description><link>https://unity.com/blog/visometry-3d-visualization</link><guid isPermaLink="true">https://unity.com/blog/visometry-3d-visualization</guid><pubDate>Fri, 11 Jul 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: June 2025 in review]]></title><description><![CDATA[Plenty of successful games are made with Unity, and the list keeps growing. PEAK, from Landfall and Aggro Crab, sold over 2 million copies in just 9 days. Big releases like Broken Arrow and the 1.0 launch of Len’s Island show how teams of all sizes are shipping ambitious games with Unity. Here's a look at some of the most recent ones.

Also, don't miss some of the great trailers from the summer showcases, or great demos that debuted at Next Fest this month.IGF Awards
Huge congrats to all the IGF finalists, especially the games made with Unity that dominated the awards this year — including Consume Me, which took home three wins! Fresh off their Audience Award win at the IGF Awards, The WereCleaner team joined us on stream. Check it out:Made with Unity Steam Curator Page
Once again we sent out a clarion call for Unity staff to share which of your games they've been playing this past month. Be sure to see them all on our Steam Curator Page here:Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in June 2025, either into early access or full release. Add to the list by sharing any that you think we missed.ActionShotgun Cop Man, DeadToast Entertainment (May 1)Deliver At All Costs, Studio Far Out Games (May 22)Pipistrello and the Cursed Yoyo, Pocket Trap (May 28)Bullet HeavenBioprototype, Emprom Game (May 19)Broventure: The Wild Co-op, Alice Games (May 15)Tower of Babel: Survivors of Chaos, NANOO (May 19 – early access)Cards, dice, and deckbuildersMonster Train 2, Shiny Shoe (May 21)Into the Restless Ruins, Ant Workshop Ltd (May 15)Casual, rhythm, and partyWordatro!, Le Poulet (June 23)POPUCOM, Hypergryph (June 1)City and colony builderKity Builder, Sambero, irx99, YerayToledano, Juan Hust (June 17)MEMORIAPOLIS, 5PM Studio (April 30)ComedyPick Me Pick Me, Optillusion (May 28 – early access)Experimental or surrealistENA: Dream BBQ, ENA Team (March 27)FPSBloodshed, com8com1 Software (May 22)GRIMWAR, BookWyrm (May 16)Noga, Ilan Manor (May 30)HorrorLiDAR Exploration Program, KenForest (April 2)White Knuckle, KenForest (April 17 – early access)The Boba Teashop, Mike Ten (April 21)Out of Hands, Game River (April 22)Darkwater, Targon Studios (April 22 – early access)Management and automationSupermarket Simulator, Nokta Games (June 19)Plant Nursery Simulator, Robot Assembly (June 16 – early access)MetroidvaniaOirbo, ImaginationOverflow (February 11 – early access)SteamDolls - Order Of Chaos, The Shady Gentlemen (February 11 – early access)Narrative and mysteryReplicomica, enyevg (June 16)Duck Detective: The Ghost of Glamping, Happy Broccoli Games (May 22)Beholder: Conductor, Alawar (April 23)PlatformerPEAK, Landcrab (June 16)Blessed Burden, Podoba Interactive (June 18)Once Upon A Puppet, Flatter Than Earth (April 23)PEPPERED: an existential platformer, Mostly Games (April 7)Ninja Ming, 1 Poss Studio (April 10)Seafrog, OhMyMe Games (April 15)Puzzle adventureSqueakross: Home Squeak Home, Alblune (June 7)Strings Theory, Beautiful Bee (Console release)Kathy Rain 2: Soothsayer, Clifftop Games (May 20)Poco, Whalefall (May 20)Axona, Onat Oke (May 28)Projected Dreams, Flawberry Studio (May 29)Elroy and the Aliens, Motiviti (April 2)Leila, Ubik Studios (April 7)Tempopo, Witch Beam (April 17)BOKURA: planet, ところにょり (April 24)Amerzone - The Explorer's Legacy, Microids Studio Paris (April 24)Roguelike/liteLost in Random: The Eternal Die, Stormteller Games (June 17)Nightmare Frontier, Ice Code Games (June 16)RPGRAIDOU Remastered: The Mystery of the Soulless Army, ATLUS (June 19)Yaoling: Mythical Journey, RAYKA STUDIO (June 19)BitCraft Online, Clockwork Laboratories, Inc. (June 21 – early access)SandboxA Webbing Journey, Fire Totem Games (May 19 – early access)Islands & Trains, Akos Makovics (May 29)SimulationCast n Chill, Wombat Brawler (June 16)Liquor Store Simulator, Tovarishch Games (May 2)Doloc Town, RedSaw Games Studio (May 7)Tales of Seikyu, ACE Entertainment (May 21 – early access)Trash Goblin, Spilt Milk Studios Ltd (May 28)Sports and drivingThe Last Golfer, Pixel Perfect Dude (May 28)Turbo Takedown, Hanging Draw (March 3)StrategyBroken Arrow, Steel Balalaika (June 19)Tower Dominion, Parallel 45 Games (May 7)9 Kings, Sad Socket (May 23 – early access)SurvivalLen’s Island, Flow Studio (June 19)Survival Machine, Grapes Pickers (May 7 – early access)Oppidum, EP Games® (April 25)That’s a wrap for June 2025. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-june-2025-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-june-2025-releases</guid><pubDate>Mon, 30 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Discover data-driven stability and enhancements in 6.2 beta]]></title><description><![CDATA[Our commitment for Unity 6 is to provide a faster, more reliable and more stable engine. In our latest Unity 6.2 beta release, we’re introducing updates that will help us identify and resolve performance issues with greater speed and accuracy, as well as a new, built-in diagnostics experience for developers to improve game performance on a project-specific level. These updates are enabled by a new developer data framework we’ve introduced with this beta, which is designed to give developers more visibility and control over how their data is shared and used across the Unity ecosystem.New Diagnostics: Enhanced Observability for Smoother GameplayUnity 6.2 introduces enhanced diagnostics features that significantly improve observability and device performance monitoring. With this update, developers gain access to more robust crash reporting capabilities, enabling them to diagnose and resolve performance issues more effectively than before. These reports provide a clearer picture of how games perform across a diverse range of devices, helping developers ensure smoother gameplay for more players across more devices.In your Project Overview in Unity Dashboard, you can now view diagnostics reports to help you monitor, investigate, and resolve crashes and performance issues that your players may be experiencing. The experience includes new and more detailed data points for mobile and desktop projects, including ANR (Application Not Responding) monitoring with device and session details for Android projects, as well as new data visualization options to make it easier to view and understand performance trends.No additional package installation is required to get started, and these enhanced diagnostics are freely available to our developers and not as an additional paid service.Addressing Runtime Issues at Scale
The availability of diagnostics data doesn’t just benefit individual developers—it also powers Unity’s internal efforts to identify and address critical engine issues at scale. Improving the performance and stability of the engine requires real, timely insight into how the engine behaves in production – on actual devices, in real-world gameplay. Powering that insight is real-time diagnostics data we use to identify the most impactful fixes. By making the runtime smart about its own performance across all the environments Unity operates in, we’re able to more quickly identify critical issues as they occur, and get solutions in the hands of our users much sooner.This data is essential to ensuring we can continue investing in making the engine as stable and performant as possible, and starting in this 6.2 beta, all new projects created will collect diagnostics data by default. Developers who want to opt out can do so at any time in Project Settings in the Editor.Introducing the Developer Data FrameworkAs we introduce more data-driven improvements to our own engine and runtime - as well as the tools and services that allow developers to do more with their data - transparency and control become even more important. That’s why we’re introducing a new framework that ensures that developers have the final say on how and where their data is used in the Unity ecosystem.The Developer Data framework is Unity’s new approach to data collection, management, and usage across our ecosystem. It empowers you with tools to control Developer Data collected on your behalf – from how it's gathered, to where it goes, and how it's used.Whether data comes from the Unity engine, Unity services, or customer-owned sources, it's considered Developer Data – data you own and control. Unity uses it only as directed and never repurposes it without your explicit permission. You define the rules, so you can rest easy knowing exactly what is shared and how it is used every step of the way.In the latest 6.2 release, you will now see Developer Data as a settings option in the Unity Dashboard, providing a scalable way to manage your data preferences across projects and services. Until you customize settings, the use of your data is limited to only what’s required to provide to you the products and services you already use. You can adjust these settings at any time, and they will automatically deploy to both current projects and live games.Ultimately, you control what data is collected, how it's shared, and how it can be used to power capabilities like machine learning, benchmarking, support, personalized recommendations, and more. This includes governance around how your data can be used to power Unity AI. As a reminder, data related to your use of Unity AI, including prompts, responses and interactions, will not be used to train AI models unless you enable the Unity AI Developer Data sharing setting for “Improve Unity AI models” in the AI Unity Dashboard.The framework helps you align your data strategy with your goals, workflows, and privacy standards – all while unlocking better insights, smoother experiences, and stronger outcomes. To read more about the Developer Data framework, you can see an in-depth overview here. Discover new features in the Unity 6.2 beta todayUnity 6 beta releases allow us to share new features faster, so that our community has more opportunities to provide feedback that will help shape the future of our releases.These releases are open to everyone, and you can get started by downloading the latest release for the Unity Hub. Because there may be feature stability issues with early test versions, we do not recommend you use beta releases for projects in production, and we highly recommend that you back up any project before opening it with an alpha or beta release.Connect with our team and provide feedbackYou can find a dedicated section in Unity Discussions for this beta update, where you'll find links to detailed documentation and, most importantly, the best place to leave your feedback for our team.]]></description><link>https://unity.com/blog/unity-6-2-beta-release-announcement-data-driven-stability</link><guid isPermaLink="true">https://unity.com/blog/unity-6-2-beta-release-announcement-data-driven-stability</guid><pubDate>Wed, 25 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How dialog-driven video layering shapes the surreal world of ENA: Dream BBQ]]></title><description><![CDATA[ENA: Dream BBQ adapts Joel G’s cult-following animated web series into a surreal interactive adventure game. The game follows ENA as she searches for the mysterious Boss, playing missions and meeting oddball characters in strange worlds created with a mishmash of trippy textures and techniques.We sat down with the game’s producer, technical director, and tech artist, Evan Nave, and Luke Mirman, who oversees programming, to talk about how a lean team brought this stunningly original (and overwhelmingly popular) game to life.Let’s start by talking a bit about the game and what you were trying to do.Evan Nave: It’s an interactive episode of Joel G’s ENA animation series. Since we already used the Unity Engine for animations, it felt natural to extend that out into a fully playable game. Playing as the titular character, ENA, you interact with the world, meet characters, and do things that you’re told to do. Nothing crazy gameplay-wise, but it falls into the vein of LSD Dream Emulator and similar kinds of surreal games.Why did you decide to bring the web animation series to a video game? How did that come about?Evan: It started small. Joel is primarily a 2D animator. Adobe Animate was his main medium for creating animations with some 3D mixed in for a surreal style.Luke and I made a game in college for one of our finals, Somnium, which was inspired by Joel’s animation series. We showed that to him, and he brought us onto the team for ENA since it was clear that we shared a similar artistic vision. That Unity project in college led us into making a full game with Joel.Let’s talk about interactions – there’s a lot of complex video layering and superimposition of transparencies in the game, and much of that gets synchronized through dialog systems, right?Evan: Because the animations could take on many different forms, we had a lot of different systems.Luke Mirman: There’s several different ways to run a dialog interaction, but it’s not convoluted just for the sake of it. They all serve different purposes. If you want to have a cut scene versus a player-directed dialog, they have to behave differently, so they are separate systems. But they all have the same underlying functionality.How do they work?Luke: There’s one that is, I would call it “pure dialog,” which is lines of dialog where the player advances from one line to the next. That’s the most typical interaction.The second type is what I’d call “director-driven dialog,” which is similar, but the player has no agency over it. Usually a video is adding timings to dialog lines in the dialog script itself and is syncing with that video. So it would play the video, play the audio for it, and when it sees that the video has progressed a certain amount of time, it shows the next line.The third I would call “timeline sequences,” or cut scenes, which we created with custom video tracks and custom dialog tracks. While the timeline controls the animations and camera motions of the sequence, under the hood the video track is driving the timeline. It’s not in the update cycle – it’s driven by the video player. That’s for a specific reason: If the player system is stuttering the video, we don’t want it to be constantly playing catchup. So it’s really running the timeline in the timing of the video itself, which enabled us to do more sophisticated things in the timeline.What were the challenges of working with so many different systems?Evan: From a tech director perspective, it was very interesting because Joel would come to us with an idea saying, “I have this vision where this happens in the foreground, this happens in the background. The camera then pans, and then another 2D sequence happens on the screen.” So we’d need to plan around the in-game world by matching a pre-rendered or pre-animated video that has transparency. And that’s why directing the timeline is important, because if the camera pans and that pan is matched in the 2D animation, we need the animation to direct the Unity timeline.A lot of it came down to Joel saying, “Hey, this is my idea. Here’s a storyboard or animatic of it. Is it possible?” And then I would go through it, talk to Luke and our artists, and detail out how we could do it in Unity.Luke: I think one of my favorite things about working on this project is that Joel doesn’t have much technical experience with Unity or programming. And that actually was really exciting because he would propose things that are absurd.The best example that’s visible to players is the inventory. Having it be a newspaper that you look through and see your current jobs as if they were advertisements is counterintuitive to how you would typically approach a UI – usually you have a menu with a scroll box, just something functional.When Joel showed me the concept for swapping through the papers, I was so excited. But if you come from a typical background of what you would expect a user experience in a menu to be, you’d probably play it straight and narrow.Evan: Joel would also propose different art assets or visual styles for systems where we could have reused assets. So there is a lot of extra art that you wouldn’t typically see in a video game. We didn’t want to reuse assets or copy-paste anything. We have a really awesome team who just wants to do neat things, and Joel is a great director who lets each person put in their own thing. That was a special aspect of the game.It’s a really unique game that required a lot of unorthodox approaches. What are some of the workarounds or solves that you’re most proud of?Evan: I got to make some non-Euclidean things for levels, and that was really fun.We also had a 3D skybox system. I made this back in college for our game Somnium. The 3D skybox system is like the source engine where you have a little box somewhere else in the map, and that’s projected behind all the geometry so your render distance doesn’t have to be as far. We played around with that, so not only is it a functional skybox, but we could also project that onto geometry in the level. We could make a whole wall disappear and look like there’s stuff behind it when really we’re just hiding something – like a big curtain.Non-Euclidean stuff was definitely interesting. ENA is very surreal and nonsensical, so it lends itself to playing with space. There are some skyboxes that are just completely hand-painted where we just do nothing but have a textured sphere around the player, that makes it look like there is geometry infinitely far away.Luke: I’m really proud of how flexible the dialog system is. We use Yarn Spinner as our dialog system. I think the amount of our documentation for random niche purposes is frankly the part I’ve had the most fun working on. It’s enabling our artists to write dialog that implements what the vision for sequences is.It goes back to Joel not necessarily having that much technical experience with game development. He would propose these sequences, and it was such a fun challenge making that work. Sometimes there would be compromises based on what’s reasonable, of course, but incorporating that vision with a unique perspective on implementing things was really fun.Check out ENA: Dream BBQ on Steam.
]]></description><link>https://unity.com/blog/ena-dream-bbq-video-layering</link><guid isPermaLink="true">https://unity.com/blog/ena-dream-bbq-video-layering</guid><pubDate>Wed, 18 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Make user churn history with Aura Remarketing]]></title><description><![CDATA[User churn is one of the biggest challenges app developers face today—90% of users stop engaging within the first 30 days of downloading an app, and even the most popular apps struggle with retention rates that exceed 80%.* That’s why re-engaging inactive users isn’t just important, it’s essential. It’s about connecting with people who’ve already shown interest in your app and reminding them why they downloaded it in the first place.This is where Aura Remarketing comes in. Aura provides a direct and effective way to bring users back to your app through smart, targeted notifications that are delivered natively on your users’ devices. By focusing on high-value users, like those who make in-app purchases or play frequently, Aura drives meaningful reactivations and helps you grow your active user base without spending on new user acquisition campaigns.Why winning back users makes senseInactive users aren’t just lost opportunities, they can be some of the most valuable audiences to connect with. They’ve already downloaded your app, indicated intent, and engaged at one point. By targeting them at the right moment with placements that are native and non-intrusive, Aura Remarketing enables you to:Bring back users at the moments they’re most likely to re-engageDiversify your UA strategyFocus on high-value users who have already shown interest in your appHow does it work?Aura Remarketing uses smarter targeting that helps you reconnect with users in a strategic and impactful way. This ensures the right users receive the right message at the right time. Our targeting includes:User type: Target users who have downloaded through Aura or through other means.Demographics: Customize targeting based on their opt-in first party data, such as age, gender, location, etc.Device models: Target users who own specific devices (users with high-end devices tend to spend more on apps**).The targeting gets even better if your app was originally downloaded with Aura. In this case, you can target via:Download recency: Set a customizable minimum number of days since the app was downloaded to ensure recently installed users aren’t targeted.App engagement: Focus on users based on whether they have opened and interacted with the app after downloading.Post-install behavior: Establish targeting rules based on post-install activities like app launches, purchases, ad interactions, app opens, registrations, or first-time use, with the option to define specific timeframes for these actions.What’s in it for you?Aura Remarketing combines the native and non-intrusive nature of on-device campaigns with the effectiveness and cost efficiency of remarketing campaigns. It also works at scale across multiple OEM and telco partners, uses deep targeting and personalization techniques, and supports sending notifications directly to users through device-level channels. This provides you with the tools to:Re-engage high-value users: Bring back users who make significant purchases or are valuable to the app's ecosystem.Leverage targeted insights: Use knowledge of user behavior within the app to create more precise and effective campaigns.Maximize investment: Reactivate users you've already acquired to grow your active user base without additional acquisition costs.Tap into high intent: Users who have already downloaded the app are more likely to return and engage.Revive your relationship with usersAura Remarketing is built to support re-engagement campaigns to deliver real, measurable results. This helps app publishers reconnect with high-value users, improve retention, and maximize ROI.Ready to re-engage and reignite your user base? Contact us today to learn how Aura Remarketing can help you bridge the gap between disengaged users and long-term retention.

FAQS1. What is Aura Remarketing?Aura’s on-device remarketing solution reactivates users directly within their mobile device, offering the tools to boost engagement and bring them back to your app effortlessly.2. How do I get started with a remarketing campaign?To launch a remarketing campaign, you'll need to provide the following:A campaign performance link for measuring results.A redirect link to guide users back to the relevant page or feature in your app.Criteria for the users you want to re-engage.Your desired bid for the campaign.Key Performance Indicators (KPIs) to measure campaign success.3. What placements are available?Currently, notifications are available. We are exploring additional placements, including Game Spotlight and In-life App Discovery Experiences, for possible inclusion in future updates.4. What are Aura Remarketing’s capabilities?Smart Notifications: Re-engage inactive users directly through on-device notifications.Advanced Targeting: Segment users by downloads, demographics (age, gender, device), app engagement (launches, purchases, ads viewed), and post-install behavior.Custom Timeframes: Set time-based conditions, like minimum days since download or specific post-install actions.Scalable Campaigns: Drive high-performance, tailored campaigns at scale with minimal setup effort.5. Are there any privacy requirements?At this time, no additional privacy steps are needed on your end. Our platform is carrier-grade compliant and adheres to applicable data privacy and security requirements.
*Source: App Retention Rates (2025), Business of Apps, February 6, 2025.

**A “high-end device” refers to a smartphone or tablet that includes a high-performance processor, substantial RAM and ROM, an advanced display, long-lasting battery, high-quality camera, and functional sensors such as touchscreen, proximity, and accelerometer.
]]></description><link>https://unity.com/blog/reduce-user-churn-aura-remarketing</link><guid isPermaLink="true">https://unity.com/blog/reduce-user-churn-aura-remarketing</guid><pubDate>Mon, 16 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making a killing: The playful 2D terror of Psycasso®]]></title><description><![CDATA[A serial killer is stalking the streets, and his murders are a work of art. That’s more or less the premise behind Psycasso®, a tongue-in-cheek 2D pixel art game from Omni Digital Technologies that’s debuting a demo at Steam Next Fest this week, with plans to head into Early Access later this year. Playing as the killer, you get a job and build a life by day, then hunt the streets by night to find and torture victims, paint masterpieces with their blood, then sell them to fund operations.I sat down with lead developer Benjamin Lavender and Omni, designer and producer, to talk about this playfully gory game that gives a classic retro style and a fresh (if gruesome) twist.Let’s start with a bit of background about the game.Omni: We wanted to make something that stands out. We know a lot of indie studios are releasing games and the market is ever growing, so we wanted to make something that’s not just fun to play, but catches people’s attention when others tell them about it. We’ve created an open-world pixel art game about an artist who spends his day getting a job, trying to fit into society. Then at nighttime, things take a more sinister turn and he goes around and makes artwork out of his victim's blood.We didn’t want to make it creepy and gory. We kind of wanted it to be cutesy and fun, just to make it ironic. Making it was a big challenge. We basically had to create an entire city with functioning shops and NPCs who have their own lives, their own hobbies. It was a huge challenge.So what does the actual gameplay look like?Omni: There’s a day cycle and a night cycle that breaks up the gameplay. During the day, you can get a job, level up skills, buy properties and furniture upgrades. At nighttime, the lighting completely changes, the vibe completely changes, there’s police on the street and the flow of the game shifts. The idea is that you can kidnap NPCs using a whole bunch of different weapons – guns, throwable grenades, little traps and cool stuff that you can capture people with.Once captured on the street, you can either harvest their blood and body parts there, or buy a specialist room to keep them in a cage and put them in various equipment like hanging chains or torture chairs. The player gets better rewards for harvesting blood and body parts this way.On the flip side, there’s a whole other element to the game where the player is given missions each week from galleries around the city. They come up on your phone menu, and you can accept them and do either portrait or landscape paintings, with all of the painting being done using only shades of red. We've got some nice drip effects and splat sounds to make it feel like you’re painting with blood. Then you can give your creation a name, submit it to a gallery, then it goes into a fake auction, people will bid on the artwork and you get paid and large amount of in-game money so you can then buy upgrades for the home, upgrade painting tools like bigger paint brushes, more selection tools, stuff like that.Ben: There’s definitely nothing like it. And that was the aim, is when you are telling people about it, they’re like, “Oh, okay. Right. We’re not going to forget about this.”

Let’s dig into the 2D tools you used to create this world.Ben: It’s using the 2D Renderer. The Happy Harvest 2D sample project that you guys made was kind of a big starting point, from a lighting perspective, and doing the normal maps of the 2D and getting the lighting to look nice. Our night system is a very stripped-down, then added-on version of the thing that you guys made. I was particularly interested by its shadows. The building’s shadows aren’t actually shadows – it’s a black light. We tried to recreate that with all of our buildings in the entire open world – so it does look beautiful for a 2D game, if I do say so myself.Can you say a bit about how you’re using AI or procedural generation in NPCs?Ben: I don’t know how many actually made it into the demo to be fair, number-wise. Every single NPC has a unique identity, as in they all have a place of work that they go to on a regular schedule. They have hobbies, they have spots where they prefer to loiter, a park bench or whatever. So you can get to know everyone’s individual lifestyle.So, the old man that lives in the same building as me might love to go to the casino at nighttime or go consistently on a Monday and a Friday, that kind of vibe.It uses the A* Pathfinding Project, because we knew we wanted to have a lot of AIs. We’ve locked off most of the city for the demo, but the actual size of the city is huge. The police mechanics are currently turned off, but there’s 80% police mechanics in there as well. If you punch someone or hurt someone, that’s a crime, and if anyone sees it, they can go and report to the police and then things happen. That’s a feature that’s there but not demo-ready yet.How close would you say you are to a full release?Omni: We should be scheduled for October for early access. By that point we’ll have the stealth mechanics and the policing systems polished and in and get some of the other upcoming features buttoned up. We’re fairly close.Ben: Lots of it’s already done, it’s just turned off for the demo. We don’t want to overwhelm people because there’s just so much for the player to do.Tell me a bit about the paint mechanics – how did you build that?Ben: It is custom. We built it ourselves completely from scratch. But I can't take responsibility for that one – someone else did the whole thing – that was their baby. It is really, really cool though.Omni: It’s got a variety of masking tools, the ability to change opacity and spacing, you can undo, redo. It’s a really fantastic feature that gives people the opportunity to express themselves and make some great art.Ben: And it's gamified, so it doesn’t feel like you’ve just opened up Paint in Windows.Omni: Best of all is when you make a painting, it gets turned into an inventory item so you physically carry it around with you and can sell it or treasure it.What’s the most exciting part of Psycasso for you?Omni: Stunning graphics. I think graphically, it looks really pretty.Ben: Visually, you could look at it and go, “Oh, that’s Psycasso.”Omni: What we’ve done is taken a cozy retro-style game, and we’ve brought modern design, logic, and technology into it. So you're playing what feels like a nostalgic game, but you're getting the experience of a much newer project.Check out the Psycasso demo on Steam, and stay tuned for more NextFest coverage.
]]></description><link>https://unity.com/blog/making-a-killing-psycasso-2d</link><guid isPermaLink="true">https://unity.com/blog/making-a-killing-psycasso-2d</guid><pubDate>Mon, 09 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The multiplayer stack behind MMORPG Pantheon: Rise of the Fallen]]></title><description><![CDATA[Finding your own path is at the core of gameplay in Pantheon: Rise of the Fallen – players can go anywhere, climb anything, forge new routes, and follow their curiosity to find adventure. It’s not that different from how its creators, Visionary Realms, approaches building this MMORPG – they’re doing it their own way.Transporting players to the fantasy world of Terminus, Pantheon: Rise of the Fallen harkens back to classic MMOs, where accidental discovery wandering through an open world and social interactions with other players are at the heart of the game experience.Creating any multiplayer game is a challenge – but a highly social online game at this scale is an epic quest. We sat down with lead programmer Kyle Olsen about how the team is using Unity to connect players in this MMORPG fantasy world.So what makes Pantheon: Rise of the Fallen unique compared to other MMO games?It’s definitely the social aspect. You have to experience the world and move through it naturally. It can be a bit more of a grind in a way, but it I think connects you more to your character, to the game, and the world instead of just sort of teleporting everywhere and joining LFG systems or just being placed in a dungeon. You learn the land a bit better, you have to navigate and you use your eyes more than just bouncing around like a pinball from objective to objective, following quest markers and stuff. It’s more of a thought game.How are you managing synchronization between the player experience and specific world instances?We have our own network library we built for the socket transport layer called ViNL. That’s the bread and butter for all of the zone communications, between zones and player to zone. SQL server in the back end, kind of standard stuff there. But most of the transports are handled by our own network library.How do you approach asset loading for this giant world?We’ve got a step where we bake our continents out into these tiles, and we’ve got different backends that we can plug into that. We’ve got one that just outputs standard Prefabs, and we’ve got one that outputs subscenes that we were using before Unity 6, and then we’ve got actual full-on Unity scenes that you can load additively, so you can choose how you want to output your content. Before Unity 6, we had moved away from Prefabs and started loading the DOTS subscenes and using that, built on BRG.We also have an output that can render directly to our own custom batch render group as well, just using scriptable objects and managing our own data. So we’ve been able to experiment and test out the different ones, and see what yields the best client performance. Prior to Unity 6, we were outputting and rendering the entire continent with subscenes, but with Unity 6 we actually switched back to using Prefabs with Instantiate Async and Addressables to manage everything.We’re using the Resident Drawer and GPU occlusion culling, which ended up yielding even better performance than subscenes and our own batch render group – I’m assuming because GPU occlusion culling just isn’t supported by some of the other render paths at the moment. So we’ve bounced around quite a bit, and we landed on Addressables for managing all the memory and asset loading, and regular Instantiate Prefabs with the GPU Resident Drawer seems to be the best client-side performance at the moment.Did you upgrade to Unity 6 to take advantage of the GPU Resident Drawer, specifically?Actually, I really wanted it for the occlusion culling. I wasn’t aware that only certain render paths made use of the occlusion culling, so we were attempting to use it with the same subscene rendering that we were using prior to Unity 6 and realizing nothing’s actually being culled. So we opted to switch back to the Prefab output to see what that looked like with the Resident Drawer, and occlusion culling and FPS went up.We had some issues initially, because Instantiate Async wasn’t in before Unity 6, so we had some stalls when we would instantiate our tiles. There were quite a few things being instantiated, but switching that over to Instantiate Async after we fixed a couple of bugs we got rid of the stall on load and the overall frame rate was higher after load, so it was just a win-win.Were there any really remarkable productivity gains that came with the switch to Unity 6?Everything I've talked about so far was client-facing, so our players experienced those wins. For the developer side of things, the stability and performance of the Editor went up quite a bit. The Editor stability in Unity 6 has gone up pretty substantially – it’s very rare to actually crash now. That alone has been, at least for the coding side, a huge win. It feels more stable in its entirety for sure.How do you handle making changes and updates without breaking everything?We build with Addressables using the labels very heavily, and we do the Addressable packaging by labels. So if we edit a specific zone or an asset in a zone, or like a VFX that’s associated with a spell or something like that, only those bundles that touch that label get updated at all.And then, our own content delivery system, we have the game available on Steam and our own patcher, and those both handle the delta changes, where we’re just delivering small updates through those Addressable bundles. The netcode requires the same version to be connected in the first place, so the network library side of that is automatically handled in the handshake process.What guidance would you give someone who’s trying to tackle an MMO game or another ambitious multiplayer project?You kind of start small, I guess. It's a step-by-step process. If you’re a small team, you You start small. It's a step-by-step process. If you’re a small team, you can’t bite off too much. It’d be completely overwhelming – but that holds true with any larger-scale game, not just an MMO. Probably technology selection – making smart choices upfront and sticking to them. It’s going to be a lot of middleware and backend tech that you’re going to have to wrangle and get working well together, and swapping to the newest cool thing all the time is not going to bode well.What’s the most exciting technical achievement for your team with this game?I think that there aren’t many open world MMOs, period, that have been pulled off in Unity. We don’t have a huge team, and we're making a game that is genuinely massive, so we have to focus on little isolated areas, develop them as best we can, and then move on and get feedback.The whole package together is fairly new grounds – when there is an MMO, it needs to feel like an MMO in spirit, with lots of people all around, doing their own thing. And we’ve pulled that off – I think better than pretty much any Unity MMO ever has. I think we can pat ourselves on the back for that.Get more insights from developers on Unity’s Resources page and here on the blog. Check out Pantheon: Rise of the Fallen in Early Access on Steam.]]></description><link>https://unity.com/blog/multiplayer-stack-visionary-realms-mmorpg-pantheon</link><guid isPermaLink="true">https://unity.com/blog/multiplayer-stack-visionary-realms-mmorpg-pantheon</guid><pubDate>Mon, 02 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: May 2025 in review]]></title><description><![CDATA[A bunch of great games made with Unity dropped in May—across genres, budgets, and styles. Here’s a quick roundup of what shipped that anyone not still lost in Blue Prince should check out.IGF Awards
Huge congrats to all the IGF finalists, especially the games made with Unity that dominated the awards this year — including Consume Me, which took home three wins! Fresh off their Audience Award win at the IGF Awards, The WereCleaner team joined us on stream. Check it out:Made with Unity Steam Curator Page
Once again we sent out a clarion call for Unity staff to share which of your games they've been playing this past month. Be sure to see them all on our Steam Curator Page here:Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in May 2025, either into early access or full release. Add to the list by sharing any that you think we missed.ActionShotgun Cop Man, DeadToast Entertainment (May 1)Deliver At All Costs, Studio Far Out Games (May 22)Pipistrello and the Cursed Yoyo, Pocket Trap (May 28)Bullet HeavenBioprototype, Emprom Game (May 19)Broventure: The Wild Co-op, Alice Games (May 15)Tower of Babel: Survivors of Chaos, NANOO (May 19 – early access)Cards, dice, and deckbuildersMonster Train 2, Shiny Shoe (May 21)Into the Restless Ruins, Ant Workshop Ltd (May 15)Casual, rhythm, and partyAmong Us 3D, Schell Games, Innersloth (May 6)Dunk Dunk, Badgerhammer Limited (May 8)Ithya: Magic Studies, BlueTurtle (May 7)Kulebra and the Souls of Limbo, Galla (May 16)Bugtopia, Nocturnal Games (May 21)Kabuto Park, Doot, Zakku (May 28)City and colony builderPreserve, Bitmap Galaxy (May 15)MEMORIAPOLIS, 5PM Studio (April 30)Darfall, SquareNite (May 8)Worshippers of Cthulhu, Crazy Goat Games (May 22)City Tales - Medieval Era, Irregular Shapes (May 22 – early access)ComedyPick Me Pick Me, Optillusion (May 28 – early access)Experimental or surrealistENA: Dream BBQ, ENA Team (March 27)FPSBloodshed, com8com1 Software (May 22)GRIMWAR, BookWyrm (May 16)Noga, Ilan Manor (May 30)HorrorLiDAR Exploration Program, KenForest (April 2)White Knuckle, KenForest (April 17 – early access)The Boba Teashop, Mike Ten (April 21)Out of Hands, Game River (April 22)Darkwater, Targon Studios (April 22 – early access)Management and automationBlacksmith Master, Untitled Studio (May 15 – early access)Liquor Store Simulator, Tovarishch Games (May 2)Animal Spa, Sinkhole Studio, Moonlab Studio (May 13)Toy Shop Simulator, PaperPixel Games (May 16)Alien Market Simulator, Silly Sloth Studios, Kheddo Entertainment (May 25 – early access)MetroidvaniaOirbo, ImaginationOverflow (February 11 – early access)SteamDolls - Order Of Chaos, The Shady Gentlemen (February 11 – early access)Narrative and mysterydespelote, Julián Cordero, Sebastian Valbuena (May 1)Duck Detective: The Ghost of Glamping, Happy Broccoli Games (May 22)Beholder: Conductor, Alawar (April 23)PlatformerPaperKlay, WhyKev (March 27)Bionic Bay, Psychoflow Studio, Mureena Oy (April 17)Once Upon A Puppet, Flatter Than Earth (April 23)PEPPERED: an existential platformer, Mostly Games (April 7)Ninja Ming, 1 Poss Studio (April 10)Seafrog, OhMyMe Games (April 15)Puzzle adventurePup Champs, Afterburn (May 19)Strings Theory, Beautiful Bee (Console release)Kathy Rain 2: Soothsayer, Clifftop Games (May 20)Poco, Whalefall (May 20)Axona, Onat Oke (May 28)Projected Dreams, Flawberry Studio (May 29)Elroy and the Aliens, Motiviti (April 2)Leila, Ubik Studios (April 7)Tempopo, Witch Beam (April 17)BOKURA: planet, ところにょり (April 24)Amerzone - The Explorer's Legacy, Microids Studio Paris (April 24)Roguelike/liteSavara, Doryah Games (May 6)Vellum, Alvios Games (May 2)Yasha: Legends of the Demon Blade, 7QUARK (May 14)An Amazing Wizard, Tiny Goblins (May 22 – early access)Garden of Witches, Team Tapas (May 23 – early access)RPGTainted Grail: The Fall of Avalon, Questline (May 23)The Monster Breeder, Fantasy Creations (May 6)Yes, Your Grace 2: Snowfall, Brave At Night (May 8)SandboxA Webbing Journey, Fire Totem Games (May 19 – early access)Islands & Trains, Akos Makovics (May 29)SimulationThe Precinct, Fallen Tree Games Ltd (May 13)Liquor Store Simulator, Tovarishch Games (May 2)Doloc Town, RedSaw Games Studio (May 7)Tales of Seikyu, ACE Entertainment (May 21 – early access)Trash Goblin, Spilt Milk Studios Ltd (May 28)Sports and drivingThe Last Golfer, Pixel Perfect Dude (May 28)Turbo Takedown, Hanging Draw (March 3)StrategyTeenage Mutant Ninja Turtles: Tactical Takedown, Strange Scaffold (May 22)Tower Dominion, Parallel 45 Games (May 7)9 Kings, Sad Socket (May 23 – early access)SurvivalDino Path Trail, Void Pointer (May 9)Survival Machine, Grapes Pickers (May 7 – early access)Oppidum, EP Games® (April 25)That’s a wrap for May 2025. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-may-2025-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-may-2025-releases</guid><pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 tips & strategies for marketing indie games]]></title><description><![CDATA[Making a game is hard. Getting anyone to care about it might be harder. That’s why we launched the Indie Survival Guide — an evolving archive of Q&As, VODs, and live streams from developers and industry folks. There’s no guaranteed playbook for success, but hearing how others navigated design, business, and getting by can give you better odds.
In this recent stream, we sat down with Chris Zukowski from HowToMarketAGame.com, who shared honest, actionable advice on standing out in a crowded Steam marketplace. Below are a few highlights from the conversation.1. Optimize your Steam pageA good Steam page does two things: it tells players exactly what kind of game they’re looking at, and it proves that it’s worth their time. According to Chris, clarity is king:“You wanna make your Steam page look like your type of game so that at an instant somebody shopping goes, ‘Ah, it's that type of game—I’m gonna buy it.”To build trust, you also need to look professional, and that starts with how your game is presented visually.“You wanna show quality. And another way to do quality is you should hire a capsule artist,” says Chris. “I’m telling you folks… don’t just use Unity, take a screenshot, and then use MS Paint to write the title of your game. Don’t do that.”Details matter, even in your thumbnail. Chris pointed out how players make fast visual associations when skimming through the store.“Every capsule always has a hammer. I don’t know why,” he says. “But if you just put a hammer in your thumbnail for your game—it’s called a capsule—people are gonna see that hammer and subconsciously go, ‘Oh, I bet I build a city with that.’”Why is all this important? Often, you have that first 5 seconds when someone lands on your Steam page or views your capsule browsing the platform to grab their attention. The competition is steep, and you need to find any way to rise above the noise.2. Choose the Right Genre on SteamYour first marketing decision isn’t the trailer, or the tweet — it’s the game you chose to make. Genre isn’t just a creative choice; it defines your market fit.“The moment you say ‘I’m gonna make this type of game,’ you’ve actually made the biggest marketing decision,” Chris explains. “People think like, ‘Oh, I’ve made my game and now I want to start thinking about marketing.’ It’s too late.”Chris emphasized that certain genres are better suited for Steam’s player base. Horror is a consistent favorite, as are systems-driven games.“Most of the games that do very well are genres that people don’t typically make. The big one is horror. The other ones I call crafty building strategy simulation-y games,” he says. “Crafty building strategy simulation-y games—these are games where they’re almost like a sandbox. It’s not like a linear story where you’re a dude with a sword and you run through an environment.”Things like crafting games, management and automation games, city builders, and simulation games do really well on Steam, even if they don’t become household names. This has held true for awhile. Trends on Steam aren’t as unpredictable as they seem. Chris has tracked genre performance over several years and found them surprisingly stable:“I’ve done this for the past three years to look at the big genres that are on there… and typically, it’s very consistent year over year. These trends aren’t running. These trends are staying the same.”3. Avoid Common Mistakes on SteamEven great games can stumble at launch because of simple oversights. One of the biggest? Not treating your Steam page launch as an announcement:“People have never announced their game,” he says. “I know this sounds weird… but a lot of people just throw their Steam page up and then their Steam page is live. No. When you put your Steam page up, you announced your game.”Another major one: forgetting to use Steam’s built-in tools to notify your audience.“You launch your game and… you didn’t push the ‘email wishlisters’ button? That’s a big one. That’s a new rule. That was instituted in about October. But that’s it—you have to push the button,” he says. “You have two weeks from when you launch your demo to push this button called ‘email wishlisters’… do not forget. A third of responses to my survey were like, ‘what’s an email button?’”Discovery on Steam is based on a lot of things, but don’t underestimate metadata and tags. Steam’s discovery algorithm relies heavily on tags, yet many devs ignore them or don’t maintain them.“Another stupid thing—check your tags. I’ve seen people that have like 10 tags. No—you wanna get all the tags."4. Prepare for Steam Next FestSteam Next Fest can offer a massive visibility spike — if you show up prepared. That means your demo needs to be in shape before the event begins.“You should not be debuting your demo during Next Fest,” he says, “Next Fest is the grand… it’s the quinceañera. It’s the grand debut of the final stage of yourself. You should have released your demo long before.”This is especially important because Steam gives all participants equal footing at first — but only boosts games that perform well early.“You want your demo bulletproof,” he says. “You’ve wanted it vetted by streamers before. You’ve wanted it in other festivals. Because if on that first day everybody fires it up and there’s some bug… you’re done.”Chris emphasized the importance of building wishlists before the event begins:“If you’re coming into Next Fest hot with more wishlists, you will do better. That’s why you want to get that demo out early and build some momentum before the fest begins.”5. Invest wisely when supplementing your Steam pageIf you're chasing visibility, you don’t need to buy a massive toolset or a stack of ads. In fact, most of this process can be done with strategy and timing.“There aren’t that many tools… you don’t need to buy a lot. Marketing is not pay-to-win that much,” he says about marketing a Steam game. “Marketing is actually much more strategic, and it’s about when you time certain activities and what you do.”The only thing Chris consistently recommends spending on? A pro-looking capsule image.“The only thing I really recommend spending money on is hiring a capsule artist. Other than that, most of this is free and DIY.”There are no magic formulas, but learning how others have done it can go a long way. If there’s one consistent takeaway from this chat with Chris, it’s that marketing is not just about shouting as loud as you can on social media. You need to make a game that the market on that platform is looking for, make it obvious that it’s that type of game, and let the game do the marketing work for you. Getting demos out early is key. You can follow more of Chris’s work at HowToMarketAGame.com, or dive deeper into the Indie Survival Guide for more hard-earned advice from devs who've been there.Keep making games, and don’t forget to push that e-mail button.]]></description><link>https://unity.com/blog/tips-strategies-for-marketing-indie-games</link><guid isPermaLink="true">https://unity.com/blog/tips-strategies-for-marketing-indie-games</guid><pubDate>Thu, 22 May 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 lessons to learn from a failed game]]></title><description><![CDATA[The Indie Survival Guide is your ongoing archive of real talk and hard-won insights from the devs and industry experts making games happen—often against the odds. Whatever tools you’re using, this growing library of Q&As, livestreams, and VODs is here to help. There’s no magic formula, but we believe shared experience—across design, business, and survival—can give you the best shot.We recently sat down with Emily Pitcher—a Forbes 30 Under 30 and Game Awards Future Class honoree, better known online as sonderingemily to her 350,000 followers across YouTube, Instagram, and beyond. Emily is the creator of lily’s world XD, a psychological horror game built on cringy teen nostalgia, fourth-wall breaks, and real photos from her own adolescence. Her work spans game dev and content creation, and she’s the first to admit: it hasn’t all been easy. But the journey has a lot to learn from.Here’s what she had to say.1. Failing as part of the processBefore the success of lily’s world XD, there was Gold Lining—a project that taught Emily the brutal, necessary lessons of creative failure. She poured her heart into the game, even secured early funding from Xbox, but ultimately it didn’t find traction. There was no publisher. No finish line. Just hard decisions and emotional fallout. But it was also the beginning of clarity.“Gold Lining was a project I started basically right out of college,” she says. “Instead of researching what might be popular with Steam players, I just thought, what would be a concept that seems cool to make?... We actually got some funding from that game from Xbox… but unfortunately, we were never able to secure a publisher with that game, and the game was ultimately cancelled.”Emily doesn’t romanticize this period. The dream faltered. Her confidence did too. And the weight of rejection nearly broke her.“The game could not be finished without money,” she said. “The scope was just way too big… and we kind of came at a crossroads of what should we do… I stopped having fun making the game… I was really sad every day with the rejections… I stopped believing in the game itself.”Still, she made the hardest—and wisest—move: she quit. And by walking away, she opened the door to her next act.“It was honestly really hard, very emotional—there was crying involved, of course—but now looking back, I am so happy I had the courage to step away,” she says. “I do not regret that failure at all because only because I went through that and learned the hard way, that lily’s world XD has been able to get grounding.”2. Turning Mistakes Into MomentumEmily didn’t just recover—she reflected. Every painful lesson from Gold Lining became a data point. And rather than rebuild in the same direction, she rebuilt smarter.“[Chris Zukowski] actually had this video that changed my life,” she says. “He did this interview with a popular game dev channel and he had this whole section about genre. And he said platformers—the worst genre—that hurt a little bit.”The first shift? She stopped building games no one could explain. She learned that clarity matters. Especially when talking to publishers or creating content, having a razor-sharp pitch can be the difference between intrigue and indifference.“You can summarize the hook of your game in one sentence,” she says. “That one sentence can guide you when you're talking to publishers, guide you when you're making content about your game.”She also interrogated her design logic more rigorously. Was every mechanic supporting the theme, or just convention?“I was just following the conventions of the genre and not asking myself, are we just doing this because it’s a platformer?” she said. “Or are we doing this because it helps the central theme of the game?”Most importantly, she dismantled the echo chamber. No more developing in isolation. Instead, she decided to involve the audience early—and often.“Another big thing I would do is to try to validate your game earlier,” she says. “With Gold Lining, it was just an echo chamber of me and my friends… with lily’s world XD, I made the videos from the very beginning.”3. Playing to your strengthsOne of Emily’s biggest unlocks wasn’t about tech or trends. It was about accepting who she is—and who she isn’t. She’s not a trained programmer. She’s not a pro artist. But she is a storyteller. A designer. A builder of weird, personal worlds. And when she embraced that, things clicked.“You gotta be a little objective about what you're good and bad at,” she said. “I suck at programming. I am a good writer. And I would say I'm passable with art… if someone told me, ‘I suck at programming, I'm mediocre at art, and I can only write,’ I’d be like, ‘You should not make an indie game’… but even though all of those things are true, when I get the feedback form for my game, for playtesters, people actually say that art direction is one of their favorite things.”Instead of pretending to be someone she wasn’t, Emily designed around her limits. And in doing so, she carved out a creative space that felt truly hers.“I worked around my weaknesses,” she says. “I suck at programming, so I decided to make a game that I thought would be easier to program… I used to work at Meta, so I’m familiar with tools like Figma… I use pictures of myself because I’m not that good at art… and it is a narrative detective game, so storytelling and writing is at the forefront.”Her lesson: don’t wait to be good at everything. Use what you’ve got.“Limitation is what makes you seem competent if you have a lower skill set,” she says. “If you're doing pixel art and you use a limited color palette, immediately your art is gonna seem more cohesive just because of that—even though you still suck.”4. Publicly validating conceptsIn contrast to the quiet, closed-door development of Gold Lining, Emily took a radically open approach with lily’s world XD. She didn’t just develop in public—she launched her audience journey before her Unity project even existed.“With Gold Lining, it was a secret right up until the end… I worked for about two years in private on the game,” she said. “And with lily’s world XD, I thought: in the first week of development, let’s make a video. And that video got 2 million views… I realized that I could use social media as a way to evaluate whether my ideas had strengths.”The result? Instant feedback. Viral traction. And a powerful way to gauge demand before sinking years into development.“I had started making videos here and there… eventually I grew a small audience,” she says. “I posted one of my TikTok videos to Instagram just to share with my family and friends. That video got over 2 million views, and now I do it as a career.”This approach wasn’t accidental—it was strategic. She tested multiple angles and found the hook that stuck.“When I had an idea, I came up with a few sentences of hooks,” she explained. “...and what led to the huge boom and rise of my game… was this thing I did to save time, that ended up being a cool developer story.”Emily’s story proves you don’t need a huge following to start. You just need to start.“I know that not everyone has a massive social media following,” she said. “But I don’t think you need a massive social media following to validate this idea through social media… Unpacking went viral at its first tweet… they weren’t famous people before that.”5. Using Social MediaSocial media was never Emily’s endgame—it was a bridge. A means of discovery, validation, and momentum. But not a silver bullet. She’s blunt about its limits.“Short-form video is not the best way to convert to wishlists,” she says. “That conversion has to happen when they see the name, they save the video, then they go on their computer and search it up… that is just too many steps.”What works? A multi-platform approach, repeated visibility, and content with a clear hook.“Post your video on all social media platforms,” she said. “This video that is literally 6 million views got 700 views on my TikTok. If I just posted on TikTok, I would think this is a bad video—but no, this video gave me like 10,000 wishlists.”Most impressive of all, she built momentum before she even touched code.“I started making videos when all I had were two screenshots,” she said. “When I made my video, I didn’t even open Unity. I didn’t know how to code yet. I just assumed I was going to learn on the way.”But Emily is crystal clear: none of this matters if the game itself doesn’t land.“Social media will not take you to the finish line,” she says. “Ultimately, you need to make a good game… you should leverage social media to give you opportunities in your game, rather than relying on it as the sole marketing method.”There’s no single path through indie game development, but Emily Pitcher’s story makes one thing clear: failure is not the opposite of progress; it is progress. From burnout to bounceback, her ability to interrogate her process, stay honest about her strengths, and meet the audience where they are has turned lily’s world XD into one of the most anticipated indie horror games on Steam.As Emily put it best:“We are stronger together and we should not look at each other as competition.”]]></description><link>https://unity.com/blog/how-to-learn-from-a-failed-game</link><guid isPermaLink="true">https://unity.com/blog/how-to-learn-from-a-failed-game</guid><pubDate>Thu, 22 May 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile shopping insights: Brand marketers' cheat sheet for back-to-school 2025 ]]></title><description><![CDATA[As the second largest retail event in the U.S. after the holiday season, back-to-school shopping represents a crucial opportunity for brand advertising. And this year, the path to reaching parents clearly leads to one place: their mobile devices.Between March and April 2025, Unity surveyed 1,234 parents in the U.S. with children under 18 through Qualtrics to uncover how they're using mobile apps and games during this critical shopping season*. Our research uncovers specific insights into their shopping behaviors, ad engagement patterns, and preferred retail channels that can help marketers create more effective mobile strategies. Let's take a closer look at the key data and takeaways from our survey.Mobile meets back-to-schoolParents are embracing mobile as a primary path to purchase, with the majority using apps to research and buy back-to-school items.68% of parents use mobile apps for back-to-school shopping48% download new apps specifically for the back-to-school shopping seasonDads are more app-curious with 55% downloading new apps vs. 44% of moms46% complete purchases directly through mobile appsNot only are parents using apps for shopping, generally, they are logging serious screen time:22% spend 1–2 hours/day33% spend 3–4 hours/day on their phones35% spend 5+ hours on their phones58% of parents say they’re likely or very likely to engage with rewarded ads offering back-to-school savingsDads (59.6%) are slightly more responsive than moms (58.4%)Only 11.9% of parents are unlikely or very unlikely to engageMost parents are deal-driven, with coupons and limited-time offers leading their purchase decisions:Coupons/deals: 32% overall (35% of moms, 28% of dads)Limited-time offers: 14% of parents overall, with dads more responsive (17.4%)Cost and variety matter while proximity, bundles/packages and customer service ranked lowestRecommendation: Prioritize in-app advertising with deal-focused creatives, combined with rewarded ad formats that highlight limited-time urgency.School’s in (early) sessionWhen looking at timelines – our survey data indicates that parents are early planners, with the majority of shopping activity kicking off in June (or earlier!), with dads being more likely to get an early jump on back-to-school shopping.Nearly 1 in 5 parents (21%) are early planners, starting their shopping before June.Dads are more likely to start early — 29% shop before June vs. 16% of moms.Nearly half of parents (46%) kick off shopping in June or July, with July alone driving the biggest surge (29.6%)—the peak of back-to-school season.24.8% wait until August, likely driven by last-minute needs or school start dates.Recommendation: Consider launching your awareness campaigns in mid-late Q2 to engage early planners while they’re still in research mode.Spend-ready parentsParents that we surveyed indicated they are ready to spend when it comes to back-to-school shopping, with moms being the primary purchasers. Advertising also plays a large role, with the majority of parents citing it as influential in the purchase-making process.42% of parents plan to spend over $150 on back-to-school clothing alone.Another 20% plan to spend between $100–$150, showing that back-to-school is a high-intent, high-investment moment for many families.63% say advertising somewhat or significantly influences their back-to-school purchase decisions.Moms drive the majority of back to school purchases, with 86% identifying as the primary household shopper.Recommendation: Target mobile ad placements that reach moms - who likely drive the majority of purchase decisions - especially through mobile gaming where women outpace men (73% vs. 65%). With 63% of parents somewhat or significantly influenced by advertising and most planning substantial budgets, mobile campaigns during this high-intent period can help you reach your target audience.What’s in their cartParents that we surveyed indicated they have distinct preferences when it comes to both what they're buying and where they're shopping for back-to-school items, with notable differences in shopping behavior between moms and dads.Classroom supplies (33%), clothing (24%), arts and crafts supplies (9%) and electronics (8%) top the shopping listParents surveyed shop, or would consider shopping, at familiar favorites for back-to-school supplies:Walmart (39%)Amazon (17%)Target (12%)Staples (8%)Retailers vary by parent: While both moms and dads shop at mass retailers, dads are more likely to favor tech and office supply stores than moms.Dads were 2x more likely to shop at Staples (12%) vs. moms (6%)Dads were 2.4x more likely to shop at Office Depot (12%) vs. moms (5%)Dads were 3.3x more likely to shop at Best Buy (10%) vs. moms (3%)Moms were 1.6x more likely to shop at Walmart (46%) vs. dads (28%)Recommendation: Align your messaging with top retail destinations and tailor creative and app lists by parent type.Turn these back-to-school insights into conversions: Launch awareness campaigns by mid-Q2 to capture early planners, meet parents where they spend significant time—in mobile apps and games—and craft messaging that emphasizes urgency and deals. By implementing these data-driven strategies, your brand can earn an A+ this back-to-school season while increasing your advertising ROI potential.Learn more about Unity’s Programmatic solutions.*Disclaimer: Findings are based on survey responses from groups of differing sizes (755 mothers, 441 fathers, 38 not specified). While each group was large enough to identify directional patterns, differences in sample size may affect comparability.Qualtrics. "Survey Data Collected Using Qualtrics Software." Qualtrics, March-April 2025, https://www.qualtrics.com.]]></description><link>https://unity.com/blog/back-to-school-mobile-shopping-insights</link><guid isPermaLink="true">https://unity.com/blog/back-to-school-mobile-shopping-insights</guid><pubDate>Thu, 22 May 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[From IAP to hybrid monetization: A player-first approach]]></title><description><![CDATA[In-app purchases (IAPs) are the primary monetization strategy for many free-to-play gaming apps. IAPs offer significant revenue generation at a low cost, both in terms of resources and player experience. But relying solely, or even mostly, on IAPs has trade-offs that could affect the long-term success of your game.That’s why Unity’s Game Design & Revenue Consultancy team recommends adopting a hybrid approach to monetization - using a mixed model of IAPs, system-initiated ads, and user-initiated ads. In their recent live webinar, the team shared the reasoning behind this recommendation, as well as actionable ways to plan and implement hybrid monetization in your game without disrupting the player experience.Watch the webinar here or keep reading for the highlights.Current challenges of IAP monetizationFor many mobile free-to-play games, IAP reliant strategies can have significant drawbacks, including:Limited player spend: The vast majority of players will never make a purchase in a mobile game, leaving conversion rates low — only 1-3% of daily active users engage in IAPs [Source: 2024 Mobile Growth and Monetization Report. Unity, 2024].Dependence on high spenders: A small percentage of players contribute the majority of revenue, creating financial risk if high spenders disengage. Overemphasis on monetization can alienate non-paying players and lead to retention problems.Market saturation: Game genres are becoming increasingly crowded, and players expect premium quality without paywalls. High user acquisition costs further exacerbate this issue.The case for hybrid monetizationIncluding ads in a game's monetization strategy opens up new opportunities and offers unique benefits, both for developers and the player community. Hybrid models often center on non-intrusive, player-friendly ad formats such as rewarded ads and offerwalls. Many also include system-initiated ads like interstitials after careful implementation and testing. The Unity Game Design & Revenue Consultancy recommends first implementing rewarded ads before looking to include system-initiated ads. The benefits to players of rewarded ads:Rewarded ads are opt-in ad placements, offering players to exchange a short amount of time spent watching an ad (30 seconds to 1 minute) for in-game rewards, like power-ups, extra lives, or bonus levels. Similarly, offerwalls are also opt-in but instead of exchanging time for rewards, players take actions (like beating a specific level in a game) to unlock rewards.These formats allow non-spenders to access content they otherwise wouldn’t experience, including paid content, and allow players to progress further in-game than they would have. The fact that they’re opt-in enables these placements to be impactful for monetization, while at the same time keeping the player experience undisturbed.The benefits to developers of rewarded ads:These ad formats also offer major benefits to developers, opening potential new revenue opportunities and enabling game developers to generate revenue potential while minimizing dependence on IAP. Moreover, they often incentivize players to engage more and deeper with a game - increasing return sessions, daily logins, and exploration of in-game IAP stores.Designing a player-friendly ad strategy that includes system-initiated adsA successful hybrid monetization plan relies on carefully integrated ads that protect the player experience. Developers should focus on maintaining game balance by managing reward structures in rewarded ads to avoid pay-to-win scenarios and prevent player churn. For system-initiated ads, ads should also complement, not interrupt, the existing core gameplay loop. Disruptive ad placements and overexposure can lead to negative player experiences, and therefore churn. Unity networks use features like viewing caps for ads and mid-session placements to help ensure ads don’t interfere with immersion. Unity also offers in-depth analytics to help developers refine ad strategies to align with specific player preferences and behaviors. Use them in conjunction with continuous testing to optimize your ad placements and implementation.Roadmap to implementationThere are 3 key phases to successfully transitioning from an IAP model to hybrid monetization.Phase 1: Player segmentation The initial step involves identifying different player segments, such as whales (high spenders), minnows (occasional spenders), and non-spenders, to create tailored ad experiences for each group. For non-spenders, a best practice is to first introduce them to rewarded ads, which highlight the game's value and serve as an incentive for potential future purchases, before implementing interstitial or banner ads.Phase 2: Pilot testingAfter defining player segments, small-scale controlled tests are conducted to assess the impact of ad placements. For example, this may involve limiting the testing scope to specific regions or targeting around 5-10% of the player base. Various ad formats, including rewarded ads, interstitials, banners, and offerwalls, are tested to understand their effectiveness. Metrics such as ARPDAU and retention rates are compared between test groups and control groups to evaluate how different ad implementations affect player engagement and revenue.Phase 3: Iteration and optimizationOnce initial testing is complete, ad placements, pacing, and reward structures are refined using insights derived from analytics. Adjustments are made to balance ad frequency and player retention, ensuring that player satisfaction does not decline. To avoid cannibalizing IAP revenue, reward values are carefully calibrated. A/B testing is used consistently to track player engagement, ad performance, and eCPM, ensuring a steady optimization of both gameplay experience and revenue generation.Get the hybrid monetization advantageHybrid monetization represents a more sustainable, and often profitable, game monetization strategy. By complementing IAPs with player-friendly ad strategies, developers can both diversify their revenue streams and enhance player experiences. The key lies in striking a careful balance, integrating ads seamlessly into gameplay, and refining ad placement and frequency through testing and data analysis.Hybrid monetization not only addresses the challenges of IAP reliance but also creates a win-win scenario for developers and players alike.Get more from Unity Game Design & Revenue ConsultancyFollow Unity Grow on LinkedIn for more expertise and case studies from our leading game design consultants. Interested in working with the team? Reach out to your Unity account manager to find out how our experts can help you.]]></description><link>https://unity.com/blog/iap-to-hybrid-monetization</link><guid isPermaLink="true">https://unity.com/blog/iap-to-hybrid-monetization</guid><pubDate>Wed, 07 May 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How four top developers found smooth sailing (and porting) with Android XR and Unity 6]]></title><description><![CDATA[A few months ago, Unity launched day-one support for Android XR with tools, features, and dedicated documentation to help developers start experimenting and creating on this exciting new platform.We recently sat down with developers from four industry-leading XR studios – Owlchemy Labs, TRIPP, Resolution Games, and Litesport – to hear more about their experiences porting apps and creating new experiences in Android XR. These teams shared insight into their successes and challenges, and they provided actionable advice for developers ready to chart their course into Android XR development.TRIPP, an AI powered mental wellness app available on mobile and VR platforms, is bringing their flagship title to Android XR, while Resolution Games is porting their hit title Demeo. Litesport is bringing over numerous apps and titles: their Litesport app plus Rumble Boxing, PureBarre, StretchLab, Cyclebar, and Club Pilates, their five Xponential+ fitness titles. Lastly, Owlchemy Labs is bringing over Vacation Simulator and Job Simulator. Owlchemy Labs is also creating a new game exclusively for Android XR, Inside [JOB], which is designed as an onboarding experience onto the new platform.If you’re planning on creating and/or porting your existing games and apps to Android XR, keep on reading! Why developers are creating for Android XR and choosing UnityExploring a new platform can be both an exciting and challenging endeavor. When we asked developers why they chose Unity for their Android XR development, they commented on Unity’s robust multiplatform support, integration with emerging XR standards like OpenXR, and developer-friendly resources like sample projects and templates.Phillip Johnson, lead platform engineer at Owlchemy Labs, explains his appreciation of Unity’s support for Android XR: “Unity's strength lies in its multi-platform support, making it a top choice for game developers. Android XR support is particularly easy due to Unity's existing Android compatibility and the flexibility of the Android XR framework. This efficiency allows developers to focus on improving gameplay and user experience.”For Resolution Games, porting their hit game Demeo to Android XR wasn’t just about expanding to a new audience – it was an opportunity to modernize the game for all platforms. Petter Nygren, tech lead for Demeo, shares that, “Android XR requires a modernization of the game that also benefits all the platforms and the game as a whole.”As experienced XR developers, the transition aligns with their ethos of embracing new devices. As Nygren explains, “We’re right in the middle of XR development. Any new platform is a great step forward. Android XR is the next step for us.” Nygren credits Unity for making the process smooth, especially due to features like OpenXR input handling and Universal Render Pipeline (URP) integrations, saying “We would not have been able to create the same product without Unity as the engine.”Porting to Android XRWhile it makes sense to bring your game to a new platform – whether to reach a wider audience, meet players where they’re already gaming, or be an early option on a new headset – porting an existing game to a new platform can require copious amounts of time and labor to get it to fit new platform specifications, especially if you're developing natively for each one. Using a tool like Unity, which supports more than 20 platforms including Meta Quest, visionOS, and PlayStation VR2, can streamline this process.Daniel Kharlas, TRIPP’s director of Product & Technology Operations, credits Unity for its proactive communication with developers. “Unity has been very clear in their direction – from embracing URP, OpenXR, and XR Interaction Toolkit to emphasizing standards for XR hands,” he says. “All of these decisions made it easier for us to adapt quickly, especially moving into Android XR. Unity and Google’s partnership, combined with these choices, really shine here.”Advice for getting started now, without hardwareJust because there’s limited availability of development hardware doesn’t mean you can’t get started with Android XR today. We talked to our developers about what challenges they faced and some tactical advice for how to get started.For both Resolution Games and TRIPP, a specific challenge was making the switch to URP. Nygren from Resolution Games explains that, “It’s important to maintain the original look of the game, and that has been quite challenging in the update… It’s very hard to sort of replicate the look of the built-in render pipeline with URP if you want to keep it one-to-one with the visuals. The game is quite big, and there’s a lot of assets and content. It was a lot of work to do the upgrade and retain the same look.”“Converting projects with custom shaders to URP was our most labor-intensive step when transitioning from Built-in Rendering to URP,” explains Kharlas from TRIPP. “If you have complex custom shaders – often used for unique art styles in VR – be prepared to invest the time needed to convert those to URP-supported shaders. In the long run, this will make subsequent ports, like to Android XR, much smoother.”Kharlas laid out clear steps for how to prepare for Android XR development, even without a headset in hand. First, developers must start by updating your projects to Unity 6 [or 6.1] and adopt OpenXR. Then, Kharlas gives the following recommendations:Use URP (Universal Render Pipeline) to ensure graphical compatibilityTransition to Vulkan for better performanceLeverage XR Hands packages since Android XR is hands-firstBoth Litesport and TRIPP found the VR and MR multiplayer templates and Android XR sample project invaluable to get started. “I’d recommend following Unity’s sample project setup for Android XR. Understanding how elements work together before you begin porting or creating your app accelerates your learning curve,” explains Ryan Turner, Software Lead at Litesport. For more information on converting to URP, check out our e-book, Introduction to the URP for advanced creators – which has been newly updated for Unity 6. You can also access our ebook Create popular shaders and visual effects with the Universal Render Pipeline to learn more about shaders. For those looking to get started with our VR multiplayer template, watch our video tutorial:New capabilities in Unity 6Back in October 2024, Unity 6 was released with Android XR support being made available beginning on Unity 6 and onward. Therefore, those creating for Android XR must upgrade your projects to Unity 6 or newer.Luckily, representatives of all studios are enthusiastic about their Unity 6 experiences thus far.For Litesport, this meant skipping two versions up to Unity 6, which is necessary for Android XR support: “We were on Unity 2021, and so we upgraded to Unity 6 before we started the port, and that was critical... We have a complicated app with a whole bunch of stuff in it… and the upgrade's been awesome" explained Turner.When asked about Unity 6, Nygren from Resolution Games explained: “Unity 6 is quite similar to previous versions, making migration relatively easy. It functions as expected, which is great. The only Unity 6-specific feature we used for the Demeo port was Adaptive Probe Volumes, the new light probe system. This system was especially appreciated by our lighting artist, who found it to be an improvement over the previous system.”What’s new in Unity 6.1 and Android XR Pre-Release packageWe recently launched our first update release to Unity 6: Unity 6.1. For XR developers building in Unity 6.1 (released last week), you can now streamline the build process with the ability to create multiple build configurations and leverage support for Shader Graph with URP Application Spacewarp. We’ve already been working with Litesport and TRIPP to validate our tools on Android XR through our production verification initiative that ensures our latest platforms are tested using real productions.We also released our Android XR Pre-Release package, which brings several exciting features and optimizations: Dynamic Refresh Rate to optimize performance and power consumption based on your XR application’s current needs; Multi-View Per View Viewports support for Vulkan; visibility mesh occlusion to enhance GPU performance for post-processing effects; hand mesh functionality that enables hand visualization and occlusion; and updates to the Unity MR Template, including occlusion and persistent anchors.Takeaways: Upgrade to Unity 6 and begin todayAs these four studios demonstrate, Android XR development with Unity offers exciting opportunities paired with surprisingly smooth workflows. Whether you’re building new apps or migrating existing ones, here are key takeaways:Upgrade to Unity 6 and adopt OpenXR: These two steps are required for creating your Android XR project. Additionally, use Vulkan as your rendering API to significantly reduce GPU overhead while maintaining graphics quality.Start now, even without hardware: Leverage Unity’s latest tools, templates, and documentation to help you get started.To stay updated on Unity’s latest Android XR news and developments, be sure to bookmark the #AndroidXR tag. For everything XR, visit Unity’s XR development homepage to explore all the tools and resources we have to offer.]]></description><link>https://unity.com/blog/porting-apps-games-over-android-xr-unity-6</link><guid isPermaLink="true">https://unity.com/blog/porting-apps-games-over-android-xr-unity-6</guid><pubDate>Tue, 29 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 6.1, a Supported Update release, is now available]]></title><description><![CDATA[We're excited to announce the release of Unity 6.1, our first Update release in the Unity 6 family. This release continues our commitment to delivering a stable, performant engine while expanding platform reach and adding new capabilities to help you create exceptional games and experiences.How Unity 6 releases are supportedWith Unity 6, we have changed our release model to ensure consistent quality and stability across every version, and make it easier for you to choose the right one for your productions. The Unity 6 family is designed to be stable and supported over an extended period, minimizing the cost and risk to upgrade – while improving on device performance so you can continue providing the best player experience possible.While we will continue to provide Long Term Support (LTS) versions, we are introducing Update releases (e.g., Unity 6.1) so that we can deliver new functionality and platform support more quickly. Unity 6.1 and all Update releases undergo the same rigorous quality assurance and stability testing as our LTS releases. Update releases are production-ready and fully supported, unlike previous Tech Stream releases, which were primarily for early testing of new features.
Here’s how it works:Long Term Support releases (LTS)Unity 6.0 LTS, which released October 2024, is supported with two-year LTS, with an additional year of support for Unity Enterprise and Unity Industry users.Unity 6.3 will be released as an LTS version later this year. Our goal is to release an LTS version annually, providing a stable foundation for your projects.Recommended for: Live service games and creators who are about to lock in production on a specific version of Unity.Update releases (Supported)As an Update release, Unity 6.1 receives the same level of support as an LTS (including bug fixes and critical platform updates) until the next release is published. When Unity 6.2 is released, it will become the only Supported version. We aim to release multiple Update releases each year.Being able to confidently upgrade to the latest Update means you can always keep your productions on the most current release without sacrificing stability or performance. Recommended for: New and mid-cycle productions, and developers looking for the latest features and supported platforms. Update releases are fully production-ready and the preferred choice for beginning new projects, as they contain the latest features, platform support, and performance improvements.By supporting both LTS and Update releases, our goal is to give you maximum flexibility in how you approach development and live productions.What's new in Unity 6.1Unity 6.1 builds on the stability and performance shipped in Unity 6.0 LTS to enable you to deliver to more platforms, with better graphics, more efficiently. Here are some highlights available in this Update release:
Get the best performance on any deviceUnity 6.1 offers significant performance optimizations to help your games run smoothly across a wide range of hardware:Deferred+ - Build richer worlds with the Universal Render Pipeline’s (URP) new deferred rendering path, which accelerates GPU performance using advanced Cluster-based light culling for more lights, with support for GPU Resident Drawer for more objects.Variable Rate Shading - Improve GPU performance with minimal impact to visuals. Set the shading rate of custom passes within URP/HDRP, and generate Shading Rate Images (SRIs) from textures and shaders.Get access to powerful workflowsStreamline your development process with tools to deliver higher quality games more efficiently:Project Auditor for static analysis - Analyze scripts, assets, project settings, and builds. Learn how to resolve issues and optimize the quality and performance of your game.Build Automation - Accelerate iteration cycles with cloud builds, with Build Automation now integrated directly into the Editor. Reach the widest audience of players globallyCreate for the latest supported platforms and devices to maximize your player reach:Large screens and foldables - Access enhanced support for large screens and foldables with the latest Android APIsUnity for Web - Run your Unity games anywhere the web exists, including mobile browsers. Experiment with the latest WebGPU graphics API integration and unlock compute acceleration for web browsersInstant Games on Facebook and Messenger - Streamline building, optimizing, and uploading instant games to Facebook and MessengerAndroid XR and Meta Quest - Save time and streamline the build process with the ability to create multiple build configurations for release and development builds including new support for Shader Graph with URP Application SpacewarpPC and console - Improve CPU performance, PSO caching, and ray tracing with enhanced DirectX 12 supportA continued focus on qualityUnity 6.1 features enhanced stability and performance designed to give you confidence in your development process. Easier upgrades between update releasesUpgrade your project to the latest update release with minimal disruption. With the Unity 6 generation, we've changed how we release the Unity Engine so that we can keep improving performance and stability, while making it easier and less disruptive for you to upgrade.Update releases undergo a minimum of two months of rigorous regression testing. New features and the upgrade process are tested in production with real games to ensure stability and minimize workflow disruption.Production VerifiedUnity 6 releases are tested and validated in real production environments with studios building games across different genres and platforms. These teams are using the latest versions of Unity, and, in some projects, we're acting as co-developers to directly embed our engineers in their production teams.This Production Verification approach allows us to:Test features in complex, real-world scenariosIdentify issues that only emerge at production scaleRefine tools based on direct feedback from game developersEnsure stability in diverse development environmentsBy working alongside developers in this way, we can deliver tools that perform reliably in the real world, not just in isolated test environments.For example, Survival Kids represents the first time Unity has designed and developed a game end-to-end in collaboration with a publisher partner, KONAMI, directly enabling us to improve the performance and stability of the Engine. We have also partnered with Black Salt Games and Google, learning about game services and implementing optimizations through porting DREDGE to Android. We are working with 10 Chambers to validate Engine graphics improvements in their upcoming co-op FPS heist game Den of Wolves, and with Litesport and TRIPP to validate readiness of the all-new Android XR platform.The insights gained through our Production Verification program have directly influenced many of the improvements in our latest Update release.Download Unity 6.1 todayUnity 6.1 represents our ongoing focus on stability, performance, and platform reach to ensure Unity remains the most versatile and reliable engine for game development. Whether you're creating mobile games, console titles, or XR experiences, Unity 6.1 gives you the tools to bring your creative vision to life and reach the widest possible audience.We encourage you to download Unity 6.1 and take advantage of these performance improvements, workflow enhancements, and expanded platform support. Check out the Unity 6.1 release notes for a comprehensive list of features and the Unity Manual for details on how to use them. Tune into our What’s new in Unity 6.1 livestream today, where our teams will dive deeper into the updates. Your feedback continues to shape our direction, so be sure to join the community on Unity Discussions for a follow-up Q&A after the livestream. You can also share your feedback directly with our product team through the Unity Roadmap.]]></description><link>https://unity.com/blog/unity-6-1-is-now-available</link><guid isPermaLink="true">https://unity.com/blog/unity-6-1-is-now-available</guid><pubDate>Thu, 24 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[DirectX 12 improvements in Unity 6]]></title><description><![CDATA[Greetings from the Unity Graphics team!In this post, we will cover the latest improvements to the functionality and performance of the DirectX 12 (DX12) graphics backend. As of Unity 6.1, DirectX 12 is now set as the default graphics API for new projects.DX12 provides a modern, lower level and thinner abstraction for graphics acceleration. It was designed to better utilize multi core CPUs, by allowing applications to efficiently multi-thread the recording and submission of graphics commands to the GPU.We also recommend you watch the latest Unite Graphics Performance session, where we cover some of the latest improvements to DX12.Accelerate CPU performance with Split Graphics JobsThe new Split Jobs threading mode for DX12 improves on the older “Native Jobs” threading mode, by reducing synchronization between the main thread and graphics jobs thread.This is especially beneficial for CPU-bound games, which render large and complex environments, submitting many draw calls.As of Unity 6, Split Graphics Jobs are also supported in the Unity Editor for DX12, to improve the Scene and Game View rendering performance. You can now toggle Graphics Jobs from the Editor’s “Preferences” -> “Job Settings” panel.NOTE: DX12 multithreading comes with additional graphics memory cost, due to the allocation of additional resources per thread. This imposes a tradeoff between CPU performance and memory usage, and can increase memory usage compared to the single-threaded DX11.Beyond CPU performance, DX12 exposes the latest GPU capabilities to game developers, unlocking new ways to improve both fidelity and performance.Prevent rendering stutters with PSO TracingWith DX12, we can explicitly state the needed graphics states well ahead of rendering time, by creating and caching Pipeline State Objects (PSOs). This workflow eliminates application stutters/hitches, resulting in smoother rendering and game play.To enable this, Unity 6 introduces support for the new GraphicsStateCollection API. In the below example, we are using the API to precook PSOs before loading the scene. This results in a stutter-less flythrough of the Garden demo.For more information on PSO tracing, check the official Unity Discussions post.Balance shading performance and quality with Variable Rate ShadingDX12 also introduces support for Variable Rate Shading (VRS), to control the shading rate of pixel shaders and draw calls. Using the new VRS API in Unity 6.1, we can generate a shading rate image (SRI) from texture, or procedurally using shaders. Once created, we can apply the SRI using the CommandBuffer API, or using Scriptable Render Passes.In the example below, we are applying a lower shading rate to screen areas affected by motion blur. This reduces the pixel shading overhead, without noticeable degradation to visual fidelity.To learn more about Variable Rate Shading, check the official Unity Discussions post.
Improve GPU utilization with Async ComputeAnother capability introduced by DX12 is Asynchronous Compute dispatch. This allows to overlap Compute Shader execution with heavy rasterization workloads, to improve GPU parallelism.. Raster-heavy passes (such as Shadowmaps) are often bound by geometry processing, and may not fully utilize the GPUs shader cores. By dispatching compute kernels asynchronously, we can increase GPU utilization and reduce frame times.For more information on DX12 exclusive features, please refer to the official documentation.Push fidelity to the max with DirectX Ray TracingUnity’s High Definition Render Pipeline (HDRP) utilizes DirectX 12 Raytracing (DXR), to achieve unparalleled visual fidelity and realism. This is demonstrated by the “Enemies” real time demo, which uses HDRP and DXR to achieve stunning visuals.Unity 6 provides production-ready support for Ray Tracing, along with DXR 1.1 feature level compatibility. This brings many improvements to ray tracing functionality and performance.Solid Angle Culling allows to improve ray tracing performance, by discarding objects that are too small or distant. You can enable angle culling via the HDRP ray tracing setting (Culling Mode), to significantly reduce CPU processing time
Additional improvements to DX12 Ray Tracing include:Inline Ray Tracing in ShadersRay Tracing Acceleration Structure Build FlagsIndirect Ray Tracing DispatchIndirect Ray Tracing InstancingUnity 6 also reduces memory usage for DX12 Ray Tracing via:BLAS Compaction reduces the memory usage of static meshes.Custom GPU memory allocator for small BLASes reduces the memory usage of small meshes and details.MinimizeMemory flag can be set per MeshRenderer, to further reduce memory usage.Reduce memory bandwidth usage with DirectX12 Render PassWith the introduction of Windows-on-ARM support, DX12 also improves mobile (tile-based) GPU efficiency, via the new Render Pass API.The DX12 Render Pass is utilized by the Render Graph system in Unity 6, which automatically tracks and merges compatible render passes. In the example below, Render Graph is able to merge the geometry render passes, and load the GBuffer textures directly from on-chip tile memory.
This can significantly reduce bandwidth and energy usage, along with thermals, allowing mobile devices to run for longer and at a stable framerate. To learn more about on-tile rendering in URP, see the Render Graph documentation. Accelerate Neural Network Inference with DirectMLIn addition to graphics improvements, DX12 can also improve the performance of Neural Network inference through the Sentis API. When using DX12 and the Sentis GPU backend, we observe up to 50% reduction in inference time when executing larger Convolutional Neural Networks.To learn more about DX12 acceleration for Sentis, check the official Unity Discussions post.
Platform supportDirectX 12 is supported on modern Windows platforms. Please follow these instructions for checking which DirectX version is supported by your PC. You can also refer to Wikipedia for per-GPU information on DirectX 12 and feature level support:NVIDIA: https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_unitsAMD: https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_unitsIntel: https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_unitsDirectX 12 may not be recommended on significantly old GPU models and outdated driver versions. If you are targeting legacy Windows devices, we recommend you still target DirectX 11 or keep it as a fallback API.Please give these latest DX12 improvements a try, and let us know what you think!You can follow our progress via the public roadmap. If you cannot find the feature you are looking for, feel free to submit a feature request, or contact the team directly in this thread or the graphics discussion forum.]]></description><link>https://unity.com/blog/directx-12-improvements-in-unity-6</link><guid isPermaLink="true">https://unity.com/blog/directx-12-improvements-in-unity-6</guid><pubDate>Wed, 16 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[From niche to norm: The evolution of the gamer identity]]></title><description><![CDATA[In a recent webinar, "Playing to Win with Cross-Media Plans and In-Game Advertising," hosted by DISQO, Unity joined Zynga to discuss the evolving player and in-game advertising landscape and one thing became clear— with mobile gaming rising across demographics (69%) versus other platforms such as console (41%), the term, “gamer” is broadening beyond an otherwise specific definition. The traditional definition of a "gamer" no longer applies.* The stereotype of someone glued to a console simply doesn’t reflect today’s reality.In 2025, more than half of the U.S. population (57%) will play games across consoles, PCs, and mobile. Yet, despite gaming’s massive reach, only 23% of players identify as a "gamer".** The disconnect between the widespread activity of playing games and self-identification shows how gaming has expanded far beyond older labels. This transformation has largely been driven by a critical factor: the ubiquity of smartphones and the accessibility of mobile games.Mobile gaming is everywhere—And it’s redefining the gaming audienceSmartphones have made gaming more accessible than ever, pushing the average player age from 29 in 2004 to 36 in 2024. Now, women outpace men in mobile gaming (73% vs. 65%), and players span every generation, from Gen Z (61%) to Boomers (67%).*Think about it - the millennial solving Wordle every morning, a grandma crushing Candy while watching TV, or a Gen X professional playing Solitaire during their commute. And yet, despite the diverse audience and massive reach, only Gen Z is likely to self-identify as a “gamer”. **As Ari Brandt best put it in the webinar: “The term gamer evolved out of a legacy perception of who played console games. But today, gaming is everywhere and everyone, with mobile leading the charge. The growth of mobile gaming and the wide variety of genres available on mobile is why this audience is so diverse....Most people who play mobile games don’t call themselves ‘gamers,’ and neither should brand marketers.”The real opportunity: High-value consumers who playFor advertisers, mobile games are prime real estate, offering unmatched engagement, purchasing power, and loyalty. Unlike passive scrolling on social media or playing the TV in the background, when audiences play mobile games they are fully engaged with their screens making it one of the most valuable ad environments for brands.And these audiences aren’t just engaged, they also spend.54% of Gen Z and 52% of Millennials pay for gaming experiences.*39% of people who play mobile games have made a purchase after seeing an in-game ad (53% among Gen Z).*58% of Gen Z and 56% of Millennials are more likely to consider a brand that advertises in their favorite games.*To tap into these audiences effectively, advertisers need to integrate ads seamlessly into the gaming experience. The best-performing campaigns meet players where they are, using formats designed to enhance engagement rather than disrupt it:Rewarded ads: Players opt in, brands get attention, and engagement soars. 76% of players prefer them over mandatory ads.***Custom integrations: Well-designed, native ad experiences feel like an organic part of the game.Interstitial ads: When placed strategically, these full-screen moments grab attention without breaking immersion.For advertisers, this is the real opportunity to reach a massive, engaged audience across demographics, at scale, with ad formats that drive engagement. Leading brands aren’t waiting—they’re already integrating mobile gaming into their media mix and building strategies that meet players where they are.The "gamer" identity is expanding—It’s time to think biggerGaming isn’t a niche and the “gamer” identity is no longer one-size-fits-all. The label is shifting, and the brands that still think of gaming as a subculture are missing out on one of the most valuable, scalable advertising opportunities available today.We focused on mobile gaming today, but gaming happens across mobile, console, and PC. Channels like CTV and out-of-home advertising offer additional touchpoints for reaching players beyond the game itself. With more ways than ever to connect with high-value, engaged consumers, it’s no longer about reach, it’s about meeting audiences in an environment where they’re paying attention, taking action, and making purchases.As Zynga’s Marian Thomas put it: “Gaming isn’t passive—it’s interactive. It’s where attention and engagement thrive.” Brands that embrace this shift will win.The takeaway? The future of gaming and advertising is bigger and more inclusive than any one label. The smartest brands see mobile gaming for what it truly is - a high-engagement, high-impact media channel with engaged users that belongs at the center of modern media strategies.Learn more about reaching your audience with Unity Programmatic Solutions and how Unity helps brands understand the performance of their in-game advertising with DISQO.* DISQO Report: In-game advertising 2025** eMarketer, "US Gamers by Generation 2025"*** eMarketer, US Consumers Appreciate In-Game Ads]]></description><link>https://unity.com/blog/niche-to-norm-evolution-gamer-identity</link><guid isPermaLink="true">https://unity.com/blog/niche-to-norm-evolution-gamer-identity</guid><pubDate>Wed, 16 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: March 2025 in review]]></title><description><![CDATA[This March was packed — Steam Next Fest, the Steam Spring Sale, GDC, and more.  Ice-Pick Lodge released a prologue for the much anticipated Pathologic 3. Plus, a new Rain World DLC from the Videocult and Akupara folks was released - The Watcher.IGF Awards
Huge congrats to all the IGF finalists, especially the games made with Unity that dominated the awards this year — including Consume Me, which took home three wins! Fresh off their Audience Award win at the IGF Awards, The WereCleaner team joined us on stream. Check it out:Made with Unity Steam Curator Page
Once again we sent out a clarion call for Unity staff to share which of your games they've been playing this past month. Be sure to see them all on our Steam Curator Page here.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in March 2025, either into early access or full release. Add to the list by sharing any that you think we missed.ActionLIZARDS MUST DIE 2, the Bratans, Smola Game Studio (March 7)METAL SUITS: Counter-attack, Eggtart Inc (February 13)Bullet HeavenRogue: Genesia, Ouadi Huard (March 7)Cards, dice, and deckbuildersKnights in Tight Spaces, Ground Shatter (March 4)Dice Eater: A Supernatural Mystery Card Game, Team Tetrapod (March 11)Kingdom of Cards, Rubber Duck Games (March 24 – early access)DEMONS, Andrew Fender, Alastair Headden (March 25 – early access)Bramble Royale: A Meteorfall Story, Slothwerks (March 26)Casual, rhythm, and partyBao Bao's Cozy Laundromat, Destroyer Doggo (March 6)Spilled!, Lente (March 26)City and colony builderHEXAROMA: Village Builder, Almost a Game Company (March 10)Time to Morp, Team HalfBeard (March 6)Terraformers, Asteroid Lab (March 9)KAISERPUNK, Overseer Games (March 21)Edge Islands, LS Games (March 24)ComedyWhile Waiting, Optillusion (February 5)Experimental or surrealistENA: Dream BBQ, ENA Team (March 27)FPSCheaters Cheetah, Acmore Games (March 10)Arken Age VitruviusVR (January 16)HorrorCentum, Hack The Publisher (March 11)Moonbase Lambda, Thunderfox Studio (March 6)Lost Lullabies: The Orphanage Chronicles, Pugsy Studios (March 7 – early access)The Children of Clay, Balazs Ronyai (March 7)ORDER 13, Cybernetic Walrus (March 10)Management and automationTwo Point Museum, Two Point Studios (March 4)Corner Kitchen Fast Food Simulator, Purple Heads Games (March 4)MetroidvaniaOirbo, ImaginationOverflow (February 11 – early access)SteamDolls - Order Of Chaos, The Shady Gentlemen (February 11 – early access)Narrative and mysteryExpelled!, inkle Ltd (March 12)Do No Harm, Darts Games (March 6)The Darkest Files, Paintbucket Games (March 25)YOUR HOUSE, PATRONES & ESCONDITES (March 27)PlatformerBauhaus Bonk, Spoonful Games (February 6)JUMP KING QUEST, Nexile (February 12 – early access)Puzzle adventureSpace Sprouts, Schleuder Games (March 31)Slender Threads, Blyts (February 7)Roguelike/lite33 Immortals, Thunder Lotus (March 18 – early access)Grimoire Groves, Stardust (March 4)Reignbreaker, Studio Fizbin (March 18)Nordhold, StunForge (March 25)RPGEverhood 2, Chris Nordgren, Jordi Roca (March 4)AI LIMIT, Sense Games (March 27)Suikoden I&II HD Remaster Gate Rune and Dunan Unification Wars, KONAMI (March 6)Song of Rats, Tesseract Games (March 10)FATE: Reawakened, gamigo US Inc., Tableflip Entertainment AB (March 12)Geo Mythica, Guin Entertainment, LLC (March 20)SandboxUrban Jungle, Kylyk Games (March 21)ANEURISM IV, Vellocet (March 11)SimulationSchedule I, TVGS (March 24 – early access)Hope's Farm 2, Green Sauce Games (March 26)Sports and drivingSledders, Hanki Games (March 20)Turbo Takedown, Hanging Draw (March 3)StrategyCataclismo, Digital Sun (March 20)The Deadly Path, Owlskip Enterprises (March 25)Grit and Valor - 1949, Milky Tea Studios (March 26)Legend of Heroes: Three Kingdoms, Free Wing (March 26 – early access)SurvivalAloft, Astrolabe Interactive Inc. (January 15 – early access)That’s a wrap for March 2025. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-march-2025-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-march-2025-releases</guid><pubDate>Tue, 01 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Investor Insights on GDC and Women in Game Investment: A Chat with Playcap]]></title><description><![CDATA[At this year’s GDC, we had an awesome event with PlayCap, bringing together some incredible minds in gaming investment. I had the chance to sit down with PlayCap’s founder, Bibbi Wikman, for an insightful conversation about her mission to get more women investing in the gaming industry. In this interview, Bibbi shares her vision for the future of gaming and why diversity in investment is more important than ever.To learn more about PlayCap and their mission to empower women in gaming investments, visit PlayCap.gg!Take a look!Could you start by telling us about Playcap’s mission and what inspired its creation?The mission behind PlayCap is to bring more women from the games industry into investing within the same industry. I’m part of a women investor network in tech, and that’s partly where I drew my inspiration from since I realized this was missing in the games industry. Far fewer women are investing in games, often due to a lack of knowledge, access to investment opportunities, and support. That’s what I wanted PlayCap to provide as a group, bringing together women who are already investing with those who want to start. Women’s networks often focus solely on investing in women-led companies, but I wanted to take a different approach with PlayCap. Women should have the freedom to invest in whatever excites them, standing on equal footing with male angel investors.Why is it crucial to increase the number of women involved in game investments, and how does that influence the types of projects that get funded?It’s not just important, it’s smart business. Women make up 50% of players, so building games and game tech with diversity in mind isn’t just ethical, it’s strategic. We already know that diverse teams outperform, and the same logic applies to investors. A more diverse investor base leads to stronger, well-rounded decision-making, especially in angel investments, where backing a company goes beyond capital, also providing expertise and guidance. With more women at the table, we’ll not only see an increase in funding for women-led companies but also better overall decisions that drive long-term success.Coming out of GDC, what trends or insights are you seeing that are shaping how studios are pitching their games or approaching development?When it comes to game pitches, more studios are leaning into early access as a core release strategy to generate revenue while continuing development and working together with a community on the development. Teams are staying lean, with temporary resource needs outsourced rather than hiring full-time. Expectations around funding have also evolved. We’re seeing investors step in at the pre-seed stage but with seed-stage expectations, meaning they want to see solid data and early traction.Were there any standout conversations at GDC that shifted your thinking on what makes a strong investment opportunity right now?AI was either a core component or planned to be part of nearly every game or product I saw. What’s shifting now is that it's no longer enough to say, "This game experience is built with AI." Instead, it’s about who is crafting games with the most compelling art style or player experience powered by AI, the kind that truly resonates with and attracts the audience.How do you see recent advancements — such as AI tools, productivity platforms, or emerging genres — influencing the kinds of studios Playcap is excited to back?We’re definitely excited to back companies creating tools or platforms that support the industry or players in innovative ways. Genres can be a bit trickier when it comes to equity investments, but they’re something we’ll keep in mind as we explore project investments in the future.What criteria does Playcap look for when deciding to invest in a game studio or project? Is a prototype essential, or are there other key indicators you prioritize?Team and business opportunity is the most important factor at the stage we invest. Of course, early traction can make a decision easier.What makes a pitch truly stand out to Playcap’s network, particularly in this challenging funding environment?I’m personally excited by new business ideas driven by small, agile teams that show fast progress and a clear timeline. Just as important is having a team that’s friendly and easy to communicate with. After all, this is a long-term partnership.For developers facing delays in funding rounds, what practical steps can they take to stay stable and keep momentum going?Keep your investors in the loop. Regularly update them, meet them at conferences, and show consistent progress. Focus on any area where you can generate positive numbers that demonstrate traction.How can small teams stay efficient and minimize burn rate without compromising creative ambitions?Embrace the tools available today. Showing that you're not afraid to leverage them and using them to enhance your business and boost efficiency says more than 20+ years of industry experience.Are there specific tools, strategies, or development approaches you’d recommend to studios looking to do more with less?It’s hard to generalize since we invest so broadly within the games industry, but here’s what I’d say: stay lean, recognize the incredible women in the industry, and consider bringing them on as part of your team or as advisors.Keep burn rates low, stay creative, and really understand what it takes to run a startup — not just to build a product. There’s a reason second-time founders are often the best to invest in. First-time startups tend to fail because the founders are passionate about creating the product but don’t fully grasp how to run a company or what to consider when bringing in investors.Choose your key investors wisely, and don’t hesitate to ask around about others’ experiences with them. It’s a long-term relationship that can, in some ways, be more challenging than a marriage.For more resources on indie game development, check out everything Unity has to offer at Unity's Indie Game Development Resources.
]]></description><link>https://unity.com/blog/playcap-gdc-2025-interview</link><guid isPermaLink="true">https://unity.com/blog/playcap-gdc-2025-interview</guid><pubDate>Fri, 28 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[GDC 2025 Recap: Trends, Engine Roadmap, & Celebrating Games]]></title><description><![CDATA[This year’s Game Developers Conference (GDC) was a fantastic time to connect with the community, go deeper into the technology, get your questions answered, and acknowledge the best games among the indie community. Let’s get into it, a recap of Unity at GDC 2025!Get the latest game development trends of 2025We kick off GDC week with the release of the 2025 Unity Gaming Report, our annual data-backed game development trends report. While it has been a difficult few years in our industry, developers have stayed resilient. This report draws on Unity’s own data, surveys of over 300 game developers, and insights from over 20 studios to identify five key trends across technological investments, multiplayer and platform development, and business strategy that show how game developers are facing these challenges head-on. Check it out here.New details on the Unity 6 roadmap and support planOne major highlight from the week was the Unity Engine roadmap talk, where we covered not only what’s ahead in Unity 6.1 coming in April, but also how the engineering teams are prioritizing investments in stability, platform reach, and performance. Adam Smith, VP of Product also shared a bit about Production Verification, which is how the team is using partnerships with real game studios to test tools in live productions before they’re delivered in future releases.There’s so much more, including how we’ll support Unity 6.0, as well as a sneak peek at what’s ahead in upcoming releases in 2025. Get all the details in this write-up which also includes the Unity Engine roadmap session video from GDCCongrats to Independent Game Festival award winnersThis year I had the pleasure to enjoy the Independent Game Festival (IGF) Awards in-person, to connect with the game developer community and celebrate the best of indie game development.Shout out to Despelote by Julián Cordero and Sebastian Valbuena for Excellence in Audio, The WereCleaner by Howlin' Hugs for the Audience Award, Tactical Breach Wizards by Suspicious Developments for Excellence in Design, Caves of Qud by Freehold Games for Excellence in Narrative, Hauntii by Moonloop Games for Excellence in Visual Art, and Consume Me by Jenny Jiao Hsia, AP Thomson, Jie En Lee, Violet W-P, Ken "coda" Snyder for taking home the Wings Awards, Nuovo Award, and the Seamus McNally Grand Prize!We live streamed and Unity’s CEO answered your questionsAll week long we were bringing the excitement of GDC to the global audience through Twitch and YouTube streams. We invited Hugo Cardoso of Code Monkey, Anton Gorodetsky of MY.GAMES, and Elizabeth Rose Astwood of Queensguard for a chat about the Game Trends Report, hosted an Independent Game Festival watch party, and had a blast during our first ever Game Developer Game Show.One of the bigger highlights was my sit down with Matt Bromberg, Unity CEO where he answered your most pressing questions. We discussed GDC, rebuilding trust with the community, the ever-changing games industry landscape, and so much more.Your questions answered during Office HoursAll week long the Unity development team has been answering your questions on Discord and Unity Discussions during our Office Hours. The teams have been covering topics including graphics, multiplayer, and performance to provide you the guidance of where we’re headed and provide tips on how to solve your technical woes. Take a browse over the discussions - and there’s still time to get your questions answered.Thank you for everythingAs demonstrated throughout GDC this week, Unity remains committed in its dedication to enhancing the stability and performance of the Engine. We want to ensure that as you develop your project on Unity you won’t have to compromise between embracing new features and maintaining a stable platform. Unity continues to empower developers to reach the widest audience across a diverse range of devices in the most efficient and high-performing way possible. We believe that you shouldn't have to choose between accessibility and quality—we strive to deliver both.On behalf of the entire Unity team, thank you for your invaluable feedback and ongoing support.Looking to keep the conversation going? Visit us on Unity Discussions where you can share your thoughts about all of the game industry news coming out of GDC.]]></description><link>https://unity.com/blog/gdc-2025-recap</link><guid isPermaLink="true">https://unity.com/blog/gdc-2025-recap</guid><pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[What’s next: A look at Unity’s 2025 roadmap]]></title><description><![CDATA[At this year’s Game Developers Conference (GDC), we shared an overview of the Unity Engine roadmap for 2025. We highlighted our commitment to making Unity more stable and production-tested for game development and live operation for all users. We also provided clarity on how Unity 6.0 will be supported, a preview of what’s coming in Unity 6.1, and a look ahead to what’s next.Catch up on the key points here, or watch the full session below for more details.Building for stability, reach, and performanceAs the nature of game development evolves, we’re making targeted improvements to ensure the Unity Editor experience is performant and stable and that your creative output can reach the widest possible device range across the most-supported platforms, with the best performance.Unity has always been about creating tools that enable you to bring your ideas to life and maximize your player reach – whether they’re on mobile, console, desktop, or the latest XR devices. Continued investment in these areas allows you to build the largest global audience of passionate players possible, while providing them with the widest variety of game genres and graphical styles.At the Unity Dev Summit at GDC, we heard from multiple game studios on how they are doing just that. Scopely shared how they used Unity to expand their mobile-first battle royale game Stumble Guys to new platforms, becoming one of the top F2P console games released in 2024. Metacore spoke about leveraging Unity to deliver player-first monetization, blending IAP and in-game ads to create a thriving free-to-play experience for their hit mobile game Merge Mansion. We heard from Kinetic Games about the core mechanics and AI-driven behavior system behind their popular multiplayer ghost-hunting game, Phasmophobia. The work we’re doing in 2025 will expand our platform reach and improve Engine performance and stability for games across genres and devices.Production Verification: Testing our technology in live productions
We’ve heard one piece of feedback from our community consistently: Developers need tools that are production-tested. It’s one thing to test features internally, but it’s another to validate them in live, real-world projects that handle production-scale demands. That’s why we’ve launched Production Verification, a new internal program where Unity works alongside developers to test our tools in real production environments.We’ve worked closely with studios building games across different genres and platforms to validate Unity 6 features in the field. These teams are using the latest versions of Unity, and in some projects, we’re acting as co-developers to directly embed our engineers in their production teams.For example, we are working with 10 Chambers to validate Engine graphics improvements in their upcoming co-op FPS heist game, Den of Wolves. Kinetic Games has helped us validate improvements in live operations tools – like Remote Config, Leaderboards, and Build Automation – in Phasmophobia. We’re also working closely with Litesport and TRIPP to validate readiness of new platforms like Android XR.Testing Unity in complex production environments allows us to identify performance bottlenecks, stability issues, and usability pain points that wouldn’t show up in isolated tests. Those findings directly influence what we deliver to you in Unity 6.0 and beyond, making the Engine more stable and reliable for all developers.How will Unity 6.0 be supported?While we look forward to delivering new, production-verified features with Unity 6.1, we also recognize the benefits that the Long Term Support (LTS) model has provided, especially for projects requiring extended stability. Unity 6.0 is supported with two-year LTS, starting from when it was released on October 17, 2024, with an additional year of support for Unity Enterprise and Unity Industry users. We will continue to apply fixes to Unity 6.0 to ensure you have a stable version you can rely on for a long time.For previous LTS versions, support will remain the same. Here’s a recap:Unity 2021 LTS: Currently supported for Unity Enterprise and Unity Industry customers through October 2025Unity 2022 LTS: Fully supported through May 2025. Unity Enterprise and Unity Industry customers receive an additional year of support.Unity 6.0: Fully supported through October 2026. Unity Enterprise and Unity Industry customers receive an additional year of support.Unity 6 marks a new era for Unity, combining the stability of LTS with the flexibility to deliver new features more frequently with Update releases.We’re also investing in improved compatibility between versions. Upgrading to the next Update release or LTS should now be easier and less time-consuming, helping you keep your tools up to date with fewer headaches.Shipping Unity 6.1 in April 2025Unity 6.1 builds on the stability and performance shipped in Unity 6.0 to enable you to deliver to more platforms, with better visuals, more efficiently. Here are some highlights coming in this next Update release:PerformanceDeferred+ - Build richer worlds with the Universal Render Pipeline’s (URP) new deferred rendering path that accelerates GPU performance using advanced Cluster-based light culling for more lights, and with support for GPU Resident Drawer for more objects.Variable Rate Shading - Improve GPU performance with minimal impact to visuals. Set the shading rate of custom passes within URP/HDRP, and generate Shading Rate Images (SRIs) from textures and shaders.Project Auditor for static analysis - Analyze scripts, assets, project settings and builds. Learn how to resolve issues and optimize the quality and performance of your game.PlatformsLarge screens and foldables - Access enhanced support for large screens and foldables with the latest Android APIsUnity Web - Run your Unity games anywhere the web exists, including mobile browsers. Experiment with the latest WebGPU graphics API integration and unlock compute acceleration for web browsersAndroid XR and Meta Quest - Save time and streamline the build process with the ability to create multiple build configurations for release and development buildsInstant Games on Facebook and Messenger - Streamline building, optimizing, and uploading instant games to Facebook and MessengerPC and console - Improve CPU performance, PSO caching, and ray tracing with enhanced DirectX 12 supportThese updates are powered by the insights we’ve gained from Production Verification. With each release, we’re iterating faster and delivering tools that perform better in real-world scenarios.Looking aheadUnity is built around a clear focus in 2025: providing you with a performant, optimized, and stable engine that helps you succeed on any platform. Whether you’re a solo developer or a large studio, the Unity Engine is designed to support the unique challenges of modern game development – whether that’s reaching a global audience, optimizing performance, operating a live service game, or shipping on tomorrow’s hardware.Here’s a small glimpse of what we’re working on bringing to you this year beyond Unity 6.1:AI assistance and asset generators - Deeper integration in the Unity Editor workflows to improve productivity, more advanced code generation, and the ability to automate repetitive tasksProject Center - Guided experimentation with reliable first-party and third-party tools, services, and features from the Unity ecosystem tailored to your visionSwappable physics backend - Simple switching of physics engines through Project SettingsBut we aren’t stopping there. We’re investing in several initiatives to update our Engine foundations with support for CoreCLR. We are modernizing Unity’s content pipeline, unlocking a step change in iteration time. We will also preview a new animation system with improved tools and workflows, including procedural and runtime rigging for all skeletal asset types, and a new, powerful hierarchical state machine built to handle thousands of states, blend graphs and transitions. We look forward to sharing more with you as we make progress on these initiatives in the future.We’re excited about this next chapter and can’t wait to see what you’ll create. As always, thank you for your feedback and collaboration – it’s critical to everything we do. Join the Unity Discussions forum to share your thoughts, ask questions, and stay connected.]]></description><link>https://unity.com/blog/unity-engine-2025-roadmap</link><guid isPermaLink="true">https://unity.com/blog/unity-engine-2025-roadmap</guid><pubDate>Wed, 19 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[10 tips for succeeding at GDC]]></title><description><![CDATA[Excitement is only one of a myriad emotions you might be feeling as you prepare for GDC. For students, it’s an incredible opportunity to learn, network, and make connections to grow your future careers. For professionals, it’s a return home to celebrate success, catch up with long-time friends, and add new skills to your tool belt.To help ease the stress of this large-scale gaming event, we want to provide some tips and tricks to help you navigate the chaos and at times overwhelming masses of GDC.Scheduling your entire day out at GDC might be a touch overzealous, however knowing what you want to accomplish at GDC can help you navigate the event. Make sure to check out the event schedule and filter by your pass type to see which sessions you want to attend. Even if you will only be attending the expo at GDC, look at the companies you want to connect with and see if they are hosting activities relevant to your interests. For example, you can check out the Unity schedule and register for portfolio reviews.Business cards are always helpful, whether they’re physical or digital. Make sure you have some easy way to exchange information so you can stay in touch with new contacts. You can also connect on social media. If you’re using LinkedIn, check out the scan feature on the LinkedIn mobile app for an easy way to connect. You may want to screenshot or download your LinkedIn QR code since cell service can get spotty with large crowds of people.When someone hands you a business card or gives you a digital connection, take notes of where you met, who they are, and what you talked about. It seems silly now, but trying to remember everything that happened over the week will be impossible once you return home. Taking notes will help refresh your memory and maintain connections. You can use this handy google form we made as a template.This one may seem obvious, but you will run into people working on technology that you may not be interested in or you may not understand. That’s ok, but actively listen to what they’re talking to you about and ask questions. You don’t have to know everything; the beauty of game dev is we’re all always learning.Whether you’re an artist or programmer, make sure you have a way to show off your portfolio. Have your Github updated, your Art Station or similar site locked down, and be ready to show it at a moment’s notice. Not everyone will be available to look at it, but being ready can help when opportunities knock. Also, if you’re given feedback, write it down and review it later.And don’t forget your LinkedIn – recruiters and industry members of all levels use LinkedIn as a digital resume and a way to stay connected with contacts. Make sure that your LinkedIn is updated with a professional photo, clear headline, links to your portfolio, and work experience. Need help on preparing your portfolio? Check out this Introduction to Portfolios tutorial on Unity Learn.Stranger danger is only true outside of a conference. Talk to those next to you while you’re waiting in line or at a mixer. Generally, people don’t talk to strangers because we’re all a little awkward (industry vet or not). But the point of GDC is to meet new people, so get out there!A great way to start a conversation is to stick out your hand and say “Hi! My name is _____.” Have two lines ready about who you are and what you’re looking for. For example, “I’m a student studying game dev at U.T. Austin, and I’m looking to learn more about the gaming industry because I hope to be a developer after graduation.”If a friend walks up to you or a stranger joins a conversation area, introduce them. Bringing others into the conversation eases the burden and removes the awkwardness of a person standing right next to you silently not sure how to interject. Either you’ve introduced a friend to their new friend or made one yourself – either way it’s a victory.The vast majority of what you’ll be doing at GDC is walking. Unless you’re extremely active in your day-to-day life, your time at GDC is very likely to be a bit of a workout! Remember to take regular breaks to rest and recover, and don’t forget to take time to eat!Large conferences are hectic and exhausting. Sometimes folks won’t have a lot of time to talk. Don’t take it personally, there’s a 95% chance they just have a lot to do and had to run away, or they were as stressed out as you were.The Moscone Center is huge, and it’s common for back to back sessions you want to attend to be in completely different buildings. Most of what you will be doing when not sitting in a session is walking around, and it's easy to become quickly dehydrated. While the Moscone center does have some water refill stations (usually near the bathrooms), they aren’t always near wherever you are. To combat this issue, bring a water bottle with you, hydrate regularly, and refill it whenever you come across a station.We look forward to seeing you at GDC!]]></description><link>https://unity.com/blog/games/10-tips-succeeding-at-gdc</link><guid isPermaLink="true">https://unity.com/blog/games/10-tips-succeeding-at-gdc</guid><pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unlocking Mobile In-App Potential: Q&A with Magnite]]></title><description><![CDATA[With mobile in-app advertising poised for significant growth in 2025,* staying ahead means embracing new opportunities while navigating evolving privacy and identity standards.We sat down with Evan Gehring, Head of DV+ Channel Partnerships at Magnite, who shared how his team is enhancing in-app supply and shaping the future of programmatic advertising through innovative solutions. Let’s dive right in.Can you tell us about yourself, your role at Magnite, and what you’re responsible for?
Evan Gehring: I lead our DV+ Channel Partnerships team here at Magnite. My team is responsible for managing our indirect supply partners. We work with tech companies like Unity that enhance inventory access through collaboration with direct publishers. We help to optimize their integrations on DV+, our supply-side platform (SSP) for all channels outside connected TV (CTV). That entails ensuring that the supply is enriched with all of the data demand-side platforms (DSPs) and buyers are looking for and curating their supply into our sold deals and packages.What tools does Magnite provide to help advertisers effectively engage users within mobile apps?
Gehring: At Magnite, we have incredibly strong partnerships with brand buyers, agencies, and holdcos, as well as a variety of offerings that help make our mobile app supply as valuable as possible to these partners. We support app-specific fields and signals within our requests and various formats within in-app environments, such as interstitials, native ads, and rewarded video. One of our largest value propositions to buyers is our omnichannel exchange, with premium supply partners across all screens and environments. We also have a wide variety of data and enrichment offerings that span across those environments, including in-app, to help our buyers reach their target audiences and drive outcomes across all the places their users consume media.Unity: Making mobile app inventory more valuable through enriched data and diverse ad formats is key to driving better results for everyone involved. At Unity, we count on SSPs like Magnite to connect publishers’ premium inventory with advertisers looking to reach engaged audiences. It’s all about working together to create the best possible outcomes on both sides.
How is Magnite working to facilitate more direct paths between buyers and sellers for mobile app supply?
Gehring: We’ve recently launched a Direct Placements program in order to help buyers better identify unique supply through channel partners —trusted facilitators of direct publisher connections— who have historically been labeled intermediaries, which signal resold supply. This works very well in a mobile app software development kit (SDK) environment where SDK providers have unique access to mobile app supply that we don’t see within existing direct seats today. In this program, we integrate this supply directly into our publisher partners’ seats on DV+ to provide greater transparency and control to app developers and allow them to capture the unique demand we provide via our Auction Packages and Curated Marketplaces.Unity: That makes sense. Direct supply paths surface unique inventory, while private marketplaces (PMPs) and programmatic guaranteed (PG) deals provide customized, premium access at scale. By combining both approaches, publishers gain transparency and control, while buyers get tailored solutions that meet their strategic goals. It’s a win-win. Speaking of transparency and control, that’s becoming even more critical in a world shifting away from cookies. How does Magnite perceive the shift towards first-party data and a cookieless world, and what identity solutions and opportunities does Magnite offer brands to adapt to these changes in programmatic advertising?
Gehring: At Magnite, we believe the future of user identity will involve several solutions that both buyers and sellers can use together. We’ve developed tools and features to support all the ways we think identity will be used moving forward. Our Magnite Access products help publishers utilize their own data, create audience groups based on behavior and interests, securely share data while protecting privacy, and support various alternative ID methods. By offering these options, we aim to enable better and more meaningful transactions between buyers and sellers in a world without cookies.Fill in the blank. “When it comes to mobile marketing, bet on ________.”
Gehring: Unique supply and demand paths, audience data enrichment, and Magnite’s suite of product offerings!Unity: Thank you for joining us and giving us your insight into the evolving world of mobile app advertising. We appreciate your time and look forward to sharing more industry perspectives!Want to learn more about Unity’s programmatic solutions? Click here.
* Source: eMarketer, Mobile Advertising 2024]]></description><link>https://unity.com/blog/unlocking-mobile-in-app-potential-magnite</link><guid isPermaLink="true">https://unity.com/blog/unlocking-mobile-in-app-potential-magnite</guid><pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Game Kitchen on 3 technical challenges making The Stone of Madness]]></title><description><![CDATA[Earlier this year, The Game Kitchen launched The Stone of Madness, a tactical RPG where players help five inmates escape from an inquisitorial prison. In this guest post, three devs from the studio share how they tackled rendering, UI, and testing challenges during development.We’re The Game Kitchen, and we recently released The Stone of Madness on PC and consoles. We want to share some of the most pressing challenges we faced during the development of our latest project, approaching them from a technical perspective with practical examples. In this collaborative article, our programming team breaks down key solutions we implemented in Unity to optimize both performance and development efficiency. First, Adrián de la Torre (graphics programmer) will explain how we designed and rendered the game's art pipeline to achieve its distinctive visual style. Next, Alberto Martín (UI programmer) will detail how we leveraged Noesis to streamline UI development, enhancing the workflow with UX improvements based on user feedback. Finally, Raúl Martón (gameplay programmer) will showcase how we externalized and automated tests for complex in-game actions on a server, ensuring that multiple corner cases were handled without disrupting integration.Making madness look good: A look at the custom render pipelineAdrián de la Torre, Graphics Programmer, The Game Kitchen
The Stone of Madness combines 2D visuals with 3D gameplay mechanics, which presents a unique technical challenge. While players see a 2D world, the game's underlying systems operate in three-dimensional space, creating a distinctive duality in its design.To address this challenge, our development team created a custom rendering pipeline that effectively bridges the gap between 3D gameplay information and 2D visual representation. This solution implements multiple rendering passes and specialized techniques to maintain visual consistency while preserving the intended gameplay depth, allowing for seamless translation of 3D elements into the game's distinctive 2D art style.In The Stone of Madness, there are two main scenarios that contribute to the rendering of a frame.The first scenario, which we call the Proxy Scenario, is comprised of geometric primitives that calculate the lighting of the final frame.The second scenario is the Canvas Scenario, which consists of sprites that match the Proxy geometry’s shape and position. The Canvas is arranged in layers to simulate 3D space and achieve proper Z-sorting with moving game elements.The following section details each step in our graphics pipeline for frame rendering.1. Cone of visionWhenever a cone of vision or game ability is enabled, it initiates the first step in the pipeline. We position a camera at the NPC’s point of view (PoV) to render the depth of proxies within its field of view (FoV).Then, in another render texture, the camera outputs a gradient of the distance from the player’s origin in the B channel, which is used for skill area effects.Using the NPC’s PoV render texture, the cone of vision camera renders a cone over the previous texture in the R and G channels with information about obstacles and distance.The final pass renders sound waves in the Alpha channel.This is the final texture created in this step, which will be used in the Canvas Camera step to render the scene’s sprites.2. Canvas Render ID CameraEach proxy in our project has an associated Render ID (a float value). The proxy and its related sprite share the same Render ID. In this step, we render the Render ID float value into a render texture.In the subsequent step, we use this texture to match the lighting information calculated in the proxy scenario with the sprites in the Canvas Scenario.3. LightingThe lighting in our game consists of:Baked lighting: Natural lights that remain permanently active, such as exterior lightingMixed lighting: Static lights in the scene that can be toggled on and off, such as candlesReal-time lighting: Light that moves throughout the scene and can be toggled on and off (we implemented this in only one instance, Alfredo’s oil lamp)Using the RenderID texture, we create a render texture containing the lighting information from the proxy scene.4. Canvas CameraAfter creating all render textures, a camera begins rendering the sprites with information about lighting, skill areas of effect, cones of vision, and noise waves.5. Post-processingColor grading, vignetting, and other effects are applied in a post-processing pass.6. UIFinally, the UI is overlaid.Madness in the HUD: Speeding up UI processesAlberto Martín, UI Programmer, The Game KitchenThe final release version of The Stone of Madness features over 50 user interfaces. The reason behind that number is that this game has a lot of data to show the user. Our UI work was very time consuming, especially with how small the team was at the start, and so we were continuously optimizing our processes to ensure we were achieving good results in as little time as possible.Our UI work spanned the whole project, so it was important that our UI/UX designers clearly understood all the features we needed to implement. To ensure that our game provided a good user experience and was fun to play, we were careful to keep an open line of communication between the programming and design teams.To create the best versions of all of our UI components, we needed to remove the silos between our technical teams and our creative/research teams so everyone was actively involved in the game’s development. Here’s how we approached this two-part workflow.Research and creative’s role in UI designOur UI/UX designers are responsible for defining how UI elements will look in the final game, and ensuring we deliver a satisfying user experience. With this in mind, they began by creating each element with minimal technical load and validating it with potential users. That process looked like this:Requisites: Understanding the player’s needs and creating a list of the game’s needs and user goalsInvestigation: Looking at other games to see how they handled similar problemsWireframes: Working on the schematics and the structure (no final art at this point)Mock-up: At this point, we mount the almost fully designed interface with previously created elements (buttons, scrolls, frames, etc.), allowing us to iterate without much effortPrototype: We build a prototype on Figma using our mock-up, simulating interactions with gamepads and keyboard/mouse to show how it will work in a real environment.User test: Using our previously created prototype, we initiate a user test, validating the needs and goals we identified in Step 1.Iteration phase: If the user test meets expectations, it’s passed on to technical part processes, make more iterations, or perform further testing if it’s convenient.
Technical UI implementationAs mentioned previously, the number of UI elements in The Stone of Madness is huge. Developing a UI engine is expensive, so we needed to use a framework that was easy to learn with decent tools and workflows. After evaluating a range of middleware, we choose Noesis GUI, which follows the Model-View-ViewModel (MVVM) pattern.We chose Noesis because it’s based on WPF (Windows Presentation Framework) and follows the MVVM model in a manner that we can reuse most documentation, bibliography, forum entries, and so on to troubleshoot the majority of issues. This framework has been around for a while – it’s now 18 years since its first release – and is familiar to a large number of UI devs, which gives our studio the option to hire from a comparatively larger talent pool to implement interfaces and tools for our projects. Another important thing about Noesis is that we can use the same tools from WPF.With XAML, our UI creative team was involved in layout work and polishing all the elements with minimal technical involvement. Thanks to the MVVM approach, our technical UI programmers could focus on functionality and provide support to the creative teams in certain areas when necessary.
Testing (or, how not to go mad creating a game with a systemic design)Raul Martón, Gameplay Programmer, Teku StudiosGameplay in The Stone of Madness is based on three fundamental pillars: Player skills, NPC AI, and scene interactions. Each of these three systems are fundamentally intertwined, which exponentially increases the number of situations the player needs to control – and the number of scenarios we need to test.As soon as we started the project, we realized that a traditional QA system was going to be insufficient. There were simply too many scenarios that depended on several pieces interacting with each other in a particular way, creating an uncontrolled situation. Moreover, these situations could well occur in a window of time that’s just too small for a QA team to test comfortably.To solve these problems we created a suite of automatic tests. The idea was that all the possible scenarios/situations that could occur to our development team in relation to a particular system, could be accounted for and automatically tested much more efficiently in a simulated game environment.To provide an example, one of The Stone of Madness’s lead characters, Amelia Exposito, has a pickpocket ability. While implementing this skill, we initiated a series of tests to ensure:The basic functioning of the skill was correct: When stealing from an NPC, the pickpocketing mini-game would open and the game would pause until it’s over.Less common situations are also covered: If you try to steal from an NPC while another NPC (like a guard) is watching you, or if the NPC is running, the action is impossible.Creating an integration testEach integration test we created required setup based on the following requirements:1. A scene specially prepared to create this particular situationTo test the pickpocket skill, we created a scene with two guards and one player. We positioned each character so they’re facing in the direction needed for the situation to be tested accurately (remember, the player can’t use pickpocket if they’re within the FoV of a guard).Additionally, the scene should only include the minimum components necessary to test the scenario, as extraneous elements can add noise to the measurement. This is why our example scene has no HUD, manual input system, sound effects, and so on.This step requires that the game structure is well compartmentalized, which can take some effort, but, once achieved, is well worth it! 😉2. A test code capable of forcing the situation to be testedMany of the situations we needed to test can be difficult and time consuming to create manually and need a code push to initiate.For example, if we want to create a test scenario to ensure our NPCs never step on mousetraps unless the NPC is moving, the chain of instructions would be:Launch the sceneWait one secondSpawn a mousetrap under the NPCWait another secondCommand the NPC to start walking in any directionThis part of the project is very sensitive to any changes during development (dependent on factors like changing game specs and various unexpected scenarios), so it’s critical that both the test code and resulting feedback are as clear as possible.There’s nothing worse than a test that fails without giving any clear information about what’s actually going wrong.3. A reliable way of knowing whether the scenario is working as intended, or whether the test has detected an error in logicAutomated testing still requires oversight. Increasing numbers of tests with greater specificity on what’s being tested can become difficult to monitor, or scenarios end up not being tested for long enough to be statistically significant. To get around these problems, we created custom tools.For example, some of our tests involved combined interactions between several NPCs in a scene. To monitor these cases properly, we created a system to log the different AI states that NPCs cycle through during the test.We also needed a good API that would give us visibility into the current game state (has an NPC been knocked unconscious? Has an NPC entered a routed state? How many times? Which player character has been captured? And so on).4. A system to be able to launch all these tests quickly:Unlike unit tests, automated tests must be conducted with the game running in real-time. This can make running these tests very slow.In these circumstances, we’re able to take advantage of the fact that our game does not use Unity’s standard updates system. Instead, all of our components use a Tick() function, which simulates Unity updates but launched in a controlled way by our game engine.This helped us achieve a couple of different goals with our tests:First, we could speed up their execution with a forcing function that runs several frames of code for every frame of the game.Second, because these tests are conducted in real-time, they’re very susceptible to variations caused by the frame rates on the computer running the testing scenario. By converting them to a controlled frame rate, we avoid this variance: If a test passes on one machine, it will pass on all machines, and, and vice versa.And this would be the result.How secure testing helps us avoid broken buildsWith the creation of this test suite, we also needed to implement a safeguard that would automatically interrupt the merge of a branch if it contained bugs. To ensure this, we create an automatic merge script that launches every time a change is committed to the main project branch.This script makes sure to launch all these tests and monitor their results. If any test fails, it returns with an error detection and interrupts the merge.With this system, we can avoid situations where a change in an apparently isolated system breaks other mechanics it interacts with.Thank you to The Game Kitchen for sharing this behind-the-scenes look at The Stone of Madness's development. Explore more Made With Unity games on our Steam Curator page and get more developer insights on Unity’s Resources page.]]></description><link>https://unity.com/blog/the-game-kitchen-stone-of-madness-3-technical-challenges</link><guid isPermaLink="true">https://unity.com/blog/the-game-kitchen-stone-of-madness-3-technical-challenges</guid><pubDate>Thu, 06 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to prevent creative fatigue in your ad campaigns]]></title><description><![CDATA[Creative fatigue can be a roadblock to maximizing campaign performance. As ads repeatedly appear before users, their engagement rates decline.Networks like ironSource Ads and Unity Ads offer advertisers the ability to run dozens of creatives per campaign - an opportunity that, when used strategically, can help prevent creative fatigue and keep your ads fresh and engaging. Let’s explore some actionable best practices to maintain creative performance throughout your campaigns.1. Use more creatives to drive better machine learningWhen it comes to combatting creative fatigue, variety is your closest ally. The more creatives you have, the more varied concepts your audience is exposed to. Diversity in your campaigns captures attention and delivers a fuller picture of your game, increasing engagement and interest over time. Diversity here refers not only to the concepts you utilize but also to the formats - use a variety of video, playables, and a mix of both in your campaigns to fight fatigue.Networks like Unity Ads and ironSource Ads have sophisticated machine learning models monitoring performance. Having a rich pool of creatives boosts their ability to determine which ads resonate the most with an audience. This process is critical to finding high-impact creatives and scaling their performance. By running multiple creatives, advertisers can more quickly identify what works for different kinds of users, enabling better segmentation on the model level.2. Optimize your creative rotation strategyTo avoid creative fatigue, it’s essential to be strategically rotating your creatives. This is not a one-size-fits-all process, but there are some general basic practices which can be leveraged depending on the stage of your game’s launch.For new or not-yet-live games, it’s recommended to start small and scale gradually. After launching your campaign, add new creatives 3 few days. When adding new creatives, ensure your previous creatives have achieved sufficient impressions to successfully complete the learning phase.For existing games, your campaigns should start with existing (pre-learned) creative sets that can be launched with up to 30 creatives. Add new creatives every 3 days to gradually reach 30-creatives. It’s important to keep your creatives in active "exploration" while reviewing performance to ensure every new addition gets the impressions required for a thorough learning phase.3. Refresh your best performing creatives with incremental modificationsRegularly refreshing and analyzing your creatives is vital to long-term success and avoiding creative fatigue. That means consistently uploading new creatives. But that doesn’t mean removing top performing creatives to make space for new ones. Rather, adjust your existing top performers with incremental modifications to keep your creatives fresh while still leveraging the creative concepts that are resonating.Some easy opportunities for optimization for your best-performing creatives are usually incremental adjustments like the duration, color scheme, theme, or even swapping in new characters or scenarios.Follow these tips to help ensure that your campaigns stay effective and continue to drive growth. Reach out to your account manager to learn more about how you can drive impact with your Unity campaigns.]]></description><link>https://unity.com/blog/how-to-prevent-creative-fatigue</link><guid isPermaLink="true">https://unity.com/blog/how-to-prevent-creative-fatigue</guid><pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: February 2025 in review]]></title><description><![CDATA[February was a busy month of games made with Unity, from the DICE Awards (thanks for the shout out Camouflaj) to many great releases and more. As always, Steam Next Fest contained more great demos than we could count, and this year, we put together some standout games here.Plus, we chatted with Gareth Damian Martin post the launch of Citizen Sleeper 2, be sure to check out our stream with them.Made with Unity Steam Curator Page
We asked folks at Unity to share which of your games they've been getting into this month. Definitely check out the list we put together on our Steam Curator Page here.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in February 2025, either into early access or full release. Add to the list by sharing any that you think we missed.ActionGrapples Galore, Zoteling (February 7)METAL SUITS: Counter-attack, Eggtart Inc (February 13)Bullet HeavenWhisker Squadron: Survivor, Flippfly LLC (February 20)Cards, dice, and deckbuildersDie in the Dungeon, ATICO (February 21 – early access)Casual, rhythm, and partyRift of the NecroDancer, Brace Yourself Games, Tic Toc Games (February 5)City and colony builderMicrotopia, Cordyceps Collective (February 18)Mini City: Mayhem, Rogue Duck Interactive, cukuto (February 17)ComedyWhile Waiting, Optillusion (February 5)FPSBOWLOUT, Sep Horsthuis, Quint Winter (January 7)Arken Age VitruviusVR (January 16)HorrorBlood Typers, Outer Brain Studios (February 20)Studio System : Guardian Angel, alreti circle (February 4)Management and automationMind over Magic, Sparkypants (February 12)Viking Chef: Feast Frenzy, Yew Rune Creations (February 3)Blood Bar Tycoon, Clever Trickster Studio (February 4)Astronomics, Numizmatic (February 10 – early access)Ale Abbey, Hammer & Ravens (February 18 – early access)MetroidvaniaOirbo, ImaginationOverflow (February 11 – early access)SteamDolls - Order Of Chaos, The Shady Gentlemen (February 11 – early access)Narrative and mysteryAfterlove EP, Pikselnesia (February 14)Urban Myth Dissolution Center, Hakababunko (February 12)Weirdo, CASCHA GAMES (February 14)PlatformerBauhaus Bonk, Spoonful Games (February 6)JUMP KING QUEST, Nexile (February 12 – early access)Puzzle adventureSpirit Swap: Lofi Beats to Match-3 To, Soft Not Weak, LLC (February 3)Slender Threads, Blyts (February 7)Roguelike/liteSWORN, Windwalk Games (February 6 – early access)Psionic Sentry : Infinite, Roy, 響雨互動娛樂, HowlingRain (February 2 – early access)Astral Throne, Zero Sun Games (February 7)RPGCabernet, Party for Introverts (February 20)Peripeteia, Ninth Exodus (February 21 – early access)Reality Break, Element Games, LLC (February 10)SimulationArctic Motel Simulator, One Slice of Pizza Games (February 11)Behind Glass: Aquarium Simulator, BitBros Inc (January 9)Skystead Ranch, ToastieLabs (January 17)Sports and drivingLonely Mountains: Snow Riders, Megagon Industries (January 21)Sports and racingHover REV Hispeed Burst, JKK_WORKS (February 5)StrategyDark Times, Gromov Studio (February 9)GIRLS' FRONTLINE 2: EXILIUM, SUNBORN Information Co., Ltd. (February 11)SurvivalAloft, Astrolabe Interactive Inc. (January 15 – early access)That’s a wrap for February 2025. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-february-2025-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-february-2025-releases</guid><pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why Unity is moving to 100% in-app bidding]]></title><description><![CDATA[2024 marked the start of a new era as in-app bidding took over mobile ad monetization, replacing decades-old “waterfall” mediation methods. Unity Ads, ironSource Ads, and LevelPlay joined the bidding revolution with a global, cross-functional team effort.As a result, advertisers gained more impressions, publishers streamlined operations, and gamers enjoyed better experiences with faster load times. Here’s why the shift to bidding matters for publishers and networks and what’s next in 2025 for Unity Ads and ironSource Ads bidding.How in-app bidding helps publishersIn-app bidding is a common-sense concept: let every network compete, let the highest bid win, and pay exactly that amount to the publisher. Yet for more than a decade, the industry stuck to the “waterfall” auction concept, in which prices start high and gradually lower until someone bids. Imagine starting at $100 and opening the auction to only the top three networks, if none of them agree to the price it then drops to $50 and a few more networks are added. This repeats up to a hundred times per ad impression. It’s time consuming, complex, and opaque.In-app bidding streamlines the process of finding the best price for each impression with a first price auction that resolves in seconds rather than minutes.In-app bidding enables ad networks to continue to benefit from the SDK while conducting auctions server-side. Here’s how it works:First, to authenticate the request as non-fraudulent, meditation requests a ‘token’ from each network SDK client-side.Each bidder is called in parallel by a server with strict timeouts to return a bid, along with the content they’d like to show if they win. After the winning bid is chosen in auction, the winners and losers are notified.Mediation loads the winning network’s ad into its SDK, ready to show to the user.Overall, processing is reduced and publishers get real-time transparency into each user’s true value. Networks can freely compete based on their best offers, ensuring publishers always get fair market value for premium users. As a result, publishers spend less time micromanaging complex auctions and more ad networks get a shot at winning, leading to increased competition and higher CPMs for publishers.How in-app bidding helps Unity ad networksThe benefits of in-app bidding aren't just for publishers. The Unity Ads and ironSource Ads networks have achieved significant improvements to the scale of app installs with in-app bidding. This is primarily for two reasons:Unity Ads and IronSource Ads networks get access to win all users on a level playing field. Before bidding, the publisher could set a limited number of price points in the auction and these could often be inconsistent across formats, geos, and even networks. Sometimes publishers would prioritize one network over others.Bidding improves the efficiency of the tech stack for machine learning. A more efficient ad serving process delivers cleaner data at lower cost to Unity’s models, which in turn enables today's increasingly complex, deep-learning models to deliver more accurate real-time decisions. This cycle helps Unity to drive advertiser performance, which lifts publisher performance with it.The move to in-app bidding and what’s nextIn 2024, Unity Ads completed the re-write of its entire ad serving stack to unlock the full potential of bidding for publishers. In conjunction, Unity LevelPlay mediation and ironSource Ads also made great strides towards 100% bidding. This required working with publishers and other top networks, collaborating effectively to drive growth for the industry at large.Unity Ads plans to move to 100% bidding in 2025, beginning with 100% bidding in some external mediations and an open Beta for Google AdMob and Ad Manager, now live as of February 4th. This will be followed by the retirement of the waterfall and the introduction of the v5 SDK architecture optimized for bidding.LevelPlay mediation will continue to integrate new bidding ad networks and complete the roll-out of multiple ad units. Levelplay will retain legacy support for waterfall integrations while working with publishers and networks to migrate to bidding.Overall, with access to the best supply and data for machine learning, in-app bidding positions the entire mobile ecosystem for growth through efficiency in 2025.]]></description><link>https://unity.com/blog/unity-moving-to-in-app-bidding</link><guid isPermaLink="true">https://unity.com/blog/unity-moving-to-in-app-bidding</guid><pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Cryptical Path: When developing a roguelike feels like playing one]]></title><description><![CDATA[In this guest post, Old Skull Games share how they lost, learned, and iterated their way to a unique gameplay experience.Game development, much like a roguelike, is about iteration. You push forward, thinking you’ve found the right path – only to hit a wall, fail, and start over, a little wiser than before.Our journey in developing this roguelike dungeon crawler was no different. Our initial focus was on crafting a responsive and rewarding gameplay experience, but we soon realized that strong 3Cs (character, controls, camera) alone weren’t enough. What Cryptical Path lacked was a clear identity – something that truly set it apart. We were struggling to find a unique element that aligned with our original vision.After months of production, we had to make a drastic pivot – all in pursuit of that elusive "one more run" magic. Here’s what we learned along the way.Run #1: The illusion of a good startLike many roguelike adventurers, we began our journey with confidence. The game was born from an internal jam at Old Skull Games, where we created a universe we loved, and  paired it with a genre that could attract core gamers. It was at this moment that the concept became a dungeon crawler with tight controls and great game feel.The first few months felt productive. We built a solid foundation, with:A responsive combat systemA cool environmentA basic item systemA complete gameplay loopBut, much like an overconfident first run in Cryptical Path, these preparations weren’t quite enough because of other choices we’d made.Run #2: Searching for a differentiator that wasn’t thereWith Cryptical Path’s core mechanics in place, we were asked: What makes this roguelike different? We needed something original to set the game apart but soon realized the concept lacked a truly new idea.Our first approach was a system of affinities with light and shadow specializations that players could build around. It sounded great on paper, but it was hard to prototype and envision fully without producing an excessive amount of content. Looking at this initial idea more critically, we realized it lacked depth and didn’t really have the game-changing element we were looking for.We sought feedback from publishers and industry peers. Their verdict? “You have a great game feel, but it doesn’t stand out.”That was our first real death. We had built our run around a system that didn’t work. Time to restart.Run #3: Defining a clear visionOne of the biggest mistakes in game development – especially when making a roguelike – is thinking that adding mechanics equals adding depth. We were stacking systems on top of each other without asking ourselves the most important question:"What problem are we solving for players?"To answer this, we organized focused brainstorming sessions and workshops until we generated new ideas. One question that we always kept in mind was, “Would my favorite roguelite be better with this feature?”That’s when we had a breakthrough: One of the biggest sources of frustration in roguelikes is the lack of control. Players love the chaos, but they also crave agency.We realized that being at the mercy of RNG and being forced onto a preset path – often receiving unneeded resources and rewards – was a pain point. What if, instead of just reacting to a procedurally generated world, players could shape it themselves?This was the moment we found our true USP: allowing players to place their own rooms and create their own path. This would give them more control while preserving the core challenge of the genre.Run #4: Iterating until it hurtsLike any good roguelike, the real work begins after the first few runs. Now that we had our concept for Cryptical Path, we had to make it actually work.Excited by the idea, we jumped straight into prototyping the flow of a run. Instead of diving into code and refactors, we took a more hands-on approach. Using a poker set, we turned cards into rooms and difficulty levels, chips into currencies, and dice into randomness. And just like that, we brought our vision to life: Crafting a run that wasn’t just fun, but truly unique in every experience. This helped us validate the theoretical idea before committing to implementation – and it worked. Players enjoyed planning their route as much as playing through it.Now came the real challenge: Integrating this concept into our existing platformer mechanics. To do this, we:Started over and revamped all the level design work.Built and discarded over ten different prototypes for room placement.Experimented with different ways to force players to engage with the system instead of bypassing it.At one point, the game was almost unrecognizable from our original vision. And that was a good thing. While we preserved the core game feel we loved, we were able to refine and enhance several other aspects.Run #5: The hardest pivotJust when we thought we had everything figured out, we hit another wall. Our external playtests confirmed what we had begun to suspect and could not ignore anymore:"We love the mechanics… But visually, this game looks like it’s for kids."Another death screen.We had been so focused on gameplay that we neglected the game’s cohesion. A roguelike needs a strong theme that reinforces its mechanics. Our previous art style didn’t sell the fantasy of dungeon-building. It wasn’t just a cosmetic issue, it was an identity crisis. One reason was that the art direction had been set up at a time when the game’s vision was totally different.And so, we rebooted again:We scrapped the old art direction and character designs.We redesigned the entire game’s theme around the idea of The Architect, a figure who constructs their own dungeon.We made sure the board-building mechanic was the heart of every gameplay decision.This was our final boss moment. We had finally found a direction that worked.Run #6: Highway to heavenNow that we had found our way, we were mastering the dungeon. Content creation became faster and more seamless – whether it was items, enemies, levels, or anything else the game needed. With every team member aligned to our now fully realized vision, everyone was able to create more cohesive, meaningful, and relevant work for the game.No longer drifting off course, we were finally rowing together toward a common goal.Five key takeaways for developersLooking back on Cryptical Path’s development, here’s what we wish we had known at the start:A strong USP isn’t just a cool idea – it’s better to think of it as a solution to a common player frustration.Having a clear vision is key, and going full steam ahead before that is a bad idea.Adding mechanics isn’t the same as adding depth. If a feature doesn’t reinforce the game’s core experience, cut it.Cohesion is everything. Gameplay, theme, and visuals must tell the same story.Don’t hesitate to scrap months of work. Keeping unnecessary features will only slow you down.Much like roguelike players, game developers need to embrace failure as part of the process. Every mistake, every bad prototype, and every frustrating pivot brought us closer to the game we were meant to make.We can’t wait for players to take their own first run at Cryptical Path, available now on PC.Check out Cryptical Path and other Made With Unity games on our new Steam Curator page. Explore more inspiring stories from creators on Unity's Resources page.]]></description><link>https://unity.com/blog/old-skull-games-cryptical-path-developing-a-roguelike</link><guid isPermaLink="true">https://unity.com/blog/old-skull-games-cryptical-path-developing-a-roguelike</guid><pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Raph Koster on alternative funding and why Playable Worlds is “kick finishing” Stars Reach]]></title><description><![CDATA[Raph Koster has never been one to shy away from an ambitious vision. With his studio, Playable Worlds, the designer behind iconic games like Ultima Online and Star Wars Galaxies is hard at work on Stars Reach, a sprawling, shardless MMORPG that aspires to be nothing less than a living, breathing world. This week, Playable Worlds is hosting a Kickstarter fundraising event to get this vision to the finish line.We sat down with Raph to talk about Kickstarter, why the studio’s turning to alternative funding, and what he’s learned about doing it right.Why did you decide to do a Kickstarter campaign, rather than turning to more traditional fundraising methods?Raph Koster: Well, as everyone knows, the industry’s going through a pretty tough time right now. There’s layoffs everywhere. Everybody’s watching the news. That also means that investment money is harder to come by. We’ve been backed by investors throughout the five plus years of our existence. In fact, we’ve raised nearly $40 million from investors, which is how we’ve built such a big and ambitious project.But in recent times, it’s harder to come by. We continue to take investment. In fact, we’re in the middle of finalizing some investment right now, but now is the time where in order to go out there, we really need to demonstrate to those investors that there is market validation that people want this game. And so by going out to Kickstarter and essentially pre-selling access to the game, it’s a way for us to start showing that this is something people want.
That’s really smart. Do you think that that would work for a smaller studio too?I think the classic big mistake that people make with video game Kickstarters is that they use it to start projects. And what we’re doing is really more – people keep saying it’s more like a “kick finisher,” right?So we all know in video game development, schedules are hard. Finding the funds is hard. It can be difficult to land on time, predict your budget accurately and so on. When people set up Kickstarters for development projects that are just getting started, that can be a pretty high risk. And we’ve seen a lot of them not be successful at delivering because of that.I think this can work for a smaller studio, but I would urge everybody to get most of the game done so that they have much more predictability around what it is that they’re promising and delivering. In our case, what we’re going to do is say, “If you back this Kickstarter, you get in to play the game now,” right, because it is already playable, it’s already in live testing, and we’ll let people in immediately? So I think it’s viable, but you have to have the right promise to the customer.I was wondering about that – what do donors get, exactly? Access to everything in the game?Yeah, that’s right. We are currently doing that via tester signups, and there’s been a queue. We’ve actually had tens of thousands of people in line to get into the test already. So the core of the Kickstarter offerings is that if you back us, you will be able to play, starting immediately, all the way through the testing phase, which means the servers won’t be up all the time, but you’ll have daily contact with the dev team, you’ll be able to give your input as features are developed, just participate because we’re in there all the time talking with our testers. Play through that entire period and also get to play during early access.So we’re going ahead and giving people to the early access period once that opens. And the higher up you go in the packages, it’ll include more than that, of course. There’ll be game time once the game launches, and of course there’s all kinds of fun skins and perks and whatnot that are in the various tiers as well.Have you ever done this kind of Kickstarter before or is this a first for everyone?This is a first for me. We do have folks on the team who’ve done Kickstarters before, but I was an advisor to companies that did Kickstarters, but I’ve never done one myself. So lots of learning.
Any learning that you can pass along? I think everyone out there is wondering, “How can I do this? How do you make a game in 2025? How do you fund a game in 2025?”Build up your community in advance I think is a key learning. You want to make sure that before you even start this process, you already have a sizable community that you can speak to. You can’t build one on the fly during the Kickstarter. You have to come to the Kickstarter with one already built, and then you can grow it, right? And typically they do grow during the Kickstarter.So you want to be piling up followers in advance is the key thing. Get them signed up to be notified by the Kickstarter. Planning out your tiers is super important, figuring out what kinds of things you can offer. In our genre, the MMO players are very, very unhappy about pay-to-win kinds of approaches, so it’s very important to try to plan rewards that are focused on cosmetics or don’t provide a real significant advantage to the player in a way that makes the game unfair. So that’s a really important thing for MMOs in particular.And I think probably for any competitive game, you don’t want to be selling advantage. Other than that, you’ve got to be in touch with the community, with your testers, with your players throughout the process. We shared our high-level plans for tiers and rewards with our testers, then went back and adjusted what we were planning based on the feedback they gave us. We’ll be rolling the details to them this weekend in advance, and we’ll be making last-minute edits again based on what they say, because ultimately you’re making this for them. It’s an offering for them, and you want them to be excited about it, and you want it to be something that they’ll want, right? You’re asking them to come along on the journey, so they should have significant input.Check out the Stars Reach Kickstarter campaign to learn more about the game and get a sneak peek at the action.]]></description><link>https://unity.com/blog/raph-koster-playable-worlds-stars-reach-kickstarter</link><guid isPermaLink="true">https://unity.com/blog/raph-koster-playable-worlds-stars-reach-kickstarter</guid><pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[With Momotaro Dentetsu World, Konami brings a beloved 36-year-old franchise to Unity]]></title><description><![CDATA[Momotaro Dentetsu is an iconic Japanese franchise featuring boardgame-style play where players travel to acquire properties and build wealth. The first game in this beloved series was released in 1988, and more than 20 titles have been added since.Momotaro Dentetsu World, the latest iteration in the franchise, was released a little over a year ago. It was the first Momotaro Dentetsu console game made with Unity, so we sat down with Noriaki Okamura, the senior producer of the franchise for Konami Digital Entertainment. In this Q&A, he explains why they brought their game to Unity to, as he puts it, “pass this franchise on to the creators of the future.”Why did you want to add another development team to this game series?To pass on the Momotaro Dentetsu franchise to the next generation of developers. The first Momotaro Dentetsu game was released in 1988. Since then, we have released more than 20 works in about 35 years. Of course, the fundamentals such as game systems and game balance are well established, and we’ve used these fundamentals to create new titles. It’s the “secret recipe” of the franchise.It was Mr. Sakuma, the original creator, who developed the secret recipe over the years. As the game creator, Mr. Sakuma has spent a huge amount of time creating each game based on a secret recipe of his own making, repeating detailed adjustments each time, and that’s the development style of the classic series.But even if there’s a secret recipe, the same quality can’t necessarily be guaranteed if creators other than Mr. Sakuma imitate this approach. For this reason, we felt we needed to establish a development team that could produce titles in the Momotaro Dentetsu franchise, consisting mainly of young developers who would be the next generation of leaders in the franchise, without being dependent on Mr. Sakuma.The director of Momotaro Dentetsu World is Mr. Shoji Masuda, who worked as assistant supervisor on the classic series for many years. Mr. Masuda is a veteran game creator who said that he took on directing this title to unpack the classic series’ development methods and hand them over to younger creators.In other words, Momotaro Dentetsu World passes on the secret recipe that Mr. Sakuma created over its 35-year history to the next generation of creators, to rebuild the secret recipe in them so that the franchise can continue 30 or 50 years into the future.Momotaro Dentetsu World is the first console game title to be developed using Unity. Why did you decide to use Unity?Looking to the future, I felt that we needed a development environment that would be easy for anyone to create in. I also wanted to create the game in a game engine so that it would be easier to port to a variety of platforms.For example, right now there are no plans to develop a mobile app version of Momotaro Dentetsu World, but since it’s being developed in Unity, it could be released in the future without significant resources. So I think if we were to consider developing the mobile app version, it would also lower the decision barrier for us.Please tell us about any Unity features that you have particularly used or found useful in your production.The first thing I can mention is ScriptableObjects. Adding this feature to the database has made it much easier to manage large numbers of assets, such as stations and cards, and the parameters associated with them.The next one that comes to mind is the C# Job System. The game has a magnifying glass function that allows the player to see detailed information about each station. When the player uses this function, many objects are projected onto the screen, and this caused a high rendering load, which was a concern. So we implemented multi-threaded code for this game using the C# Job System to stabilize the frame rate.
We also benefited from the fact that Unity allows detailed animation settings using ST values for material colors and textures, so we were able to express the sea as we imagined it at a low cost.Others that helped us save time were the capability to access the model being previewed, extract the FBX, import it into Maya, and adjust its position and size in Maya, as well as the capability to preview and instantly review the prefab as it was being created.Looking back on the production of this work, what were the advantages of using Unity?I think the advantage of Unity is that it is widely used by many developers. Most of the staff working on this project had experience in Unity development in the past, so it was a great advantage that we could communicate with them very easily.Now that Momotaro Dentetsu can be developed with Unity, you can flexibly develop various publications in the future, right?Yes. This franchise has a long history. As mentioned earlier, the first title in the franchise was released in 1988, so the secret recipe passed down from generation to generation is not even developed in C++, but in C.We have created franchise titles while utilizing and improving upon this secret recipe, and now we have chosen to break down and port it to Unity. The reasons for this and the benefits are as I have explained, but we don't believe that we have yet built a robust system that can be utilized even 50 years from now.]]></description><link>https://unity.com/blog/konami-momotaro-dentetsu-world-in-unity</link><guid isPermaLink="true">https://unity.com/blog/konami-momotaro-dentetsu-world-in-unity</guid><pubDate>Wed, 19 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Boss Fight brought Squid Game: Unleashed to life]]></title><description><![CDATA[The potential for transmedia success with a strong IP feels infinite. Case in point: In December, Boss Fight, a Netflix Games Studio, released the mobile game Squid Game: Unleashed in advance of the second season of the powerhouse series, and it reached the No.1 Top Free Games spot in 107 countries on the App Store.This multiplayer party royale offers dynamic, player-driven challenges where alliances, betrayals, and survival instincts are put to the test in ever-changing, high-stakes games inspired by classic childhood activities. Players are invited to immerse themselves in this world and are kept on edge by having to make strategic decisions with psychological depth and potentially dire consequences.We sat down with Todd Batty, director of game development at Boss Fight, a Netflix Games Studio, to learn how the team took a beloved series known for its tension and excitement and successfully turned it into a thrilling mobile game.Let’s start from the beginning. How did this project come about?As soon as Boss Fight became a part of Netflix, we started ideating around what we wanted to make next. We’re all huge supporters of Squid Game and we heard over and over from fans that they all wanted to see what it would be like to try their hand at the infamous squid games.From that point, there were lots of discussions about how to bring this to life in-game. We were drawn to the party royale genre because it not only allows players to experience Red Light, Green Light, Dalgona, Mingle, and more, but it also gives fans the chance to play with or against their friends as opposed to a single-player narrative game.When you began developing the game, what was the team hoping to achieve?Our goal was to build a game that was representative of the Squid Game universe, but in a way that felt fresh and approachable. While the show has a dark, high-stakes atmosphere, we wanted to create a game that kept that competitive energy but was a bit lighter in nature so that people could feel comfortable being immersed in our world for long periods of time. In short, we wanted to make dying… fun!What were key elements from the television series that had to be included in the game?The most important aspects to retain were the distinct visual style and the core premise of competing in children’s games with life-or-death consequences. It was important that we put the player into the games as a competitor. These elements define Squid Game at the broadest level and had to be an essential part of the experience.What steps did you take to incorporate them?The game was in conceptual development for quite a while before full production began. During that time, we immersed ourselves in the world of Squid Game and spent a lot of time refining both the art direction and gameplay mechanics.The challenge was to create a game that felt exciting and social while avoiding going too deep into the heavier, more sinister elements of the show. We wanted to strike a balance – keeping enough of Squid Game’s tone to feel authentic while making sure the game could be enjoyed regularly by millions of players.At Netflix, since we’re making series, films, and games under the same roof, we were able to collaborate with the Squid Game series team earlier in the process than most adaptations are able to. We got scripts early, visited the creative team and sets in Korea, and even tapped into other expansions of the squid universe, like Squid Game: The Challenge. This all resulted in a more authentic experience that could launch right alongside season two of the series for a better fan experience.Getting deeper into the game’s development, how did the team make the most out of Unity?Boss Fight has been working with Unity for many years and has a long history of shipping products with it. For this game, we used the Universal Render Pipeline (URP), Shader Graph, and the Cinemachine camera system. There was also ProBuilder for environment prototyping, TextMeshPro for fonts, the Input System for gamepad support, and Timeline for cutscenes and visual effects.When it came to animation, we connected Playables in data evaluation trees to create level flyovers, and we worked with NVIDIA PhysX to trigger ragdoll physics.Additionally, using Nested Prefabs and Variants allowed the team to work asynchronously in scenes or other prefabs in our source control. We employed Unity Search for more detailed searches and for finding prefabs that were missing required components or had incorrect tagsFor performance optimization, the Adaptive Performance and Quality settings were essential for us to hit device tiers, FPS, and thermal goals. The Frame Debugger helped us find draw calls, sneaky extra cameras, disabled prefab layout objects, and canvas layout and Particle System issues. The Memory Profiler’s snapshot comparison was also very beneficial for finding excessive string and object allocations.Overall, I highly recommend taking part in a Unity Project Review. It offers further insights and best practices to improve your game.What were some unexpected lessons learned and opportunities granted during development?The inclusion of weapons, which is somewhat new to this particular genre, had a more profound impact on gameplay than I think even we expected. Baseball bats led to snowballs and shields, which led to mystery boxes, and ultimately to the ability to goaltend from the Finish area by killing people still trying to finish the game. This all felt particularly relevant and appropriate for a Squid Game recreation.We were also extremely excited to be able to work in a couple of firsts for Netflix – things that only we can do. We made the game available to everyone for free with no ads or in-app purchases. By removing the need for a Netflix subscription, players were able to invite their friends and express their fandom at the height of the series’ popularity, with or without a membership.Additionally, since Netflix offers series, films, and games on the same service, we were able to automatically give players in-game rewards for every episode of season two they completed. Within hours of the series debut, we saw fans flaunting their exclusive ‘binge watcher’ skin, indicating they had already watched the show and came back to the game to play.Now that the game is out, what should fans of the series expect?We’re all about bringing the high-stakes thrill of Squid Game into a fun, fast-paced, and socially unpredictable experience. Every round should feel intense, forcing players to make split-second decisions in chaotic mini-games.At the same time, it’s super easy to jump into whether you're a casual player or a hardcore competitor. There’s something for everyone. And the social element? Huge. Alliances will form, trust will be tested, and betrayal is always on the table.We’re also in it for the long haul – expect new challenges, events, and surprises to keep things fresh and exciting.Based on the rise of transmedia success, what is your advice for developers looking to turn a television series or movie into a video game?The key to adapting a video game to any type of IP, from a television series to a sporting league to a movie or comic book, is to figure out what the must-have elements are for the biggest fans of that IP. You need to deliver on those as perfectly as possible and then let everything else go so you still have some room for creative license. If you don’t draw that line with intent somewhere, it will inevitably get drawn for you somewhere unintended when you run out of time.Want to learn more about performance optimization? Check out the Optimize your game performance for mobile, XR, and the web in Unity e-book.]]></description><link>https://unity.com/blog/how-boss-fight-brought-squid-game-unleashed-to-life</link><guid isPermaLink="true">https://unity.com/blog/how-boss-fight-brought-squid-game-unleashed-to-life</guid><pubDate>Tue, 18 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Rewarded ad systems: Are they right for your game and how to implement them]]></title><description><![CDATA[It’s not a secret that as mobile games have become increasingly hybridized, both in terms of their monetization and gameplay, retention has become the new golden KPI. In order to effectively monetize in this new hybrid ecosystem, publishers and studios need players who will stay and play for longer. And so, creating a positive user ad experience for players has become increasingly urgent.One approach that has gained traction is the implementation of rewarded ads.WTF are rewarded adsRewarded ads offer players the option to engage in exchange for in-game rewards. These ad units have proven to be a powerful tool for revenue generation and player engagement, offering developers and players a win-win scenario. Developers are able to monetize their games with ads and players are given an opt-in ad experience that doesn’t disturb gameplay.Most players want to engage with rewarded ads. According to the 2023 Unity Gaming Report, while only 3% of players convert to paying for in-app purchases (IAP)* in successful free to play mobile titles, over 60% are interested in engaging with rewarded ad placements**. These two groups are also non-exclusive, as an IAP purchasing player may also engage with rewarded ads too.Are rewarded ads right for your game?While there’s clear benefits to rewarded ad units, before jumping into implementation it’s important to consider if a game can support a rewarded ad system.Some important questions to ask include:Does the game have a form of in-app currency and economy?Does the game offer power-ups, boosters, or consumables that players would want to access?Does the game have an in-game store where players can spend their earned in-game currency for boosters or cosmetics?If the answer to all three of these questions is yes, then your game can support rewarded ad units.What you need to implement rewarded ads1. The right ad partners and infrastructure:A lot of the success of your rewarded ad strategy will depend on finding the right ad partners and infrastructure for your game that offer both scalability and ease of integration. Partners like Unity Ads and mediation solutions like Unity LevelPlay can provide the flexibility of supporting both ads and IAPs to maximize revenue potential.2. Strategic placements to ensure optimal player engagement:Properly placing ads is crucial for maintaining player engagement. Utilize data insights, like engagement rates by placement location (for example, such as after or between levels), to determine the most effective spots. Timing is also key; rewarded ad placements should be when players are most incentivized to engage, like when a player has run out of in-game currency or retries and is otherwise unable to continue playing.Source: Unity Mobile Growth Monetization Report 2024, Chart 3.43. Clear communication of the value proposition:Players need to understand what they gain by watching a rewarded ad. Clear signposting and messaging should be used to effectively convey the benefits to the player, increasing the likelihood of player engagement. For example, if a rewarded ad is offering a player a boost or a retry in exchange for watching an ad, the player needs to understand that this will help them extend their game session or or speed up their progression.Source: Unity Mobile Growth Monetization Report 2024, Chart 3.6How to measure your rewarded ads’ performanceAfter implementing rewarded ad units, monitor the performance of them using A/B testing tools like Unity Analytics. You should be looking out for KPIs like Average Revenue Per Daily Active User (ARPDAU) from IAP, the retention rate, and the engagement rate. It’s important to establish a control group to allow for accurate comparison against a baseline. If players enjoy the new feature, you should see an increase in engagement first, followed by an increase in playtime and retention, and ultimately a boost in player LTV.A win-winRewarded ads offer a balanced approach that respects player choice while improving revenue generation, creating a cycle that benefits both developers and players. As the mobile gaming industry evolves, rewarded ads will likely play a pivotal role in creating both engaging and profitable gaming experiences in the near and long term.*Source: Unity IAP Plug-in, Games that made over $10k USD in 2023, players that installed in 2023**Source: Unity Gaming Report 2023, chart 4.4]]></description><link>https://unity.com/blog/rewarded-ad-systems</link><guid isPermaLink="true">https://unity.com/blog/rewarded-ad-systems</guid><pubDate>Thu, 13 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The power of Q1: how to unlock maximum scale with on-device advertising in 2025]]></title><description><![CDATA[When it comes to maximizing your app’s performance, there is no better time than the present. In the first quarter of 2024, users spent $15.5 billion in app, a 19.4% rise year over year (Sensor Tower). Momentum in the app market is growing, and the best time to take advantage of it is the very beginning of the year: Q1.Let’s explore why Q1 is a prime time for growth and how you can leverage on-device advertising during this pivotal time to position your app for maximum success.Major spikes in phone purchasesFresh off the holiday gifting season, there is already an influx of new phones in the market - but that’s not the only spike of new devices. This quarter, major flagship launches like Samsung’s long-anticipated Galaxy S25 will drive even more demand.
These launches offer a chance to reach high-quality, intentional users - early adopters actively seeking apps and content. But the window to engage them is very small: 95% of users download 60%+ of their apps within 48 hours of activation.With Aura from Unity’s Out of the Box Experience, your app becomes a native part of the device experience as soon as users activate their phones. As a result, from the moment these users start adding apps to their phone, your app is suggested - maximizing your visibility and scale.Premier sports eventsQ1 offers more than just a chance to capitalize on new devices—it’s also prime time for major sports events, like the Super Bowl and March Madness, which drive significant spikes in app downloads. During the 2024 Super Bowl, food delivery apps saw a 29% increase in activity (Adjust), with sports, travel, and music apps also seeing notable growth.These events create a prime opportunity to leverage the surge in activity and capture user attention at peak moments. With Aura, you can use pop-ups to suggest your sports or entertainment app right before the biggest events of the season, maximizing visibility when it matters most.
Widespread OS updatesThe first quarter is not only known for new devices and sports events, but also major Android updates. With Aura from Unity, every update is a unique window of opportunity to re-introduce your app to users.With the Out of the Box Experience, you can remind users about your app in the most natural moments of the device lifecycle - like OS updates. This way users can get continual reminders that there is untapped potential just a click away.
By aligning your app with key moments in the device lifecycle - whether it’s a new phone activation, a major sporting event, or an OS update - you can optimize for maximum exposure when users are most engaged. Discover how Aura can seamlessly integrate your app into these high-impact moments, ensuring you reach engaged users right when they’re ready to download. And reach out to the Aura team directly here.  ]]></description><link>https://unity.com/blog/leverage-on-device-advertising-q1-growth</link><guid isPermaLink="true">https://unity.com/blog/leverage-on-device-advertising-q1-growth</guid><pubDate>Thu, 06 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How AI enables the creation of high-quality ads]]></title><description><![CDATA[In the world of mobile app advertising, your ability to convert users is as strong as the ads you produce. And creating high-quality ads requires winning creatives. But producing quality creatives at scale can be a huge challenge. This is where AI comes into play.Let’s break down how AI has improved Unity’s ad design studio’s efficiency at every stage of the creative process, resulting in impactful, high-quality ads.Developing quality creative concepts with easeEven from the ideation stage, AI has been a game changer for our creative studio. By instructing AI to “create creative concepts based on X,” we can quickly generate a list of ideas far wider and more unique than we could have developed ourselves. This not only helps to widen our imagination, but also provides more options for concept testing.In fact, if we want to make some tweaks on a concept, we can simply ask AI to make a few changes and get new concepts in seconds. With endless creative possibilities, we can make sure every concept fits our vision.
Building creatives from concepts in no timeOnce we determine our creative concept, AI helps us bring it to life. Let’s say the winner of one of our concept tests is an image of a basketball. Then a designer decides the best way to showcase it. Animated creatives are most engaging, but usually require hours of work - but not with AI.Instead of searching through endless stock videos, we can use AI to bring any creative to life. Within minutes, AI will generate new frames, turning a static image of a basketball into a basketball GIF/video jumping through the waves. Next, all we’d need to do is request any tweaks, and we’ve made our very own high-quality creative in record time.It’s important to note: though AI is a very practical tool, it cannot magically solve every design problem. As a creative studio, we still need to focus on the big picture: curating each creative and ensuring each asset aligns with our business goals. But knowing which situations we can use AI in helps maximize efficiency, streamline production, and produce top creatives.Quickly updating creative elementsAI doesn’t just help us create new concepts and creatives - we can use it to optimize the creatives we already have. Here’s a common example: Halloween is approaching and a studio would like to add some spooky elements to their creatives.Modifying design elements is a manageable project for any designer, but developing and adding the spooky graphics might take a few days. With AI, you can see a new creative in minutes and make as many iterations as you need to develop the most eye-catching Halloween creative possible. And, of course, you can repeat this for Thanksgiving, Christmas, or any other festive occasion.Not to mention, the valuable time your team can save with AI gives your designer time to work on other essential projects, like developing new creatives, or working on more complex, time-consuming projects. It’s a win-win situation - your studio gets a greater creative output and more options to test, which in turn allows you to find the highest quality creative options.Elevating ads beyond visuals elementsFinally, AI allows us to expand beyond the abilities of traditional creative studios. Imagine a studio manager wants to add musical elements or a voiceover to a creative asset. Assuming there’s no sound designer on the team, the studio would typically need to search a stock music website to find something similar to their desired result. The same goes for voice overs - to get quality voice overs for their creatives, studios often need to pay external actors. This means the studio’s creatives are limited by options or budget, and in many cases both.With AI, creative studios can quickly solve both of these problems. All we need to do is describe the music/voiceover we’d like to pair with a creative, and we’ll quickly get a high-quality result. Even if it takes a few iterations to achieve our vision, we can quickly and easily boost our creatives’ quality at no extra cost.Ultimately, time is money, so maximizing what you can do with your time will optimize your creative production. And with better ads comes boosted conversions - increasing your UA budget and fueling a continual cycle of UA growth.Unity’s Ad Design Studio is a one-stop-shop for developing top-tier creatives, with complementary services for Unity clients.]]></description><link>https://unity.com/blog/creating-ads-with-ai</link><guid isPermaLink="true">https://unity.com/blog/creating-ads-with-ai</guid><pubDate>Thu, 06 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: January 2025 in review]]></title><description><![CDATA[Wake up sleeper! 

January's games made with Unity round-up is here. The sequel to the award-winning Citizen Sleeper dropped at the end of the month. As well as IGF Finalist Extreme Evolution: Drive to Divinity, Hooded Horses' Heart of the Machine, the PC and Console release of Hello Kitty Island Adventure, and much more. 2025 was already off to a fast start of releases. Plus, check out our talk with the devs behind Cat Detective Albert Wilde as they stopped by our stream just after launch.Made with Unity Steam Curator Page
To stay up to date on what the Unity community is playing, be sure to follow our Steam page. This month we asked some of the staff at Unity to highlighted which of your games they're playing, check out the list on our page! Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in January 2025, either into early access or full release. Add to the list by sharing any that you think we missed.ActionButcher's Creek, David Szymanski (January 23)THE DARK SIDE OF CECLON, SOLIDS Studio (January 20)ReSetna, Today's Games (January 31)Bullet heavenJotunnslayer: Hordes of Hel, Games Farm, ARTillery (January 21 – early access)Cards, dice, and deckbuildersNone Shall Intrude, Aeterna Ludi (January 21)XIII - A Final Game of Tarot With Death, Indigo Dreams (January 9)Pairs & Perils, Little Horror Studios (January 20)Casual and partyMika and The Witch's Mountain, Chibig, Nukefist (January 22)City and colony builderAirborne Empire, The Wandering Band LLC (January 13 – early access)Tiny Kingdom, neltile (January 30)ComedyTurbo Dismount® 2, Secret Exit Ltd. (January 23 – early access)FPSBOWLOUT, Sep Horsthuis, Quint Winter (January 7)Arken Age VitruviusVR (January 16)HorrorLittle Lighthouse of Horror, Codiwans (January 28)Kiosk, Vivi (January 28)Narrative and mysteryCat Detective Albert Wilde, beyondthosehills (January 24)Human Within, SignalSpace (January 9)S4U: CITYPUNK 2011 AND LOVE PUNCH, U0U Games (January 8)PlatformerExtreme Evolution: Drive to Divinity, Sam Atlas (January 16)Puzzle adventureCyber Manhunt 2: New World - The Hacking Simulator, Aluba Studio (January 20)Götz, Sleepy Seed (January 3)Reviver, Cotton Game (January 8)LOK Digital, Letibus Design, Icedrop Games (January 23 - mobile version)Roguelike/liteNunholy, Chowbie (January 16)Cryptical Path, Old Skull Games (January 29)The Last Flame, Hotloop (January 9)RPGCitizen Sleeper 2: Starward Vector, Jump Over The Age (January 31)Tails of Iron 2: Whiskers of Winter, Odd Bug Studio (January 28)Lightracer: For Judge, Smartmelon Games (January 7)Sea Fantasy, METASLA (January 7)Lords of Ravage: Dread Knights, Synthetic Domain (January 10)Tales of Graces f Remastered, TOSE CO., LTD. (January 16)The Quinfall, Vawraek Technology Inc. (January 24 – early access)Coridden, Aftnareld (January 29)SimulationMy Summer Car, Amistech Games (January 8)Hello Kitty Island Adventure, Sunblink (January 30 - Steam and console release)Toy Shop Simulator, PaperPixel Games (January 13 – early access)Behind Glass: Aquarium Simulator, BitBros Inc (January 9)Skystead Ranch, ToastieLabs (January 17)Sports and drivingLonely Mountains: Snow Riders, Megagon Industries (January 21)Helskate, Phantom Coast (January 20)StrategyThe Stone of Madness, The Game Kitchen (January 28)Heart of the Machine, Arcen Games (January 31 – early access)Yield! Fall of Rome, Billionworlds (January 20 – early access)IDUN - Frontline Survival, IDUN Interactive (January 20)Those Who Rule, Eldin Turulja (January 27)SurvivalAloft, Astrolabe Interactive Inc. (January 15 – early access)That’s a wrap for January 2025. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-january-2025-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-january-2025-releases</guid><pubDate>Tue, 28 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Transforming concrete training: how ForgeFX creates VR training solutions]]></title><description><![CDATA[Somero Enterprises, a global leader in concrete leveling technology, partnered with ForgeFX to revolutionize operator training with an immersive virtual reality (VR) solution for their S-22EZ Laser Screed® machine. For concrete professionals, this immersive training solution reduces high training costs and logistical challenges, while equipping operators with a hands-on, safe, and engaging learning environment. By leveraging Unity’s technology, and tools such as the XR Interaction Toolkit, manufacturers like Somero have the power to streamline training processes, improve operator proficiency, and reduce operational constraints.Imagine building a skyscraper without a solid foundation — finding skilled talent in the construction industry today can feel just as daunting, with labor shortages threatening to bring projects to a grinding halt.According to the Associated General Contractors of America, 2024, 79% of construction firms today report difficulty in finding skilled workers, impacting project timelines and cost. The aging workforce also contributes to this gap, with 41% of the workforce projected to retire by 2031 as per the National Association of Home Builders.The need for smart solutions to skill shortage in the construction industry has never been greater.Challenges in traditional trainingSomero specializes in laser-guided concrete screeding equipment, including the S-22EZ Laser Screed® machine, a key tool for achieving high-quality, level concrete floors. Their goal was to create a VR simulator that would train operators safely and efficiently while also addressing their global capacity constraints of high travel costs, machine wear, and logistical limitations. Trainees needed experience in handling controls and understanding spatial dynamics without the need for physical machinery.Mastering the art of concrete leveling requires more than just tools—it demands the transfer of hard-earned skills honed over years of physical practice. Dave Raasakka, Somero VP of Global Customer Support, shares, 'Concrete is a perishable product. Once it hits the ground, you have an hour to get it done. Otherwise, you get into trouble.'Training for heavy machinery like the S-22EZ Laser Screed® machine traditionally requires extensive physical resources, such as the machinery itself, specialized equipment like laser transmitters, and a dedicated training area outfitted with appropriate concrete forms and pour conditions. These real-world scenarios often come with high costs, including wear and tear on machinery, and can be hindered by factors like equipment availability, adverse weather conditions, or risks such as slips and falls while accessing elevated components. With six global service centers and hundreds of trainees annually at the Somero Concrete Institute, Somero required a scalable solution to address these logistical, financial, and safety challenges effectively.Somero turned to ForgeFX Simulations for an alternative training solution to deliver consistent, high-quality learning experiences that addressed their needs and solved their constraints. We faced the complex task of designing an immersive training simulator that accurately replicated the operation of the Laser Screed including capturing the tactile feedback and visual realism needed to mimic the experience of working with the actual machine. Powered by Unity, the solution replicates the S-22EZ’s complex controls and provides trainees with a realistic, hands-on experience in a virtual environment, eliminating the need for physical equipment during the learning process.Technical features that boost realismUnity’s robust XR tools power the S-22EZ Laser Screed® VR simulator, enabling precise replication of equipment behavior in highly realistic immersive 3D environments, such as:Unity Cloud’s exception reporting provides actionable stack traces, aiding QA and issue tracking with minimal manual intervention.For performance, we rely on Unity’s CPU and GPU profilers to diagnose bottlenecks and optimize frame rates, ensuring smooth and responsive VR experiences.These tools guide us in identifying and addressing inefficiencies, particularly in physics calculations, to maintain seamless interaction and reliable simulations.XR Interaction Toolkit (XRITK) enhances the immersion and operational effectiveness of the Somero Training Simulator with an intuitive, cross-platform solution that simplifies virtual interactions. By using XRITK to manage the VR Rig, we enabled support for controllers and advanced hand-tracking features on Meta Quest 3 to create a seamless, responsive training environment that maximizes trainee engagement.This setup minimizes development time by standardizing interaction components like snap turning, teleportation, and object manipulation, and ensures the simulator remains adaptable to future hardware and software updates.Unity’s Job system enables us to realistically simulate concrete on a secondary thread without impacting the main thread’s performance. Using trigger colliders as bounding boxes, we defined factors that can influence the concrete both intentionally and unintentionally, such factors caused by the screed head or machine tires. These have no rigid bodies and their layer mask for collisions is set to include none, so minimal work is being done on the main thread. The job system allows for up to four simultaneous threads to run on the standalone Quest headsets without impacting the main thread performance. (On the main thread we track positions of bounding boxes that represent pieces of the machine that can affect the concrete.)We utilize Unity Terrain to realistically render concrete surfaces, blending textures to reflect various finishes and consistencies throughout the pour. A Unity job is deployed to offload calculations for our custom concrete simulation which determines how the concrete colliders like the plow or vibrator impact the smoothness or roughness of the concrete as well as push and pull concrete around the surface. We have “rough” and “smooth” textures, with rough being the default and to set an alpha value for how much smooth texture we should be showing at each point on the terrain’s height map.On the main thread, there are two quick functions to update the terrain to match the heightmap and alpha map data the jobs write to. Together, these systems reinforce an immersive virtual environment where users experience the visual and tactile nuances of working with concrete, enhancing training effectiveness and user engagement through a faithful reproduction of complex construction activities.
Customer feedbackAt the conclusion of the pilot phase, Somero conducted two case studies that showed improved operator skills on the 22EZ Laser Screed® after completing the VR training.Case 1 – Non-user employees took the VR training and were able to successfully demonstrate use of the machine.​Case 2 - Involved non-users who took the training, and survey results indicated they were confident in operating the machine.​Future plans for the simulatorMore effective trainingThe Somero S-22EZ Advanced Laser Screed® VR Training Simulator represents a leap forward in construction training technology. By addressing the challenges of traditional training methods this immersive training platform offers unparalleled precision, accessibility, and engagement for operators worldwide. With the ability to simulate complex real-world scenarios, reduce environmental impact, and enhance skill retention, the simulator not only prepares operators for optimal performance but also positions Somero to achieve greater efficiency and ROI.Expanded market reachBy providing distributors with the ability to give interactive demonstrations of their large-scale machines remotely, the simulator promises to positively impact Somero’s global market penetration. Somero has the potential to accelerate sales cycles, improve customer decision-making, and expand their global footprint—all while reducing the logistical costs and environmental impact associated with traditional equipment showcases.Beyond structured lessonsAs Somero conducts further testing on Phase 2 of the simulator, the roadmap for Phase 3 is being envisioned. Potential areas of focus include advanced concrete simulation that replicate factors like varying slump levels or drying stages, and sandbox-style lessons that allow trainees to freely interact with virtual machinery beyond structured lesson steps. As ForgeFX and Somero continue to innovate on the Unity platform, the possibilities for transformative training experiences in the manufacturing industry are endless.Interested in learning more about this story? Check out our webinar with ForgeFX and Somero Enterprises here.Experience the future of training today. Explore how Unity Industry can elevate your team's expertise while streamlining your operations.
]]></description><link>https://unity.com/blog/forgefx-industry-xr-immersive-training</link><guid isPermaLink="true">https://unity.com/blog/forgefx-industry-xr-immersive-training</guid><pubDate>Mon, 20 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Revolutionizing the machinery and robotics industry: an insider’s view of Unity and the reality of digital twins]]></title><description><![CDATA[Thomas Strigl has 18+ years of experience in creating and distributing simulation and commissioning software solutions. He recognizes that the modern robotics and machinery industry requires innovative solutions. This is why Thomas founded realvirtual.io in 2018, with the aim to pursue opportunities to embrace gaming technology to solve the challenges of complex automation systems. In this article, Thomas shares his thoughts on Unity’s place in the industry - and the importance of digital twins.My vision for digital twins in industryThe machinery and robotics industry is rapidly evolving, driven by digital transformation. Of course, we can’t ignore the elephant in the room: “digital twin”. The term has become a buzzword, tossed around in marketing campaigns and industry conferences. While the concept holds incredible potential, I believe it’s essential to go beyond the hype and focus on tangible, real-world applications.Digital twins are revolutionizing how production and factory operations are planned, monitored, and optimized. My vision is to fully realize their potential by integrating them seamlessly across every stage of the manufacturing lifecycle, from initial engineering design to real-time operations.Central to this vision is the synchronization of digital twins with engineering planning tools, such as CAD systems and electrical and automation design software. By ensuring that digital twins are updated in real time as changes occur in these tools, factories can maintain a continuous, accurate representation of their assets and processes. This creates a closed-loop system where design and operational data flow seamlessly, bridging the gap between planning and execution.Combined with 3D visualization and real-time human-machine interfaces (HMIs), digital twins provide an intuitive way for operators and engineers to interact with live production environments. Through robust industrial communication standards like OPC UA, MQTT, and Profinet, these twins integrate with real-world systems to create “digital shadows” that mirror ongoing operations.This real-time synergy between design, engineering, and production empowers factories to optimize workflows, reduce errors, and adapt to changes faster. The result is a smarter, more connected factory environment that drives efficiency, agility, and innovation.Uses for real-time solutions in robotics and machineryThe real-time environment is a powerful solution for the challenges faced in machinery and robotics, enabling teams to create applications for a broad range of use cases, such as:Design validation: Create high-fidelity simulations to test designs before physical production. This reduces errors, shortens development cycles, and improves final outcomes.Virtual commissioning: Engineers can simulate and test the logic of machine controls in a virtual environment, avoiding costly delays and errors during physical setup. For example, by connecting a real-world robot and PLC controllers to a digital model.3D human-machine interfaces (HMI): Create interactive and intuitive HMIs, making machinery easier for operators to control and understand.Vision AI training: Simulate real-world camera frames, perform synthetic data annotation, and train vision AI algorithms, especially for robotics systems.Stakeholder communication: Create immersive visualizations or VR experiences that make complex ideas understandable to non-technical stakeholders.Where realvirtual.io fits inSpecialized tools like realvirtual.io build on real-time capabilities to cater specifically to the machinery and robotics industry. Available as an add-on asset, realvirtual.io provides a set of tailored tools for creating digital twins that go beyond visualization.With these tools, users can:define kinematics for complex machineryadd virtual drives and sensorsinterface with real robot controllers or PLCs for virtual commissioningcreate 3D HMIsrun simulations that mimic the behavior of physical machinesDigital twins also play a vital role in training convolutional neural networks (CNNs) for industrial vision applications. By generating synthetic, highly realistic datasets in simulated environments, they enable AI systems to learn complex recognition and decision-making tasks efficiently, before the real products or production even exist, speeding deployment and improving accuracy in real-world conditions.To streamline this process, our new product AI Builder simplifies the creation of advanced AI-ready digital twins and supports AI training directly within Unity’s ecosystem, making it easier than ever to deploy AI based industrial applications.My opinion: Unity as the future of digital twinsThe promise of digital twins is exciting, but I believe it’s critical to remain grounded. While flashy terms generate buzz, it’s the practical applications that truly drive value.In my experience, Unity’s power lies in its ability to enable teams to create solutions that address real problems, from improving design, to enhancing communication, or reducing commissioning errors. Introducing a new idea, interface, or user interaction is so much more straightforward when using the open development ecosystem and open source code of Realvirtual.io. You can see results fast without the need to wait for long software release cycles.Unity stands out because it is both powerful and accessible. Its real-time rendering capabilities, robust ecosystem, and adaptability make it ideal for solving real-world problems in machinery and robotics. What makes it particularly valuable is its modularity, openness, and ecosystem—an endless array of tools and extensions available through the Unity Asset Store and its Package Manager, many of which were originally created for gaming but translate seamlessly into industrial applications.Here’s one game-changing fact that sets Unity apart: it enables you to build and deliver applications to almost any platform, with no need for cloud rendering. This means you can create a digital twin and deploy it in multiple ways, such as:Mobile app for on-the-go use.Desktop applications for Windows, Linux, or macOS.Immersive experience on Meta Quest or other VR/AR devices.WebGL-based solution accessible directly through a browser.Let’s start a conversationI’d love to hear your thoughts. Are you leveraging Unity in your machinery or robotics projects? What challenges are you tackling, and how do you see digital twins evolving? Please share your experiences—I’m always eager to learn from others in this exciting field.This article reflects my personal insights and experiences working with Unity and digital twin technologies. Let’s focus on what really matters: delivering results that transform how we design, build, and operate machinery in the modern age.]]></description><link>https://unity.com/blog/digital-twins-machinery-robotics-industry</link><guid isPermaLink="true">https://unity.com/blog/digital-twins-machinery-robotics-industry</guid><pubDate>Thu, 16 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: December 2024 in review]]></title><description><![CDATA[As 2024 came to a close, some of the most exciting releases of the year hit just in time for the holidays—many of them showcasing the power and versatility of what devs can do with Unity. From the long-awaited 1.0 release of Caves of Qud, a 14-year labor of love, to the retro-inspired MMORPG Pantheon: Rise of the Fallen. Other standout titles included the latest from the ATOM RPG team, Swordhaven: Iron Conspiracy, and the inventive, experimental Mini Mini Golf Golf. Let's dive into some of the most exciting releases that closed out the year.Made with Unity Steam Curator Page
If you haven't yet, please follow our new Steam Curator page this year, and let us know any games we've missed!Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in December 2024, either into early access or full release. Add to the list by sharing any that you think we missed.Casual and partySquid Game: Unleashed, Netflix, Inc., Boss Fight Entertainment, Amber Studio (December 17)Cards, dice, and deckbuildersDeathless. Tales of Old Rus, 1C Game Studios (December 12)City and colony builderOverthrown, Brimstone (December 5 – early access)FPSBattle Shapers, Metric Empire (December 4)HorrorMiSide, AIHASTO (December 10)Zort, Londer Software (December 7 – early access)Narrative and mysteryMini Mini Golf Golf, Three More Years (December 12)On Your Tail, Memorable Games (December 16)The Midnight Crimes, DeadlyCrow Games (December 25)PlatformerSymphonia, Sunny Peak (December 5)Get To Work, Isto Inc. (December 2)Magenta Horizon - Neverending Harvest, Maddison Baek(Hellfire Railway Interactive) (December 6)Puzzle adventureNAIAD, HiWarp (December 10)Roguelike/liteCaves of Qud, Freehold Games (December 5)Shiren the Wanderer: The Mystery Dungeon of Serpentcoil Island, Spike Chunsoft Co., Ltd. (December 11 - Steam release)RPGFANTASIAN Neo Dimension, Mistwalker Corporation (December 5)Pantheon: Rise of the Fallen, Visionary Realms (December 13 – early access)Chrono Sword, 21cDucks co., Ltd. (December 6 – early access)Swordhaven: Iron Conspiracy, AtomTeam (December 11 – early access)SandboxMythwrecked: Ambrosia Island, Polygon Treehouse (December 5)Dustgrave: A Sandbox RPG, Innervoid Interactive (December 5 – early access)SimulationShort Trip, Alexander Perrin (December 11 - Steam release)OHV, Przemysław Hadała (December 18)SimRail - The Railway Simulator, SimRail S.A. (December 13)That’s a wrap for December 2024. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-december-2024-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-december-2024-releases</guid><pubDate>Mon, 13 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[2025 Mobile gaming trends: Industry perspectives]]></title><description><![CDATA[2024 was a year of stability and back-to-basics for the mobile gaming industry. We saw more developers and publishers prioritize successful live titles within their genres of expertise, instead of launching new titles in different categories. This focus transformed the 2024 landscape, driving record-breaking growth for evergreen titles and making reliance on established IP and strong branding essential for capturing growth.In 2024, the Apple App Store & Google Play store topped 80 billion USD in consumer revenue, representing 4% YoY growth. We also saw double digit global growth in the 3 core genres of casual, casino, and strategy games, signaling healthy consumer demand for mobile games. This hyper focus on live titles led to fewer publishers taking the lion’s share of revenue in a given category. In casual games, the top 5 publishers generated 62% of total revenue, while in casino games, the top 5 publishers accounted for 72% of total revenue.What’s in store for the year ahead? We project a continuation of 2024 trends, with steady growth led by evergreen and pre-established brands. We expect that better market conditions and more title releases in the coming year will continue to boost publishers' confidence.Below, industry leaders dive into their 2025 predictions, from advances in user-level customization, and AI’s growing role in game development, to which genres are positioned to gain traction, and more.Hybrid-casual monetization will drive a shift toward user-level customizationTraditionally, monetization strategies have been designed based on game genres. For example, idle games often leverage rewarded videos (RV), hyper-casual games focus on interstitials, and 4X games emphasize in-app purchases (IAP). However, with the maturity of hybrid monetization systems, the next evolution will drive a shift towards user-level customization.By leveraging contextual data gathered early in a user’s journey, publishers can dynamically adapt and balance the monetization experience for each individual. This approach utilizes the full spectrum of monetization options available, including RV, interstitials, IAP, subscriptions, offerwalls, audio ads, in-game advertising, and more. This user-specific strategy will ensure a more personalized experience, enhancing engagement while optimizing revenue potential across diverse user segments.IP games are set to surgeIntellectual Property (IP) games will witness heightened success in the charts for 2025, exemplified by the continued dominance of Monopoly Go!. Hasbro and Mattel in particular have experienced significant success in 2024, showcasing the convergence of games and other entertainment forms in transmedia.This provides studios with even more strategic opportunities, leaning on brand recognition and large existing audiences to reduce CAC (increase in organics + reductions in CPI’s). Equally the rise in "integrations," or limited timed IP events, have been big wins for the likes of Supercell (Godzilla) and Voodoo (Transformers), creating spikes in re-engagement, short term retention and percentage of paying users for unique event driven IAP's.Puzzle games will be an unstoppable force in VietnamPuzzle games have risen to dominate Vietnam’s gaming market, which saw a 17% YoY increase in IAP generated revenue, fueled by the shift to merge mechanics and genre blending. This evolution has broadened their appeal, attracting a wider audience. In 2025, puzzle games are set to continue their profitable trajectory, with developers fine-tuning monetization strategies and user acquisition approaches.Thanks to solid retention rates and strong ad revenue potential, puzzle games are positioned not just to maintain their dominance but to experience even greater growth in 2025, further solidifying their place as a powerhouse in the gaming industry.Growing maturity in Programmatic TV streaming will lead to greater accountabilityProgrammatic CTV is nearing maturity, with steady advances in available inventory, bid density, and measurement. AdExchanger notes that according to the IAB, about three-quarters of all CTV transactions have been programmatic in 2024, as advertisers sought greater scale, optimization, and ROI. Advertisers want to use their preferred demand-side platforms to find their customers on TV streaming platforms. In turn, these content distributors have responded by bringing more premium inventory to the biddable marketplace, along with the data and insights needed to enhance targeting and deliver more transparent and performant results.Waves of technology innovation—like clean rooms and data partnerships—have elevated reach and transparency in the TV streaming ecosystem, supporting programmatic growth. Advertisers now routinely require that data be applicable and akin across platforms. With this progression, the programmatic benefits marketers have yielded in digital and online video are now easily accessible on the TV screen. Broad availability and access to these benefits will put pressure on the major walled gardens in TV to become more transparent. A growing maturity means growing accountability. In 2025, we predict advertisers will demand to understand their streaming campaigns’ real contribution to marketing KPIs—and plan future investments accordingly.AI will redefine game design, offering personalized gameplay experiencesIn 2025, AI will revolutionize gaming, unlocking real-time, player-driven experiences such as dynamic content, adaptive levels, and storylines that evolve to match each player’s unique playstyle. At Block Blast!, we’re fully embracing AI to push the boundaries of game design and A/B testing, delivering more engaging and personalized experiences for our players.As AI continues to evolve, it will become an increasingly powerful tool for enhancing efficiency and unlocking groundbreaking development capabilities in the gaming industry. By combining creativity with cutting-edge technology, we’re not just envisioning the future of gaming—we’re actively creating it.Interested in more 2025 insights? Check out what Unity experts have to say in the second part of this blog series here:2025 Mobile gaming trends: Unity perspectives]]></description><link>https://unity.com/blog/2025-mobile-gaming-trends-industry-perspectives</link><guid isPermaLink="true">https://unity.com/blog/2025-mobile-gaming-trends-industry-perspectives</guid><pubDate>Tue, 07 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[2025 Mobile gaming trends: Unity perspectives]]></title><description><![CDATA[The mobile gaming industry experienced yet another transformative year in 2024, with the continuation of key trends and the emergence of new opportunities for growth in 2025. As Sensor Tower highlights in the industry perspectives part of this blog series, the mobile gaming industry is on the rise. According to Sensor Tower data, consumer revenue from the Apple App Store and Google Play Store exceeded 80 billion USD, representing a 4% increase from 2023. In 2024, apps surpassed games in install numbers, prompting developers to adopt monetization and user acquisition strategies similar to those used in mobile gaming while exploring new ad formats. Building on the success of past years, 2024 also saw exponential growth in the rewarded space, with even more growth anticipated in the year ahead. Ad quality was another big focus this past year, and we expect it to continue to be a key area in 2025 as developers implement new strategies for improving user experience.What else is in store for 2025? From strategic shifts in ad monetization to a resurgence of midmarket titles and the APAC market’s projected growth trajectory, Unity experts weigh in with predictions for the mobile gaming industry in 2025.Rewarded marketplaces will expand beyond games and mobileIn the last couple of years, the rewarded space has seen significant yet fragmented growth. More apps and networks are providing a rewards experience to developers and the users they serve. On the other side of this marketplace, more advertisers are recognizing the value of this channel and allocating more of their budget to this growing trend, creating a win-win for all stakeholders. As the market continues to mature in the year ahead, major players will solidify their positions and improve their offerings.Will this accelerated growth continue? As with most maturing markets, continued growth is likely, though it may be at a slower pace than before. As we approach 2025, expansion of the rewards space could shift further, with rewarded channels making a stronger move into non-gaming app segments. Additionally, while most opportunities today are largely app-based, we see growing interest around extending these opportunities to the web. As a result, the growth trajectory of rewarded marketplaces may extend into web assets in the coming year.More subscription apps will adopt ad-supported modelsIn 2025, several key factors will drive more subscription apps to incorporate ads as an additional revenue stream. Last year, market saturation and consumer price sensitivity contributed to diminishing returns on subscription models. At the same time, the potential for diverse and scalable income from ad monetization attracted more subscription-apps to integrate ads. Advances in ad personalization and better ad visibility make ad monetization even more appealing.Consumer preferences are also evolving. We’re seeing more consumers interact with ads in exchange for reduced subscription costs or extra features. Additionally, we expect to see more subscription apps adopt hybrid and freemium business models, both of which present greater opportunities for sustainable growth. As more apps integrate ads in the year ahead, consideration should be given to how best to preserve a positive user experience, ensure non-disruptive ads, and implement strong data protection.The resurgence of midmarket titles will bring an abundance of high-quality contentIn 2024, we’ve witnessed a notable resurgence in the development of “midmarket” PC and console titles, bridging the gap between prominent AAA blockbusters and minimalist indie releases. These mid-tier games often emerge from smaller studios who focus on delivering shorter, more streamlined experiences.Within a market that features both expansive franchises and retro-inspired indie hits, we’ve seen that this midmarket space encourages greater experimentation by focusing on niche genres or franchises. Many of these developers are prioritizing quality over sheer scale, knowing that gamers respond strongly to thoughtfully designed worlds and well-crafted content. I’m genuinely excited for 2025, when many of these titles are set to mature and release.Hybrid-casual game growth will reshape ad strategiesIn 2025, hybrid-casual games are expected to dominate the mobile gaming ad landscape with their unique mix of scale, quality, and diversity. Because of their ability to balance volume with attracting high-quality audiences, we’ll see hybrid-casual games solidify their position as a core advertising channel in the coming year.Continued hybrid-casual growth will reshape ad strategies. Advertisers will lean more heavily on rewarded video (RV) ads, which allow for longer, more engaging creative stories that perform better. Additionally, the variety of hybrid sub-genres, like puzzles, simulation, and action, will encourage advertisers to diversify their creative approaches, tailoring campaigns to the preferences of these high-value user bases. Looking ahead, hybrid-casual’s rise signals scalable, sustainable user acquisition opportunities for 2025 and beyond, driving innovation across the industry.Game developers in the APAC region will expand their global reachDevelopers in the APAC mobile gaming market are poised for remarkable growth and global influence in 2025. Currently, developers from China, Japan, and Korea are not only dominating their local markets, but they’re also capturing a significant share of the global mobile gaming landscape - a trend that will continue to gain momentum throughout the year ahead.Their innovative approaches, including cutting-edge game mechanics, immersive storytelling, and advancements in AI-driven gameplay, will continue to set new industry standards. We truly believe more and more developers will succeed in the global market in 2025.Implementing long-format playables to scaleIn 2025, long-format creatives could hold the secret to scaling, particularly in puzzle games. Videos of up to 60 seconds, or up to 120 seconds in some networks, are known to boost engagement. Standalone playables with more than 20 interactions, or 1-2 minutes of playtime, are also effective at increasing engagement. These long formats give users sufficient time to interact with the ads and become emotionally invested. Additionally, long standalone playables provide users with a clear goal, challenging gameplay, and enough time to experience core mechanics.Unlike shorter formats where users are directed to the store after a few clicks, long playables send users to download mid-game, after they're fully immersed in gameplay and are on the verge of completing a challenge or level. Re-engagement via level progression, a combination of mechanics, or a display of diverse game features is key to sustaining user interaction with these creatives. AI’s capability to generate a wide range of concepts can help ensure the experience remains engaging throughout the long format’s full timeline.Interested in more 2025 insights? Check out what industry leaders have to say in the first part of our blog series here:2025 Mobile gaming trends: Industry perspectives]]></description><link>https://unity.com/blog/2025-mobile-gaming-trends-unity-perspectives</link><guid isPermaLink="true">https://unity.com/blog/2025-mobile-gaming-trends-unity-perspectives</guid><pubDate>Tue, 07 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: 2024 in review]]></title><description><![CDATA[Wondering what games were Made with Unity in 2024? We've done our best to collate as many as possible. This is a long list, so we’ve attempted to categorize projects by genre (including Action, Comedy, Horror, Metroidvania, and Survival) to make it easier to parse. Hopefully, you can find something that inspires what you’re making or playing in 2025 and beyond.

If you want to dive into how some of these games were made, I recommend checking out this recent recap of dev stories.Made with Unity Steam Curator Page
We also launched our official Steam Curator page this year, be sure to check it out and let us know any games we've missed!Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in 2024, either into early access or full release. Add to the list by sharing any that you think we missed.ActionBatman: Arkham Shadow, Camouflaj (October 22)#BLUD, Exit 73 Studios (June 18)
Fight Crab 2, Calappa Games (February 13 – early access)Raw Metal, Team Crucible (March 19)Minishoot' Adventures, SoulGame Studio (April 2)Surmount: A Mountain Climbing Adventure, Jasper Oprel, Indiana-Jonas (May 2)Seal: WHAT the FUN, PLAYWITH GAMES Inc. (May 3 – early access)Nerobi, SANOBUSINESS S.R.L. (May 7 – early access)SMYS : Show Me Your Stairs, StarvingFox Studio (May 15)Pre Dusk, Okba Amrate (May 18)Unlanded, Eki-Eki-Eki (June 7)Perfect World, Michael Overton Brown (June 13)Astrodle, Robin Nicolet (June 19)Frogun Encore, Molegato (June 25)OutRage: Fight Fest, Hardball Games Ltd (July 16)Metal Slug: Awakening, Tencent (July 16)ONE BTN BOSSES, Midnight Munchies (August 6)Slash Quest!, Big Green Pillow, Mother Gaia Studio (August 15)CyberCorp, Megame (August 19 – early access)Dustborn, Red Thread Games (August 20)Insect Swarm, Parallel Portal (September 12)NanoApostle, 18Light Game Ltd. (September 12)Stardiver, Green Planet Games (September 12)Perennial Order, Gardenfiend Games (September 6)KILL KNIGHT, PlaySide (October 2)Bullet heavenDeep Rock Galactic: Survivor, Funday Games (February 14 – early access)Nordic Ashes: Survivors of Ragnarok, Noxfall Studios (April 26)Deathless: Survivors, OneTwoPlay (July 29 – early access)Defenders of the Omniverse, Babushka Entertainment (August 26 – early access)The Spell Brigade, Bolt Blaster Games (September 16 – early access)Vampire Hunters, Gamecraft Studios (October 30)NIMRODS: GunCraft Survivor, Fiveamp (October 28 – early access)Temtem: Swarm, Crema, GGTech Studios (November 13 – early access)Cards, dice, and deckbuildersLiar's Bar, Curve Animation (October 2 – early access)Dicefolk, LEAP Game Studios, Tiny Ghoul (February 27)Zet Zillions, OTA IMON Studios (May 23)Rune Gate, Devwind (June 6)Dice & Fold, Tinymice Entertainment (June 24)Dragon Eclipse, Fardust (June 24 – early access)Union of Gnomes, Hoolignomes (July 18 – early access)Rune Coliseum, Rafale Software (September 23 – early access)Breachway, Edgeflow Studio (September 26 – early access)DICEOMANCER, 超厚皮猪猪 Ultra Piggy Studio (October 10)Menace from the Deep, Flatcoon (November 11)Dungeon Clawler, Stray Fawn Studio (November 21 – early access)Deathless. Tales of Old Rus, 1C Game Studios (December 12)Casual and partyDEATH NOTE Killer Within, Grounding Inc. (November 5)Hamster Playground, Mass Creation (July 11)ODDADA, Sven Ahlgrimm, Mathilde Hoffmann (August 15)Mirth Melody, Clay Game Studio (August 15)Mika and The Witch’s Mountain, Chibig, Nukefist (August 21 – early access)Melobot – A Last Song, Anomalie Studio (September 16)Starstruck: Hands of Time, Createdelic, LLC (September 16)City and colony builderEndzone 2, Gentlymad Studios (August 26 – early access)Fabledom, Grenaa Games (May 13)Synergy, Leikir Studio (May 21 – early access)El Dorado: The Golden City Builder, Hobo Bunch, Gameparic (June 17)Go-Go Town!, Prideful Sloth (June 18 – early access)Dystopika, Voids Within (June 21)Nekokami – The Human Restoration Project, Rocket-in-Bottle (June 25 – early access)Preserve, Bitmap Galaxy (August 8 – early access)Mini Settlers, Knight Owl Games (August 8 – early access)MEMORIAPOLIS, 5PM Studio (August 29 – early access)Roots of Yggdrasil, ManaVoid Entertainment (September 6)Goblin Camp, Korppi Games Ltd (September 17 – early access)EcoGnomix, Irox Games (September 30)Citadelum, Abylight Barcelona (October 17)Worshippers of Cthulhu, Crazy Goat Games (October 21 – early access)Technotopia, Yustas (October 23)Overthrown, Brimstone (December 5 – early access)ComedyThank Goodness You’re Here!, Coal Supper (August 1)Inkulinati, Yaza Games (February 22)Fireside, Emergo Entertainment (June 4)They Can Fart, Les Crafteurs (June 18)Thought Experiment Simulator, HoHo Game Studio (July 22)RAWMEN: Food Fighter Arena, ANIMAL (July 23)Exhausted Man, Candleman Games (July 24)Just Crow Things, Unbound Creations (August 15)WHAT THE CAR?, Triband (September 9 – Steam release)Great God Grove, LimboLane (November 15)FPSI Am Your Beast, Strange Scaffold (September 10)Shady Knight, Alexey 'cptnsigh' (October 9)MULLET MADJACK, HAMMER95 (May 15)Anger Foot, Free Lives (July 11)SENTRY, Fireblade Software (March 25 – early access)CONVRGENCE, Monkey-With-a-Bomb (April 22 – early access)ROBOBEAT, Simon Fredholm (May 14)Fallen Aces, Trey Powell, Jason Bond (June 14 – early access)Histera, StickyLock Games (June 20 – early access)Zero Hour, M7 Productions, Attrito (September 9)Chains of Fury, Cobble Games (September 16)Wild Bastards, Blue Manchu (September 12)STRAFTAT, Sirius Lemaitre, Leonard Lemaitre (October 24)Devilated, Trunka (October 28)SULFUR, Perfect Random (October 28 – early access)420BLAZEIT 2: GAME OF THE YEAR -=Dank Dreams and Goated Memes=- [#wow/11 Like and Subscribe] Poggerz Edition, Normal Wholesome Games (November 14)Battle Shapers, Metric Empire (December 4)HorrorContent Warning, Philip, thePetHen, Skog, Zorro, Wilnyl (April 1)POOLS, Tensori (April 26)Crow Country, SFB Games (May 9)Mouthwashing, Wrong Organ (September 26)Sorry We're Closed, à la mode games (November 14)REVEIL, Pixelsplit (March 6)The Tower on the Borderland, DascuMaru (May 20)Imaginary Friend Asylum, Grant Marrs (May 20)Let Me Out, 4Happy Studio (August 8)Envelope, Skaar Game Productions, Numme (September 4)Hollowbody, Headware Games (September 12)Fears to Fathom –Woodbury Getaway, Rayll Studios (September 12)Grunn, Sokpop Collective, Tom van den Boogaart (October 4)Sniper Killer, Black Eyed Priest, Henry Hoare (October 17)Tormenture, Croxel Studios (October 21)I'm on Observation Duty 7, Notovia, Dreamloop Games (October 22)Fear the Spotlight, Cozy Game Pals (October 22)The Scourge | Tai Ương, Rare Reversee, Beaztek (October 23 – early access)The Hungry Fly, Erupting Avocado (October 23)CROWDED. FOLLOWED., NIGHT DIAL (October 24)Absolute Insanity, Chris Danelon (November 5)Angel Wings: Endless Night, RumR Design (November 6)Is this Game Trying to Kill Me?, Stately Snail (November 13)Enigma of Fear, Dumativa, Cellbit (November 28)Zort, Londer Software (December 7 – early access)Management and automationRusty's Retirement, Mister Morris Games (April 26)shapez 2, tobspr Games (August 15 – early access)Minami Lane, Doot, Blibloop, Zakku (February 28)FOUNDRY, Channel 3 Entertainment (May 2 – early access)Coffee Caravan, Broccoli Games (May 20)Galacticare, Brightrock Games (May 23)Rebots, FlatPonies (October 7)Amber Isle, Ambertail Games (October 10)Techtonica, Fire Hose Games (November 7)MetroidvaniaPrince of Persia: The Lost Crown, Ubisoft Montpellier (January 18)Ultros, Hadoque (February 13)Nine Sols, RedCandleGames (May 29)Momodora: Moonlit Farewell, Bombservice (January 11)Airhead, Octato, Massive Miniteam (February 12)Cosmic: A Journey Among Shadows, King's Pleasure (May 6 – early access)Arcane Assembly, Isaac Lee (May 17)Genopanic, Mobirate (May 17)Venture to the Vile, Studio Cut to Bits (May 22)Gestalt: Steam & Cinder, Metamorphosis Games (July 16)Bō: Path of the Teal Lotus, Squid Shock Studios, Christopher Stair, Trevor Youngquist (July 17)Frontier Hunter: Erza’s Wheel of Fortune, IceSitruuna (July 26)DEVIATOR, Gami Studio (August 1 – early access)Anima Flux, Anima Flux (October 7)AWAKEN - Astral Blade, Dark Pigeon Games (October 22)Voidwrought, Powersnake (October 24)Last Vanguard, Cool Tapir Studios LLC (November 5 – early access)Narrative and mystery1000xRESIST, sunset visitor 斜陽過客 (May 9)Harold Halibut, Slow Bros. (April 16)Phoenix Springs, Calligram Studio (October 7)Deep Beyond, Avix Games (May 15)Pine Hearts, Hyper Luminal Games Ltd (May 23)Duck Detective: The Secret Salami, Happy Broccoli Games (May 23)Tavern Talk, Gentle Troll Entertainment (June 20)Ghost Boy, Two Blackbirds (June 25)Vampire Therapist, Little Bat Games (July 18)The Operator, Silver Lining Studio (July 22)The Star Named EOS, Silver Lining Studio (July 23)Closer the Distance, Osmotic Studios (August 2)Farewell North, Kyle Banks (August 16)Copycat, Spoonful Of Wonder (September 19)Mexico, 1921. A Deep Slumber., Mácula Interactive (September 13)Chicken Police: Into the HIVE!, The Wild Gentlemen (November 7)Deathless Death, Dream Delivery Center (November 13)Loco Motive, Robust Games (November 21)Mercury Abbey, YiTi Games (November 22)PlatformerNeva, Nomada Studio (October 15)SCHiM, Ewoud van der Werf, Nils Slijkerman (July 18)Lorn’s Lure, Rubeki Games (September 20)A Difficult Game About Climbing, Pontypants (March 6)Anomaly Agent, Phew Phew Games (January 24)Unleaving, orangutan matter (March 27)Moen, Ambient Melancholy (July 12)Valley Peaks, Tub Club (July 24)Unrooted, 85 Plus Games (August 2)Max Mustard, Toast Interactive (October 16)Mind Over Magnet, Game Maker's Toolkit (November 13)Get To Work, Isto Inc. (December 2)Symphonia, Sunny Peak (December 5)Magenta Horizon - Neverending Harvest, Maddison Baek(Hellfire Railway Interactive) (December 6)Puzzle adventureLorelei and the Laser Eyes, Simogo (May 16)Please, Touch The Artwork 2, Thomas Waterzooi (February 19)Children of the Sun, René Rother (April 9)Paper Trail, Newfangled Games (May 21)CLeM, Mango Protocol (February 6)Snufkin: Melody of Moominvalley, Hyper Games (March 7)Botany Manor, Balloon Studios (April 9)Gift, Toydium, Million Edge (May 8)Ouros, Michael Kamm (May 22)Hauntii, Moonloop Games (May 23)The Abandoned Planet, Dexter Team Games (July 14)Linkito, Kalinarm (July 23)Été, Impossible (July 23)Slider, boomo (July 24)Arranger: A Role-Puzzling Adventure, Furniture & Mattress LLC (July 25)Ogu and the Secret Forest, Moonlab Studio, Sinkhole Studio (July 29)Leximan, Knights of Borria (August 13)Hidden Through Time 2: Discovery, Rogueside (August 13)PRIM, Common Colors, Application Systems Heidelberg (October 24)Little Big Adventure – Twinsen’s Quest, [2.21] (November 14)Roguelike/liteCaves of Qud, Freehold Games (December 5)Void Crew, Hutlihut Games (November 25)Shiren the Wanderer: The Mystery Dungeon of Serpentcoil Island, Spike Chunsoft Co., Ltd. (December 11)Windblown, Motion Twin (October 24 – early access)Oblivion Override, Humble Mill (January 24)BlazBlue Entropy Effect, 91Act (February 14)Spiritfall, Gentle Giant (February 28)Beat Slayer, ByteRockers' Games (April 4)Inkbound, Shiny Shoe (April 9)Rogue Voltage, Horizont Computergrafik(May 10 – early access)The Land Beneath Us, FairPlay Studios Co. Ltd (May 13)Gatekeeper, Gravity Lagoon (May 13 – early access)Never Mourn, Primal Seed (May 13 – early access)Terra Randoma, Deniz K. (May 23)Dragon Is Dead, TeamSuneat (June 7 – early access)Into the Emberlands, Tiny Roar (June 19 – early access)Sandwalkers, Goblinz Studio (June 19 - early access)GUNCHO, Arnold Rauers, Terri Vellmann, Sam Webster (June 25)Valefor: Roguelike Tactics, Valefor Ltd (July 19)Little Scavenger, CodeRed Studio (July 27)Towerful Defense: A Rogue TD, Mini Fun Games (July 29)Cubed and Dangerous, Ace High Arcade (August 1)snatch&swallow, megatouch (August 6 – early access)Loopstructor, Pone Games (August 8)Feed the Deep, Luke Muscat (August 16)StormEdge, Shieldbreaking Games (September 13)Shogun Showdown, Roboatino (September 5)Rogue Waters, Ice Code Games (September 30)Up to Par, It's Anecdotal (October 14)Elin, Lafrontier (November 1 – early access)Munch, Mac n Cheese Games (November 4)ShapeHero Factory, Asobism.Co.,Ltd (November 5 – early access)Ammo and Oxygen, Juvty Worlds (November 7 – early access)Atomic Picnic, BitCake Studio (November 7 – early access)RPGLast Epoch, Eleventh Hour Games (February 21)No Rest for the Wicked, Moon Studios GmbH (April 18 – early access)Another Crab's Treasure, Aggro Crab (April 25)Dread Delusion, Lovely Hellplace (May 14)FANTASIAN Neo Dimension, Mistwalker Corporation (December 5)Cryptmaster, Paul Hart, Lee Williams, Akupara Games (May 9)Three Kingdoms Zhao Yun, ZUIJIANGYUE Game (January 18)Stolen Realm, Burst2Flame Entertainment (March 8)Eiyuden Chronicle: Hundred Heroes, Rabbit & Bear Studios (April 23)Fay's Factory, egor dorogov (May 8 – early access)Plushie from the Sky, fishwind (May 6)Seablip, Jardar Solli (May 17 – early access)SKALD: Against the Black Priory, High North Studios AS (May 30)Vendir: Plague of Lies, Early Morning Studio (May 30)Zenless Zone Zero, miHoYo (July 4)Yaoling: Mythical Journey, RAYKA STUDIO (July 16 – early access)Dungeons of Hinterberg, Microbird Games (July 18)Minds Beneath Us, BearBoneStudio (July 31)Cat Quest III, The Gentlebros (August 8)Depersonalization, MeowNature (August 8)Realm of Ink, Leap Studio (September 26 – early access)Banquet for Fools, Hannah and Joseph Games (September 30 – early access)Sky Oceans: Wings for Hire, Octeto Studios (October 10)Drova - Forsaken Kin, Just2D (October 15)Reverse: 1999, BLUEPOCH GAMES CO., LIMITED (October 8)Metal Slug Tactics, Leikir Studio (November 5)Jujutsu Kaisen Phantom Parade, BILIBILI HK LIMITED (November 7)Void Sols, Finite Reflection Studios (November 12)ATLYSS, Kiseff (November 22 – early access)Neon Blood, ChaoticBrain Studios (November 26)Chrono Sword, 21cDucks co., Ltd. (December 6 – early access)SandboxBulwark Evolution: Falconeer Chronicles, Tomas Sala (March 26)Little Kitty, Big City, Double Dagger Studio (May 9)Shadows of Doubt, ColePowered Games (September 26)SUMMERHOUSE, Double Dagger Studio (May 9)Mirthwood, Bad Ridge Games (November 6)Mythwrecked: Ambrosia Island, Polygon Treehouse (December 5)Dustgrave: A Sandbox RPG, Innervoid Interactive (December 5 – early access)SimulationSupermarket Simulator, Nokta Games (February 20 – early access)TCG Card Shop Simulator, OPNeon Games (September 15 – early access)Brocula, Destroyer Doggo (May 9)Cozy Caravan, 5 Lives Studios (May 16 – early access)Rolling Hills: Make Sushi, Make Friends, Catch & Release, LLC (June 4)Everafter Falls, SquareHusky (June 20)Contraband Police Mobile, PlayWay SA (July 9)The Last Alchemist, Vile Monarch (July 12)Critter Crops, Skyreach Studio (July 22)Farlands, JanduSoft, Eric Rodríguez (July 24 – early access)The Crush House, Nerial (August 9)Crime Scene Cleaner, President Studio (August 14)Star Trucker, Monster and Monster (September 3)Critter Cove, Gentleman Rat Studios (September 10 – early access)Recycling Center Simulator, Balas Games (October 2)Old Market Simulator, Alcedo Games (October 3)Gunsmith Simulator, GameHunters (October 4)Extra Coin, CINIC Games (October 8)Fruitbus, Krillbite Studio (October 28)Dustland Delivery, Neutron Star Studio (November 5)Everholm, Chonky Loaf (November 11)Luma Island, Feel Free Games (November 20)Short Trip, Alexander Perrin (December 11)Sports and drivingTurbo Golf Racing, Hugecalf Studios (April 4)Heading Out, Serious Sim (May 7)Blacktop Hoops, Vinci Games (May 16)Motördoom, Hobo Cat Games (August 2)Phantom Spark, Ghosts (August 15)#DRIVE Rally, Pixel Perfect Dude (September 25 – early access)Stampede: Racing Royale, Sumo Digital (October 10)StrategyCataclismo, Digital Sun (July 22 – early access)Tactical Breach Wizards, Suspicious Developments Inc (August 22)Diplomacy is Not an Option, Door 407 (October 4)Thronefall, GrizzlyGames (October 11)Crab God, Chaos Theory Games (June 20)Solium Infernum, League of Geeks (February 22)Godsworn, Thunderoak Interactive (March 28 – early access)Songs of Conquest, Lavapotion (May 20)Dethroned, Irid Games (May 26 – early access)clickyland, Sokpop Collective (June 3)Emberward, ReficGames (June 25)Artisan TD, 4rtisans (July 22)ARC SEED, Massive Galaxy Studios (July 30 – early access)Operation: Polygon Storm, Toxic Studio (August 12)Toy Shire, Bluespy Studios (August 26 – early access)Mechabellum, Game River (September 26)Silence of the Siren, Oxymoron Games (September 30 – early access)Sainthood, Bisong Taiwo (November 1)Skill Legends Royale, ZGGame (November 4)Lost Eidolons: Veil of the Witch, Ocean Drive Studio, Inc. (November 5 – early access)Tower Factory, Gius Caminiti (November 7 – early access)Songs of Silence, Chimera Entertainment (November 13)SurvivalSons of the Forest, Endnight Games Ltd (February 22)Planet Crafter, Miju Games (April 10)V Rising, Stunlock Studios (May 8)7 Days to Die, The Fun Pimps (July 25)Core Keeper, Pugstorm (August 27)When the Light Dies, Electric Monkeys, Secret Level Studios (May 2 – early access)Carth, Deidre Reay Studios LLC (May 15 – early access)ASKA, Sand Sailor Studio (June 20 – early access)REKA, Emberstorm Entertainment (September 12 – early access)The Last Plague: Blight, Original Studios (October 3 – early access)Bad 2 Bad: Apocalypse, DAWINSTONE (October 30)I Am Future: Cozy Apocalypse Survival, Mandragora (November 13)That’s a wrap for 2024. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-2024-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-2024-releases</guid><pubDate>Mon, 30 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Celebrating Unity games this awards season]]></title><description><![CDATA[It’s December once again, which can only mean one thing – the video games award season is in full swing! Following the excitement of last week’s wins and reveals at The Game Awards, we wanted to round up some of the exciting news and the Unity games that have been honored at some recent events.Amid a slew of world premieres and new announcements at The Game Awards on December 12th, the team from 10 Chambers debuted a new trailer from their upcoming co-op heist FPS Den of Wolves. Rendered entirely in Unity 6, the heart-pounding video gave an exciting first look at gameplay from the highly anticipated project. Attendees at and around the event were also treated to a spectacular drone show, where images and scenes from the game were projected over the Los Angeles Convention Center.Other Unity developers were also present at the show, with Nómada Studios taking home the Games for Impact Award for Neva, Camouflaj winning Best VR Game for Batman: Arkham Shadow, and Ubisoft Montpellier’s Prince of Persia: The Lost Crown winning the award for Innovation in Accessibility. Congratulations to all the winners and nominees!The Golden Joystick Awards kicked off the season last month, announcing their winners on November 21st. After tallying over 12 million public votes several of the prestigious prizes were taken home by made with Unity games including Best Indie Game (Self-published) for Another Crab's Treasure, Still Playing Award (Mobile) for Honkai: Star Rail, and Best Early Access Game for Lethal Company.This October, we also hosted the Unity Awards Showcase, our first-ever awards livestream where we highlighted Unity creators around the world and celebrated their inspiring achievements across games, Asset Store tools, community, education, social impact, and industry applications. Narrowing down the winners from over 160 nominees across 22 awards was no easy feat, and we truly appreciate everyone who took the time to nominate games and vote for the winners.Golden Cube: COCOON by Geometric Interactive | Annapurna InteractiveBest Desktop/Console: Super Mario RPG by NintendoBest 3D Visuals: Prince of Persia: The Lost Crown by Ubisoft MontpellierBest 2D Visuals: Cat Garden by msgsquare | DAERI SOFTBest Mobile: Hello Kitty Island Adventure by SunblinkBest Multiplayer: Party Animals by Recreate GamesMost Anticipated: Hollow Knight: Silksong by Team CherryBest AR/VR: Assassin’s Creed Nexus VR by Red Storm Entertainment | UbisoftBest Artistic Tool: COZY: Stylized Weather 3 by Distant LandsBest Artistic Content: Stylized Nature by HivemindBest Development Tool: Gaia Pro 2023 – Terrain & Scene Generator by Procedural WorldsPublisher of the Year: NatureManufactureBest Tutorial Series: Code MonkeyBest Devlog Series: SamyamBest Livestreamer: The Game Dev ShowBest Training Application: Virtual Hangar by Mass VirtualBest Embedded System Project: MB.OS by MercedesMost Innovative Customer Experience: AR Tryout by KohlerInnovation Award: H-Meta Automation of VWMS 3D Logistics Operation/Measurement Technologies based on Meta Factory Environment by Hyundai Motor CompanyYouth Creators Award: OriPal by Spes😊DojoBest Student Project: The WereCleaner by USC GamesBest Social Impact Project: Crab God by Chaos Theory GamesOf course, there are many awards still to be announced as we move into 2025, and we'll keep celebrating all the Unity games and creators that are nominated and win big at these future events. In the meantime a heartfelt congratulations to our incredible community of developers, creators, and players alike. See you in 2025!]]></description><link>https://unity.com/blog/celebrating-award-winning-unity-games</link><guid isPermaLink="true">https://unity.com/blog/celebrating-award-winning-unity-games</guid><pubDate>Wed, 18 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[It’s a wrap: 2024 technical content roundup]]></title><description><![CDATA[A few years ago, we created our first 100+ page e-book on performance optimization for mobile games, and quickly followed up with a similar guide for PC and consoles. We wanted to share the insights and general best practices from Unity support engineers who have worked on numerous Unity games with the rest of the community.From the start, our aim was to publish a collection of in-depth guides to cover major themes, from graphics rendering with the SRPs, to 2D development, visual effects, writing clean code with C#, implementing programming design patterns in your projects, and architecting with ScriptableObjects.So far, we've published more than 35 free e-books, over 40 video tutorials, 8 sample projects, and 50+ articles to help programmers, artists, technical artists, and game designers work as efficiently as possible with Unity. You can find all of these resources on unity.com/how-to. Our main focus in 2024 has been on updating many of these resources to Unity 6 so you can get the most out of the latest release. We’ll continue to release Unity 6 versions of the e-books and samples in 2025. As we’re about to wrap up the year, we want to thank everyone who provided feedback along the way. Now let’s take a quick look at some of the technical content from 2024 that we hope you’ll find helpful.From tips to increase productivity in Unity 2022 LTS, to our first-ever guides on DOTS and multiplayer networking, updated best practices e-books for performance optimization across many platforms in Unity, and actionable examples for game programming patterns, here are some of the highlights for programmers in 2024:Technical e-book: Introduction to the Data-Oriented Technology Stack for advanced Unity developersSample project: Level up your code with design patterns and SOLIDVideo tutorials: Game programming patterns YouTube playlistFrom instructions for working with URP in Unity 2022 LTS and Unity 6, to creating advanced visual effects using the VFX Graph, as well as comprehensive guides to creating animations, and mixed and virtual reality experiences in Unity, here are some of the highlights for artists, technical artists, and game designers in 2024:Technical e-book: The definitive guide to animation in UnitySample project: Gem Hunter Match - 2D Sample ProjectVideo tutorial: Deep dive into the HDRP water systemWe want to continue helping your team work effectively with versioning, managing your builds, and keeping track of your assets. In 2024 we’ve updated our guide and video tutorials for version control and project organization. Here are the highlights:Technical e-book: Best practices for project organization and version control (Unity 6 edition)Video tutorial: Getting started with Unity Version ControlVideo tutorial: A quick guide to the Asset Manager in UnityAs a reminder, you can watch all the tutorials in this YouTube playlist: Unity Tutorials: Create Games in Unity.We hope you find the e-books, sample projects, tutorials, and Discussions articles helpful in your day-to-day work in Unity. We'll be developing more resources in the coming months in 2025.Be sure to bookmark this link to easily access all the upcoming learning content.Thank you for reading. See you in 2025!]]></description><link>https://unity.com/blog/2024-technical-content-roundup</link><guid isPermaLink="true">https://unity.com/blog/2024-technical-content-roundup</guid><pubDate>Wed, 18 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Spotlight on mobile game growth: 2024 customer successes and insights]]></title><description><![CDATA[2024 was a monumental year for studios of all sizes in the gaming and app industry. Our customer stories highlight the achievements of these studios, while our industry reports and trend pieces provide data-driven insights to help studios of all sizes inform their growth strategies.Let’s dive into the customer success stories, reports, and articles that helped shape the state of game growth throughout this past year.
Reports and trends:We tapped into a wealth of data to compile 2024’s reports, trends, tips, and thought leadership from Unity experts, to help inform game or app growth strategies.The 2024 Mobile Growth and Monetization ReportAdapting to market and industry changes is challenging, but understanding trends and benchmarks for user acquisition (UA), in-app purchases (IAPs), and in-app advertising (IAA) can help teams optimize and grow their games.In 2024, we found that global ad engagement increased 3.2% year-over-year. Since economic challenges make it difficult for some users to pay for IAPs, ads offer a great alternative to access in-game content, making them valuable to both the player and the studio alike. The report also shows that users who engage with offerwalls have 2–7x higher retention than non-offerwall users.Mobile gaming trends in 2024In January, we published our top trends for mobile gaming in 2024 and had Unity experts weigh in on what they thought would be the biggest opportunities this year. We discussed everything from how AI can improve creativity, the rise of hybrid-casual games, puzzle genre’s year of continued success, and more. Even if they are 2024 predictions – many of these trends we’ll see well into 2025.Advertisers playbook to win the 2024 holiday seasonUnity surveyed 4,094 U.S. adults aged 18+ to uncover insights that can help your brand land on the nice list this year. With many having more downtime over the holiday season, 37% of Gen Z expect to increase their playtime during the holidays, while 29% of Millennials feel the same way – with 13% of respondents saying they’ll likely play for 5 or more hours a day, making the holidays a prime season to engage with players.Helpful tips for sustained app growth:Implementing ads without cannibalizing subscription conversionsAs premium subscription service apps expand their business models to include ad-based tiers, they must implement ads strategically to avoid cannibalizing subscription conversions. We dove into how a subscription based app might go about this, by strategically using various ad formats, and segmenting users based on factors like region, mobile device model, and more.Addressing addressability: How brand marketers can adapt their mobile programmatic strategyATT and cookie deprecation signifies more than just a technological shift – it challenges mobile advertising marketers to adapt their strategies to reach consumers in-app. By leveraging first-party data, exploring alternative ID solutions, and segmenting non-addressable users based on contextual information, marketers can be successful in this new environment.How Nexters increase ad engagement by 73% with Unity’s ad consultancy teamNexters partnered with Unity’s ad consultancy team to optimize their rewarded video placement strategy for their hit game, Hero Wars. By implementing their recommendations, Nexters saw a 73% increase in engagement rate, and 59% increase in daily engaged users. See how the teams collaborated on strategy to get these winning results.Customer success stories:Discover the studios that soared to new heights over the last year.User Acquisition success stories:Kwalee improves D0 Ad Revenue ROAS by 22% with Unity AdsKwalee’s commitment to pushing the boundaries of what's possible in gaming and their team of skilled professionals, like Head of Growth Alexey Gusev, are key to bringing great players to fun games. Gusev shares how his team used D0 Ad Revenue ROAS campaigns from Unity Ads to boost profits and expand to new markets.How Lihuhu increased average install CVR by 15% (and ARPDAU by 10%!)In a competitive mobile genre like match-three, how can a studio rise to the top? By identifying the right type of user acquisition (UA) campaign optimization, providing rewarded ads to help player progression, and leaning into in-app bidding, Lihuhu created a continuous cycle of game growth in order to reach the top of the match-three genre.How Audiomack uses Unity LevelPlay to scale up globallyWe sat down with Dave Edwards, Chief Revenue Officer at Audiomack, to learn how working with the team at Unity LevelPlay helped them scale efficiently in global markets with tools like the Unity Ads bidder and A/B testing tool.Monetization success stories:How Pocket FM boosted revenue 20%Pocket FM Corp., a studio known for its popular audiobook app Pocket FM, wanted to monetize their non-paying users and decided to implement a hybrid monetization strategy. We met with Sujit Jha, their Senior Product Manager to understand how incorporating ad formats and the offerwall (a rewarded marketplace) into their app successfully boosted both their revenue and retention by 20%.How LBC Studios boosted ARPDAU 37%LBC Studios sought to boost revenue for their hit game, Hempire, and partnered with the Unity LevelPlay team to optimize their rewarded video strategy and A/B test video capping rates. Gene Park, Director of Marketing at LBC Studios shares how they boosted ARPDAU by 37%.Qcplay increased ad ARPDAU 29%Qcplay’s idle-RPG game, Super Snail, needed further ad monetization optimization and user engagement in order to grow efficiently. We met with Yifei Wang, Operation Manager, at Qcplay to understand how the Unity Ads bidder helped increase ad ARPDAU by 29%.How OK Cashbag boosted revenue with Unity LevelPlay and the Tapjoy offerwallOK Cashbag had two goals for their app: build a more comprehensive monetization strategy while maintaining, and even improving, their users’ experience. Implementing rewarded video ads and the Tapjoy offerwall helped the studio boost quarterly revenue by a staggering 288%, and eCPM by 270%.How CashWalk increased revenue by 225% and engagement rate by 5xCashWalk, an app based out of Korea, lets you earn rewards for walking or running, which can be exchanged for gift cards from leading brands and products. Looking to increase revenue and engagement, the team turned to the experts to scale their business.Learn how Jungsin Park, CEO of CashWalk, increased revenue by 225% and engagement rate by 5x for the app working with Unity LevelPlay and Unity’s app design consultancy.Tapjoy from Unity’s offerwall success stories:Crazy Maple Studio exceeded their D7 ROAS goal by 150% and drove 120% higher LTVWe met with Yana Kong, UA lead at Crazy Maple Studio to understand how implementing a Daily Reward CPE campaign on the Tapjoy from Unity’s offerwall drove incremental scale, with 50% growth in installs, and a 120% lift in user LTV compared to users acquired from video UA channels.How Appynation multiplied iOS revenue 9x and increased Android revenue 2x – without cannibalizing IAPAppynation, a UK-based mobile game developer and publisher, aimed to increase revenue and boost conversions for their puzzle game Picture Cross. By implementing the Message to Earn feature on the offerwall, iOS revenue increased by 9x, and Android by 2x.How King drove incremental scale with Daily Rewards, exceeding their D7 ROAS goal by 1.5xHaving used the Tapjoy from Unity offerwall for several years, King was seeking to further optimize the channel to drive incremental scale and ROAS. The team turned to Tapjoy’s Daily Rewards CPE campaigns to help drive user engagement, and in turn, boosting their D7 ROAS goal.How Lotte Members boosted ad revenue and increased eCPM 10xHyohun Jung, Team Leader, Digital Marketing Business Team at Lotte Members, explains how implementing the offerwall maximized their monetization strategy, boosting ad revenue 20x and increasing eCPM 10x.Programmatic success stories:In the competitive world of advertising, making your brand stand out and drive engagement can be challenging. Over the past year, we collaborated with brands to realize their campaign visions through programmatic solutions, resulting in being shortlisted for five prestigious award nominations from Digiday, MediaPost's OMMA, and AdExchanger, as we helped clients engage new users globally.Maniko Nails programmatic: The easiest manicure in the world meets mobile gaming audiencesA finalist in both Adexchanger Awards and OMMA Awards, the Maniko Nails case study is a prime example of standing out in a crowded market by leveraging innovative programmatic mobile marketing strategies.By collaborating with Kayzen and Unity, Maniko was able to tap into the highly engaged mobile gaming audience and implement a full-funnel attribution solution. This approach allowed them to effectively reach and retarget potential customers, showcasing their unique product benefits through memorable ad experiences. The results generated 13.6M impressions and sent 1.9M unique users to Maniko's e-commerce site.It’s been a whirlwind of a year, and we’re honored to share these success stories and insights that can encourage your game growth for years to come.]]></description><link>https://unity.com/blog/2024-roundup-spotlight-mobile-game-growth</link><guid isPermaLink="true">https://unity.com/blog/2024-roundup-spotlight-mobile-game-growth</guid><pubDate>Tue, 17 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Beyond gaming: 2024’s biggest XR innovations across industries ]]></title><description><![CDATA[In 2024, extended reality (XR) technology continued to gain momentum across industries, transforming how businesses operate, innovate, connect with consumers, and deliver value. From immersive virtual retail showrooms to precision-driven manufacturing simulations, XR is proving to be a critical enabler — unlocking new opportunities for engagement, efficiency, and extraordinary customer experiences.Groundbreaking applications of XR technology are delivering tangible results across industries in areas like automotive design, healthcare innovation, and beyond. As adoption accelerates, XR is poised to become a foundational element of business strategy, positioning forward-thinking organizations at the forefront of industry transformation.These standout industry stories of 2024 highlight how leading enterprises are harnessing the power of next-generation immersive technology to push boundaries and solve real-world challenges—streamlining operations, optimizing efficiency, increasing productivity, enhancing customer experiences and trust, and creating meaningful connections with their audience.Whether you're curious about the future of immersive technology in retail or how extended reality is revolutionizing manufacturing and healthcare, or delivering measurable ROI for the aviation and automotive industry, this article will provide insights from the cutting edge of innovation.The rise of AR and VR across industriesAugmented reality (AR) and virtual reality (VR) technologies are already proving to be game changers for industries like healthcare, automotive, manufacturing, retail, and beyond. Extended reality (XR), which encompasses the whole spectrum of reality technologies, is not just a small shift, it's a sea change in how businesses create, design, and interact with their digital spaces.In healthcare, for example, it has an unprecedented and life-changing impact that ranges from improving patient outcomes to surgical robotics simulations, and 3D anatomical visualizations as proven in incredible medical success stories such as VirtaMed.This comprehensive article explores how AR and VR are transforming how we experience products and services, streamline operations, and help us innovate in everything from manufacturing and shopping, to cars, shipping, and construction.It explores the measurable outcomes of adopting XR technologies and looks at inspiring case studies and exciting customer success stories from across industries such as:Mazda and Unity: Pioneering a new future for automotive cockpit HMICincinnati Children’s Hospital: Innovating surgery planningGucci Ancora: Immersive Experience for Gucci ProspettiveHow Camille Fournet creates immersive shopping experiencesImproving sales with Bosch Rexroth’s virtual showroomMaking ports safer with simulation trainingHow Carl’s Jr. uses immersive tech to reinvent facility operationsTravancore Analytics: Elevating forklift training with virtual realityHow BMW is leveraging Unity to open up new dimensions for the driving experienceThe BMW Group has always been a trailblazer when it comes to pioneering digital innovations in the automotive industry. This past decade in particular, they have made some incredible strides in delivering superior engine performance and creating elevated driving experiences. Now, they are pushing the envelope even further by bringing AR to their vehicles.In this interview feature, BMW research engineers Manfred Pauli and Wolfgang Haberl shared their vision for the future of driving, how BMW is transforming the in-vehicle experience with AR, and how Unity is engrained throughout their product lifecycle, enabling them to create novel immersive experiences and tools such as designing heads-up display graphics.They also provide a sneak peek into 2025 and the anticipated launch of a new user interface with the BMW Panoramic Vision in series vehicles.How extended reality reinvents the factory floorAdvancements in XR, the broad category of technologies that includes VR and AR, are reshaping the manufacturing landscape and revolutionizing industrial processes. XR solutions offer unprecedented 3D visualization and contextual depth. By integrating XR into their operations, leading manufacturers and equipment suppliers are future-proofing their workflows, transforming sales operations, and streamlining testing processes. It’s become an indispensable tool for companies looking to maintain a competitive edge.This article explores how Unity Industry is helping manufacturers create practical and cutting-edge XR applications for their workforces and deep dive into industrial use cases such as AR inspection toolkits, AI robotics simulations, collaborative VR maintenance, AR technical training, and virtual product showcases.Also, check out this e-book that deep dives into 8 manufacturing processes improved with AR,VR and MR.3 developer strategies to boost customer engagement with XRImmersive customer experiences have powerful implications for not only specialized products but across industries such as retail and automotive — think virtual showrooms and driving simulators. Virtual showrooms, in particular, allow businesses to showcase a diverse range of products without the need to ship physical demonstrator models, significantly minimizing costs and the need for on-site visits. This approach not only enhances customer engagement but also streamlines sales operations by providing versatile, on-demand opportunities for product demonstrations, even in remote settings.Analysts predict that the global XR market could top $1.9 trillion (USD) by 2032, fueled by consumer’s online shopping trends and growing appetite for ‘try-before-you-buy’ approach, and the increasing affordability of virtual technology. There is no better time to invest in developing immersive customer experiences as this is an increasingly competitive, innovative, and lucrative field.The simplest immersive customer experiences only require a smartphone or tablet, but modern 3D development frameworks can also be used to build robust virtual reality applications that expand marketing touchpoints. In this blog post, we share the top strategies for unlocking the potential of these technologies, and how leading enterprises like Audi and Volvo are reaping unprecedented dividends by embracing XR in the automotive industry.XR training for logistics, travel, and transportationNow that consumer-grade VR headsets and mobile devices come equipped with LiDAR emitters and multispectral cameras, it is more cost-effective than ever to digitize real-world settings in high fidelity. This opens the door for new opportunities in logistics and transportation, where immersive training scenarios are already providing first-hand experience with complex processes and safety skills.The technology used to build interactive games is revolutionizing transportation industries around the world. XR training offers a safer, smarter way to upskill teams that improves skills retention outcomes and accelerates continuous development at scale.In this article, we learn about the myriad benefits of using XR in training contexts, and explore real-world success stories from expert developers in travel and logistics such as engineers from KLM Royal Dutch Airlines XR Center of Excellence and how they leveraged Unity’s Pixyz plugin.
With Unity Industry the possibilities are limitlessUnity Industry combines the Unity Editor’s real-time 3D toolkit and dynamic rendering pipelines with industry-leading data ingestion and ongoing Industry Success support to facilitate your digital transformation. The included Pixyz Plugin can parse over 70 file types, including CAD and BIM, with options for dynamic mesh tesselation and polygon decimation that make it easy to develop XR apps with 3D data.]]></description><link>https://unity.com/blog/2024-industry-xr-innovations</link><guid isPermaLink="true">https://unity.com/blog/2024-industry-xr-innovations</guid><pubDate>Mon, 16 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Google Play Indie Games Fund 2024 - Games Made with Unity]]></title><description><![CDATA[Google Play’s annual Indie Games Fund for LATAM is back with $2 million in funding and hands-on support to empower Latin America’s brightest game creators. Designed to uplift small studios, this program offers not only financial backing but also expert guidance and technical resources, ensuring developers can bring their creative visions to life. For the last two years, Unity has partnered with Google to provide expert guidance and support to the winners, with last year’s crop including, My Zombie World, Wind Peaks, Slash Quest, Legend of the Skyfish 2, Lonesome Village, Fighters of Fate: Card Duel, and Golazo!This year, every winning game was crafted with Unity, and we’re excited to continue offering the same support to these teams.Latin America is rapidly emerging as a hub for innovative and culturally rich gaming experiences, and the Indie Games Fund is one of many outlets to amplify those voices on a global stage. With the 2024 winners leading the charge, these games are proof of the extraordinary talent in the region—and a testament to the boundless possibilities for indie developers in LATAM and beyond.Chessarama, Minimol Games (Brazil)Planet Cube: Edge, Sunna Entertainment (Costa Rica)The Lullaby of Life, 1 Simple Game (Mexico)Dicefolk, Leap Game Studios (Peru)Play Together TV, Plot Kids (Brazil)Astrea: Six-Sided Oracles, Little Leo Games (Brazil)Just King, VISH GAME STUDIO (Brazil)Running Fable, Seashell Studio (Mexico)Dandy Ace, Mad Mimic (Brazil)Greak: Memories of Azur, Navegante (Mexico)Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project. Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/google-play-indie-games-fund-2024-winners</link><guid isPermaLink="true">https://unity.com/blog/google-play-indie-games-fund-2024-winners</guid><pubDate>Mon, 16 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Breaking down Match Triple 3D: What game developers can learn from Lihuhu’s monetization strategy]]></title><description><![CDATA[With over 10 million mobile downloads, Lihuhu’s Match Triple 3D sets the standard in the puzzle game genre - particularly for its winning monetization strategy.Lihuhu has a multifaceted growth strategy that has consistently included one key element: consulting with experts. Lihuhu has partnered with Unity’s Game Design & Revenue Consultancy, making data-informed tweaks to Match Triple’s 3D’s to optimize its monetization setup.Arjun Gohil, Senior Game Analytics Consultant, shares some of the most important ingredients to Match Triple 3D’s continued success. Let’s dive in.Match Triple 3D’s game strategy, in a nutshellLihuhu’s Match Triple 3D is a classic Match-3 game with a twist: not only are players matching items, they’re also tasked with cleaning up toys in a house. The game utilizes a simple core loop - players collect the toys in groups of three, then advance to the next level once the room is tidy.Match Triple 3D players are motivated by the satisfaction of making matches and cleaning each room. As levels grow more complex, players get to face new challenges and continually prove their matching skills.Monetization overviewTo monetize their players, Match Triple 3D uses a hybrid monetization model, featuring in-app purchases like coins and boosters, and ad formats like rewarded videos and interstitials.After completing each level, players receive in-game currency (coins), which they can use to purchase boosters. But as players progress to more challenging levels, they often need extra resources to advance. In Match Triple 3D, they have two options to get extra resources: make an in-app purchase or watch a rewarded video ad. This way, Lihuhu can monetize both their paying and non-paying players.Let’s get into the deeper breakdown, starting with Lihuhu’s ad placements and how they complement the core loop.Building a player-oriented ad strategyWhen it comes to monetizing any game, player engagement leads to profitability. By focusing on retention and creating a positive experience, players will naturally want to play - and revenue will naturally grow.To ensure players have a great in-game experience, ads should complement a game’s core loop. Here's how Lihuhu puts this into practice.
Minimizing churn through player revivalMatch Triple 3D excels at offering ads exactly where you’d expect them: at the end of the core loop. For example, since puzzle games tend to have long levels, some players run out of lives before completing a level. To prevent any player churn, Lihuhu uses an essential placement: revival rewarded videos.Each and any time a player loses their lives in the game, they are presented with a simple offer: watch this ad to “revive” yourself and stay in the game. It’s a win-win - players don’t have to lose their hard-earned spots in the game, and Lihuhu can minimize churn.In fact, Lihuhu takes an extra step to maximize their revenue potential: If players want to continue playing the game but don’t want to watch an ad, they can spend 100 coins to skip it.Placing interstitials at player-friendly momentsWhile interstitials are key for a winning monetization strategy, they should be placed very carefully to maximize retention. Initially, Lihuhu placed interstitials very early in the Match Triple 3D experience, but this might cause players to think the game is very ad-heavy, and even lead to player dropout. But churned players might not need to be monetized through ads - perhaps some churned players will become payers at a later point in their game experience.To ensure a positive in-game experience and minimize dropout, we recommend not placing interstitials in the first week or two of the game experience. The ideal timing depends on the game genre - casual game developers can wait just a week to use interstitials, but RPG and simulation games tend to have longer onboarding periods, so those developers should wait a full two weeks.Demonstrating the benefits of in-app purchasesIn addition to ads, in-app purchases are an essential element of Match Triple 3D’s game experience. Let’s explore how Lihuhu maximizes revenue by familiarizing players with their in-app purchases: boosters.Offering a free booster experienceWhile using boosters is the fastest way to advance in Match Triple 3D, many players hesitate to pay for them. That’s why Lihuhu implemented an intuitive strategy - when they introduce players to boosters, they gift one free booster.Imagine that a player is struggling to finish a level, but they’ve received a free magnet booster that automatically makes 3 matches. This free booster can significantly accelerate the player’s progress, empowering them to continue playing the game and finish the level.According to our data, players who get to experience a booster are more likely to actually purchase a booster later on - especially if they run out of in-game currency. This ability to turn players into payers is a game changer for any monetization strategy.Signposting important and new featuresMobile games have a very broad audience, including people who don’t consistently play mobile games. That means developers should create a straightforward and intuitive onboarding experience. For example, to simplify Match Triple 3D’s onboarding, we suggested that new players skip the main menu and automatically get started with level one.We also recommend spoon-feeding, or signposting, each new feature to users - even if it requires pausing the game (e.g. “Drag this”, “Tap here”). To build an optimized monetization strategy, signposting is especially important for in-app purchases. After all, if players don’t have a clear understanding of how in-app purchases work, they aren’t as likely to make them.Shifting between easier and harder levelsWhen configuring their games, many developers tend to make their difficulty curve linear, so each level is slightly more challenging than the last. In theory, this is a great strategy, and one that Lihuhu has utilized in the past, but as each level becomes more challenging, developers are likely to see a dropoff in players. Why? A steep difficulty incline doesn’t necessarily feel rewarding, which creates a less positive player experience.That’s why we suggested that the difficulty of each Match Triple 3D level should vary. For example, instead of starting with four easy levels, then jumping to a difficult level five, we recommend a different setup - three easy levels, two harder levels, then another easier level. This way, the game progression isn’t predictable - players can continually experience the highs of completing levels and the excitement of facing new challenges.From a monetization perspective, we call these “sinks and sources.” During sinks, or harder levels, players are more inclined to watch an ad/make a purchase - then, during sources, or easier levels, players can quickly make up their currency. There should be a tug-of-war between sinks and sources, so developers like Lihuhu can keep the game engaging over time while also maximizing revenue.Note: The sinks and sources data was collected in the third quarter of 2023.
Ultimately, by continually measuring, analyzing, and tweaking their monetization strategy with Unity's Game Design & Revenue Consultancy, Lihuhu’s Match Triple 3D exemplifies what it means to go beyond a standard monetization strategy, maximizing engagement and growth.
]]></description><link>https://unity.com/blog/breaking-down-match-triple-3d</link><guid isPermaLink="true">https://unity.com/blog/breaking-down-match-triple-3d</guid><pubDate>Thu, 12 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[ Mobile Gaming’s Shift from Hyper to Hybrid-Casual Games]]></title><description><![CDATA[In the State of Play series, we share in-depth interviews with featured industry experts at Unity events.In our first interview, we sat down with Samantha Benjamin, Director of Growth and LiveOps at Supersonic from Unity. At Appfest 2024, Samantha analyzed mobile gaming’s industry-wide shift from hyper-casual to hybrid-casual games. Here, she shares her insights into the trends that brought about the transition, what the shift means for both publishers and advertisers, and Supersonic’s approach to both defining and publishing hybrid-casual games.1. What is the current state of the hyper-casual market and how did we get here?The hyper-casual market has seen significant growth since its emergence around 2016. It was once a fast-growing genre, bringing in a huge number of new players and offering advertisers massive volumes of ad inventory. However, as of 2022-2023, it faces a decline in installs and market interest.This slowdown is attributed to factors such as post-COVID economic adjustments, rising user acquisition (UA) costs, and diminishing eCPMs. As advertisers face more competitive markets and declining returns, hyper-casual’s once-dominant position has been challenged. Despite these challenges, it still accounts for around a third of mobile gaming ad impressions, which shows its lasting importance as a supply source.2. How has hyper-casual contributed to the current state of the mobile gaming and app ecosystem?The hyper-casual genre played a pivotal role in bringing new players into the mobile gaming ecosystem. By offering easy-to-understand gameplay and high marketability, it effectively acted as a "funnel" for converting non-gamers into mobile gamers. Furthermore, hyper-casual helped expand the ad ecosystem by generating a massive volume of impressions that advertisers could buy. This expanded supply helped major gaming studios diversify their UA strategies, reaching users more effectively through ad-supported apps.3. As you mentioned, UA is highly competitive today. But eCPMs are still rising. What has contributed to this and what can we take from this trend?The rise in eCPMs is largely due to the maturing ad networks and improvements in their data science and optimization algorithms. As the mobile gaming industry faced challenges such as privacy restrictions and rising costs, networks focused on improving targeting precision, ad placements, and data analytics. This optimization has allowed for better monetization, even in a more competitive environment.For us, the key takeaway is that while UA costs are higher, we now have the tools and models to maximize revenue potential by making better use of the available inventory and targeting the right user segments more efficiently.4. How have the changes in CPI rates affected game publishers and studios?As CPI rates have risen, publishers and studios have been forced to adapt by increasing their focus on lifetime value (LTV) and retention. With higher UA costs, studios now need to ensure they can generate sufficient revenue from users over a longer period. This has led to greater adoption of hybrid monetization models and a focus on optimizing the user experience to improve engagement and monetization. And as a result a new mobile game genre has emerged, hybrid-casual.5. How does Supersonic define a hybrid-casual game?At Supersonic, we see hybrid-casual games as a combination of the mass appeal and marketability of hyper-casual games with the deeper, more engaging gameplay and content usually affiliated with casual games. Hybrid-casual games usually offer a balance between ad-based monetization (IAA) and in-app purchases (IAP), with IAP becoming a significant revenue stream.For us, a hybrid-casual game must appeal to a broad audience while also providing enough complexity to retain and monetize users long-term. It integrates mechanics and monetization strategies from both the hyper-casual and casual game genres.6. How does Supersonic evaluate the success of a hybrid-casual prototype in terms of both its UA and monetization?When evaluating a hybrid-casual game prototype, we focus on several key metrics:User Acquisition: Strong marketability and a good CPI-to-LTV ratio are critical. The game should have a broad appeal and show potential for scale.Monetization: We assess both IAP and IAA performance. The game should show healthy IAP conversion rates and a mix of monetization strategies (e.g., rewarded ads, interstitials, and in-app purchases).Engagement: Retention metrics (especially Day 7) and user engagement (e.g. session length, playtime) are key to assessing long-term potential.Balance: A successful prototype will offer a balanced monetization strategy, where ads and in-app purchases co-exist without cannibalizing each other."Hybrid-casual games represent the future of mobile gaming, providing publishers and studios with the ability to scale their games more sustainably."7. How long does it typically take to create a hybrid-casual game and what kind of resources are required?Typically, the development time for a hybrid-casual game is longer than a hyper-casual game - taking around 12-18 months from initial concept to launch, as the game requires more complex mechanics and content.Additionally, you also have to balance the game economy to effectively create pressure points to monetize users through IAP and ad offers. So, a strong development team is required to handle the core gameplay and complex monetization mechanics as well as balance the game’s economy.8. How does Supersonic optimize and iterate on hybrid-casual games?We apply a rigorous testing and iteration process for hybrid-casual games that includes constant A/B testing and retention and engagement optimization, particularly for Day 7 and beyond. We also employ creative iterations for UA and data-driven adjustments to improve monetization models.9. How do creative strategies differ for hybrid-casual games compared to hyper-casual?Creative strategies for hybrid-casual games are more complex and targeted than for hyper-casual games. For hybrid-casual games, we focus on deeper, more engaging gameplay in the ad creatives, that highlight both IAP and ad monetization opportunities and segment ads based on user behavior. 10. What will be the long-term impact of the hybrid-casual genre for publishers and studios?Hybrid-casual games represent the future of mobile gaming, providing publishers and studios with the ability to scale their games more sustainably. Over the long term, we expect more stable revenue generation due to a balanced monetization model, a lower volatility in user acquisition costs compared to hyper-casual games, and a higher quality of user. Hybrid-casual games will also encourage greater innovation in game development and monetization strategies.11. From an advertiser’s perspective, what does the continued rise and dominance of hybrid-casual games mean?For advertisers, the rise of hybrid-casual games is a positive development. It offers high-volume impressions from games with a broad appeal, while creating new avenues to reach higher-quality users who are more likely to make in-app purchases and engage with ads. Hybrid-casual games also provide longer engagement and more playable ad opportunities, especially with rewarded videos. These represent better monetization opportunities for advertisers and the ability to target a more diverse inventory which can help scale campaigns in a more sustainable way.]]></description><link>https://unity.com/blog/mobile-gaming-shift-hyper-hybrid-casual</link><guid isPermaLink="true">https://unity.com/blog/mobile-gaming-shift-hyper-hybrid-casual</guid><pubDate>Thu, 12 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get our new technical e-book on multiplayer networking for Unity developers]]></title><description><![CDATA[Are you an experienced developer of single-player games that plans to make your first multiplayer project in Unity? Then be sure to check out our new technical e-book for multiplayer networking, which is now available to download.We made this all-new guide with a twofold aim: First, to provide you with a foundational, detailed explanation of the core concepts in multiplayer networking. Second, to guide you on how to use Unity networking and multiplayer features by walking you through a sample multiplayer project based on Netcode for GameObjects.If you’re just getting started on your multiplayer developer journey you’ll find helpful tips on what common pitfalls to avoid and how to choose the multiplayer solutions that will work best for your project. You’ll also get a handy overview of the many Unity networking samples to explore as your next steps. Ultimately, we want you to be able to start prototyping and developing your own multiplayer game features as efficiently as possible.This guide assumes you are familiar with Unity and C# development but new to or just getting started with networking.It might feel a bit daunting to get started with multiplayer development but the journey becomes easier if you first gain an understanding of the core networking concepts.We kick off the guide by explaining the simplest parts in networking architecture, like the role of clients and servers and how they communicate by exchanging data packets using standard Internet protocols like UDP (User Datagram Protocol). You’ll learn about what ticks, updates, and latency are. There’s an introduction to techniques for network synchronization like state synchronization, remote procedure calls (RPCs), and bandwidth management. You’ll find explanations of the different network topology models, which define how devices are connected and communicate in a multiplayer environment. Topologies can impact the game's architecture, performance, and the overall player experience. Choosing one for your game depends on what type of game it is, the desired level of control over the game state, and the resources available for server infrastructure. Thus, the guide will help inform you on what factors to consider so you can make the right choice.You can follow along in the guide with a workflow for your networking projects that focuses on local testing, simulating network conditions, managing client-connection, debugging tools, and using a command line helper.We also look at the reasons why network synchronization is essential for maintaining a consistent – and fair – gaming experience for all players. You’ll learn how to set up client-server communication for gameplay actions, where the player may interact with part of the game environment. This involves implementing networked game states and sending remote procedure calls (RPCs) to and from the server. Some of the additional concepts covered in the guide include: RPCs versus NetworkVariablesDesigning for multiplayerNetwork latency and performanceSimulating latencyUnity Transport Debug SimulatorClient-side interpolationClient-side prediction and anticipationWhy server authorityHow client-side prediction worksReconciliation and rollbackClient-side anticipation in Netcode for GameObjectsDeterministic physicsClient-side prediction in Netcode for EntitiesFinally, we introduce you to Unity’s multiplayer development tools and solutions: The Netcode for GameObjects and Netcode for Entities frameworks, services like Game Server Hosting (Multiplay), Relay, and Vivox for voice and text chat, and more. This also includes an introduction to Unity 6 features for multiplayer games that make integration, iteration, and deployment more reliable and faster than ever.We put theory into action in the e-book by providing a practical, hands-on example for how to set up and create your first Unity Netcode for GameObjects project. The example is a simple sample project that uses assets from the Starter Assets – ThirdPerson package. This simulates 3D gameplay with a humanoid character using the Universal Render Pipeline (URP). It includes a small testing playground scene and a configurable third-person controller. If you follow along with the example, you’ll get familiar with concepts such as:Installing Netcode for GameObjectsAdding the NetworkManagerNetworkObjectsPlayer NetworkObjectsCreating a Player NetworkObjectMultiplayer Play ModeCreating your own UI start buttonsAdding NetworkBehaviourAuthority and ownership propertiesSync using a NetworkTransform and NetworkAnimatorApplying client authorityOwner authoritative mode componentsSyncing with server authoritySingleton design patternAlongside the e-book you can also watch this new tutorial that covers the key steps in setting up a multiplayer game with Netcode for GameObjects:The e-book concludes with a detailed overview of Unity’s latest sample projects which you might want to check out as the next step in your learning journey. The samples are designed to help you get started with Netcode for GameObjects and Netcode for Entities. These include the new VR Multiplayer template, updated Learn tutorials, the Bitesize Samples repository, ECS Netcode samples and the Megacity Metro sample.We hope the new multiplayer e-book and additional sample resources will help you get started efficiently with multiplayer game development in Unity 6. If you have any questions or comments feel free to post them to this Discussions article. Finally, make sure to check out some of the other latest Unity resources at unity.com/how-to.]]></description><link>https://unity.com/blog/multiplayer-networking-ebook</link><guid isPermaLink="true">https://unity.com/blog/multiplayer-networking-ebook</guid><pubDate>Tue, 10 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Industry trends 2025: immersive tech is changing the game]]></title><description><![CDATA[Immersive technologies like virtual reality (VR), augmented reality (AR), and mixed reality (MR) have moved beyond buzzwords to become transformative tools driving change in industries like healthcare, manufacturing, automotive, and retail. No longer experimental, they’re streamlining workflows, improving outcomes, and transforming experiences for employees and customers alike.The numbers speak for themselves. Recent data predicts the immersive tech market will explode from $183.96 billion in 2024 to $1.7 trillion by 2032, with a staggering 32.1% annual growth rate. This isn’t just fast growth—it’s proof that immersive tech is becoming a critical part of how businesses operate and grow.In this year’s Unity Industry Trends Report, we dive into how businesses are scaling immersive solutions to achieve tangible results. From rethinking team collaboration to improving surgical precision, these tools are reshaping how work gets done.Take manufacturing, for example, where teams are turning complex 3D data into easy-to-use, interactive tools that speed up design, diagnostics, and training. These solutions don’t just help engineers—they’re unlocking collaboration across entire teams, driving faster innovation. In healthcare, 3D simulations are helping surgeons plan and practice with incredible precision, while patient-specific visuals are transforming how care is delivered. Imagine walking into a doctor’s office and seeing a clear, 3D visualization of your surgery—it’s not just futuristic, it’s happening now.Training is one area where immersive tech is having an immediate, measurable impact. Data shows immersive learning boosts retention by 75% and learner confidence by 275%. That’s a game-changer for industries tackling big challenges like safety, skills gaps, and cost pressures.KLM’s VR pilot training is a perfect example. What started as a small project to enhance readiness has become a core part of their operations. It’s saving money, improving safety, and helping pilots get flight-ready faster. The takeaway? When businesses use immersive tech with clear goals, the results can scale.It’s not just internal operations—immersive technologies are changing how companies engage with customers, too. In retail, immersive shopping is quickly becoming the norm as customers expect more personalized, engaging experiences. Behind the scenes, these same tools are helping retailers train their teams and fine-tune operations.Meanwhile, in automotive, AR-powered displays are keeping drivers focused while delivering critical info, and immersive human-machine interfaces are redefining how vehicles are designed and experienced. These tools are breaking down silos, making processes more collaborative, and delivering results that ripple across entire organizations.What excites me most is how immersive technologies are opening the door to entirely new ways of working, learning, and connecting. Teams across industries are finding creative ways to weave these tools into their daily workflows, boosting both efficiency and creativity.This year’s Unity Industry Trends Report shares stories and insights from 17 industry leaders already making it happen. I hope you’ll check it out—you might come away with some ideas to inspire your own work.]]></description><link>https://unity.com/blog/industry-trends-report-2025</link><guid isPermaLink="true">https://unity.com/blog/industry-trends-report-2025</guid><pubDate>Mon, 09 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: November 2024]]></title><description><![CDATA[November was packed with game releases and some pretty sizable updates, including the new Undead update for DOTS-powered Diplomacy is Not an Option from our friends at Door 407. Want to use mountains of corpses as barriers? Now, you can!Steam curator list: Better TogetherWith many families coming together for the holiday season soon, we thought it would be a good time to gather up a list of Made with Unity games you can play with others. We posted up our poll and Better Together co-op games came out on top, check out the list and follow our Steam Curator page.Award seasonAs we head into the next few months of the major gaming awards, we want to congratulate some of the Made with Unity winners of the Golden Joysticks:Still Playing Award (Mobile) - Honkai: Star RailBest Indie Game (Self-published) - Another Crab's TreasureBest Early Access Game - Lethal CompanyNext up are The Game Awards with many of your games up for awards there, follow along on our social channels to celebrate the winners.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.
Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in November of 2024, either into early access or full release. Add to the list by sharing any that you think we missed.Bullet heavenTemtem: Swarm, Crema, GGTech Studios (November 13 – early access)Card games and deckbuildersMenace from the Deep, Flatcoon (November 11)Casual and partyDEATH NOTE Killer Within, Grounding Inc. (November 5)Bounce Arcade, Velan Studios (November 21)ComedyGreat God Grove, LimboLane (November 15)HorrorSorry We're Closed, à la mode games (November 14)Absolute Insanity, Chris Danelon (November 5)Angel Wings: Endless Night, RumR Design (November 6)Is this Game Trying to Kill Me?, Stately Snail (November 13)Enigma of Fear, Dumativa, Cellbit (November 28)FPS420BLAZEIT 2: GAME OF THE YEAR -=Dank Dreams and Goated Memes=- [#wow/11 Like and Subscribe] Poggerz Edition, Normal Wholesome Games (November 14)Narrative and mysteryChicken Police: Into the HIVE!, The Wild Gentlemen (November 7)Deathless Death, Dream Delivery Center (November 13)Loco Motive, Robust Games (November 21)Mercury Abbey, YiTi Games (November 22)PlatformerMind Over Magnet, Game Maker's Toolkit (November 13)Management and automationTechtonica, Fire Hose Games (November 7)MetroidvaniaLast Vanguard, Cool Tapir Studios LLC (November 5 – early access)Roguelike/liteVoid Crew, Hutlihut Games (November 25)Elin, Lafrontier (November 1 – early access)Munch, Mac n Cheese Games (November 4)ShapeHero Factory, Asobism.Co.,Ltd (November 5 – early access)Ammo and Oxygen, Juvty Worlds (November 7 – early access)Atomic Picnic, BitCake Studio (November 7 – early access)Shape of Dreams: Prologue, Lizard Smoothie (November 12)Dungeon Clawler, Stray Fawn Studio (November 21 – early access)RPGVoid Sols, Finite Reflection Studios (November 12)Metal Slug Tactics, Leikir Studio (November 5)ATLYSS, Kiseff (November 22 – early access)Neon Blood, ChaoticBrain Studios (November 26)Puzzle adventureLittle Big Adventure – Twinsen’s Quest, [2.21] (November 14)SimulationMirthwood, Bad Ridge Games (November 6)Dustland Delivery, Neutron Star Studio (November 5)Everholm, Chonky Loaf (November 11)Luma Island, Feel Free Games (November 20)StrategySongs of Silence, Chimera Entertainment (November 13)Sainthood, Bisong Taiwo (November 1)Skill Legends Royale, ZGGame (November 4)Lost Eidolons: Veil of the Witch, Ocean Drive Studio, Inc. (November 5 – early access)Tower Factory, Gius Caminiti (November 7 – early access)SurvivalI Am Future: Cozy Apocalypse Survival, Mandragora (November 13)That’s a wrap for November 2024. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Bluesky, X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-november-2024-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-november-2024-releases</guid><pubDate>Mon, 02 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get the most out of the VFX Graph in Unity 6 with our updated e-book for artists]]></title><description><![CDATA[To orchestrate their creations, visual effects artists need a sophisticated understanding of shape, lighting effects, color, volume of particle effects, speed of movement, and timing.The VFX Graph is Unity’s node-based visual logic system for creating visual effects in games. It provides all the capabilities you need to create GPU-accelerated visual effects.Now, you can get our updated e-book on creating effects with the VFX Graph in Unity 6. This new edition will guide you to achieving the best visual quality and performance for your effects for your Unity 6 productions.The new features in VFX Graph for Unity 6 include profiling tools, six-way lighting for smoke effects, new learning templates, and more. These are part of a wide-ranging collection of new rendering and graphics features in Unity 6, like performance enhancements for URP and HDRP, potential reductions in CPU and GPU workload, and new optimization options.And there’s more. Together with the Unity 6 VFX Graph e-book you can also watch a new video tutorial that explores the VFX Graph Learning Templates:The VFX e-book includes key sections like:A detailed introduction to graph logic and all of the parts that make up a graphWorking with VFX Graph in URP and HDRPExplanations of many different types of visual effects examplesHow to create interactivityUsing VFX Graph and Shader Graph together for advanced shader effectsPipeline tools to use with VFX GraphProfiling, debugging, and optimization featuresTechniques for advanced creatorsLet’s look in brief at some of the great new content in the guide.UI improvementsCreating nodes or blocks now uses a hierarchical tree view, making it easier to browse the node library. Enhancements include custom colors and a favorites folder for a more efficient and personalized search experience. You can also use the advanced search filtering to select from the available nodes.New VFX ToolbarThe VFX Toolbar has been simplified and includes new options for quick access to documentation and samples.Keyboard shortcutsThe Shortcut Manager has a VFX Graph category that lets you modify the shortcut command available in the Visual Effect Graph window.The VFX Graph Learning Templates is a collection of numerous different samples that help you explore a specific aspect and feature set of VFX Graph, and showcases many VFX techniques. The sample content is compatible with both URP and HDRP projects, for VFX Graph in Unity 6 and later.The sample graphs are small and focused, making them ideal learning resources. Dive into each template to master a new technique or use it as a starting point for your own effect. Each graph comes with detailed notes to help you understand their construction.You’ll find samples that cover:Graph fundamentalsParticle orientation and rotationTexturing and flipbooksParticle pivotsMesh and texture samplingCollisions and interactivityDecal particlesParticle stripsA new section in the guide explains how to create six-way lighting, a method for smoke rendering based on baked simulations that works well across different lighting conditions. It can approximate the volumetric feel of smoke with a cost-effective process. Six-way lighting can be a useful technique in your effects toolkit, balancing visual quality, performance, and memory usage for rendering real-time smoke effects.You can also watch VFX Graph: Six-way lighting workflow for a complete walkthrough of the technique and read this blog post for more information.One of the key advantages of Shader Graph integration is the ability to drive shader behavior on a per-particle level. This allows for creating variations, color randomization, and other dynamic effects with different per-particle values, enabling highly complex visuals.The e-book now includes a bigger section using examples from the Shader Graph Feature Examples sample content. This is a collection of Shader Graph assets that demonstrate how to achieve common techniques and effects in Shader Graph. The goal of this sample pack is to help users see what is required to achieve specific effects and provide examples to make it easier to learn.Finally, VFX Graph in Unity 6 also includes integration with Shader Graph keywords. This allows you to create one Shader Graph for use in multiple VFX Graphs.Unity 6 includes Profiling and Debug panels that provide essential information about your visual effects. These tools can provide information such as CPU and GPU timings, memory usage, texture usage, and various states. Use them to monitor and optimize performance for your VFX Graphs.Seasoned VFX artists and developers can take advantage of the Custom HLSL Block. This feature allows you to create unique effects that may not yet be natively supported in Unity. With Custom HLSL, you can create advanced physics simulations, flocking behaviors, or real-time data visualizations.Custom HLSL nodes allow you to execute custom HLSL code during particle simulation. You can use an Operator for horizontal flow or a Block for vertical flow within Contexts.Along with the VFX Graph e-book you can access other great resources that provide know-how for how to create graphics and effects that boost the atmosphere, fun, and excitement for your 2D and 3D games. Here are a few to check out:Unity 6 graphics learning resourcesIntroduction to the Universal Render Pipeline for advanced Unity creatorsCreate 2D special effects with VFX Graph and Shader GraphFind a treasure trove of lighting and visual effects in Gem Hunter Match]]></description><link>https://unity.com/blog/unity-6-vfx-graph-ebook</link><guid isPermaLink="true">https://unity.com/blog/unity-6-vfx-graph-ebook</guid><pubDate>Mon, 02 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity for Humanity 2025 grant now open]]></title><description><![CDATA[Real-time 3D (RT3D) is transforming how we approach social impact, and we’re excited to continue supporting creators who harness this technology to build a more equitable, inclusive, and sustainable world. Today, we’re thrilled to announce that applications are open for the Unity for Humanity 2025 Grant, an opportunity for creators to secure funding for their social impact projects.In 2025, we’re awarding $500,000 USD across multiple projects to empower creators advancing global goals in alignment with the United Nations Sustainable Development Goals (SDGs). This year, we’re introducing several new resources and features for applicants.To support your application journey, we’ve launched two guides: Unity for Humanity: Guide for Creators, a short course to help you get started, and an Examples from Past Winners guide, showcasing successful projects to inspire and inform your submission.For the first time, feedback on applications will be available upon request. Due to the lean size of our social impact team, we ask that applicants request feedback if needed. Please give the team up to four weeks to respond to your request for feedback. The contact information and request instructions will be available in the email notification to applicants.To inspire the next generation of social impact creators, we’re introducing a new category specifically for students. We encourage students to bring their unique visions to the grant and drive change through RT3D.If you’re working on a game, experience, film, mobile app, or another RT3D project aimed at meaningful social impact, we encourage you to apply for this opportunity.
For detailed information on eligibility, application guidelines, and FAQs, please visit our Unity for Humanity page. The deadline for submissions is 11:59 pm PT on February 7, 2025.Be a part of this year’s Unity for Humanity Grant and join a global community of impact creators dedicated to making a difference through creativity and technology.
]]></description><link>https://unity.com/blog/unity-for-humanity-2025-grant-now-open</link><guid isPermaLink="true">https://unity.com/blog/unity-for-humanity-2025-grant-now-open</guid><pubDate>Mon, 02 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[6 Ways to Get Started with Unity 6]]></title><description><![CDATA[The exciting release of Unity 6 is here, marking a significant milestone in the world of game development and real-time 3D applications. Whether you're a seasoned developer or just starting out, Unity 6 offers a wealth of features and enhancements designed to unleash your creative potential. This blog will guide you through six effective ways to get started with Unity 6, helping you make the most of this powerful platform.The first step to getting started with Unity 6 is to download it. Unity 6 is packed with new features and improvements that enhance performance, productivity, and creativity. From advanced rendering capabilities to intuitive workflows, this release is designed to streamline your development process and bring your projects to life.Starting with a new platform can be overwhelming, but Unity provides a comprehensive set of learning resources to help you get up to speed quickly. Whether you prefer video tutorials, in-depth courses, or written documentation, there is something for everyone.Here are a few learning resources to help you get started:Unity Essentials: Designed for anyone new to Unity, this guided learning journey is your first step toward creating confidently in the Unity Editor and bringing your vision to life.3D Beginner: Roll-a-Ball Game: Learn how to use the Unity Editor and its built-in capabilities to set up a simple game by writing your own scripts, creating basic user interfaces, and building your game for others to play it!Get started with Unity Web: Designed for creators of all skill levels, follow along with this guided learning journey to learn how to set up and build your game for web browsers.Visit the Unity 6 Resources Hub to access a variety of tools and materials tailored to your learning style. Highlights include:Interactive Tutorials: Step-by-step guidance on creating your first project.Video Tutorials: Learn from the experts with detailed video content.Live Training Sessions: Participate in live sessions with Unity professionals.Documentation: Access the extensive and updated Unity documentation.Unity has a vibrant and supportive community of developers, artists, and enthusiasts. Post your questions and connect with other Unity users in Discussions, and engage in real time conversations in the Unity Discord server. Participating in the community can accelerate your learning process and help you solve any challenges you encounter.One of the best ways to learn is by doing. Unity provides a wealth of sample projects that demonstrate various features and capabilities of Unity 6. Download these samples in the Unity 6 Resources Hub and dissect them to understand how they work. Experiment with modifying them to see how changes affect the outcome. This hands-on approach will build your confidence and deepen your understanding of Unity 6.
The Unity Asset Store offers a plethora of free and paid assets that can significantly speed up your development process. From 3D models and textures to scripts and plugins, there's something for every project. Utilize these resources to add professional-quality elements to your projects without starting from scratch.
The world of game development is always evolving, and Unity 6 is no exception. Stay current with the latest updates, best practices, and new features by regularly visiting Unity Learn. Continuous learning will ensure you remain at the forefront of innovation and can incorporate the latest advancements into your projects.Unity 6 is a powerful, user-friendly platform that opens up countless possibilities for developers. By following these six steps, you can get started on the right foot and make the most of the new features and enhancements.]]></description><link>https://unity.com/blog/6-ways-to-get-started-with-unity-6</link><guid isPermaLink="true">https://unity.com/blog/6-ways-to-get-started-with-unity-6</guid><pubDate>Mon, 25 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 6 UI Toolkit: News and updates]]></title><description><![CDATA[In the fast-paced world of game development, creating an engaging user interface (UI) is just as crucial as refining game mechanics or crafting stunning visuals. A well-designed UI serves as the bridge between players and the experience you've crafted – it can make or break immersion. As games grow in complexity, the need for intuitive, responsive UIs and the ability to display dynamic data become increasingly important. Unity 6 focuses on accelerated UI development, providing tools that simplify the UI creation process, allowing teams to bring their ideas to life faster and with greater impact.Unity 6 brings significant improvements to UI Toolkit. Whether you’re working on an expansive open-world RPG or an indie passion project, the toolkit streamlines workflows, optimizes rapid iteration, and reduces production times. By tackling the most common UI challenges – such as managing complex hierarchies, addressing performance bottlenecks, and enabling extensive customization – Unity 6 makes designing UIs more intuitive, flexible, and, most importantly, enjoyable.Key features of UI Toolkit in Unity 6Unity 6's UI Toolkit introduces powerful new features that streamline UI development, enhance customization, and help you create dynamic, engaging user experiences. Let's explore the highlights:Runtime data bindingThe new runtime data binding is a powerful feature that seamlessly connects UI elements with your game data at runtime. With it, developers can link variables, properties, and collections directly to UI components without writing extensive boilerplate code. This drastically reduces the manual work required to keep UI elements in sync with the underlying game state, making building responsive and dynamic interfaces effortless.Runtime data bindings can be set directly from the UI Builder, making the workflow accessible for team members using codeless tools and enabling better collaboration. They are also extensible, letting developers create converters between value types and implement custom binding types. Additionally, runtime data bindings can be tweaked to achieve optimal performance, ensuring your game’s UI remains efficient and responsive.Expanded UI controls libraryThe expanded UI Toolkit standard library provides even more built-in options for designing your UI. Recent additions like the TreeView and multicolumn ListView, introduced in 2022 LTS, facilitated the migration from IMGUI to UI Toolkit and are essential for managing and displaying large datasets.This version introduces the TabView and ToggleButtonGroup. Buttons now have icon support, which can be displayed with or without accompanying text. These new controls are not limited to the Editor; they are also available for the runtime environment and are fully customizable to match the aesthetic of your game, ensuring a consistent and immersive player experience.Improved extensibilityThe extensibility of UI Toolkit has seen major upgrades, especially for creating custom controls and exposing them to the UI Builder. Developers can now create custom UI controls more easily, integrating them seamlessly for drag-and-drop design. This upgrade makes it easier for teams to build reusable, tailored components, saving development time and boosting creativity.Gone are the days of writing boilerplate code with UXMLFactories and UXMLTraits, which are now deprecated and will be removed in future versions. The new approach involves simply decorating your C# code with [UXMLElement] and [UXMLAttribute] attributes — making custom control definition more straightforward, concise, and maintainable. Please refer to the Unity manual for creating custom UI controls using this new method.Enhanced control configurationUnity 6 also enhances how custom components are exposed and configured in the UI Builder, with support for property drawers and decorators, similar to those found in the Editor Inspector. These additions give developers complete control over how UI element attributes are exposed, providing UI designers with a more intuitive and efficient experience when adjusting properties. The result is polished, highly customizable interfaces that look great and function smoothly.UXMLObjects for efficient data managementUXMLObjects provide a flexible way to define and manage serialized data directly within UXML files. This feature allows developers to create reusable, self-contained UI components that maintain readability, even with large data structures.UXMLObjects enable UI elements to contain serialized data that can be stored and edited directly in the UI Builder, making it easier to reuse elements across different parts of the UI while preserving their data integrity. Designers can edit these data structures visually, streamlining workflows for data-driven UI components.This feature is useful for creating structured, reusable data elements in UIs, such as configuring data for visualizations like pie charts. By serializing data within UXMLObjects, developers can maintain an organized and modular approach to UI design, making the process of managing large and dynamic data sets more efficient.Advanced text and localization featuresUI Toolkit now includes multi-language and emoji support, made possible by an optional text generator offering comprehensive Unicode and advanced text shaping capabilities. This ensures that your UI seamlessly supports various languages, including right-to-left (RTL) scripts like Arabic and Hebrew, providing true multilingual capabilities.This new text backend is entirely opt-in, allowing developers to transition at their own pace while benefiting from enhanced localization. Though there are some limitations — documented in the manual — the system is a powerful tool for broadening the reach of your project.The updated Localization Package allows developers to fully leverage the new multi-language support and easily localize UI Toolkit content, making games accessible in multiple languages. Integrating with the new bindings system allows this feature to be accessible directly from the UI Builder, resulting in a seamless and efficient workflow for multilingual projects.Streamlined workflowsUnity 6 introduces several workflow improvements to make UI development faster and more intuitive. These updates allow developers to iterate quickly and make designing more efficient.Search in the control libraryThe control library can become difficult to navigate, especially for complex projects with a large number of UI elements and custom controls. This update adds a fast and intuitive search capability within the control library, allowing quick access to UI elements. It works both in the Standard and the Project section, making it easier to find what you need.Extract inline styles to selectorYou now have more control over extracting inline styles, with the ability to extract specific values and apply them to an existing selector, not just create a new one. It significantly reduces the need for duplicating inline edits on a selector and allows for more experimentation with changes on a single element before "committing" them to a selector.Fill attribute for slidersSliders now have a fill attribute to extend their functionality and create visual elements such as volume controls, health bars, and more. The attribute enables a filled-in area for the slider, with an option to select the fill color. This new attribute is also supported in code, for example:Performance enhancementsUnity 6 introduces a wide array of performance improvements to ensure a smooth and responsive experience in both the Editor and runtime environments:Event dispatching: Event dispatching rules have been simplified, making them easier to understand and twice as fast.Mesh generation enhancements: Key improvements include jobified geometry generation for classic element geometry and a transition of the vector API to a native implementation. Text generation is also now parallelized.Custom Geometry API: A new public API enables developers to generate custom geometry with the same level of performance, allowing for highly optimized UI components.Deep Hierarchy Layout Performance: Improved caching of layout computations significantly boosts performance in deep hierarchies, providing a smoother user experience.Optimized TreeView for Large Datasets: The TreeView control, previously inefficient with large datasets, has been enhanced with a new high-performance backend specifically for Entities.For tips on optimizing content created with UI Toolkit, refer to this breakout session from Unite 2024.We’re committed to keeping performance front and center. Look for even more optimizations in future updates that ensure Unity remains the best platform for creating responsive, high-performing user interfaces.ConclusionUnity 6 offers a host of new features and improvements that will significantly enhance your ability to create sophisticated, high-quality UIs. Whether you're an indie developer or part of a larger studio, the advancements in performance, workflow, and customization are designed to help you push the boundaries of what's possible.Get started and learnIf you want to get started with UI Toolkit, start by exploring our full documentation and tutorials, and join our community to gain inspiration from others and to share your projects.You can learn UI Toolkit concepts with QuizU or explore a complete game sample with UI Toolkit Dragon Crashers. Don’t miss the companion pieces to the samples:QuizU Discussions articles for programmers in mind and video overview of the sampleE-book, User interface design and implementation in Unity and video overview of the sample]]></description><link>https://unity.com/blog/unity-6-ui-toolkit-updates</link><guid isPermaLink="true">https://unity.com/blog/unity-6-ui-toolkit-updates</guid><pubDate>Tue, 19 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Our complete guide to setting up version control for your team – now for Unity 6]]></title><description><![CDATA[It’s not uncommon for teammates in a game development studio to have varying levels of experience with using a version control system. An artist might tap their programmer colleague on the shoulder when they need to push or commit a change to the main repository because they’re unfamiliar with the software. We also hear stories of how game development assets like expensive 3D models are spread across multiple servers or even hosted in a Dropbox, with no easy way to categorize and search for them.DevOps, and particularly version control, can be a daunting topic for game creators who haven’t used such tools before. But it doesn’t need to be that way. There are numerous tools that you can use with Unity – both third-party options and Unity’s own solutions – to help your team work effectively with versioning, manage your builds, and keep track of your assets.Our updated Unity 6 e-book on version control and best practices for project organization can help you and your team get started with choosing the right solution for your game development. This new edition provides know-how for the latest workflows in Unity Version Control and DevOps solutions, making it a significant update to the original version control e-book released in 2022.You’ll get close to 100 pages of generally recommended practices and tips and tricks. Alongside the e-book, you can also view three new video tutorials on Unity Version Control, Unity Build Automation, and Unity Asset Manager.We aimed to provide a broad and balanced view in this guide because we believe it’s valuable to our users. You’ll find plenty of tips that are agnostic to whichever version control system you prefer to use. It starts with an explanation of the key concepts of version control. There’s a handy section comparing popular version control solutions compatible with Unity, and a dedicated section on Unity Version Control (UVCS), which guides you through setting up UVCS for your project and how to use its key features.This Unity 6 version of the e-book includes new sections about Unity Asset Manager and Unity Build Automation. Finally, you’ll find tips to help ensure team collaboration is smooth and efficient through the different cycles of the development process, and as your project grows and you add more users.With integration directly in the Unity Editor, it’s now easier than ever to enable and use UVCS, particularly for users with a non-programming background who prefer working with visual interfaces.An in-depth video tutorial accompanies the e-book, providing a solid introduction to UVCS, and showing you how to set up your own repository, invite collaborators, and check in changes.In the tutorial, we also explore branching strategies, how to handle conflicts, set up merge rules, lock files, and much more. If you are new to Unity Version Control, this is a great way to get an overview in 20 minutes before diving into the full e-book.Unity Build Automation automates the process of creating builds of your game for multiple platforms, allowing you to streamline the development workflow by continuously integrating and deploying updates with minimal manual intervention.In this new tutorial we show you how to streamline your workflow to build for multiple platforms and move your local build pipeline to the Unity Cloud to automate builds.The Unity Asset Manager makes it easy to keep track of all your 3D digital assets, including managing and transforming the data. It offers a central and secure place to find and store the assets you create and collaborate using your favorite tools.Asset Manager supports a wide range of asset types, including 3D models, textures, materials, prefabs, sound files, and more. In this video, we show you how to get started with the Asset Manager, edit your assets, and use search filters.We hope these resources will help you as you scale up your team and game development with Unity 6.]]></description><link>https://unity.com/blog/complete-guide-version-control-devops-unity-6</link><guid isPermaLink="true">https://unity.com/blog/complete-guide-version-control-devops-unity-6</guid><pubDate>Mon, 18 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 6 graphics learning resources]]></title><description><![CDATA[To help you get started with graphics in Unity 6, we’ve put together this reading list. These resources represent the latest and greatest content for learning our Scriptable Render Pipelines (SRPs) in the newest Unity version, whether you’re building your project with the Universal Render Pipeline (URP) or High Definition Render Pipeline (HDRP), or learning how to leverage updates in VFX Graph and Shader Graph.We’ll be updating this post periodically, so add it to your bookmarks and check back from time to time to see what’s new.
Universal Render Pipeline (URP) resourcesIf you’re building for mobile or considering the possibility of launching on multiple platforms, URP is well worth considering. Prioritizing scalability, customizability, and a rich feature set, it’s made to give you creative freedom in any type of project, from stylized visuals to physically based rendering.Check out the guides and resources below to get up to speed with URP in Unity 6.URP templates and sample projectsFantasy Kingdom in Unity 6: Download the latest URP sample, based on last year’s Fantasy Kingdom project but optimized for mobile, leveraging Unity 6’s improved CPU and GPU graphics performance, Adaptive Probe Volumes (APVs), and VFX Graph.URP 3D sample: Explore four distinct scenes – the terminal, the garden, the cockpit, and the oasis – and discover how to create, customize, and scale beautiful graphics with flexibility and performance.Take your learning even further with on-demand video content: URP 3D sample: A short introductionURP 3D sample deep diveURP 3D sample deep dive: Lighting techniquesURP 3D sample deep dive: Configuring for VRHappy Harvest: This readymade project shows you how to harness the latest capabilities for creating 2D lights, shadows, and special effects with URP in Unity 6. It incorporates best practices any 2D creator can use, including not baking shadows into a sprite, keeping sprites flat, moving shadow and volume information to secondary textures, advanced Tilemap features, and much more. Learn more in this Blog post and on Unity Discussions.Gem Hunter Match – 2D sample project: See how a 2D puzzle/match-3 game can stand out from the competition with eye-catching lighting and visual effects created in URP. Learn more in this Blog post, and download the sample here.URP training sessions, technical talks, and webinarsMobile game optimization in Unity 6: In this webinar, Unity’s Advocacy team runs through new rendering technology in Unity 6 and shows how these tools can be applied to create more performant and better-looking mobile experiences.Graphics rendering: Getting the best performance with Unity 6: Learn Unity 6’s powerful graphics optimization tools can minimize your game’s CPU and GPU rendering overhead while increasing frame rate and extending mobile battery life in this talk from Unite 2024.Traditional animation, modern 2D: The art of Cookie Cutter: Discover how artist and art director Stefano Guglielmana created Cookie Cutter’s stunning animated world from a drawing tablet, then optimized everything in URP.URP e-books, guides, and documentationURP Documentation: Read the latest documentation for the Universal Render Pipeline, now updated for Unity 6.Introduction to the URP for advanced Unity creators: Learn how to start a new project based in URP, migrate an existing project to this pipeline, and more in our ultimate guide.Recipes for popular visual effects using the URP: Get step-by-step instructions for creating 12 different visual effects, including Ambient Occlusion, toon and outline shaders, reflections, refractions, and more.Mobile optimization in Unity 6: This newly updated e-book shares expert tips and advice on how to optimize your mobile game – including graphics rendered with URP – for a wide range of devices. We’ve also created an accompanying video tutorial that shows you how to use Unity tools and techniques for optimizing cross-platform games, using a VR game as the example.Introduction to the Render Graph in Unity 6: This video tutorial shows you how to create a dither effect Renderer Feature by using a Full Screen Shader Graph material with Render Graph's optimized resource management.URP in productionExplore recent examples of games made with URP across Unity versions.Cookie Cutter: Read how Subcult Joint leveraged URP’s 2D asset management and lighting tools to make Cookie Cutter, an irreverent beat-em-up Metroidvania with hand-drawn visuals.Bleak Sword DX: Solo developer more8bit reached new audiences for his mobile game Bleak Sword by launching on PC and console. Upgrading to URP helped him add visual polish to take advantage of additional processing power on consoles, without compromising the game’s retro look.Synth Riders: Kluge Interactive moved their rhythm-based XR to URP so they could launch on more VR platforms. Learn how the migration positioned them to work with the latest tech, including the Apple Vision Pro.Roundtable: Best practices for moving from the Built-in Render Pipeline to URP: Devs from Scopely, Anvil Game Studios, and Kluge Interactive share how they reached more players by switching to URP.High Definition Render Pipeline (HDRP) resourcesHDRP offers off-the-shelf high-fidelity graphics optimized for PC and high-end consoles. Unity 6 comes with new HDRP features and improvements like Sky Occlusion baking for APVs, Spatial-Temporal Post-Processing (STP) upscaling technology, GPU Resident Drawer with GPU Occlusion Culling, and more.Below, we’ve curated resources showcasing what HDRP in Unity 6 can unlock for your project.
HDRP templates and sample projectsTime Ghost: The latest Unity Originals demo is a stunning showcase of what you can achieve in HDRP in Unity 6, highlighting advancements in visual quality, project complexity, and the practical use of machine learning workflows. Get started by downloading the Time Ghost: Character and Time Ghost: Environment packages.HDRP training sessions, technical talks, and webinarsTransitioning from the Built-in Render Pipeline to URP and HDRP: Get a rundown of the advantages of SRPs in production, plus how to upgrade from the Built-in Render Pipeline. This Unite 2024 session also includes expert tips and feedback from productions that made this highly beneficial transition.Time Ghost: How Unity 6 made it possible: The Unity Originals team breaks down their latest release into clear, understandable components, showing how they used essential Unity 6 features like the Entity Component System (ECS), Sentis, HDRP, and VFX Graph to create this highly realistic demo.HDRP e-books, guides, and documentationHDRP Documentation: Visit this microsite for technical instructions on getting started with the High Definition Render Pipeline.HDRP in productionExplore recent examples of games made with HDRP across versions.Harold Halibut: See how SLOW BROS. created a stunning game using thousands of hand-made objects and HDRP lighting tech from Unity 6.Den of Wolves: 10 Chambers’s Hjalmar Vikström and Svante Vinternatt discuss the new Unity 6 graphics features they’re using to build their dystopian co-op shooter.More Unity 6 graphics resourcesLevel up your graphics with help from technical experts at Unity and from our wider community.Graphics training sessions, technical talks, and webinarsAchieve your vision faster with technical artist tools in Unity 6: Discover how to quickly create a gameplay sequence using Unity 6’s updated VFX Graph, Shader Graph, and other artist-friendly tools. You’ll also get a primer on designing materials and visual effects, setting up post-processing, and creating a resolution-independent user interface.New lighting features and workflows in Unity 6: Watch this video to learn how to achieve high-quality results using APV, including best practices for lighting setup, how to fix common problems like light leaking, and how to use techniques like Scenario Blending and streaming to optimize for performance.Performance tips & tricks from a Unity consultant: Learn proven best practices from Nicolas Borromeo, a highly experienced consultant and author of the Hands-On Unity book. He covers common and consequential performance and how to avoid or resolve them, basics like UI and scripting performance, and advanced topics like memory consumption, Addressables, and URP.Graphics rendering: Getting the best performance with Unity 6: This Unite talk demonstrates how Unity 6’s powerful graphics optimization tools can minimize your game’s CPU and GPU rendering overhead while increasing frame rate and extending mobile battery life.CommunityUnity Discussions: Talk graphics with our product experts and other professional artists and developers in our community. Start finding answers to your questions by using these tags to narrow down your search:6-0, Built-in-Render-Pipeline, DirectX, Global-Illumination, Graphics, High-Definition-Render-Pipeline, Line-Renderer, Materials, OpenGL, Particle-System, Path-tracing, Post-Processing, Ray-Tracing, Scriptable-Render-Pipeline, Shader-Graph, Shaders, Shadows, Textures, Trail-Renderer, Universal-Render-Pipeline, Visual-Effect-Graph, VulkanDiscord: Join the Official Unity Discord to chat in real-time with artists and developers about creating different visual styles for your game. Unity Twitch: Go under the hood of Made With Unity games. Recent streams featuring games made using our SRPs include Crab God by Chaos Theory Games (HDRP) and Diplomacy is Not an Option by Door407 (URP).Unity Insiders: Follow community creators like Game Dev Guide, SpeedTutor, and Sunny Valley Studio for different approaches on creating graphics in Unity 6. Sakura Rabbit is also known for sharing her incredibly realistic 3D artwork made with Unity.Unity 6 documentationUnity User Manual: Everything you need to know about using the Unity Editor and Scripting API to create games and interactive experiences.Unity 6 upgrade guide: Understand how to upgrade your 2022 LTS project to Unity 6 while troubleshooting potential blockers.New in Unity 6: Learn what else is new in Unity 6 since 2022 LTS, including features from 2023.1, 2023.2, and Unity 6 Preview.]]></description><link>https://unity.com/blog/unity-6-graphics-learning-resources</link><guid isPermaLink="true">https://unity.com/blog/unity-6-graphics-learning-resources</guid><pubDate>Thu, 14 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Extend Your Holiday Success: Q5 Strategies for Mobile User Acquisition]]></title><description><![CDATA[While the holiday season remains a busy time of year with consumers being inundated with sales, deals, and general holiday rush, an often-overlooked time period for advertisers is between the day after Christmas and mid-January. This is otherwise known as Q5, where the rush of the holidays are over, but many are still gearing up for the new year.In this post, we'll explore:How Q5 offers a unique opportunity for mobile advertisers due to increased user activity and cost-effective advertisingStrategies to optimize ad creatives by generating topical content, using interactive ad formats, and updating custom store pagesWays to diversify user acquisition campaigns with ROAS or event optimizers, offerwall campaigns, Connected TV, and adjusted bidding based on holiday user patternsThe importance of capitalizing on the influx of new devices during the holidays to reach users early in their device setup journeyAdvertisers might overlook this time period due to the post-holiday lull, however data shows us that this time period is a recipe for opportunity. Q5 also allows advertisers to close out end of year KPIs, and leverage learnings well into Q1 and beyond.The Q5 opportunityData shows us that user behavior on mobile apps during the holidays can set the stage for an opportunistic Q5, with increased play time for mobile games, increased app sessions, and cost-effective advertising.Unity recently surveyed 4,094 U.S. adults aged 18+ mobile users and found that more than a third (36%) of respondents expect to increase their mobile gaming activity during the holidays.*In the same survey, 37% of all respondents said that on average, they’d be playing mobile games around 1-2 hours a day during the holidays**App sessions experience an uptick during Q5 across both iOS and Android, according to AppsFlyer and Meta survey dataIn Q5 specifically, post-holiday CPM rates were on average -15% below Oct 1, levels, average CPAs were down -4%, and average CVR was down -8%, according to Meta’s data.The mobile gaming surge from the holidays doesn’t stop there - the demand is still high from users, and advertising costs are typically lower, making Q5 an interesting opportunity for advertisers to seize ahead of rolling into Q1.Creative best practices for Q5Optimizing your ad creatives is one of the easiest and most impactful ways to enhance your mobile UA strategy. In this section, we'll explore tips and techniques to help you craft compelling ads that resonate during Q5.Generate creatives based on topical insightsHoliday-themed creatives can help spike IPM and boost eCPM, while providing players with a fresh, fun update to your game’s look and feel. But how can you carry themed creatives into Q5, when the holiday season is dwindling down?Try tapping into the mindset of where your users might be at by leveraging the new year and new beginnings mindset – new year, new challenges in your game! Layering in nods to the new year; resolutions, new beginnings, and celebration of achievements, can all provide a distinct post-holiday/new year distinction in your game.You can also look back at how your creatives were performing in Q4 and throughout the holidays to inform certain ad formats, length of creative, or type of creative to see what drove higher conversion rates.Focus on interactive ad formatsData from our Unity survey showed that 38% of all respondents said that rewarded ads and playable ads were ad formats they’d most likely engage with over the holidays.Leaning into engaging ad formats that give potential players a solid understanding of your game’s core mechanics is a great way to showcase your game and drive installs. Playable ads in particular offer people a chance at test-driving your game before committing, so ensure that you are giving enough time for players to get a good understanding of the game’s progression. We typically recommend making playable ads 20+ seconds long.To get started creating interactive ads, use the free Unity Playworks plugin for the Editor. This plugin allows you to leverage existing projects to easily create, customize, test, publish and analyze playable ads and interactive end cards, without needing additional code or resources.Developers can also seek guidance from creative professionals who specialize in game advertising, by working with Unity’s creative studio. Unity’s experts can provide a valuable look into competitive insights, creative concepts, and tailored recommendations to help optimize ad creatives for long-term success. Leveraging the studio’s knowledge and experience, developers can create compelling ads that showcase their game's unique features and attract high-quality users.Update your custom store pageCustom store pages allow advertisers to create a seamless user experience from first ad exposure all the way through to the App Store, by creatively customizing your app store page to match the ad your potential player may have seen. If you’re updating your ad creative to be Q5-themed, mirror your custom store page as well to provide consistency. Studios that leverage custom store pages see improved conversion and IPM.When running various creative formats and versions, you’ll want to ensure you’re A/B testing to see what’s resonating with your audience, and more importantly, what’s not.User acquisition best practices for Q5Equally important as optimizing your creative for Q5, is testing various UA campaign strategies. Let’s take a look at some ways to optimize UA campaigns for Q5.Diversify your UA campaign typesWith the rollover of engaged players during the holiday season into Q5, it could be beneficial to include campaign optimizers in your UA strategy to find high-quality players who will continually take action in your game. If you're not already using ROAS (return on ad spend) or event optimizers, Q5 could be the perfect time to test them out.ROAS-based optimizationROAS campaigns that optimize for Ad Revenue, IAP revenue, or both, can be an efficient way to acquire players at scale, and at an optimal price.With increased app sessions in Q5, introducing event optimization, such as tCPE (target cost per event), or tCPA (target cost per action), could be a great way to reach players who might be more inclined to take specific actions that you set within your game, like watching a certain amount of rewarded videos, or purchasing a set amount of currency.Event-based optimizationHow do you choose an event to target? We recommend choosing an action that your top 5–20% of users with the highest LTV complete within the first seven days of gameplay. It might help to look at what your high-value players have been doing over the holidays to inform your Q5 event optimization.Our data shows that over the last two years, advertisers across both Unity Ads and ironSource Ads networks have shifted their budget allocations to further diversify their campaigns by leveraging these optimizers.Offerwall campaignsAnother way to diversify could be acquiring players through the offerwall. As a rewarded marketplace, the offerwall enables advertisers to run event-based campaigns that cater to specific player engagement behaviors. Users acquired through the offerwall tend to have higher retention rates – users who find and convert on offerwall have 2-7x higher retention compared to non-offerwall users, as they are rewarded with high-value items like in-game currency for completing certain tasks.This approach is particularly effective in the post-holiday period when players might spend more cautiously, as it provides an alternative avenue to access premium in-game content by investing time rather than money. Additionally, you can wrap the offerwall with holiday themed creatives, and create time-sensitive offers that can help drive urgency.Connected TVAs the post-holiday lull sets in, people often find themselves with more downtime to watch their favorite shows. According to a Comcast report, over 60% of U.S. households who have connected TVs are turning to free ad-supported streaming services to watch their favorite shows***. This presents a unique opportunity for advertisers to reach audiences throughout Q5. By introducing Connected TV into your user acquisition mobile strategy, you can take advantage of this increased viewership.Adjust budget and bidding strategiesTake advantage of the holiday uptick in mobile gamers and expand your budget allocation. Adjust your bidding strategies to capitalize on the influx of new players and their increased time spent playing games.Try looking at user patterns throughout the holiday season to identify any trends in session lengths, retention rates, ad engagement, or IAP activity, which could help you further optimize your budget and bidding strategies going into Q5.One strategy to consider is adjusting bids and offering promotions on the offerwall during Q5. Our recent Tap4Fun case study, showed that by increasing bids and providing bonus rewards to users who completed offerwall events within a specific time frame, they were able to significantly increase their monthly spending and improve their return on ad spend. Developers can explore similar tactics to engage users and optimize their ad spend during this period when user activity is at its peak.Leverage the influx of new devices from the holidaysNew or upgraded mobile devices are a popular holiday gift. Not only do people love them, but telco companies tend to launch deals and promotions during the holiday season to incentivize people to buy. This surge in new devices presents a unique opportunity for advertisers, as our data shows that 95% of users install over 60% of their apps within the first 48 hours of unboxing a new device****.The period right after a user gets a new phone presents a valuable opportunity for advertisers to get their apps in front of new users. By leveraging innovative advertising solutions, such as Aura from Unity, apps and games can reach users from the moment they unbox their new phones and throughout the device lifecycle, delivering high-quality users, long-term engagement, and return on investment.With the influx of new devices during the holidays, running a campaign that positions your app right in front of users at one of the earliest touchpoints in their device setup journey can be a game-changer for your UA strategy.
Seize the Q5 opportunityBy implementing a diversified UA strategy that includes optimizing ad creatives, capitalizing on increased user activity, and exploring innovative channels like offerwall and on-device advertising, advertisers can maximize their return on investment and set themselves up for long-term success.Don't miss out on the Q5 advantage – reach out to your dedicated account manager to start planning your UA strategy now. There’s no better time to hit the ground running and scale your mobile growth in the new year.
* Source: Unity survey of 4,094 U.S. adults aged 18+, statement: “I will be playing mobile games more than usual.” 36% of total respondents.** Source: Unity survey of 4,094 U.S. adults aged 18+, statement: “On average, how long do you play mobile games per day during the holiday season?”*** Source: 2022 Comcast FAST Report**** Source: Aura from Unity, Android, from June 2023 to June 2024]]></description><link>https://unity.com/blog/q5-strategies-mobile-user-acquisition</link><guid isPermaLink="true">https://unity.com/blog/q5-strategies-mobile-user-acquisition</guid><pubDate>Thu, 14 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get hundreds of tips from new Unity 6 optimization guides for console, PC, mobile, web, and XR]]></title><description><![CDATA[Back in 2021, I started to write a blog post on performance optimization tips. As I did research for it, with help from an expert team of Unity support engineers (who assist both small and large game studios), it became clear that a single blog post wouldn’t suffice. Instead, we ended up creating two optimization e-books, both close to 80 pages: One for mobile games, and one for PC and consoles.I'm excited to announce the third edition of these two e-books, now updated for Unity 6. As with previous editions, the two guides consolidate valuable knowledge and advice from Unity engineers who have collaborated with developers across the industry to help them create exceptional games. The new editions include tips on how to use Unity 6 features to enhance your performance toolkit, and platform-specific advice for developers working on web and XR games.The idea with the very first edition was to share a list of actionable tips and advice on how you can optimize your game to run smoothly on as many devices as possible while providing players with the best experience. Since then, we received even more tips from both the community and original contributors.While the process of identifying performance bottlenecks is very similar across all platforms and a lot of the general recommendations also apply for all platforms, there are also some key differences in approaches, project scope and choice of rendering and asset pipeline.Let’s take a brief look at what’s new in each e-book, as well as recently published video tutorials on the Unity Profiler, one of the most important tool sets you’ll use for optimizing the performance of your Unity projects.In the latest edition of this e-book, we've expanded the scope from focusing on mobile to also include XR and web-specific tips. This includes advice on input handling in XR, leveraging the WebAssembly 2023 feature set for better performance, and using tools like Chrome DevTools for profiling Unity Web builds.This guide also mainly focuses on projects using the Universal Render Pipeline (URP) where our PC/console guide is dedicated mainly to providing tips for projects based on the High Definition Render Pipeline (HDRP). In total, you will find around 100 pages of tips that will be useful to both new and experienced mobile game developers.To accompany this e-book, we also created an in-depth, 40-minute video tutorial that covers key techniques to enhance your game’s performance and ensure a smooth experience for every player. In the tutorial, we demonstrate how to profile a non-optimized VR game built in Unity 6 using URP and the XR Interaction Toolkit. We identify bottlenecks and then address the issues using a selection of tips from the e-books. The idea is to provide you with a practical example showing one of the many ways to improve performance using the techniques covered in the e-book.Our PC and console optimization guide shares many tips and tricks with the mobile, VR, and web guide. However, in this guide, you will find more specific information about HDRP, and we dive into the complexities that come with optimizing large-scale projects, from assets to code architecture and rendering. In the new edition, we added several more general tips, but we also provide an overview of some of the new Unity 6-specific optimization features you can consider leveraging, such as Adaptive Probe Volumes, GPU Resident Drawer for managing draw calls, and GPU Occlusion Culling, which pushes the occlusion calculations to the GPU.We hope you find these updated optimization e-books helpful in your day-to-day work!You can find more updated guides and sample projects on the Unity 6 Resources Hub, the how-to best practices hub, or the Advanced best practice guides on Unity Docs.To wrap things up, I want to highlight three video tutorials we recently launched. These resources might be helpful if you're new to Unity or simply need a refresher on the suite of profiling tools available. The Unity Profiler is where you want to kick off your optimization process and will likely spend most of your time. It measures the performance of the Unity Editor, your application in Play mode, and connects to the device running your application in Development mode. As the name implies, the Unity Memory Profiler provides insights into memory performance, helping you identify where you can reduce memory usage in various parts of your project and within the Editor. It allows you to test against hardware memory constraints and enhance CPU/GPU performance by strategically managing memory usage.Finally we have a tutorial for the Profile Analyzer, which aggregates and visualizes both frame and marker data from a set of Unity Profiler frames to help you examine their behavior over many frames (complementing the single-frame analysis already available in the Unity Profiler). It also allows you to compare two profiling datasets to determine how your changes impact the application’s performance.I hope our new optimization e-books and additional profiling resources help you develop your multiplatform games as efficiently as possible with Unity 6.]]></description><link>https://unity.com/blog/unity-6-game-optimization-guides</link><guid isPermaLink="true">https://unity.com/blog/unity-6-game-optimization-guides</guid><pubDate>Mon, 11 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: October 2024]]></title><description><![CDATA[October was a jam-packed month full of games made with Unity. Whether you’re into blood-curdling horror, dangerous card games, the Dark Knight’s heroics, or recycling, this month has plenty to inspire your next project.October also saw thousands of demos debuting in the Steam Next Fest. Congrats to everyone on these launches. There are too many to list, but here are some standouts we saw:AI LIMITCitizen Sleeper 2: Starward VectorChrono SwordDegenheimLonely Mountains: Snow RidersLuma IslandThe PrecinctProject: MistSandScarlet Deer InnSymphoniaTiny Tales: Hidden ObjectsVoid SolsWhile WaitingWorking on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in October of 2024, either into early access or full release. Add to the list by sharing any that you think we missed.ActionBatman: Arkham Shadow, Camouflaj (October 22)KILL KNIGHT, PlaySide (October 2)Bullet heavenVampire Hunters, Gamecraft Studios (October 30)NIMRODS: GunCraft Survivor, Fiveamp (October 28 – early access)Card games and deckbuildersLiar's Bar, Curve Animation (October 2 – early access)DICEOMANCER, 超厚皮猪猪 Ultra Piggy Studio (October 10)City builderWorshippers of Cthulhu, Crazy Goat Games (October 21 – early access)Citadelum, Abylight Barcelona (October 17)Technotopia, Yustas (October 23)FPSShady Knight, Alexey 'cptnsigh' (October 9)STRAFTAT, Sirius Lemaitre, Leonard Lemaitre (October 24)Devilated, Trunka (October 28)SULFUR, Perfect Random (October 28 – early access)HorrorGrunn, Sokpop Collective, Tom van den Boogaart (October 4)Sniper Killer, Black Eyed Priest, Henry Hoare (October 17)Tormenture, Croxel Studios (October 21)I'm on Observation Duty 7, Notovia, Dreamloop Games (October 22)Fear the Spotlight, Cozy Game Pals (October 22)The Scourge | Tai Ương, Rare Reversee, Beaztek (October 23 – early access)The Hungry Fly, Erupting Avocado (October 23)CROWDED. FOLLOWED., NIGHT DIAL (October 24)Narrative and mysteryPhoenix Springs, Calligram Studio (October 7)PlatformerNeva, Nomada Studio (October 15)Max Mustard, Toast Interactive (October 16)Management and automationRebots, FlatPonies (October 7)Amber Isle, Ambertail Games (October 10)MetroidvaniaAWAKEN - Astral Blade, Dark Pigeon Games (October 22)Anima Flux, Anima Flux (October 7)Voidwrought, Powersnake (October 24)Roguelike/liteWindblown, Motion Twin (October 24 – early access)Up to Par, It's Anecdotal (October 14)RPGGrimguard Tactics, Outerdawn Limited (October 23)Sky Oceans: Wings for Hire, Octeto Studios (October 10)Drova - Forsaken Kin, Just2D (October 15)Reverse: 1999, BLUEPOCH GAMES CO., LIMITED (October 8)Puzzle adventurePRIM, Common Colors, Application Systems Heidelberg (October 24)SimulationRecycling Center Simulator, Balas Games (October 2)Old Market Simulator, Alcedo Games (October 3)Gunsmith Simulator, GameHunters (October 4)Extra Coin, CINIC Games (October 8)Fruitbus, Krillbite Studio (October 28)Sports and drivingStampede: Racing Royale, Sumo Digital (October 10)StrategyDiplomacy is Not an Option, Door 407 (October 4)Thronefall, GrizzlyGames (October 11)SurvivalThe Last Plague: Blight, Original Studios (October 3 – early access)Bad 2 Bad: Apocalypse, DAWINSTONE (October 30)That’s a wrap for October 2024. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-october-2024-releases</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-october-2024-releases</guid><pubDate>Mon, 04 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get the biggest edition yet of our URP e-book, now updated for your Unity 6 projects]]></title><description><![CDATA[Many of the most important features and improvements in Unity 6 are for the Universal Render Pipeline (URP). So we released the latest edition of the URP e-book, Introduction to the Universal Render Pipeline for advanced Unity creators (Unity 6 edition), at the same time as the latest version of Unity. Unity 6 developers, technical artists, and graphics programmers now have all the updated URP key tips and techniques ready for them in one comprehensive guide.This latest edition is the biggest version yet of the URP guide. As with previous editions, it’s the result of deep collaboration between its main author Nik Lever, a graphics programmer with 30+ years experience with creating real-time 3D content and a Unity user since 2006, and senior engineers at Unity.It covers major Unity 6 features like Adaptive Probe Volumes (APVs), the render graph system, GPU Resident Drawer, GPU Occlusion Culling, and the production-ready version of the GPU Lightmapper.In addition to the guide, you can also watch our new Introduction to the Render Graph in Unity 6 tutorial. This video explores the Render Graph system and shows you techniques like how to create a dither effect Renderer Feature by using a Fullscreen Shader Graph material with render graph's optimized resource management.Ultimately, the essential value of the e-book is its A-Z coverage of all URP capabilities. You’ll find a wealth of helpful instructions and example steps that you can apply directly in your project, for all the key platforms – mobile, untethered, XR, as well as PC and consoles. Here’s a rundown of what’s in the guide in addition to the extensive new Unity 6 sections:Get the new URP guide today to help you develop your Unity 6 projects with efficiency and full creative freedom.]]></description><link>https://unity.com/blog/biggest-edition-urp-ebook-unity-6</link><guid isPermaLink="true">https://unity.com/blog/biggest-edition-urp-ebook-unity-6</guid><pubDate>Mon, 04 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: Horror games]]></title><description><![CDATA[Happy Halloween! This year, we’re celebrating some of your most terrifying creations. Mark your calendars for Halloween, as we’ll be sitting down with two incredible horror devs – Chantal Ryan (We Have Always Lived in the Forest) and Sam Barlow (Half Mermaid). Together, we’ll play games created by the Unity community and break down the game design strategies and horror narrative techniques that make them so effective. All in costume, of course.Catch us live on Halloween day at 12 pm ET / 9 am PT.Weird Horror – Community Choice Steam Curator List: October 2024Horror takes many forms, and this month, you helped us choose one – weird horror came out on top. Check out our Steam Curator list of games with unconventional horror design.Learn to create your own horror roguelikeFeeling inspired enough to make your own horror game? Check out the new 2D Roguelike course on Unity Learn. It's free and chock full of zombies and skeletons to get you started.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.We asked folks here at Unity for some of their favorite (or most anticipated) Made with Unity horror games. Check them out below, or add to the list by sharing your favorites.Projekt Z: Beyond Order, 314 ArtsSorry We’re Closed, à la mode gamesPhasmophobia, Kinetic GamesSons of the Forest, Endnight Games LtdWho’s Lila?, Garage HeathenCrow Country, SFB Games
IMMORTALITY, Half MermaidFear the Spotlight, Cozy Game Pals
Mouth Washing, Wrong OrganHollowbody, Headware GamesDoki Doki Literature Club Plus!, Team SalvatoMy Friendly Neighborhood, John Szymanski, Evan SzymanskiContent Warning, thePetHen, Skog, Zorro, Wilnyl, PhilipSIGNALIS, rose-engineDREDGE, Black Salt GamesInscryption, Daniel Mullins GamesTormenture, Croxel StudiosSUNLESS SEA, Failbetter GamesCROWDED. FOLLOWED., NIGHT DIALLethal Company, ZeekerssCult of the Lamb, Massive MonsterCultist Simulator, Weather FactoryMADiSON, BLOODIOUS GAMESBroken Spectre, Games by StitchLamentum, Obscure TalesThat’s a wrap for Halloween 2024! Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games-made-with-unity-horror</link><guid isPermaLink="true">https://unity.com/blog/games-made-with-unity-horror</guid><pubDate>Mon, 28 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[The 16th Unity Awards: Tune in for our first-ever live stream!]]></title><description><![CDATA[We’re only days away from the 16th Unity Awards, and this year is shaping up to be our most exciting yet.For over 16 years, we’ve celebrated the incredible talent of Unity creators, and now we’re making history with our first-ever live stream. This year’s Unity Awards Showcase will bring creators, gamers, and industry leaders together in a global event to recognize and reward the best in the Unity community.Hosted by Larry “Major Nelson” Hryb and Jackson Stevens, this live stream will not only reveal the winners across multiple categories, but it will also feature special guests and partners showcasing new content and updates on upcoming games. You won’t want to miss some of the exciting announcements we have in store.As an added bonus, we’ll also be giving away game keys throughout the live stream, so make sure you’re tuned in for your chance to win.Join us for an unforgettable event as we celebrate the creators who continue to push the boundaries of what’s possible with Unity. This year’s event will be live-streamed across all major platforms – make sure to mark your calendars!]]></description><link>https://unity.com/blog/get-ready-for-the-16th-unity-awards</link><guid isPermaLink="true">https://unity.com/blog/get-ready-for-the-16th-unity-awards</guid><pubDate>Tue, 22 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Advertiser's Playbook to Win the 2024 Holiday Season]]></title><description><![CDATA[As the holiday magic unfolds, savvy marketers are ready to connect with consumers like never before. Unity surveyed 4,094 U.S. adults aged 18+ to uncover insights that can help your brand land on the nice list. Ready to maximize your impact? Let’s dive in!Be proactive and precise with your holiday advertisingWith the holiday season quickly approaching, preparation and timing are crucial, and as our data shows – it’s never too early to think about your holiday advertising strategy, since holiday shopping for most is a year-long activity. 24% of shoppers plan to buy the majority of their holiday gifts during Black Friday and Cyber Monday, while 21% do their shopping throughout the year. Most notably, only 12% of respondents plan to do their shopping in December, highlighting the need for brands to engage consumers early.When do you plan on buying the majority of your holiday gifts this year?🎄 DEEP DIVEGen Z shoppers are most proactive, with 25% planning to buy their holiday gifts throughout the year and 21% starting their shopping even earlier—kicking off in October rather than waiting for Black Friday and Cyber Monday.When it comes to holiday spending, consumers are ready to invest in gifts this year.32% of Gen Z shoppers plan to spend between $101 and $250, while 31% will spend less than $100. As the generations get older, there’s an increased willingness to spend more: 35% of Millennials, 43% of Gen X, and 47% of Boomers plan to spend between $251 and $500+ on gifts, highlighting a strong commitment to holiday shopping across all age groups. Overall, Millennials are planning to spend the most, albeit by a small margin.In total, how much do you plan to spend on holiday gifts this year?And here's how they plan to purchase these gifts: Across all generations, 48% of respondents intend to use their mobile devices for holiday purchases.→ 50% of Gen Zs plan to use their mobile phones for shopping→ 47% of Millennials plan to use their mobile phones for shopping→ 48% of Gen X plan to use their mobile phones for shopping→ 39% of Baby Boomers+ plan to use their mobile phones for shoppingTAKEAWAY:As shoppers begin their holiday shopping earlier and increasingly rely on mobile devices, brands must start engaging audiences now.Tailor your holiday campaigns to align with these early shopping behaviors and leverage mobile to connect with consumers at the right time and place ahead of this festive season.
Leverage the power of mobile gaming this holiday seasonThe holiday season invites moments of togetherness and offers a chance to unwind at the end of the year, but it can also bring its share of stress. Mobile gaming can help offset any holiday stress - in fact, 44% of respondents identified mobile gaming as the ultimate stress reliever over the holidays, with Gen Z (47%) and Millennials (44%) leading the way. Additionally, about 35% of all respondents say they turn to mobile games to combat holiday boredom.Which of the following statements do you associate with mobile gaming in the holiday season? (Check all that apply)Turning to mobile games as a source of comfort and entertainment, audiences anticipate spending a considerable time gaming. 37% of Gen Z expect to increase their playtime during the holidays, while 29% of Millennials feel the same way. Don’t overlook Gen X and Baby Boomers+ though, as the holiday season won't deter them from enjoying their gaming experiences either.Do you expect to spend more or less time playing mobile games during the holiday season?A significant 33% of Gen Z, 44% of Millennials, 46% of Gen X, and 37% of Baby Boomers+ say they’ll play over 3 hours of mobile games per day during the holidays. This dedication to mobile gaming underscores its role as a key source of relief amidst the holiday hustle and bustle.On average, how long do you play mobile games per day during the holiday season?🎄 DEEP DIVE13% of respondents say they’ll likely play for 5 or more hours a day, of which 59+ year olds were the most likely to at 14%. (That’s almost 30% of their entire day! - if they’re sleeping 8 hours~)With so much time spent gaming, it’s no surprise that players are eager to embrace the holiday spirit through their favorite games. In fact, 23% of respondents say they are more likely to engage with holiday-themed in-game content, while 18% plan to spend more on in-game purchases this season.TAKEAWAY:The holiday season offers a prime opportunity for brands to connect with audiences, as 44% identify mobile gaming as a key stress reliever. With many players eager to engage with holiday-themed content and increase their gaming time, capitalize on this trend to drive both engagement and leave a strong impression.
Gamify your ad strategy for the holidaysMobile ads play a significant role in shaping holiday shopping decisions, especially among younger audiences. 45% of Gen Z report that ads in mobile games influence their holiday gift purchases. As the audience ages, the influence of ads decreases, with 32% of Millennials, 27% of Gen X, and 16% of Baby Boomers+ saying they are influenced by ads.During the holiday season, which ad categories are you most likely to engage with? (Check all that apply)
🎄 DEEP DIVEAudiences are most likely to interact with ads for electronics (41%), followed by food and beverage (29%).Rewarded video ads and playable ads are the most popular formats, with 38% indicating they would most likely engage with them. Offerwall ads come in close behind at 33%.During the holiday season, what types of mobile ads are you most likely to engage with? (Check all that apply)🎄 DEEP DIVEGen Zs show a preference for interactive ad formats, with 42% favoring playable ads and 40% preferring offerwall ads that provide rewards. In contrast, Gen X and Baby Boomers+ lean towards rewarded ads. To maximize engagement, brands should focus on delivering creative and interactive ad experiences.
TAKEAWAY:The preference for engaging ad formats indicates that brands should invest in creative, gamified advertising strategies to effectively reach and resonate with audiences during the holidays. Leverage rewarded or interactive ad units to reach new audiences and ensure audiences are open to seeing your ads.As the holiday season sparkles with cheer and connection, may your brand sleigh the competition and spread joy to audiences far and wide!*Of those surveyed, 54% identified as female, 30% as male, 11% as gender fluid, nonbinary or genderqueer, and 5% preferred not to answer]]></description><link>https://unity.com/blog/mobile-advertising-strategies-holiday-season</link><guid isPermaLink="true">https://unity.com/blog/mobile-advertising-strategies-holiday-season</guid><pubDate>Mon, 21 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 6 is here: See what's new]]></title><description><![CDATA[Hi everyone, I'm Martin Best, Product Architect here at Unity, and I’m excited to announce that Unity 6 is now available for download.Unity 6 represents the beginning of the next generation of the Unity Engine and is the new official version name for what was previously referred to as Unity 2023 LTS. Our teams have been hard at work to deliver you the most stable and performant release to date in order to bring you new features that will enhance your creativity in the Editor. To learn more about Unity 6's stability, performance, and our support commitment, hear directly from our CEO, Matt Bromberg, here.With Unity 6, you’ll get access to faster rendering, advanced lighting options, seamless multiplayer workflows, enhanced AI capabilities, and improved support for mobile web runtimes. You can find more details in the official release notes.All of us at Unity are incredibly proud of this release and excited to see the creative possibilities it unlocks for you, the community. To give you more insight on what’s in Unity 6, we asked our product teams to share the features they hear the community is most excited about with you.Boost rendering performanceHi, I’m Oliver Schnabel, Senior Technical Product Manager for Graphics.Unity 6 is delivering many performance improvements to both URP and HDRP, and I am really proud of the optimizations we have made to both render pipelines. We’re introducing a series of optimizations aimed at speeding up production across platforms, reducing performance overhead, and enabling smoother, more intricate scenes.GPU Resident Drawer will allow you to efficiently render larger, more detailed worlds across all platforms including, high-end mobile, PC, and consoles. It optimizes the CPU cost by transferring static objects from CPU to GPU without complicated manual optimization. GPU Occlusion Culling boosts performance by reducing the overdraw per frame, making sure you’re not rendering things that aren’t visible. Our cross-platform temporal upscaler called Spatial Temporal Post-Processing (STP) takes frames rendered at a lower resolution and upscales them, producing a high-quality, temporally antialiased image.We’ve tested these features and have seen more than 2X more performance thanks to the GPU Resident Drawer (when lots of instances are used) or STP (when the GPU is bound by full-screen effects or fill rate).We’ve also received great feedback about Render Graph. Mobile developers will appreciate it for its memory and energy efficiency, while PC and console developers will value its high level of customization. We’ve seen significantly lowered memory bandwidth by up to 50%, which improves battery consumption and reduces heat. The Split Graphics Jobs for DirectX12 allows us to multithread the processing of graphics commands, boosting performance – particularly in larger projects with intricate environments. We tested Split Jobs using internal benchmarks and real game productions and measured up to a 40% reduction in CPU latency. We also introduced DX12 Graphics Jobs support in Editor, improving rendering performance in the Scene and Game views.One of the best ways to experience many of these features is through our Fantasy Kingdom in Unity 6 URP Demo, now available to download through the Asset Store.We look forward to having you join us in our Graphics Discussions, where you can access feature support and ask us questions directly. We’d love for you to share your experience, as well as the amazing things you create with us.
Simplify multiplayer game creationHi everyone, I’m Laurent Gibert, Director of Product Management for DOTS & Multiplayer.I am really excited by what the team has accomplished with Multiplayer in the last 2 years. Unity 6 is stepping up with an incredible end-to-end multiplayer platform where everything is seamlessly integrated, making it faster and easier for you and your teams to start creating.Multiplayer Center is going to be your hub for success. It offers a curated list of all multiplayer tools and services relevant to your project, available whenever you need them. It eliminates the complicated task of having to choose which multiplayer feature tech to implement by recommending it for you. The Multiplayer Widgets are pre assembled UI – small, configurable, and customizable templates – that allow you to easily add multiplayer features, whether it’s a lobby, a session connection, or voice chat.When it’s time to validate your gameplay, deployment can sometimes slow down iteration, and we wanted to solve this. Multiplayer Play Mode is so convenient because it helps streamline this process by allowing you to validate your gameplay instantly, launching up to four independent, lightweight editor processes from the same assets on disk. For the most ambitious server-hosted projects, Play Mode Scenarios allows you to configure deployment steps, including the build of your dedicated server, and its upload straight to your Multiplay Hosting servers.Another feature I’m excited about is Distributed Authority (Beta). Client-hosted games limit costs but put the game at the mercy of host disconnections or latency issues. Distributed Authority (Beta) in Netcode for GameObjects is a scalable, cost-effective solution that manages client ownership and enables advanced latency strategies for seamless scaling.Download the updated Megacity Metro demo to explore its multiplayer mechanics and its implementation of multiplayer services. You can also experiment with all the new Unity 6 features. These are just a few of the Multiplayer features we are delivering in Unity 6.Read more about all of the solutions here. We look forward to connecting with you on our Multiplayer Discussions community channel.Expand multiplatform reachUnity Web

Hey there, this is Ben Craven, a Staff Technical Product Manager at Unity, and I look after our web platform.Unity 6 is packing some killer features for Unity Web.First up, let's talk about performance. Unity has included SIMD for a while, and now we have web assembly SIMD support, which will improve CPU performance in web projects. We are also throwing C and C++ multithreading into the mix, which opens up the potential for even better native code performance inside browsers.Have you ever been annoyed by the 2GB memory limit on web projects? If so, you'll be happy to hear that the next generation Web Assembly in Unity 6 is doubling it to 4GB. More memory means more room for your ideas to come to life.But here's the real game-changer: Unity is finally bringing web to mobile devices. You can now run your Unity projects right inside mobile browsers and have official support backed by Unity. The mobile web story doesn't stop there. You can also embed your projects in native apps using web views, or even use a progressive web app template to make your web apps feel more like native mobile apps with device storage and their own home screen shortcuts.Unity 6 is upping the ante in the web space. I can't wait for you to get your hands on these new features and see what kind of magic you can create. In fact, we’re so excited to see what kind of web games you come up with that we’re sponsoring the Crazy Web Game Jam 2024 with our friends over at Crazy Games. The jam kicks off on November 1. Until then, Unity will be rolling out a bunch of web development tips and goodies, including Asset Store bundles for this game jam. Make sure to check it out!Unity multiplatform features (Build Profiles, Platform Browser)Hi, I’m Thom Hopper, Staff Technical Product Manager for Unity Multiplatform.I'm looking forward to the general release of Unity 6, when folks will be able to get their hands on the Build Profile window and the Platform Browser. These new windows provide a significantly better way to discover platforms and configure builds compared to older editor versions. The new workflow unlocks possibilities that previously required custom editor scripting to achieve.Developers are going to be able to create multiple Build Profiles for any platform they have access to, each with their own build settings and data, and share these build profiles assets with their team using their version control system of choice. No more fiddling with checkboxes when we want to change build target or package type.I’m eager to see how developers will use Build Profiles, especially given how customizable they are. Aside from the platform build settings, each can have unique scene lists for including different content in the game. They can have custom scripting defines for changing script behavior for different profiles and player settings overrides that let developers customize all player settings per profile. This really lets a build profile describe much more than just a development, debug, or release target (although they can do that too).You can read more about all of the solutions here. We are looking forward to connecting with you on our Target Platforms Discussions community channel.Achieve more engaging visualsI’m Steven Kent, a product manager supporting our Unity Engine Graphics teams, and I’m excited about the advancements we’ve delivered for you to achieve more engaging visuals in Unity 6.Adaptive Probe Volumes (APV), a standout feature in Unity 6, automates probe placement, streamlining the process for faster iteration of light-probe-based indirect diffuse lighting.APVs also elevate visuals with stunning lighting effects, enabling seamless transitions through Sky Occlusion and Scenario Blending. Unity's new Light Baking Architecture now powers lighting data generation, optimized to run efficiently even on devices with low-memory GPUs.We've upgraded VFX Graph for ease of use, extensibility, and URP/HDRP feature parity. HDRP now features Volumetric Fog Output and URP supports 6-way lighting for deeper, more realistic environments. Additionally, Shader Graph’s UI Canvas target allows UI artists to craft custom UI widgets using an SDF-based workflow, making them resolution independent and dynamic, as well as advanced background processing such as blur.I’m also excited about the high-definition features and upgrades that will enable you to build high-fidelity 3D experiences. HDRP's enhancement to environmental effects through atmospheric scattering, ozone layer simulation, and the ability to depict realistic water, as well as enhancements to character hair and skin rendering, takes visual fidelity to the next level. You can now also harness the Ray Tracing API, which is officially production-ready on supported platforms, including Windows, Xbox Series X|S, and PlayStation®5.Explore the new Unity 6 Time Ghost Demo, now available for download on the Asset Store. This demo showcases the latest advancements in HDRP, enhanced lighting capabilities with APVs, Scenario Blending, and more.

Also to get you started, Unity 6 eases new users into mastering tools like Shader Graph, VFX Graph, and new features in HDRP with intuitive learning resources and new sample sets made available in the Package Manager.You can read more about the new Unity 6 Global Illumination here, or join us in Graphics Discussions.Unlock possibilities with Runtime AIHi everyone, I’m Bill Cullen, a Principal Product Manager of AI.It’s amazing to see what developers have done with runtime AI models during the Sentis beta and how it’s unlocked new ways to interact with players that were previously impossible. Here’s a look at some of our favorite projects:Real-world interactions: New player interactions can be driven by real-world inputs like the camera, microphone, and motion sensors. The example below uses VR device motion sensor data to generate complementary character animations.
Smarter gameplay: Build nuanced in-game mechanics, like automated game opponents and game outcome predictions. The example below evaluates poker game moves given the player's current card hand.Game effects: Enhance player experiences with new types of animations and rendering techniques. The example below guides and controls a satellite docking maneuver with reinforcement learning.Custom-trained AI models and open-source AI models from communities like Hugging Face enable these use cases. With Sentis automatically optimizing AI models for the Unity 6 runtime, it is much easier to achieve these features compared to previous solutions like a local Python server or cloud-hosted inferences.To learn more, join us in AI Discussions.Enhance productivity and functionalityUnity 6 comes with several new and updated tools to enhance your productivity and functionality. Below, Peter Hall and Benoit Dupuis will share what they are most excited about when it comes to Profiling and the UI Toolkit.Optimizations with higher impactHi, I am Peter Hall, Senior Manager, Profiler and Optimization team and I realize creating games doesn’t always go to plan. Unity 6 includes a new Profiler Highlights module that shows optimization focus areas (CPU or GPU) instantly. The improved Memory Profiler provides accurate resident memory usage, with a detailed breakdown of graphics memory for quicker, higher impact optimizations. With these features, you can create better-performing games, and I’m excited to play them!Accelerated UI developmentHi, I am Benoit Dupuis, Senior Product Manager for UI Toolkit, and I know that producing extensive UI content can often be time-consuming and complex. In Unity 6, we've made significant improvements to UI Toolkit, speeding up the creation of custom UI controls. Developers can now customize how these controls are configured within the UI Builder, making them easier to use. Additionally, our new, fully extensible data binding system further streamlines interface design. I can't wait to see the innovative UIs you’ll create.Get the most out of Unity 6 with these learning resourcesDive into the latest tools and features with updated demos, in-depth best practice guides, and more.You can find all of our technical e-books for advanced Unity developers and creators in the Unity best practices hub or the Advanced best practice guides section of the Unity Documentation. Choose from over 30 guides that cover programming, project optimization, art, animation, lighting, graphics, DevOps, and game and level design.You can also accelerate your Unity 6 development with Unity Learn. Our online learning platform provides creators at all skill levels with guided learning and interactive courses in Unity. Access project-based learning in areas such as game development, AR/VR, C# programming, and real-time graphics.Here are some of the resources ready for Unity 6 creators today:Introduction to the Universal Render Pipeline for advanced Unity creators: Get in-depth guidance on how to set up URP for a new project, how to work with URP Quality Settings, Adaptive Probe Volumes, URP and custom shaders, HLSL includes, and much more. 
Optimize your game performance for mobile, XR, and Unity Web in Unity: This guide features all latest and best mobile, XR, and Unity Web performance optimization tips for Unity 6.
Optimize your game performance for consoles and PCs in Unity: This guide includes all the latest and best PC and console performance optimization tips available for Unity 6.
Get Started with Netcode for GameObjects: Learn how to set up a simple co-op game, including player movement and user interfaces for different game modes. 
Getting started with Unity Web: Level up your web development skills with the new features in Unity 6.We'll be developing many more resources in the coming weeks. Be sure to bookmark this link to easily access all the Unity 6 learning content.We want to hear from youTo support your journey into Unity 6, we will host six Office Hours in Unity Discussions and the Unity Discord server, where our engineering and product teams will be available to answer your questions and respond to your feedback. Each Office Hours event will focus on one of the key themes of this release.
Find all the details about the Unity 6 Office Hours in our official topic on Unity Discussions.Check out the Unity 6 release notes for a comprehensive list of features and the Unity Manual for details on how to use them. We’re always eager to hear your feedback, questions, and ideas regarding the Unity 6 release. Join the community on Unity Discussions, or share your feedback directly with our product team through the Unity Engine Roadmap.]]></description><link>https://unity.com/blog/unity-6-features-announcement</link><guid isPermaLink="true">https://unity.com/blog/unity-6-features-announcement</guid><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity Editor Software Terms Update: Runtime Fee cancellation]]></title><description><![CDATA[Today, as a follow-up from the September 12 Unity Runtime Fee cancellation, we released an update to the Unity Editor Software Terms that reflects what we announced in the blog post. We removed language related to the Runtime Fee and made updates to tier eligibility for Unity plans. To make this as clear and easy to understand as possible, we’re unpacking these changes below, and you can also review the updated terms on our GitHub repository and at unity.com/legal.These are the key takeaways of today’s Editor Software Terms update:Removal of the Unity Runtime Fee policyUpdates to Unity plans’ tier eligibility, which is based on annual company revenue and funding: Unity Personal ($0 to $200,000 USD), Unity Pro ($200,001 to $24,999,999 USD), and Unity Enterprise ($25,000,000 USD or more)Changes to Unity plan pricing, tier eligibility, and financial thresholds will continue to apply to all Editor usersWhat isn’t changing is that you can continue using your current version of the Editor software under the previously agreed terms, provided you keep using that version.For clarity, we’ve provided answers to frequently asked questions below and added them to our pricing updates webpage. If you have additional questions, you can visit us on Unity Discussions, where we’ll be on hand to help.Frequently asked questionsWhy were the Editor Software Terms updated?We updated the Editor Software Terms to remove language related to the recently canceled Unity Runtime Fee and to reflect upcoming changes to the Unity plan tier eligibility and financial thresholds.When do the updated Editor Software Terms go into effect?The updated Editor Software Terms are in effect immediately, as of October 10, 2024.When do the financial thresholds apply?For Unity Personal, the increased financial threshold ($0 to $200,000 USD) will take effect when Unity 6 is released on October 17, 2024.For Unity Pro, the new financial threshold ($200,001 to $24,999,999 USD) goes into effect on January 1, 2025 and applies to new and current subscriptions upon purchase, renewal, or upgrade.For Unity Enterprise, the new financial threshold ($25,000,000 USD or more) goes into effect on January 1, 2025 and applies to new and current subscriptions upon purchase, renewal, or upgrade.Who do the Editor Software Terms apply to?Editor Software Terms apply to all Unity Editor users of all Unity plans (Unity Personal, Unity Pro, Unity Enterprise, and Unity Industry) and all Editor versions.Can I choose to stay on the previous Editor Software Terms?Yes. You can continue using the prior accepted version of the terms for as long as you keep using that named version of Unity Editor (e.g., an upgrade from 2022.1 to 2022.2 is the same named version).Can I use Unity 6 with any previous Editor Software Terms?No. You must accept the updated October 10, 2024 Unity Editor Software Terms to use Unity 6.Do Unity plan price changes affect me if I continue to use previous Editor Software Terms?Yes. Unity may update subscription prices for users who are on current and prior versions of Editor Software Terms. Any price changes will only apply upon purchase or renewal of your plan.Why is the Unity Runtime still mentioned in the terms?The Unity Runtime is a product that forms a core part of Unity’s offering. It’s the portion of Unity Software intended for distribution. As a result, it’s mentioned in the terms as a product and not in the context of the Unity Runtime Fee.Where can I go to learn more about previous changes to the Editor Software Terms?You can view the current and previous Editor Software Terms on our GitHub repository, or unity.com/legal. Other terms may apply based on the products and services you’re using. When we update any of our terms, we post a summary of the changes under the heading “What’s changed,” and include a link on each page to the preceding version of these terms.]]></description><link>https://unity.com/blog/terms-update-runtime-fee-cancellation</link><guid isPermaLink="true">https://unity.com/blog/terms-update-runtime-fee-cancellation</guid><pubDate>Thu, 10 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: September 2024]]></title><description><![CDATA[From literal gun slinging to trucking in space, September was packed with new games the Unity community released. Check out our roundup below.

Games with dogs – Community Choice Steam Curator List: September 2024As we have every month, we opened up voting for the next list of games we make on our Steam curator page. It was a hard-fought battle between games with dogs, frogs, hogs, or logs – but dogs won out! Check out the full list of games on our page, and let us know any we missed.
Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in September of 2024, either into early access or full release. Add to the list by sharing any that you think we missed.Action and casualStarstruck: Hands of Time, Createdelic, LLC (September 16)Perennial Order, Gardenfiend Games (September 6)Insect Swarm, Parallel Portal (September 12)NanoApostle, 18Light Game Ltd. (September 12)Stardiver, Green Planet Games (September 12)Melobot – A Last Song, Anomalie Studio (September 16)City builderRoots of Yggdrasil, ManaVoid Entertainment (September 6)Goblin Camp, Korppi Games Ltd (September 17 – early access)EcoGnomix, Irox Games (September 30)ComedyWHAT THE CAR?, Triband (September 9 - Steam release)FPSI Am Your Beast, Strange Scaffold (September 10)Zero Hour, M7 Productions, Attrito (September 9)Wild Bastards, Blue Manchu (September 12)Chains of Fury, Cobble Games (September 16)HorrorHollowbody, Headware Games (September 12)Envelope, Skaar Game Productions, Numme (September 4)Fears to Fathom –Woodbury Getaway, Rayll Studios (September 12)Mouth Washing, Wrong Organ (September 26)Narrative and mysteryCopycat, Spoonful Of Wonder (September 19)Mexico, 1921. A Deep Slumber., Mácula Interactive (September 13)PlatformerLorn’s Lure, Rubeki Games (September 20)Roguelike/liteShogun Showdown, Roboatino (September 5)StormEdge, Shieldbreaking Games (September 13)The Spell Brigade, Bolt Blaster Games (September 16 – early access)Rune Coliseum, Rafale Software (September 23 – early access)Breachway, Edgeflow Studio (September 26 – early access)Rogue Waters, Ice Code Games (September 30)RPGRealm of Ink, Leap Studio (September 26 – early access)Banquet for Fools, Hannah and Joseph Games (September 30 – early access)SimulationStar Trucker, Monster and Monster (September 3)Critter Cove, Gentleman Rat Studios (September 10 – early access)TCG Card Shop Simulator, OPNeon Games (September 15 – early access)Shadows of Doubt, ColePowered Games (September 26)Sports and driving#DRIVE Rally, Pixel Perfect Dude (September 25 – early access)StrategyMechabellum, Game River (September 26)Silence of the Siren, Oxymoron Games (September 30 – early access)SurvivalREKA, Emberstorm Entertainment (September 12 – early access)That’s a wrap for September 2024. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/games-made-with-unity-september-2024-releases</link><guid isPermaLink="true">https://unity.com/blog/games/games-made-with-unity-september-2024-releases</guid><pubDate>Tue, 08 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[15 Muse Chat techniques for better results with prompting and attachments]]></title><description><![CDATA[We’re always looking for ways to streamline Unity creators’ workflows and make development easier. Muse Chat, the AI-powered assistant integration for the Unity Editor, was introduced as a tool to accelerate this aim. In this blog post, we’ll explore some tips and tricks to help you get the most out of Muse Chat, including effective prompting strategies and new features to enhance the context given to chat.Before we dive in, it’s crucial to understand that Muse Chat isn’t just a chatbot – it’s a context-aware AI assistant that understands your Unity project. This means that Chat can read relevant information based on the subject you’re asking about, such as parsing your physics settings or debugging an attached item, all to provide more relevant and accurate assistance based on your current scenario.The key to unlocking Muse Chat’s full potential lies in how you frame your questions and requests. Here’s how to tailor your queries and the context you provide about your project.Be overly specific: Instead of asking “How do I optimize my game?”, try "What are three ways to improve frame rate in a mobile 3D platformer?” or “How can I optimize the rendering of my particle system in the current scene?”Split up your prompt: If you have a longer prompt, split it up so it’s more digestible and can be addressed step by step in the response. For example, say “Set up a script to make a character jump when pressing the spacebar. Then, add a cooldown between jumps, and lastly, adjust the jump height slightly higher than the default setting.”Use focused language: Clarify what you are looking to understand and specify what the name is of the attached item(s). This could look like “Why is the attached Ball_0 passing through the Floor_0?”Rely on technical language: Muse Chat understands Unity-specific terms, so don’t hesitate to use them. “What’s the difference between using OnCollisionEnter and OnTriggerEnter?”Provide context on intent: Give Muse Chat relevant information about the contents and goals of your project. For example: “I’m working on a 2D puzzle game with complex particle systems. How can I optimize performance on low-end devices?” No need to specify the Editor version or project settings – Muse already knows.Clarify your level of familiarity: Do you have deep experience or understanding of Unity? Or, are you still new in your development journey and need more basics explained to you? Let Muse know to get answers more tailored to your level of expertise.Ask for step-by-step guidance: When tackling complex tasks, request detailed instructions. “Can you provide a step-by-step guide for setting up a basic inventory system using ScriptableObjects?”Explore alternatives: Ask Muse Chat to compare different approaches. “What are the pros and cons of using NavMesh vs A* pathfinding for an RTS game?”Generate scripts: Use Muse to get boilerplate code to iterate on. For example: “Write a script to implement player health regeneration over time.”Document your code: Attach your script to the conversation and then ask Muse to comment or document your code.If at any point you’re unsure how to get the most out of Chat or the answer is not really hitting the mark, ask again! Muse Chat can not only instruct you how to best phrase a prompt to get the outcome you are looking for, but also adjust its response based on whatever new or clarifying information you provide.
Based on your feedback, we’re providing a new way to attach items to your prompts. This opens up a realm of possibilities to get even more tailored responses back from Muse. Now, you’re able to attach:GameObjects: Drag and drop items from your project hierarchy into the Muse Chat window to get more precise responses to your queries.Assets: Attach items from your project folder to provide targeted advice, then drag them into the Chat window. For example: “How can I adjust this material to achieve a more realistic metal look?”Code: Attach a script from your assets, then ask Muse to analyze the script or describe its purpose.Console logs: Select a console message, attach it in the Chat window, and ask Muse for potential solutions.Multi-select: Drag and drop to attach items and reference them across both your hierarchy and asset folder.To utilize attachments, simply drag and drop, or click “Attach Item” next to the chat input field and select the item(s) you want to include with your prompt. Then, to further draw focus to the attachment, you can refer to it in your question; “How do I fix this [console error]?” or “Why are the two attached objects not bouncing off each other. What should I check?”Muse Chat is a helpful companion in your Unity development journey. Instead of searching through documentation and online resources to find a solution relevant to your project’s unique settings or circumstances, Muse is there to support you.By crafting effective prompts, leveraging Muse Chat’s deep Editor integration, and taking advantage of attachment support, you can significantly enhance your productivity and problem-solving capabilities. Remember, the more you interact with Muse Chat, the better you’ll get at using it. Don’t be afraid to experiment with different types of queries and explore the full range of its abilities.If you’re curious about what the future looks like and how we’re taking Muse Chat to the next level with running commands to iterate on scenes and a code generator, make sure to sign up for experimental features. You’ll have the chance to try out this functionality and provide feedback before its wider release. To get added to the list for these experimental features, join the AI mailing list, and find us on Unity Discussions to talk about the latest Muse features and improvements.
]]></description><link>https://unity.com/blog/muse-chat-prompt-attachment-tips</link><guid isPermaLink="true">https://unity.com/blog/muse-chat-prompt-attachment-tips</guid><pubDate>Thu, 26 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 key strategies to drive scale and revenue for your app during the shopping season]]></title><description><![CDATA[As most app marketers know, time spent on device peaks during the holiday season. Between November and December, households across the globe are on their devices, shopping for holiday deals, ordering takeout for family gatherings, booking their vacations, or just spending some downtime with their favorite mobile game.The key to making this seasonal uplift in new users, engagement, and intent work for your app is tackling it from all angles - from optimizing existing channels to expanding into new ones.1. Build holiday-themed and urgent creatives that spike conversionsThe challenges app marketers face during the holiday season are the same as those throughout the rest of the year - only amplified due to the high competition for users’ attention. To drive growth, you need to optimize your channels, generate strong content and creatives, reach your target audience, look for real-time marketing opportunities, and collect and analyze data to improve performance.The key difference between this season and the rest of the year is the opportunities available to maximize your app’s growth through creatives. And there’s a lot of data to back up this claim*:Conversions are significantly higher throughout the holiday season due to more engagement in apps and on phones (2021, US, iOS)Game installs surge 3x during the week of Christmas (2021, US, Facebook)Advertisers test 2x the amount of creatives during the holidays, which means you don’t want to be left behind*Data from the Unity Playworks platform, 2021-2022This makes the holiday and shopping season prime opportunities to use your creatives to drive growth. It’s also the time when consumers are most likely to be engaged by emotional triggers, like nostalgia - since it’s a time traditionally affiliated with friends and family.These triggers are a useful tool for building high conversion creatives. Your creatives can use users’ emotional responses to these triggers to connect your app with the mood of the season. By playing to these emotional responses you’ll stand a better chance of encouraging users to download your app.Another effective emotional trigger to motivate users is urgency. Time-limited promotions and time-sensitive messaging are two great ways to insert urgency into your creatives. Urgency is an effective tool as it motivates users to engage as soon as possible or risk losing out - whether that’s on a special promotion or just the chance to get ahead of the shopping crowds, availability issues, or lengthy delivery times.Some tips to help you ideate creatives that spark the holiday feeling include:Use real footage of real people that show emotional, heartwarming scenariosTest holiday symbols in your creatives - think snowflakes, witches, pumpkins, and turkeysLeverage narratives that center on family and community2. Set up an offerwall campaign to exceed your ROAS goalsThe offerwall is a user-initiated, rewarded in-app marketplace with three main constituents: developers use the offerwall to drive revenue, retain users, and motivate app engagement. Advertisers use the offerwall to reach unique, high-quality audiences that are looking to exchange engagement for rewards. Users engage with the offerwall for rewards, app discovery, and brand discovery, all while getting more of the app they’re already using. Here are 3 best practices for mastering this ad unit during the holidays:First, the most important thing to keep in mind is timing. You want to ensure that you have enough time before the shopping rush to reach a large audience, while also making sure that you’re not leveraging shopping season themes before the season is top of mind for users.Second, like with your creatives, it’s important to create a sense of urgency with your offerwall campaigns to drive engagement. With holiday shopping starting earlier and earlier each year, it’s important to remind users that the holidays are coming and that right now is the time to shop. You can provide this sense of urgency in your messaging - by labeling deals as time-limited or tying them into specific holidays.Third, use special promotions like double rewards on key shopping days, like Black Friday and Cyber Monday. Double rewards typically look like doubling the amount of in-app currency that users receive for completing a task - for example, offering users 40 gold coins instead of the 20 they would usually receive for the same task. Consumers will be inclined to engage with an offer that gives them extra rewards. As an advertiser, you can double down on your bid - the reward is higher, the traffic is higher. In fact, we’ve seen around a 35% lift in conversions during special promotions.Overall, the offerwall is an effective placement to engage high-intent users and drive high ROAS - particularly if implemented correctly in your growth strategy.3. Use device set-up placements as new phones enter the marketThe holiday season has tons of new devices entering the market - with all the major players releasing the latest versions of their best-selling devices, many shoppers buy new devices as gifts to themselves and others. As such, device sales traditionally increase heavily in this period. And new models entering the market mean many users will be setting up their new devices.New device activation is when users are most likely to install - the first 48 hours of unboxing their new device is when they’ll install over 50% of their apps. That makes this window the most impactful for app marketers looking to drive scale.Aura from Unity partners with top device manufacturers and mobile carriers, like Vodafone, Samsung, and Orange, to deliver app discovery experiences directly to users on their devices, starting with device activation. This gives Aura the ability to get your app recommended during this pivotal moment of app discovery. On top of that, Aura uses opt-in data to personalize recommendations - helping to ensure that the users discovering your app will be those most likely to download it.To make the most of this unique channel during the holiday season, there are three things to keep in mind.First, like with traditional channels, holiday-ify your creatives. Second, like with offerwalls, timing and creating urgency is vital. Third, prepare for a longer LTV curve. On-device campaigns typically have a slower LTV return than traditional channels, but make up for it by showing greater ROAS in the long run. Running an on-device campaign, you should begin to see user engagement increase on D14 or D30.This is because, when users download an app during device set-up, it’s usually not because they plan to use that app right away. They might download a recommended travel app, for example, during device set-up, but then only first login to the app when they’re starting to plan their trip a month later. The upside of using a channel like this is that you’re already there when users are looking to book that trip, instead of competing for the install when users are searching for their next travel app in the Google Play Store.4. Reach users at moments when they’re already looking to spendOn-device channels are not only confined to new device set-up placements. The ability to reach users directly on their devices to drive app discovery extends to throughout the device lifecycle.Another impactful on-device placement is native touchpoints. Because on-device channels are directly integrated into the operating systems of users’ devices, they enable advertisers to reach users with display ads that appear as native notifications.This represents a key opportunity for advertisers to engage users with messaging related to contextual triggers. You can send users a notification that appears like a notification from their carrier or device manufacturer, letting them know that a holiday sale is currently running on your app. This is a great way to leverage urgency and tie your app into the holiday season.An example of this could be a banner that appears on users home screen, letting them know that Black Friday is around the corner and that your app is currently running a related time-sensitive sale.These native display ads enable your app to reach users as they’re already looking to spend - and help you get a head start on the competition.Having a multi-channel approach to your holiday advertising strategy and knowing how to optimize all of those components is critical. If you’ve made it this far, you should have all of the best practices you need to drive growth this holiday season.]]></description><link>https://unity.com/blog/key-strategies-holiday-season</link><guid isPermaLink="true">https://unity.com/blog/key-strategies-holiday-season</guid><pubDate>Mon, 23 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unite 2024: Celebrating with our community, a look ahead, and the 16th Unity Awards]]></title><description><![CDATA[Unite 2024 in Barcelona has wrapped, and what an event it was! Over three action-packed days, more than 2,000 developers, studios, and partners came together to celebrate game development. From the high-energy Keynote to deep-dive breakout sessions anchored by the Unity Engine Roadmap, attendees had the chance to explore new products and features, learn from expert-led sessions, and connect with fellow developers.It was fantastic to meet so many of you in person. We’ll keep the momentum going by continuing to engage with you IRL and online – you can stay updated through our Events Hub and Unity Discussions. A huge thank you to everyone who participated and to our sponsors for making this event possible. Let’s keep building amazing games together!
Our amazing community of Made with Unity creators continue to show all of us what’s possible by bringing their games and experiences to players around the world. This year at Unite, we showcased 20 developers in our U/Game area so attendees could try out their projects.Folks attending the event got early access to upcoming titles including Stampede: Racing Royale (Sumo Digital / Secret Mode), Starship Home (Creature), and Lost Skies (Bossa Studios). The teams behind Silica (Martin “Dram” Melichárek), Worldless (Noname Studios), Void Crew (Hutlihut Games), Synth Riders (Kluge Interactive), Lost Skies (Bossa Studios), Stampede: Racing Royale (Sumo Digital), and Phasmophobia (Kinetic Games) were also on hand to show off their games and chat with other developers. In our mobile showcase area, people were able to pick up and play games such as MONOPOLY GO! (Scopely), Paper Trails (Newfangled Games), and Marvel Contest of Champions (Kabam), as well as interact with some social impact creators (and former Unity for Humanity grant winners) who were showcasing The Light Within (Pomsky Games), KATOA: Oceans (Sankari Studios), Boddle Learning (Boddle), and Amaru (Six Wing Studios).To keep the party going for those who couldn’t join us live in Barcelona, we streamed live on Twitch throughout the entire show. We had a great time chatting with the community about new games and building in Unity. We also brought some experts in to share best practices and new developments in multiplayer creation, graphics, lighting, collaboration, web, AI, and more.Last but not least, we had a blast hanging out with you, playing games and giving away complimentary keys to play later. Watch the replay and let us know where you’d like to learn more. Special thanks to our special guests from SLOW BROS., Scopely, Playable Worlds, Kinetic Studio, and Turbo Makes Games.We dove into future updates and releases of the Unity Engine in front of a packed auditorium. The Roadmap was a chance to return to our roots by giving you insight into what’s next for Unity.We introduced the concept of a generational release, which will allow us to predictably deliver new capabilities within a generation that can easily be incorporated into existing projects. We then went into more details about the next version of the Unity Engine being released within the Unity 6 generation: the Unity 6.1 Update.The Unity 6.1 Update will include much-requested features like foldable and large screen support, optimized Deferred+ rendering in GPU Resident Drawer, a new build profile for Meta Quest, and a build target for Facebook Instant Games. We will share more as we get closer to its release in early 2025, and we will continue to support Unity 6 for as long as necessary to better serve our customers.While we’re excited about the possibilities Unity 6 opens up for you, we also revealed that we’re hard at work building the NEXT generation of the Unity Engine, working on core principles of simplicity, iteration speed, and power – all aimed at helping all of you to make your visions real:Simplicity: Reduce the complexity within the Unity Editor and make the default choice the best choice. Whether it’s a single unified renderer, an easy-to-use set of UI tools, or streamlined multiplayer, our first priority is to make workflows simpler for you.Iteration speed: Implement your vision with fewer roadblocks and greater efficiency so you can go for those stretch targets that once felt out of reach.Power: New tooling to scale your game projects, hit your target framerate, reach your chosen platforms, and build larger, richer worlds for your players.We’re still a ways off, but we want to hear from you – what are you most excited about? Let us know by joining in on the Unite 2024 Roadmap Discussion, and be sure to watch the live session replay on YouTube.
We’re prioritizing creating learning materials that help you maximize your success on Unity, and we’ve got resources galore to help you explore what’s possible with Unity 6.Learn more about how Unity 6 was used in Fantasy Kingdom in Unity 6, Megacity Metro, and Time Ghost. We’ll provide you with samples, demos, and scenes to show you how to get the most out of your project alongside the release of Unity 6 on October 17, 2024. And don’t forget to bookmark your favorite technical guides and e-books as we continue to update them to better reflect the new capabilities in Unity 6.Outside of the main event, we also had dedicated programming for customers and users across Appfest, the Industry Executive Summit, and the Education and Industry Mixer. These events let us connect with you based on what interests you most.A few highlights include:Top mobile game and app leaders gathered for Appfest, a two-day event, to network, share knowledge and best practices, and help advance the industry as a whole.The Industry Executive Summit brought together leaders from companies like Deutsche Bahn, Cincinnati Children’s Hospital, Icon Group, BMW, and Capgemini to share compelling stories of how they’re leveraging Unity’s platform to solve real-world challenges. Above all, the summit demonstrated how Unity’s evolving platform is meeting diverse industry needs to drive innovation and growth across sectors.We partnered with the local university, Universitat de Barcelona, to host the Education and Industry Mixer Meetup, where nearly 100 local students mingled with game developers to have fun, play games, and learn about careers in gaming.Your voice matters! Following the reveal of our 16th Unity Awards nominees, head over to the official Unity Awards voting page to support your favorite games, Asset Store publishers, and community creators. Each vote helps us shine a spotlight on the incredible talent and hard work within the Unity community. Voting closes on October 4 at 11 pm CET, so don’t miss your chance to vote for your favorites.Another reason this year’s awards ceremony is extra special is that it’s the first time the Unity Awards showcase will feature a livestream event. We’re thrilled to not only celebrate the achievements of our community but also share some news and updates from upcoming Unity games. Join us on October 23, 2024, at 7 pm CET for an event dedicated to the creators who have made some of your favorite games of this past year (and years to come).An amazing event like this would not be possible without our incredible customers, community, partners, and sponsors. Follow all the latest Unity happenings on Unity Discussions or on Discord, X, Facebook, LinkedIn, Instagram, YouTube, and Twitch. On-demand session recordings from Unite 2024 will be available soon on YouTube.]]></description><link>https://unity.com/blog/unite-2024-event-wrap-up</link><guid isPermaLink="true">https://unity.com/blog/unite-2024-event-wrap-up</guid><pubDate>Mon, 23 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get started: Crazy Web Game Jam 2024]]></title><description><![CDATA[From November 1-8, Crazy Games will be hosting a game jam that challenges developers across the world to join forces and create a game using Unity Web. Unity is sponsoring the Crazy Web Game Jam 2024, and we invite our amazing community to make games with us!Whether it’s your first time using Unity, first time participating in a game jam, or first time making a game, we have you covered with web development tips, tricks, best practices, and exclusive goodies like Asset Store bundles and more.Sign up here: jam.CrazyGames.comRemember:The theme has been officially announced! "Everything is a remix." The jam will run for one week, from November 1 to November 8.Leverage Unity Web to create your game. Make sure to upgrade to Unity 6 to take advantage of the latest Unity Web features!Here are some key resources for creating with Unity Web.Unity 6 | Access the latest Unity Web featuresBlog | Web runtime updates are here: Take your browser to the next levelUnity.com | Game development for webHow-to guide | Profile and optimize a Unity Web buildUnity has put together a full slate of resources and events to help guide you on your game jam journey.Unity Web Asset PackWe worked together with our Asset Store team to put together a handy Unity Web starter asset pack with resources that require minimal coding. The Unity Web Asset Pack will be available from October 16 until November 6, and includes assets and tools that cover key aspects of game building, such as 3D models, audio, textures, effects, and more.YouTube Game Jam playlistWe curated a YouTube playlist that combines our videos with content from Unity Insiders and other creators. In it, you’ll find tips on how to approach game jams as well as tutorials to get you started with visual scripting, 2D tools, and more. Watch the Game Jam YouTube Playlist now. Check out the additional programming that we’ve planned out to help jammers.Sep 19 | Unite Barcelona | Better in a browser: Big advances for gaming with Unity WebOct 17 | Unity Learn | Course 1.1 - Getting Started with Unity WebOct 16–Nov 6 | Asset Store Bundle | Unity 6 Asset Store bundle with Web Theme tierOct 31| Webinar | Prototyping Tips for Web Games roundtableNov 5 | Let’s Dev live stream | Build Game for Game JamDec 5 | Let’s Play live stream: Unity’s Game Jam results revealCreators all over the world participate in game jam events to develop their skills and test their ingenuity. Check out the Unity Learn course Get started with game jams to discover the basics of game jams. This includes tips and tricks on making the most of the jam experience. Learn everything from what you can expect when you join a game jam to how to develop your game after the jam is complete.Curious to see how fellow creators are using Unity Web? Check out some of the ways studios of all sizes have leveraged Unity Web to bring their vision to life.Creator Spotlight | Pushing the boundaries of web games with Pigiama KasamaLearn about Pigiama Kasama's creative process, including getting the most out of a web game, reiterating 200 times to get a character right, and using music to engross a player!Join the team from Pigiama Kasama and your host Jackson to hear about the creative process behind Kasama: The Awakening, available now on spatial.io.Case Study | How Coatsink reduced web load time for Ready, Set, Cook! by 25%Ready, Set, Cook! is a cooperative cooking and serving game for Messenger Rooms built by Coatsink, the studio behind Jurassic World Aftermath and Transformers: Battlegrounds. Specializing in VR, they focus a lot of their resources on building for the Quest platform. This project evolved out of the team’s relationship with Meta. Here’s what they learned during their first foray into mobile web development.Webinar | Tips for creating mobile web gamesTune into this webinar to get tips and tricks for building and monetizing mobile web games. Experts from Coatsink, CrazyGames, and Unity will share their behind-the-scenes experiences and best practices to help guide you through successful game development and publishing.This discussion will cover:Unlocking the secrets of web browsers as a platformReaching more players on small screensOptimizing games for webWebinar | Growing your web game’s playerbase roundtableTune in to our webinar to learn best practices to maximize your web game’s awareness. An expert from ULTRAHORSE will give you an inside look into his web game design and development experience, and an expert from Xsolla will be on hand to provide valuable monetization tips.This discussion will cover:Leveraging web to increase community engagementDesigning game sessions that range from “snackable“ to long-formBuilding flexible IAP/IAA systems for web and beyondWhile the theme won’t be announced until November 1, you can get started today by signing up at jam.CrazyGames.com.]]></description><link>https://unity.com/blog/crazy-web-game-jam-2024</link><guid isPermaLink="true">https://unity.com/blog/crazy-web-game-jam-2024</guid><pubDate>Thu, 19 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unite Keynote summary: A peek inside Unity 6]]></title><description><![CDATA[This week, Unity developers from around the world gathered in Barcelona, Spain for Unite 2024, and today’s Keynote packed in over an hour of new feature reveals, dev success stories, and in-Editor technical demos highlighting Unity 6 in production.We announced that Unity 6, the most stable and performant version of Unity, will be available on October 17, 2024, and supported over the long term. Unity 6 gives you the tools you need to build the games you want to build and reach even more players across more platforms. It comes with improved graphics rendering for greater control over your game visuals, simplified multiplayer workflows, and improved support for web browsers. You can still download the preview here.The Keynote was livestreamed on Twitch and YouTube (where you can also watch the whole show on demand), but if you just want the highlights, we’ve got you covered.“With what we’re showing today, we mean to demonstrate just how we will play our part, to become the partners we once were, only better,” explained Unity’s CEO and President Matt Bromberg, kicking off the show. “More focused on things that make a tangibledifference to you every day. Investing more in powering the ecosystem that makes Unity unique. More focused on stability and what you need to be great. More capable of helping you through the entire game development lifecycle. Put Simply: Unity is here to help you develop great games, and connect with players.”Unity 6 includes powerful graphic performance features like Render Graph, a rendering framework for Universal Render Pipeline (URP) that reduces memory bandwidth along with energy consumption on mobile. The release’s new lighting features are available for both Scriptable Render Pipelines (SRPs), URP and the High Definition Render Pipeline (HDRP), including a new Light Baking Architecture and Adaptive Probe Volumes (APVs), a system that places light probes automatically based on geometry density to power realistic lighting and dynamic effects like lighting scenarios.We also showcased new tools to help you maximize CPU and GPU performance, like the GPU Resident Drawer and Split Graphics Jobs for faster rendering, or GPU Occlusion Culling, which improves GPU performance by reducing per-frame overdraw. Spatial-Temporal Post-Processing (STP) takes frames rendered at a lower resolution and upscales them, producing a high-quality and temporally antialiased image.Many of these features were first teased in the Unite 2023 Keynote, where we also debuted the Fantasy Kingdom in Unity 6 demo for HDRP. This year, we showed the same demo optimized for URP and running on mobile, and shared that the Fantasy Kingdom in Unity 6 project and assets will be available to learn from on the Unity Asset Store, free for non-commercial use, landing alongside the Unity 6 release next month.The best part of new feature reveals? Seeing them in production to get a sense of what they can help you achieve.We debuted the latest cinematic demo from Unity’s Originals team, Time Ghost, featuring a massive, highly detailed outdoor scene with realistic high-fidelity characters – all in real-time. The team opened up the Editor to show how the clip’s world was made possible in real-time using features like the Entity Component System (ECS), APVs, Scenario Blending, SpeedTree vegetation, and more.We also zoomed in on a unique solution to a chronic CG problem. We showed how an artist on the team created an AI model that he brought into the Editor with Unity Sentis in order to approximate complex, high-fidelity cloth deformations that were fast enough for real-time.We followed that up with another look at the tools in production, this time a hotly anticipated game, the next high-octane co-op heist from 10 Chambers, Den of Wolves.10 Chambers COO Svante Vinternatt and Unity’s Mike Geig jumped into the Editor to look at some of the Unity 6 features delivering big gains for the team, like GPU Resident Drawer, APVs, STP, and support for DirectX 12 Split Jobs. “We originally intended for Den of Wolves to be made with Unity 2022 LTS,” explained Vinternatt. “But after seeing the improvements in Unity 6, both in terms of performance and rendering quality, upgrading became an obvious win.”Accelerating your multiplayer development is another big focus area for Unity 6 to make integration, iteration, and deployment faster and more reliable. We dug into a few new features that streamline this process, like Multiplayer Center, which recommends tools and learning materials tailored to your specific project’s needs, and Multiplayer Services Package, which simplifies adding more modular networked features as you need them. We also demoed the new Multiplayer Play Mode, showing just how easy it is to simulate and test multiplayer scenarios right in the Editor using our free Megacity Metro demo (which we’ve also updated for you to use and start learning with in Unity 6). In just a few clicks, the team was running multiple instances, all wired together, side by side next to the Editor.We also looked beyond buildtime tooling for multiplayer. Distributed Authority (beta) is a new network topology that keeps the state of the gameplay server-side while the simulation is distributed to your players’ game clients for seamless host migration as you scale.To wrap up our multiplayer coverage, Highrise Studios’s founder and CEO Milan Peschl came onstage to talk about how the team is using the full suite of Unity 6 Multiplayer Services in their upcoming game Degenheim, coming to Steam this fall. He recounted how they started out with a mix of solutions and third-party asset packs, but ultimately opted to use the complete multiplayer ecosystem that’s already pre-integrated in Unity 6.“As an indie startup,” explained Peschl, “this unlocks ‘big studio possibilities’ and abstracts away the complexity our devs hate, allowing us to focus on what we love: the game itself.”Of course the real key to any game’s success is finding and keeping players. So next we turned to building, managing, and optimizing live games, looking first at a Unity LiveOps workflow called Releases (beta), designed to make it easier for teams of all sizes to safely experiment in live games. Coming soon to open beta, this new process will enable you to smoothly roll out updates, new levels, and other content that helps drive player engagement and retention, monitor the new release’s performance using Cloud Diagnostics, and then roll back changes quickly to tweak and rerelease if there’s an issue.Building on this concept, Google’s Jack Buser took the stage to share Google Cloud’s vision for living games, games that grow and adapt to become even more successful through a mix of scalable infrastructure and AI.From there, we turned our focus to tools for building a successful game business. We started by looking at mobile gaming leaders like SYBO, whose hit game, Subway Surfers, has been thrilling millions of players for over a decade. We then dug into how mobile studios of all sizes can strike a balance between monetizing for revenue and offering players an awesome gaming experience using Unity LevelPlay.LevelPlay is now integrated into the Unity Editor, enabling you to access not only Unity Ads and ironSource Ads, but up to 25 different ad networks, which all compete for the best price for space inside your game. It includes a suite of tools to fine-tune your ad experience by previewing them from players’ perspectives, A/B testing, real-time performance reports, and the ability to build ad experiences segmented for different user groups. You can also tap into help with player acquisition, even transferring your monetization revenue to fund your user acquisition campaigns.
We’ve always prided ourselves on our extensive reach – over 20 platforms and counting – and in Unity 6, we’re offering new ways to target mobile with Unity Web. Offering fast load times without installs, mobile web is growing in popularity by offering bite-sized content for casual gamers, and they’re great for samples like Stratton Studios’s jaw-dropping Project Prismatic.We’re excited to see more of you jump into developing web games, so we’re working with Crazy Games on a game jam, where you can leverage Unity 6’s runtime support to create a game just for web browsers.We’re thrilled about Unity 6 – we’ve partnered closely with customers to make it the best, most stable and performant Unity release to date. But we wrapped our Keynote with a sneak peek at what we’re working on to help you build and run incredible games in upcoming generations.Most importantly, we’re committing to supporting Unity 6 for as long as necessary to better serve our customers, and expanding the way we provide that support to help you get more value out of the Editor and Engine. We started with the Unity 6.1 Update early next year – that’s still part of the Unity 6 release generation, but, well, updated. It will continue to build on the same core Unity 6 capabilities, but will also include new features like support for foldable and larger-screen formats, Deferred+ rendering in GPU Resident Drawer, and new build targets and build profiles. You’ll be able to access these new features and improvements, and we’ll make it easy to bring your Unity 6 projects to the update when it ships next year.But we’re also well into production on the next major release generation after that, driven by your feedback. It will bring a fundamental shift in approach for the Engine, and just a few of the major features include bringing ECS into the heart of the Engine and introducing a new content pipeline approach, worldbuilding system built on DOTS, animation system, and better scripting. This generation offers a lot to be excited about, but it’s a ways out yet.We are so excited to have you dive into Unity 6 in less than a month! We can’t wait to see what you create.Unity 6 releases October 17, 2024. Stay tuned for more coverage of Unite 2024, including highlights from our deep-dive technical breakout sessions, and share your thoughts and questions with the rest of the community on Discussions.]]></description><link>https://unity.com/blog/unite-2024-keynote-wrap-up</link><guid isPermaLink="true">https://unity.com/blog/unite-2024-keynote-wrap-up</guid><pubDate>Thu, 19 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[A message to our community: Unity is canceling the Runtime Fee]]></title><description><![CDATA[After deep consultation with our community, customers, and partners, we’ve made the decision to cancel the Runtime Fee for our games customers, effective immediately. Non-gaming Industry customers are not impacted by this modification.Over the last 20 years, we’ve partnered with brilliant designers and developers, artists and engineers, publishers and platforms, to build a world where great games could be built by anyone, for everyone. We called it “democratizing game development,” and it remains our core mission today. However, we can’t pursue that mission in conflict with our customers; at its heart, it must be a partnership built on trust. I’ve been able to connect with many of you over the last three months, and I’ve heard time and time again that you want a strong Unity, and understand that price increases are a necessary part of what enables us to invest in moving gaming forward. But those increases needn’t come in a novel and controversial new form. We want to deliver value at a fair price in the right way so that you will continue to feel comfortable building your business over the long term with Unity as your partner. And we’re confident that if we’re good partners and deliver great software and services, we’ve barely scratched the surface of what we can do together.So we’re reverting to our existing seat-based subscription model for all gaming customers, including those who adopt Unity 6, the most performant and stable version of Unity yet, later this year.Here’s what you can expect: Unity Personal: As announced last year, Unity Personal will remain free, and we’ll be doubling the current revenue and funding ceiling from $100,000 to $200,000 USD. This means more of you can use Unity at no cost. The Made with Unity splash screen will become optional for Unity Personal games made with Unity 6 when it launches later this year.Unity Pro and Unity Enterprise: We’ll be modifying subscription pricing and the qualifying annual revenue thresholds, effective January 1, 2025. These changes will apply to all new and existing Unity Pro and Enterprise customers when you purchase, upgrade, or renew a subscription on or after this date.Unity Pro: An 8% subscription price increase to $2,200 USD annually per seat will apply to Unity Pro. Unity Pro will be required for customers with more than $200,000 USD of total annual revenue and funding.Unity Enterprise: A 25% subscription price increase will apply to Unity Enterprise. Unity Enterprise will be required for customers with more than $25 million USD of total annual revenue and funding. A minimum subscription requirement may also apply. Because this set of our largest customers have unique needs and use many of our products and services, we’ll be contacting everyone in the days ahead to discuss customized packages.From this point forward, it’s our intention to revert to a more traditional cycle of considering any potential price increases only on an annual basis. Our commitment remains that if we change the Editor software terms in ways that impact you, you may continue using your current version of the software under the previously agreed terms as long as you keep using that version. We updated this commitment last year on our GitHub repository and at unity.com/legal. You can read more about all the details of our 2025 pricing changes here.Canceling the Runtime Fee for games and instituting these pricing changes will allow us to continue investing to improve game development for everyone while also being better partners. Thank you all for your trust and continued support. We look forward to many more years of making great games together.– Matt
]]></description><link>https://unity.com/blog/unity-is-canceling-the-runtime-fee</link><guid isPermaLink="true">https://unity.com/blog/unity-is-canceling-the-runtime-fee</guid><pubDate>Thu, 12 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games made with Unity: August 2024 in Review]]></title><description><![CDATA[So many fantastic games made with Unity were released last month. 

Community Choice Steam Curator List: August 2024
To kick August off, you voted for our next Steam Curator page list – Bad drivers! Check out the full list of games on our page, and let us know any we missed.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.

Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in August of 2024, either into early access or full release. Add to the list by sharing any that you think we missed.Action and PlatformerSlash Quest!, Big Green Pillow, Mother Gaia Studio (August 15)Unrooted, 85 Plus Games (August 2)ONE BTN BOSSES, Midnight Munchies (August 6)CyberCorp, Megame (August 19 – early access)Dustborn, Red Thread Games (August 20)CasualODDADA, Sven Ahlgrimm, Mathilde Hoffmann (August 15)Mirth Melody, Clay Game Studio (August 15)Mika and The Witch's Mountain, Chibig, Nukefist (August 21 – early access)City builderEndzone 2, Gentlymad Studios (August 26 – early access)Preserve, Bitmap Galaxy (August 8 – early access)Mini Settlers, Knight Owl Games (August 8 – early access)MEMORIAPOLIS, 5PM Studio (August 29 – early access)ComedyThank Goodness You're Here!, Coal Supper (August 1)Just Crow Things, Unbound Creations (August 15)HorrorLet Me Out, 4Happy Studio (August 8)Management and automationshapez 2, tobspr Games (August 15 – early access)MetroidvaniaPrince of Persia: The Lost Crown, Ubisoft Montpellier (August 8 - Steam launch)DEVIATOR, Gami Studio (August 1 – early access)Narrative and mysteryFarewell North, Kyle Banks (August 16)Closer the Distance, Osmotic Studios (August 2)Puzzle adventureLeximan, Knights of Borria (August 13)Hidden Through Time 2: Discovery, Rogueside (August 13)Roguelike/liteFeed the Deep, Luke Muscat (August 16)Cubed and Dangerous, Ace High Arcade (August 1)snatch&swallow, megatouch (August 6 – early access)Loopstructor, Pone Games (August 8)Defenders of the Omniverse, Babushka Entertainment (August 26 – early access)RPGCat Quest III, The Gentlebros (August 8)Depersonalization, MeowNature (August 8)SimulationThe Crush House, Nerial (August 9)Crime Scene Cleaner, President Studio (August 14)Sports and drivingPhantom Spark, Ghosts (August 15)Motördoom, Hobo Cat Games (August 2)StrategyTactical Breach Wizards, Suspicious Developments Inc (August 22)Operation: Polygon Storm, Toxic Studio (August 12)Toy Shire, Bluespy Studios (August 26 – early access)SurvivalCore Keeper, Pugstorm (August 27)That’s a wrap for August 2024. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/games-made-with-unity-august-2024-releases</link><guid isPermaLink="true">https://unity.com/blog/games/games-made-with-unity-august-2024-releases</guid><pubDate>Thu, 29 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[AR Guidance: Tech Integration at Industrial Sites ]]></title><description><![CDATA[Augmented reality (AR) helps users understand things more easily and communicate faster by overlapping virtual digital content with the real world. This article introduces AR Guidance from HD Hyundai Infracore and explores how they’ve adopted AR for the maintenance of construction machinery.When complex construction machinery breaks down, AR Guidance can be used to easily identify the problem. Using floor augmentation, objects can be brought up to troubleshoot data for the equipment. The content provided in apps can be used on devices like smartphones and tablets. It is the first AR solution of its kind in the construction machinery industry.Discover how HD Hyundai Infracore’s Global Product Support team uses Unity for troubleshooting.In 2019, HD Hyundai Infracore collected equipment requirements and feedback through interviews with product owners. As they sought to find a way to fulfill their clients’ needs, they planned various service solutions in combination with IT in the service sector. One of these solutions was to use AR to bring up 3D modeling so that clients could easily identify equipment data.They decided to make content that combined modeling with the details of the troubleshooting guide. This content provides users with the basic shape of the equipment and tells them which procedure they should follow to solve their problem.1) Dealer: The dealer that contracts equipment and maintenance (relevant region)2) Service staff: Dealer equipment service staffThe inner workings of construction machinery consist of a complex series of wires, hydraulic hoses, and pipelines, making them difficult to understand. Identifying a point of failure can therefore be very time-consuming. Internal experts were able to understand the inside of the equipment and components through 3D equipment modeling; however, the dealers and service staff had limited access and could not utilize the data.For example, the equipment mainly consists of hydraulics, a circuit diagram of electrical systems, and a block diagram of the engine. The dealer service staff can check the .dwg-based system circuit diagram to identify the structure and logic of the equipment, but even when they figure out the logic through the structure of the circuit diagram, it still takes time to locate major components in the actual equipment. It takes even longer for new service staff.Dealers needed a way for service staff to quickly provide professional services, while service staff needed content that could help them understand equipment data more intuitively than previous text-based service materials. A solution that lets users obtain the data they need and learn from experiences with ease was required.During AR Guidance test operations, content was checked for basic elements, such as displaying major component locations and features that provide detailed data on components.Many popular games use AR, but there were not as many cases where Unity was adopted in the construction machinery market. However, it soon became clear that HD Hyundai Infracore could easily start a project in Unity using various materials, including data provided by creators, tutorials from Unity, manuals, and more.Upon examining various use cases, it became clear that Unity’s real-time 3D technology could be used across many industries outside of gaming. Most notably, it could be used in the construction machinery industry.AR Guidance consists of two modules: Guidance and 3D Model Viewer.AR Guidance displays 3D models of the equipment and offers users a guide for equipment troubleshooting with industrial augmented reality. Users can check and troubleshoot equipment problems on their own using three methods.Sensor Signal Monitoring: Identifies the equipment statusTroubleshooting: Provides causes and troubleshooting guides for defects with fault codesPerformance Test Guide: Offers a guide to measure whether the equipment’s performance is adequate and sends performance values after the equipment has been fixed3D Model Viewer, which does not use AR technology, provides simple control over 3D modeling and provides access to more data by associating the system circuit diagram with each component in the following stages. The goal of this is to help those who are new to the service use 3D product visualization to easily understand the equipment.The first step was to identify which content was the most useful to users in order to efficiently solve their needs. Unity’s training programs, as well as those from the Gyeonggi Content Agency, were used to ensure that users were equipped with the tools and knowledge they needed to be successful.When implementing the Sensor Signal Monitoring system, it was important to categorize and select data, as importing too much data from the equipment to show the location and status values via 3D modeling could cause problems.There was a constant need for a mobile-based diagnosis program, as all equipment diagnosis programs were developed for Windows. HD Hyundai Infracore thought importing Sensor Signal Monitoring, one of the features of the Windows-based diagnosis program, and showing it with the augmented 3D modeling of the equipment, could clearly provide the users with equipment status information.The 3D modeling data was removed from the 3D Product Data Management (PDM), keeping only the minimum required to deliver equipment information. HD Hyundai Infracore also worked to reduce the volume of redundant data imported from each piece of content by structuring it.The troubleshooting guide provides detailed information about the connector PIN number, color, flow chart, and more. It does so according to the occurrence of fault codes by using 3D modeling along with the shape of wires and connectors. The development of this content has contributed to establishing content standards for wiring troubleshooting for fault codes.Because construction machinery usually works in harsh environments, it was important to ensure that the 3D models were stable enough to accurately check equipment data using the AR technology. The aim was to compose one-source, multi-use content in relatively small volumes and increase the speed of data download and execution.Performance tests need to be conducted for all equipment operations to accurately verify repairs. Many variables, including weather and operator controlling methods, make it difficult to extract precise data. To combat this, HD Hyundai Infracore have provided guides that make it simpler to extract accurate equipment performance data using 3D modeling.Positive user feedback For AR Guidance, usability and stability were key. A simple structure was chosen to enable users to easily access equipment data. Capacity was also minimized in order to ensure stable app usage based on the usage environments of users.As a result, HD Hyundai Infracore received many positive reviews and valuable feedback after the launch of the beta version of AR Guidance for European service staff. This included a request to implement content for main component data, which later became a stepping stone for the development of 3D Model Viewer content.A new perspective on construction machinery manufacturers AR Guidance has played a part in changing the perceptions of technical support services for construction machinery. HD Hyundai Infracore goes beyond traditional services, offering a variety of digital services and providing technical support as a premium service strategy. They enhanced client satisfaction and improved their corporate image by providing more innovative digital services with their AR Guidance solution.Effective problem solving AR Guidance helps reduce service time by allowing staff to more easily identify fault data. It also effectively reduces communication time for equipment fault data because headquarters can support problems not directly solved by the dealer service.The future of AR Guidance and AR construction The first objective is to increase the usage rate of global service staff to more than 80%. In order to do this, the expansion of target equipment implementation should be prioritized, as not all equipment sold globally is currently available in the construction management app. It will also be important to quantify service lead time and verify the reduction in communication.Mobile devices were the easiest to interact with, so they were the first to be integrated. HD Hyundai Infracore aims to adopt AR glasses next in order to increase the usability of AR Guidance. They will then begin developing VR-based content alongside their AR-based content. VR solutions will be used to guide regular equipment inspections and correct equipment operations before and after sales.HD Hyundai Infracore also plans to increase equipment uptime by reducing service time with the troubleshooting guide within AR Guidance. The adoption of AR glasses will enable hands-free use during maintenance and repairs.The role of Unity is crucial in the process. They allowed HD Hyundai Infracore to overcome many of the challenges they faced through support, online resources, and the Unity creator communities.AR Guidance is growing with HD Hyundai Infracore. The generation of construction machinery changes in accordance with exhaustive regulations. HD Hyundai Infracore is steadily developing equipment for the new generation and AR Guidance content will continuously be developed for that equipment as well. Usability is expected to be increased by providing troubleshooting guides through AR Guidance as new generations are introduced. HD Hyundai Infracore is developing next-generation equipment, which will be implemented with AR Guidance and see continuous development."With each new release of construction machinery equipment, the content and UI will undergo significant changes. As before, by utilizing Unity's rapid support and various platforms, it will be possible to create content that suits the new generation of equipment and quickly meets customer needs."- Ingeun Lee, Senior Manager of HD Hyundai Infracore]]></description><link>https://unity.com/blog/industry-first-ar-solution-for-construction-machinery</link><guid isPermaLink="true">https://unity.com/blog/industry-first-ar-solution-for-construction-machinery</guid><pubDate>Wed, 14 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How BMW is leveraging Unity to open up new dimensions for the driving experience ]]></title><description><![CDATA[With a rich history rooted in superior engine performance, most know the BMW brand as being synonymous with an elevated driving experience. As the BMW Group has also been known for pioneering digital innovations in the automotive industry in the past decade, it should come as no surprise that in the last several years, the research team at BMW Group has been leading the charge when it comes to finding ways to bring augmented reality technology to their vehicles. We sat down with research engineers Manfred Pauli and Wolfgang Haberl to discuss their vision for the future of driving and how BMW is innovating the in-vehicle experience with augmented reality (AR).
Which teams or business units at BMW are currently utilizing Unity?Manfred: We are a part of the BMW Group research team. We build early prototypes, and provide a lookout for future generations of BMW vehicles. Unity is used throughout the company, especially for designing head-up display graphics or developing graphics prototypes.How does this new prototype for a head-up display work? What are the current capabilities when it comes to using AR to build a new driver experience?Wolfgang: In this case, it is an AR glasses display, so it has some similarities to the head-up system. We try to see what the specifics for AR glasses are and where they make sense in addition to a traditional head-up display. Our current prototype includes some driver and some passenger-related use cases to demonstrate the range of possibilities. For the driver, we have driver assistance augmentation. You see, for example, assisting graphical distance representations during parking, you have your navigation arrows that guide you exactly along the road and the intersections where you have to turn. It also highlights other things, like markers for potholes and construction sites, as well as some signage that you might overlook, like a speed limit or pedestrian crossing. All that information is brought into your central view in AR. For the passenger, we are really trying to explore what might be a nice usage of time in the car. We have implemented a gaming example that allows you to collect coins that appear along the driving route in order to gain points. We also have a feature that lets you use the glasses as your personal movie theater.Can you speak about what goals you are ultimately trying to achieve by bringing AR to drivers? You touched on safety and navigation, as well as the overall driving experience and making it more immersive. What do you hope to see?Manfred: BMW is, as you know, not a manufacturer of AR glasses. So, what we want to do is enable the customer to be able to connect their existing AR glasses that they already use outside of the car. The overall goal is to make any set of AR glasses work inside the car, as we have done with the smartphone. There are already a multitude of AR apps, but what is on the market right now doesn’t work during a drive because the car and head both move. The devices have to be able to differentiate between these movements, but to our knowledge, none of the glasses manufacturers can do the necessary 6 degrees-of-freedom (6-dof) tracking without additional data from the car yet. We have developed our own glasses tracking algorithm, software, and vehicle interface so that we can enable glasses to work inside the car. That is the first step.Wolfgang: Getting this basic system to work has taken up a lot of our time over the past years. This tracking solution enables us to place stable augmentations while the car is moving. Now we are able to put virtual assets on the dashboard that follow the movements of the car. At the same time, we can place signage or markers on the road or on a building in your surroundings that are independent of the movements of the car or the user’s head.We are prototyping different use cases to see what makes sense and what is helpful for the driver. Of course, it is always about creating content that will make driving safer. We are trying to see what we can display to reduce your cognitive load when you have the augmentation right in front of you. We test these features with test drivers in our simulator to study whether their reaction times get better when wearing the glasses compared to using a classic cockpit.Will AR glasses be complementary to what you're seeing in the head-up display or is it basically the same information?Wolfgang: We think that current AR glasses could be a great extension to a regular head-up system. The head-up display provides important information that is not world-locked, like vehicle speed, turn-by-turn navigation, and the current speed limit. It is always available, no matter whether you’re weaning the glasses or not. The glasses provide a huge field of view, significantly larger than the image sizes of any head-up displays. This allows coverage of a good portion of the real world with augmentations, thus extending the traditional head-up.Let's talk a bit more broadly about the auto industry and general AR adoption. As you said, this is all in early development. What do you think the current state is for most manufacturers, and what are you, as BMW, and others prioritizing as you move toward this?Wolfgang: From what we see on the market, a lot of companies are currently integrating AR features into their existing head-up systems, which from our point of view makes a lot of sense. At the same time, these solutions are still limited to the smaller field of view of the head-up system. That’s why we put a lot of effort into AR glasses to see how they could make use of the remaining field of view. We have the only system right now, which works with a small pair of AR glasses that are really ergonomic and provide a compelling form factor and design (the Xreal Air 2). We have put a lot of development effort into getting the tracking to work on a customer- friendly device.We hope more companies that produce glasses will cooperate with us and make their glasses compatible with our vehicles. In the future, we expect glasses to be as ubiquitous as smartphones. We want to set an industry standard with our integration in order to provide a common ground for glasses manufacturers and car manufacturers to have a working platform independent of a certain combination of glasses and car brands.Manfred: We went public with a different pair of glasses in 2014. We used ODG smart glasses, and if you compare those to the ones we’re using now, a lot has changed. The field of view has almost doubled, and image quality has improved a lot. In addition, we can now use Unity. We are really glad to see this technology mature and are proud of our work.What limitations around driver safety, consumer expectations, or hardware are you considering when you think about the next phase of this?Wolfgang: From a consumer’s point of view, we want glasses to get even smaller in order to increase wearability and comfort. Most of the current devices are targeted towards indoor use and have a very little tint. So, if you’re driving outside in the sun, the tint might not be dark enough to see the displayed content. On the other hand, if you’re driving at night, you don’t need any tint at all. Consequently, dynamic tinting is a desirable feature. At the same time, you need a very good display that provides a broad range of brightness to achieve convincing image quality even in bright sunlight.Many of these glasses are also battery-powered, so they have a limited runtime. Of course, we also provide the most important driving information in one of the car’s built-in displays for safety reasons. Still, we hope to see runtimes increase for longer drives.We are able to merge the separate display areas of our different systems in the car to avoid overlap. With our tracking system, we know exactly where the glasses are looking, and we also know where the area for the head-up system and other displays are. So, we can omit putting items in the glasses on top of other displays, giving us the possibility to run them in parallel.What are your hopes for BMW’s role in the development of this technology?Manfred: BMW was the first to introduce the head-up display technology, inspired by the aviation industry. So what's next after head-up? We are launching a completely new user interface with the BMW Panoramic Vision in series vehicles starting in 2025. The whole width of the windshield is then used for display, pillar-to-pillar. We are always thinking about what’s next. We want to point out the huge benefit of AR glasses in the car. Our main goal is creating maximum safety in combination with sheer driving pleasure. BMW drivers are not distracted but intuitively supported in their driving task, resulting in additional excitement.Wolfgang: We believe an important step is creating a standard for car integration with more glasses manufacturers and to keep improving it. From a customer’s perspective, their glasses should simply work in their car, independent of the respective manufacturers.When it came to building this, how did you make the decision to choose Unity? How does Unity fit into your current development workflows?Wolfgang: Most of the companies offering AR glasses on the market right now support Unity. Today, the Unity Engine is the de facto standard for AR glasses. It definitely made the most sense for us to go with Unity for this reason.Manfred: The Unity Asset Store was another added benefit. The map plugins from Infinity Code were a huge help in developing navigation features. We had designers working on the prototype that would bring in assets from Blender, and then we integrated them into the Unity editor and deployed them through our Android devices. From everything around recording routes with our cars and simulation, Unity has been a very customizable tool that helped us out a lot.Wolfgang: We know that a lot of times, technical research projects are hard to convey or explain to non-experts and sometimes also to decision makers. We always try to implement use cases and great visualizations to transport the idea and the vision of the final customer product. Unity was a great help with abstracting away from all the low-level problems of getting the visualizations displayed in the desired way. This made our whole vision a lot more understandable and really fascinated people. It allowed them to see how cool and immersive the future of AR glasses in vehicles could be.Want to hear more about this exciting project? Watch our deep dive session with BMW from Unite 2024 in Barcelona.Explore the possibilities of Unity for automotive, or contact us for more information.]]></description><link>https://unity.com/blog/industry/bmw-augmented-reality-glasses</link><guid isPermaLink="true">https://unity.com/blog/industry/bmw-augmented-reality-glasses</guid><pubDate>Wed, 14 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Break into real-time 3D industries with Unity’s Elevate program]]></title><description><![CDATA[There’s never been a better time to pursue a career in real-time 3D (RT3D). Across industries as diverse as gaming, architecture, automotive, medicine, aerospace, and film, new and lucrative career opportunities are emerging for the next generation of real-time developers, programmers, and artists.However, despite the RT3D boom, preparing for these new roles and navigating a hiring environment that’s rapidly shifting can be challenging for everyone involved. How are job seekers to know which skills they’ll need for which positions, and how best to get themselves up to speed? How should educators adapt their teaching so it stays relevant? And, how can employers more easily identify and onboard the very best candidates for increasingly specific roles?Unity’s latest initiative, Elevate, is here to address these challenges by transforming the way job seekers, educators, and employers interact within the dynamic RT3D landscape. Elevate’s mission is to equip job seekers with the knowledge they need to prepare for and secure opportunities in RT3D sectors, while also providing educators and employers with resources to streamline the talent cultivation and hiring cycle.Introducing Universal Job ProfilesAt the core of the Elevate initiative are Universal Job Profiles (UJPs) – meticulously crafted guidebooks designed to eliminate the guesswork and inconsistencies plaguing RT3D job definitions. UJPs are industry-vetted, detailed overviews of specified roles within RT3D industries. UJPs serve as comprehensive manuals detailing vital job elements such as role responsibilities, how positions fit within a studio structure, core skill requirements, commonly used tools, application prerequisites, interview processes, and learning resources. In essence, UJPs outline clear and structured career pathways tailored specifically to various roles within RT3D industries.The Employer Advisory BoardThe creation and refinement of UJPs is overseen by Elevate’s Employer Advisory Board (EAB), a diverse collective of experts representing industry-leading companies from all parts of the real-time landscape. These industry leaders provide nuanced insights and feedback, ensuring the UJPs accurately reflect current and emergent RT3D employment trends. The EAB’s advice guarantees that the information within the job profiles accurately reflects industry requirements, equipping both job seekers and educators with the most relevant and actionable information.Streamlining the path to employmentFor aspiring professionals, UJPs act as a map to plan their career trajectory clearly and confidently. These profiles guide job seekers through the landscape of RT3D industries, ensuring that by the time they complete the recommended areas of study, they emerge as job-ready candidates. The UJPs’ actionable checkpoints allow individuals to track progress and acquire skills pertinent to their desired roles.Enabling educators to craft future-ready curriculaEducation institutions are often challenged by the rapid pace of technological advancement in RT3D industries. Elevate alleviates this strain by providing educators with up-to-date UJPs, enabling the design of curricula that are synchronized with the market’s demands. UJPs aid educators in crafting learning experiences that align with real-world expectations, ultimately leading to a classroom-to-career transition that is smooth and successful.

Empowering Employers to find the best talentEmployers also reap the benefits of UJPs by using them as benchmarks for job listings and candidate evaluations. In-depth overviews of roles facilitate a more efficient hiring process, helping employers find the best match for their team quickly. Employers seeking to influence the evolution of UJPs can also join the EAB, contributing to the program’s future direction and maintaining the initiative’s industry-leading status.A collective effort for an inclusive futureThe Elevate program is an ambitious and inclusive endeavor. It transcends tool preferences and industry segments, offering visibility and access to everyone interested in RT3D opportunities. Unity is committed to broadening the path to success in RT3D industries for all, and Elevate stands testament to that commitment.Discover the full scope of the Elevate program and how it can transform your journey in the RT3D industry by visiting the Elevate landing page. Whether you’re a job seeker, educator, or employer, become a part of this groundbreaking initiative and contribute to shaping the future of our industry. With Elevate, we’re not just finding jobs; we’re elevating careers.]]></description><link>https://unity.com/blog/unity-elevate-rt3d-build-your-career</link><guid isPermaLink="true">https://unity.com/blog/unity-elevate-rt3d-build-your-career</guid><pubDate>Tue, 06 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games Made with Unity: July 2024 in review]]></title><description><![CDATA[It’s July. The sun is out. Summer is in full bloom. It’s a great time to stay inside and get your hands on the plethora of brand-new games made with Unity that released this month.By the way, have you followed our new Steam Curator page? Last month, we kicked off a poll on X for the next theme for a list of games to put on the page. Unsurprisingly, cats won out.Check it out!Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.

Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in July of 2024, either into early access or full release. Add to the list by sharing any that you think we missed.Action and CasualMetal Slug: Awakening, Tencent (July 16)Hamster Playground, Mass Creation (July 11)OutRage: Fight Fest, Hardball Games Ltd (July 16)ComedyExhausted Man, Candleman Games (July 24)Thought Experiment Simulator, HoHo Game Studio (July 22)RAWMEN: Food Fighter Arena, ANIMAL (July 23)FPSAnger Foot, Free Lives (July 11)MetroidvaniaBō: Path of the Teal Lotus, Squid Shock Studios, Christopher Stair, Trevor Youngquist (July 17)Gestalt: Steam & Cinder, Metamorphosis Games (July 16)Frontier Hunter: Erza’s Wheel of Fortune, IceSitruuna (July 26)Narrative and MysteryThe Star Named EOS, Silver Lining Studio (July 23)Vampire Therapist, Little Bat Games (July 18)The Operator, Silver Lining Studio (July 22)PlatformerSCHiM, Ewoud van der Werf, Nils Slijkerman (July 18)Moen, Ambient Melancholy (July 12)Valley Peaks, Tub Club (July 24)Puzzle AdventureSlider, boomo (July 24)The Abandoned Planet, Dexter Team Games (July 14)Linkito, Kalinarm (July 23)Été, Impossible (July 23)Arranger: A Role-Puzzling Adventure, Furniture & Mattress LLC (July 25)Ogu and the Secret Forest, Moonlab Studio, Sinkhole Studio (July 29)Roguelike/liteUnion of Gnomes, Hoolignomes (July 18 – early access)
Valefor: Roguelike Tactics, Valefor Ltd (July 19)Little Scavenger, CodeRed Studio (July 27)Deathless, OneTwoPlay (July 29 – early access)Towerful Defense: A Rogue TD, Mini Fun Games (July 29)RPGDungeons of Hinterberg, Microbird Games (July 18)Zenless Zone Zero, miHoYo (July 4)Yaoling: Mythical Journey, RAYKA STUDIO (July 16 – early access)Minds Beneath Us, BearBoneStudio (July 31)SimulationFarlands, JanduSoft, Eric Rodríguez (July 24 – early access)Contraband Police Mobile, PlayWay SA (July 9)The Last Alchemist, Vile Monarch (July 12)Critter Crops, Skyreach Studio (July 22)StrategyCataclismo, Digital Sun (July 22 – early access)Artisan TD, 4rtisans (July 22)ARC SEED, Massive Galaxy Studios (July 30 – early access)Survival7 Days to Die, The Fun Pimps (July 25)That’s a wrap for July 2024. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/games-made-with-unity-july-2024-releases</link><guid isPermaLink="true">https://unity.com/blog/games/games-made-with-unity-july-2024-releases</guid><pubDate>Thu, 01 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2021 Long Term Support Extended]]></title><description><![CDATA[To ensure customers are able to create games with sufficient development time before upgrading, projects currently being built in Unity 2021 Long Term Support (LTS) will have extended LTS support until the release of Unity 6, later this year.Officially, support for Unity 2021 Long Term Support (LTS) ended in May 2024, two years after its release in 2022. This is aligned with the processes as outlined in the documentation under which we release our Unity Engine versions.As part of our ongoing efforts to ensure our users always have the right options for their project, we assessed the current state of support for all of our released (and soon-to-be released) versions of the Unity Engine.Here’s the rundown:Unity 2021 LTS. Fully supported up to the release of Unity 6, later in 2024. Enterprise customers will receive an additional year of support.Unity 2022 LTS. No change. Fully supported until at least May 30, 2025. Enterprise customers will receive an additional year of support.Unity 6 Preview. No change. Fully supported as a Tech stream release until the release of Unity 6, later in 2024.Unity 6. Fully supported for at least two years from its release. Enterprise customers will receive an additional year of support.When we announce the date of release for Unity 6, we will update this list with specific dates for Unity 2021 LTS and Unity 6.Providing peace of mind to our users is a top priority. This change in support for Unity 2021 LTS allows studios to continue to work on their current project, while looking forward to building their next project in Unity 6.As always, we encourage feedback. Please visit Unity Discussions to keep the conversation going.]]></description><link>https://unity.com/blog/unity-2021-long-term-support-extended</link><guid isPermaLink="true">https://unity.com/blog/unity-2021-long-term-support-extended</guid><pubDate>Thu, 25 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Implementing ads without cannibalizing subscription conversions: A brief guide by ad format]]></title><description><![CDATA[2024 has seen many premium subscription service apps expanding their business models to incorporate an ad-tier into their offerings.At first glance, this shift makes sense - traditionally only 3-4% of users are likely to subscribe to a premium subscription-based app. Ads offer premium apps and streaming services a way to monetize the remaining 96% of users who would otherwise not generate revenue. While converting users to subscribers still offers the highest ROI for these apps, they would leave significant revenue on the table without ads.Still, some apps are hesitant to incorporate ads into their monetization strategy. Beyond more general concerns about ads causing churn due to a negative experience, there is also a concern that an ad-based tier would cannibalize subscription conversions. The reasoning is that if a user can access an app’s services through an ad-tier, they won’t be incentivized to purchase a subscription.But with the savvy implementation of an ad-based tier, subscription cannibalization can be avoided, as well as exposing an even greater cohort of users to the benefits of your app’s premium content or services, perhaps leading to more subscription conversions down the line. Below, we go over what you need to know about implementing ads without cannibalizing subscription conversions, broken down by ad format.How to implement ads, by format:1. Display adsDisplay ads are one of the most widely used types of ad formats, including formats like banner, MREC, native, and splash ads (splash ads are pop-up ads that trigger when users open their app). Their popularity is often attributed to their ease of use and unobtrusiveness - display ads require minimal development work from publishers and do not overtly disrupt app usage. Users experience display ads as digital ‘posters’ and are still able to use the app normally when display ads are on screen.As minimally disruptive as display ads are, they’re system-initiated, so users can’t opt out. As a result, there is still some risk of users bouncing. To prevent this, users should be primed to expect ads with messaging related to the tiers - the ad tier where they’ll receive some premium features for free with ads, and the premium tier where they can access all the features of the app without ads.Priming users that ads are present can help to avoid churn since users are less likely to see the ads as intrusive as they’ll be expecting them. Notifying users that they’re on an ad-tier can also work to incentivize subscription conversions - ad-tier users get a taste of premium content, which may make them want to subscribe to unlock the full experience and receive all premium features. Another option for an ad-tier is to give users full premium features but with ads with an option to access an ad-free experience by subscribing.Preferably, users should be primed with a notification from the start of their app experience. A good place is in the sign-up flow since this is when they’ll have the option between using a subscription or ad-based tier for the first time. Moreover, a sticky notification in their account settings is another great place for the notification. There should be a CTA alongside the notification to become a subscriber, which can work to convert users who initially chose the ad-tier of your app.2. InterstitialsInterstitials offer even better revenue generation potential than display ads but can be more intrusive. Like display ads, interstitials are system-initiated, but unlike display ads, users can’t keep using the app until they have either completed or dismissed the ad. So, implementing them correctly is even more important.Like with display ads, priming users is essential. And since interstitials can interrupt the user experience of the app, it’s doubly vital to prime them that ads are present.3. Rewarded videosRewarded videos (RVs) are one of the best ways to monetize users, since, like some interstitial ads, they are a more engaging 15-30 second video, but unlike interstitial ads, RVs are user-initiated. In other words, users opt-in to watch the ad until completion in return for access to in-app currency or content. This makes rewarded videos premium placements with high revenue generation potential - RVs incentivize higher engagement and so advertisers are willing to bid more for them.Thanks to this, RVs can actually positively impact your conversion and retention rates. They enable you to give users a taste of premium content in exchange for watching ads. Some users will want more of the premium content and subscribe, while others, who may have otherwise churned, will stay for the premium content they received from the rewarded video.The primary difficulty with RVs is that they come with some development needs. To implement them, you need a way to categorize content so that it can be exchanged for ads watched. With the right resources and expertise this is entirely possible (Unity has an in-house dedicated consulting team to help publishers accomplish this), but it does take some work.4. OfferwallOfferwalls take the value exchange-driven engagement of RVs one step further, offering users in-app currency or unlockable features for not just watching ads, but also completing tasks in other apps. Users can be tasked using a range of offers, like downloading another app, making an in-app purchase there, or progressing far enough in terms of levels or engagement in that advertised app. Like RVs, offerwalls are also an opt-in, user-initiated monetization strategy, meaning that they are less likely to cause users to churn because users are actively choosing to engage with them.However, just like RVs, there is some development work required. To implement an offerwall you would also need to categorize your features and content. But, on top of that, offerwall implementation also requires you to have some form of in-app currency that users can receive in exchange for completing tasks. Users also then need a storefront in your app where they can spend the in-app currency they earn.Though the requirements of offerwalls can be steep, if you can implement one properly, it can offer a key way to diversify your monetization strategy, giving you a way to monetize highly engaged users who are committed enough to engage with outside offers to access premium content in your app, but still might be on the fence when it comes to purchasing a subscription.Ultimately, all ad formats have a lot to offer in terms of revenue generation and diversifying your monetization strategies. The right one, or the combination of ads, will depend on your app and audience. But, regardless of which ad format is right for your app, all ad format implementations share one commonality - the importance of using segmentation to prevent cannibalization.Segment users to prevent cannibalizationFor a subscription app diversifying into ads, it’s critical to use a monetization platform that allows you to segment users, ideally by region, device model, OS, and more. These segmentation options enable you to tailor your ad implementation to ensure that high-potential users get an app experience that drives them to convert, whereas users who are less likely to convert to a subscription package are routed to an ad-based tier.For example, users from a tier-1 region, like the US, are more likely to convert than those from tier-2 regions like LATAM, so segmenting tier-1 users out of the ad-based tier will help to prevent losing high-quality users who might have otherwise become subscribers.With a monetization platform that enables you to segment users in this way, you stand the best chance of reaping the rewards of implementing an ad monetization strategy without the cost of cannibalization - especially when used in conjunction with priming.]]></description><link>https://unity.com/blog/implementing-ads-guide-format</link><guid isPermaLink="true">https://unity.com/blog/implementing-ads-guide-format</guid><pubDate>Wed, 24 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pixyz: What's new]]></title><description><![CDATA[Pixyz is our data optimization solution designed to ingest, optimize, and convert CAD or 3D assets with tessellated meshes from almost any engineering or design software for use in any 3D staging, rendering, or visualization environment. The Pixyz Portfolio has historically included Pixyz Plugin, Pixyz Studio, and Pixyz Scenario Processor. Please read on to learn about significant improvements and a few licensing changes being made to the Pixyz Portfolio soon.Pixyz Scenario Processor was created to ease the deployment of large-scale data preparation workflows prepared and tested in Pixyz Studio. While Pixyz Scenario Processor has proven to be a valuable tool, it needed to be accessed from the Command Line, which limited flexibility when it came to automation.Today, we are announcing that Pixyz Scenario Processor will evolve into a new, more flexible and powerful toolset called Pixyz SDK or “Software Development Kit”. As the primary offering for developers in all industries, Pixyz is now available as a standard library (Python, C# .NET NuGet), to be used in your favorite IDE (PyCharm, Visual Studio code, etc). This allows for faster, more efficient integrations within our users’ infrastructures and applications. Pixyz SDK will also provide cloud-ready tools (docker image) to simplify the deployment of data pipelines in your private Cloud or local server infrastructure. The purpose of this shift is to better serve our trusted Unity and Pixyz customers handling complex, on-premise, data transformation pipelines.Starting July 24, 2024, Pixyz SDK will become available as the successor to Pixyz Scenario Processor. A minimum acquisition of two nodes will be required for Pixyz SDK. There will also be a grace period for current Pixyz Scenario Processor subscribers. Subscribers with less than two nodes will have 6 months after launch, from July 24, 2024 to January 24, 2025, to renew their license. After that date, all customers will be required to purchase two nodes at a company level, or consider transitioning to our Unity Cloud Automation offering.Our experience working with Pixyz Scenario Processor customers over the years demonstrates that it requires effort to properly set up an on-premise data pipeline and that users get more value when starting with at least two concurrent executions of Pixyz. For instance, many customers require both a staging and production environment, in order to make changes in the staging environment before pushing to production.Unity Cloud Automation and 3D Transformation services will be available later this year for customers who do not wish to purchase two nodes or do not require an on-prem solution.For more information on pricing or your subscription, please contact our sales team. To better understand the differences between Pixyz Scenario Processor and Pixyz SDK, how to migrate data pipelines, and how to access documentation, please visit our FAQ on the Pixyz SDK homepage.As Pixyz SDK is being launched along with a dedicated UI* as the companion app to support the scripting experience, Pixyz Studio naturally changes its position in the Pixyz product stack. From version 2024 onwards, Pixyz Studio will focus on interactive data preparation tasks.Pixyz Studio 2024 launches today in Beta and continues to feature a Python API interface. This enables the creation of simple scripts and plugins designed to enhance its out-of-the-box capabilities and create custom actions to help users work more efficiently. However, Pixyz Studio plugins will not be recommended as compatible with Pixyz SDK.Finally, PyQt native support has been discontinued, so plugins are limited to what the XML structure can offer. Customers wishing to create advanced interfaces should use the full power of Pixyz SDK.On September 3, 2024, Unity will launch a new version of the Pixyz Plugin package. While all main features for CAD and 3D import and data preparation remain unchanged, they have been completely revamped and simplified in order to provide a better user experience that remains faithful to the usual way of working with Unity Editor.With the latest release of the Pixyz Plugin package, Pixyz Plugin will be automatically entitled by Unity Industry and will therefore no longer require a separate license. Standalone Pixyz Plugin license purchases will be discontinued beginning September 3, 2024 and Pixyz Plugin will only be available as part of the Unity Industry bundle.Unity aims to simplify the onboarding process for Industry customers with this change, particularly concerning seat management with Pixyz Plugin. This means access to the Pixyz Plugin package will be automatic for all Unity Industry seats. As the first of many steps to enhance the overall user experience for Industry customers, the Pixyz Plugin package will be continuously upgraded to offer more features that further unlock industrial use cases.Find more information about this important upcoming change in our FAQ here.]]></description><link>https://unity.com/blog/pixyz-whats-new-2024</link><guid isPermaLink="true">https://unity.com/blog/pixyz-whats-new-2024</guid><pubDate>Wed, 24 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[E-book update: More design patterns and SOLID principles]]></title><description><![CDATA[Back in the fall of 2022 we launched the e-book Level up your code with game programming patterns, together with a GitHub repository with sample code. We also released a five-part video tutorial series to accompany the e-book and sample project.We've received great feedback from you on these resources, with many of you asking us to cover additional design patterns. Thank you for sharing your feedback. My team and I follow your comments closely and we really appreciate it. Today, I’m excited to announce that an updated edition of the e-book, Level up your code with design patterns and SOLID, is now available, with an updated version of the design patterns sample project, which you can download from the Unity Asset Store.Both the e-book and the sample project are now based on Unity 6 and include more examples and patterns. The sample project also includes more features from UI Toolkit, including an example that demonstrates databinding, a popular request from the community.Note: Unity 6 will be available later this year. If you want to follow along with the examples in the guide, and the accompanying demo project, make sure to download Unity 6 Preview.Before diving into the new content in the e-book, some of you who are less familiar with the concepts might wonder: Why should I learn about design patterns, and how do they fit into Unity game development?Coming back to your feedback, while the fundamentals of object-oriented programming are familiar to many, applying these principles in your own code can sometimes feel abstract and overly academic.Think of it this way: For every software design issue you face, countless developers have encountered similar challenges before you. Although you can’t always ask them directly for advice, you can learn from their solutions through design patterns.Design patterns offer general solutions to common problems in software engineering. They aren’t ready-made templates to copy and paste into your code, but rather tools in your toolbox to draw upon when needed. Some patterns are more intuitive than others, but each one can be useful in each context.We created this guide for those who are new to design patterns or just need a refresher. It outlines common scenarios in game development where these patterns can be applied. If you're transitioning from another object-oriented language like Java or C++ to C#, you'll find practical examples of how to adapt these patterns specifically for Unity.At their core, design patterns are simply ideas. They won’t apply to every situation, but when used correctly, they can help you build scalable applications. Integrating them into your projects will enhance code readability and maintainability. As you become more familiar with these patterns, you'll identify opportunities to streamline your development process.In short, our guide is designed to elevate your coding skills and create better Unity projects and establish an understanding of general industry best practices that you can carry with you throughout your career.Let’s look at the key new additions to the design patterns resources:An expanded section on how to implement SOLID principlesThe five core principles from SOLID now each have actionable code examples implemented in the sample project that are explained in the e-book. As a reminder, SOLID is a mnemonic acronym for five core fundamentals of software design – think of them as five basic rules to keep in mind that can help you keep object-oriented designs understandable, flexible, and maintainable.As a quick reminder SOLID stands for:Single-responsibility principle: A class should have only one reason to change, meaning it should only have one job or responsibility.Open-closed principle: Classes should be open for extension but closed for modification, allowing them to be extended without changing existing code.Liskov substitution principle: Objects of a superclass should be able to be replaced with objects of its subclasses without affecting the correctness of the program.Interface segregation principle: Clients should not be forced to depend upon interfaces that they do not use. It promotes the creation of specific interfaces over a single, general-purpose interface.Dependency inversion principle: High-level modules should not depend on low-level modules, but both should depend on abstractions.The key takeaway from diving into the examples is that following the principles can help you achieve the following benefits in your game development:Readability: Clear and well-organized code facilitates efficient comprehension of project functionality. Adhering to SOLID principles can enhance code readability; when your code standards are consistent, you boost the chance of smooth collaboration between game programmers on a team. Scalability: Implementing SOLID principles fosters maintainable code, which is crucial for projects that you want to scale. By adhering to these principles, changes made in one part of the codebase are less likely to introduce unexpected issues elsewhere. This approach ensures code remains flexible and adaptable to evolving requirements.Velocity: Ultimately, SOLID principles contribute to improving game development workflows. Modular code, a key aspect emphasized by SOLID, involves breaking down systems into smaller, manageable components. This modular approach facilitates easier testing, debugging, and code reuse across projects, reducing development time and enhancing productivity.The updated e-book and project include four new patterns, bringing the total to 11. Here’s a quick rundown of each one:Factory pattern: A classic use case is when you have powerups (such as speed boosts, shields, or extra lives), which share several attributes yet have different functionality. Here the factory pattern can be used to create instances of these different powerup classes derived from a common interface or base class, enabling flexible addition of new power ups without modifying existing client code.Object Pooling: Some would refer to this as a performance optimization technique rather than a design pattern. In any case, think of it as a way to improve performance by reusing objects instead of creating and destroying them frequently. In our sample scene you will find an example of a gun turret firing large amounts of bullets at rapid speed. Rather than instantiating them (and cleaning up once they served their purpose at significant performance cost) each time we use the pattern to recycle them over and over.Singleton: The singleton is likely one of the common patterns in game development – chances are you are already using it today. It’s useful if you need to have one object that coordinates actions across the entire scene. For example, you might want one game manager in your scene to direct the main game loop. However, there are some pitfalls to watch out for when using the singleton pattern, which we explain in the guide.Command Pattern: You’ve likely seen the command pattern at work if you’ve played a game that uses undo/redo functionality or keeps your input history in a list. It’s a pattern you can leverage for a strategy game, for example, where the user can plan several turns before actually executing them in the order the input was given.State Pattern: This allows an object to change its behavior when its internal state changes, which simplifies the management of complex state-dependent behavior in game characters or UI elements. Think of an enemy NPC that has different behaviors such as “idle”, “patrolling”, or “attacking” which depends on different game scenarios such as where the player is on the map.Observer Pattern: This pattern helps you implement an efficient event system where objects can subscribe, and react, to events dynamically. One use case is that of a player collecting ammo in an action game that triggers different events such as playing a sound, updating the UI, and playing an animation.Model View Presenter (MVP): At its core this pattern is about decoupling the display of state from the actual state, enabling a reactive design where views automatically update in response to model changes, making it a common pattern in UI programming. The model is the data, the view the user interface, and the presenter a mediator which handles the logic for the view and synchronizes the data from the model.Model-View-ViewModel (New): Like the name indicates this one is related to the MVP pattern but expands it by adding runtime data binding which simplifies how UI elements are updated. In our example we leverage the new data binding feature in UI Toolkit and Unity 6 Preview.Strategy Pattern (New): This pattern defines a family of algorithms by encapsulating each one, to make them interchangeable, allowing the algorithm to vary independently from clients that use it. This is a useful pattern for implementing different movement behaviors in game AI, for example.Flyweight Pattern (New): Use this pattern to optimize memory usage by sharing as much data as possible with similar objects. The basic idea is that you centralize the shared data among objects.Dirty Flag (New): This pattern is useful for optimizing performance by marking objects as "dirty" when they change, so they are only recalculated or updated when necessary. This pattern can help you manage costly updates in game loops or in some UI rendering cases.The sample project mirrors the e-book by demonstrating each of the 11 patterns in action. You can download the project from The Asset Store and follow along with the corresponding scenes to see these patterns applied in real-world scenarios. Note that the project requires Unity 6 Preview or later.Before you jump into the project, there are a few helpful tips to keep in mind.Start with the Bootstrap scene. This scene configures the demo and provides access to the main menu (you can learn more about the concept of SceneBootStrapper in the e-book). From the main menu, you can navigate to the appropriate sample. Each scene demonstrates a different SOLID principle or design pattern.Please note that there may be minor differences between the sample project and the code examples in the guide. To enhance clarity and readability, some examples feature simplified code like public fields.Your team might prefer a coding style different from the conventions used in this guide or the sample project. We recommend creating a C# style guide tailored to your specific needs and following it consistently across the team. Check out our e-book on how to create your own style guide to learn more.Consider the examples provided and determine which design pattern aligns best with your project needs. As you familiarize yourself with these patterns, you'll discover their potential to streamline and improve your development workflow.Both the e-book and sample project on the use of design patterns are available to download for free:Happy coding!]]></description><link>https://unity.com/blog/game-programming-patterns-update-ebook</link><guid isPermaLink="true">https://unity.com/blog/game-programming-patterns-update-ebook</guid><pubDate>Tue, 23 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Multi-Game Strategies]]></title><description><![CDATA[During Project Reviews as a consultant for the Customer Success team, I often work with customers that create game-switching applications. These applications have one main menu or theme menu, presenting multiple choices of games for the player to choose. In those setups, the main concerns are how to ensure that the time between switching games is as short as possible and how to ensure optimal performance across the games. In this blog post we will explore different approaches based on project needs as well as some best practices that can be useful for any game environment, with or without a game-switching setup.When planning for a multi-application environment–whether for gaming, entertainment, or industrial simulation–the most important decision to make is how to manage game executables. There are many factors that can influence this decision:How many games will the platform handle?How big are the games?Are the games made with the same Unity versions? What are the application's bottlenecks?Other factors are target hardware, memory and CPU, and disk speed (SSD vs HDD vs SD Card).Answering these questions and deciding how to handle executables is crucial to understand whether we need separate executables for each game; one shared executable for multiple games, or a combination of both to ensure the applications perform optimally.Having multiple executables is a great option to handle games that are made with different Unity versions. With this approach it’s possible to reduce the time to switch between games by caching the executable in the memory, and leaving each instance in the background. However, keeping all executables in the memory is not always the best choice since it can be straining on memory. It should be avoided in cases where the individual games have a higher memory footprint, and/or when there are many games in the game switching application.To ease memory constraint, it is possible for games to share a single executable. The games can be in a single Unity project, or each have their own project, as long as the games share the same Unity version. Since Unity 2022 LTS in Windows it’s possible to use the -datafolder argument to pass a variable path via command line ( -datafolder <path_to_folder> ), specifying the selected games data folder in order to switch change. One potential disadvantage of this approach is slower game switching times; therefore it’s important to follow loading best practices to reduce this drawback.No matter the nature of the game we’re developing or on which platform, it’s important to spend as little time as possible from the moment of game selection until it’s fully loaded on the screen. This goal becomes particularly important for game switching applications.A great way to handle loading is by using Addressables. With Addressables, contents are downloaded and released on a need basis. This deferred loading strategy is the most efficient way to reduce load times for games since it limits the amount of data that has to be loaded during initial startup. Furthermore it can help prevent any CPU background activities related to background games, which can contribute to CPU bottlenecks. Addressables: Planning and best practices blog post is a great starting point to learn more about addressables and how they can help improve your game.A great way to ensure faster loading, regardless of how many executables we’re using, is via the asynchronous loading APIs. When loading asynchronously, the Unity main thread will execute a process called “main thread integration” which is responsible for the initialization of native and managed objects in a time-sliced manner. Since this process performs some operations that are not thread-safe it will occur on the main thread, and the time allowed to execute the main thread integration is limited to prevent the game from freezing for a long time. The amount of time that can be spent on the integrations is defined by the Application.backgroundLoadingPriority property. We recommend setting the backgroundLoadingPriority to High, or 50 ms, during loading screens and then returning it to BelowNormal (4 ms) or Low (2 ms) when loading is complete.An additional way to speed up loading is via Asynchronous Texture Upload. Async texture load can decrease the amount of load time by coordinating how much time and memory is used for uploading textures and meshes to the GPU setting. The Understanding Async Upload Pipeline blog post provides detailed information on how this process works.These practices will help speed up loading times:Minimize your scene content as much as possible. Use a bootstrap scene to load only what’s needed for the game to be in a playable state, then load additional scenes when needed.Disable cameras during loading screens.Disable UI Canvases while they are being populated during loading.Parallelize network requests.Avoid complex Awake/Start implementations and make use of worker threads.Always use texture compression.Stream large media files (like audio files and textures) instead of keeping them in memory.Avoid JSON Serializer, and instead use binary serializers.As mentioned earlier, memory is not the only concern for multi-game environments, background CPU activity is also something that can put a toll on the player's gaming experience. When games are not actively being played, their CPU is still running, causing the active game to perform suboptimally by creating CPU starvation. A way to prevent CPU starvations for the active game, and any other backend platform processes is to set the Run in Background player to false in Unity Settings. Run in Background will cause the Unity game loop to stop while the game is not in focus. The setting can also be changed dynamically via scriptOne thing to note is the Run in Background setting won’t stop any custom scripting threads from running, so it’s important to set to sleep any threads of non-playing games via the Thread.Sleep C# method. Remember that working with background threads in Unity requires careful programming. Since these threads don't have direct access to Unity's API, there can be a greater chance of creating issues, such as deadlocks and race conditions. Preventing this requires proper synchronization with the main Unity thread. To properly implement multi-threading, review the Limitations of async and await tasks section of the Overview of .NET in Unity manual page and the MSDN article about using threads and threading. Unity 6 introduces Awaitable class which offers better support for async/await.It can be difficult and time consuming to identify and fix the causes of memory leaks, especially in the later stages of development. As cliche as it may sound, prevention is always better than the cure. Here are a few recommendations that can help prevent leaks in any game environment:When creating new objects/assets in memory, make sure to delete them when not needed. If using Addressable, make sure to release unused assets.When loading/unloading scenes, assets should be properly removed from memory. Unity doesn’t automatically unload assets when a level is unloaded, therefore it’s important to make sure to remove any access from the memory. The Resources.UnloadUnusedAssets API can help clean up assets. However, it can cause CPU spikes, since it returns an object that yields until the operation is complete, therefore it should be used in non-performance-sensitive places.Avoid frequently using Instantiate and Destroy GameObjects. Doing so can lead to unnecessary managed allocations, while also being a costly CPU operation. However, in cases where using Destroy is necessary, make sure to remove all references to the object to avoid Leaked Shell Objects. When an object or its parents are destroyed via Destroy, a C# code holds a reference to a Unity Object, keeping the managed wrapper object–its Managed Shell–in memory. Its Native Memory will be unloaded once the Scene it resides in is unloaded, or the GameObject it is attached to or its parents are destroyed via Destroy. Therefore, if something else that was not unloaded still references it, the managed memory may live on as a Leaked Shell Object.Be mindful when implementing events using Singletons. Singleton instances hold references to all objects that have subscribed to its events. If those objects do not live as long as the singleton instance, and they do not unsubscribe from these events, they will remain in memory causing a memory leak. If the event source gets disposed before the listeners, the reference will get cleared, and if the listeners are properly unregistered there is also no reference remaining. To solve and prevent this problem, we recommend implementing the Weak Event Pattern or IDisposable in all objects that listen to singleton events, and make sure they are properly disposed of in your code. The Weak Event Pattern is a design pattern that helps you manage memory and garbage collection in event-driven programming, particularly when it comes to long-lived objects. It's especially useful when you have subscribers that are short-lived, but the publisher is long-lived. Please keep in mind these are C# specific solutions and work only with C# events and are not directly supported by UnityEvents or the Unity UI Toolkit. As such, we recommend implementing these solutions only in your non MonoBehaviour scripts.Lastly, profiling, performing CI/CD testing and stress testing from the early development stages can be a real time saver, since detecting leaks as they arise will allow you to promptly address the issue, saving time in debugging, and ensuring optimal performance.]]></description><link>https://unity.com/blog/optimize-game-menu-for-faster-loading</link><guid isPermaLink="true">https://unity.com/blog/optimize-game-menu-for-faster-loading</guid><pubDate>Wed, 17 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[The 16th Unity Awards are here]]></title><description><![CDATA[We are thrilled to announce that the Unity Awards are back and it's set to be a celebration unlike any other.For the last 16 years, we’ve come together to recognize the phenomenal achievements of creators who have leveraged the power of Unity to bring their visions to life. This time around, things will be a bit different. We’re making this a global event and adding new categories for a total of 24 awards that celebrate the work of Unity creators. We’ll be announcing the winners during our first Unity Awards Showcase that will be broadcast later this fall.Today, we’re kicking things off with a call for nominations in several categories including Games, Asset Store, and Community. We’ll follow this up by announcing the final list of nominees at Unite Barcelona, so stay tuned and be sure to check out our keynote presentation on September 19.To submit your nominations, please visit our official Unity Awards page to fill out our simple form. Don’t forget to share the love on social media and encourage others to nominate their favorites as well. This is your chance to make your voice heard and shine a spotlight on the experiences and developers that have wowed you this year. Whether it's a mesmerizing indie game, a revolutionary new tool, or a heartwarming educational project, we want to ensure that every corner of our vibrant community is represented. Don’t hesitate to nominate those hidden gems from all around the world.Let’s come together to celebrate the magic of Unity and make this the most spectacular Unity Awards yet.]]></description><link>https://unity.com/blog/the-16th-unity-awards-are-here</link><guid isPermaLink="true">https://unity.com/blog/the-16th-unity-awards-are-here</guid><pubDate>Tue, 16 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to author Scenes and Prefabs with a focus on version control]]></title><description><![CDATA[The goal of this guide is to provide best practices for authoring content in Unity that works with version control. For more information about using version control, check out Unity’s Take on version control for stronger collaboration blog or the more in-depth Best practices for version control e-book. Though both of these resources contain good general information for working with version control, the focus of this blog is on how content integrates with version control and how to avoid merge conflicts when many creators are working on the same or adjacent content at the same time.There is a lot of confusion online about .meta files and version control. .meta files should always be checked into version control. They contain important information, such as the file GUID that connects all references between assets. They should be kept in sync with their source files (both the name and location should always match the associated source file). Never move or rename an asset file outside of the Unity Editor unless specific tools have been built for this purpose or the functionality of .meta files is completely understood.The default version control .meta file mode is Visible Files, which shows the .meta files on disk in the operating system, rather than hiding them. If you’re using Perforce, select the Perforce mode.The first thing any team should do when working with Unity and version control is set up Smart Merge. By default, Unity stores YAML files as text, which makes them mergeable in version control. Changing the Asset Serialization Mode to binary will remove the ability to merge these files by version control.Because Unity’s YAML files are text-based, a lot of version control merging software will try to merge them using text or coding rules. Smart Merge is built by Unity to merge with the YAML structure in mind. We recommend enforcing the usage of Smart Merge as the default merging tool for all YAML files.Smart Merge will greatly reduce the amount of lost work due to merge conflicts, but if your team has zero tolerance for potential lost work, we recommend also using file locking and enforcing manual merge conflict resolution for any YAML files.
File locking is a common practice for large studios where multiple content creators might work on the same binary file (or YAML file) at the same time. Unity version control prevents anyone from checking out a locked file. Perforce prevents anyone from submitting a locked file.Git requires Git LFS to be initialized in order to support file locking. We recommend using Git LFS for any project that has large content files and uses Git for version control.Successful teams often have strict guidelines regarding naming conventions, folder structures, where assets should be located, and how assets should be edited. Because every team is different, there is no one set of universal guidelines. Picking the right system for your team and sticking with it for as long as it works is the most important thing.Specific, strict guidelines makes developing tools to verify content simpler. This prevents bugs before they even get into the game. Validating content with code and tools becomes much easier with clarity on asset location and naming. You can then more easily enforce Unity import standards via Asset Postprocessing and Presets.When building content, it’s important to utilize the separation of concerns principles. Thinking about how content should be divided and where it should live will keep the project clean and prevent most content creators from running into merge conflicts. It can also help with discoverability and onboarding feature experts, where individual features live in specific sub scenes or Prefabs. The main building blocks that can be used to separate content into files are Scenes, Prefabs, and Subgraphs.Scenes are the macro building blocks for any Unity application. Each scene is serialized (saved) to a file, which means they can be used to organize content in a way that is friendly for source control and simultaneous editing. Additive Scene Loading is often used effectively to create very large scenes, streaming content, or even very simple scenes that have multiple components with separate concerns.In general, we recommend storing scene-dependent data in scenes. For example, in the case of baked lighting, lights, lightmaps, and environment settings, all are dependent on which scene they are in. Almost everything else can be stored in Prefabs. If a scene is small and has specific content in it that will only be edited within that scene, it might make sense to store all of that data in a single scene. However, it is important to note that if there are two GameObjects in a scene, any changes to one of those objects will result in changes to the scene file.While Smart Merge should handle the scenario where two content creators change two different objects in the scene at the same time, more elaborate changes can result in unresolvable conflicts. We recommend utilizing Prefabs to help mitigate this issue.In terms of explicit scene structure, the Unity Netcode Demo contains a useful flow chart of a standard scene layout for a simple project that is similar to those we’ve seen in many scenarios.
Prefabs can be used to build modular, separate content. For more information, check out this tutorial on Prefabs and Nested Prefabs. The most important section in that tutorial is the Best Practices section. There aren’t any explicit rules about building content with Prefabs. Each team will have to decide what works best for them based on their project. There are, however, a few good guidelines to follow:Think of Prefabs as the building blocks of your house, or project. Generally, there is a root Prefab that represents the foundation of the house. Within that are the Prefabs for each reusable component that make up the rest of the house. They could be as granular as a windowsill, or as broad as a wall with windows in it. The level of granularity needed will depend on how content creators want to edit their Prefabs. Prefabs can be nested. This means that in the example above, there might be a house Prefab, with wall, roof, window, and door Prefabs that compose the house. One important thing to note with nesting Prefabs is that the deeper the hierarchy is, the more likely it becomes that the project will encounter performance issues. We generally recommend keeping Prefab hierarchies below 5-7 levels of depth. When nesting Prefabs, it is generally a good idea to edit the Prefabs in Prefab Mode. This guarantees that the Prefab properties or overrides are set in the proper location. Editing Prefab properties in the scene view can result in overrides residing in the wrong Prefab or in the scene itself. This can have unintended consequences and cause merge conflicts. Sometimes, it is necessary to override a child Prefab property in a parent Prefab (variations can be achieved this way without affecting every reference to a specific Prefab). This is a standard workflow, but it is important to be careful to make changes and apply overrides in the proper Prefab or scene.Everything in a Prefab will be loaded and instantiated into memory at runtime when a Prefab is loaded and instantiated. This means if visual effects, or attached objects that aren’t always present, are inside of a Prefab, those objects will be instantiated into memory. This can result in memory bloat, as every Prefab instantiated will instantiate everything inside of it. If objects have occasional visual effects or models attached to them, it is better to have a pooling system and an attachment manager that adds those components at runtime. Anything in a pooling system should generally not be placed inside a Prefab.Everything does not need to be a Prefab. Smaller building blocks can be GameObjects inside a Prefab or even a scene. If an object is unique to a scene or Prefab, there is no need to create a Prefab for it.Prefab variants should be used with care. Generally, the best use of a Prefab variant is when the core building blocks of an object are identical with only simple differences. For example, it might be helpful to use a Prefab variant for a game component that has identical functionalities, but different visuals. In this scenario, changing the core functionality will affect the functionality of both the Prefab and its variants, but the visual will remain overridden.Be careful about making overly-complex Prefab variants, as changes to the root Prefab could have unintended consequences on the overridden Prefab. As a general rule of thumb, something like a character variation system or any other complex visual skinning system, should not be based on Prefab variants unless the system is very simple.We recommend creating a consistent strategy for determining what should be Prefabs and what should be GameObjects within Prefabs or scenes.
If a Prefab is created directly from an FBX file, a special kind of Prefab called a model Prefab is created. The result is a Prefab variant of the FBX file. Any additions or changes will be stored as overrides in the Prefab file. However, because most of the data is stored in the FBX file, changes and additions to the Prefab cannot be applied to model Prefabs. If you’re using the model Prefab variant workflow, it’s important to keep structural changes to a minimum.There are two alternative workflows that allow less tightly coupled structures between the FBX model and the Prefab:Adding the FBX file directly into a scene and then adding components or structural modifications onto GameObjects in the scene. In this scenario, any changes are now stored in the scene file. This can result in merge conflicts if many people are using this workflow in the same scene. We only recommend this workflow if the changes have to live in the scene and conflicts are not an issue.Creating a standard Unity Prefab out of the exploded model. In this method, the FBX model is dragged into the scene and then unpacked completely. This is then used to create a Prefab. This methodology completely decouples the FBX file from the Prefab. This is useful if very loose coupling is desired between the FBX file and the Prefab. It will no longer inherit any structural changes made to the original FBX file. The coupling will only be between the names of the meshes, materials, and animations. Everything else will reside in the Prefab file itself. This can be useful for creating entirely unique variants of an FBX model. For example if two characters use the same model, but need completely different meshes, materials, or even different hierarchies, this methodology might be better than creating multiple FBX files that take up extra memory and disk space.One thing to note with this method is that when a mesh or material name changes on the original FBX file, the object does not disappear, but instead, references a missing mesh or material. This can be handy when extremely complex component setups are required. Rather than having the GameObject disappear and lose all components, the object sticks around and components can be transferred to the new object, or the renamed mesh or material can be slotted back into the GameObject that is now referencing a missing mesh or material.In the two images below, changes are made to an FBX file and then reimported. The circle around the Unity logo on the ball is deleted. The main support stand is renamed. The material for the main ball is changed from black to green and a new parent is introduced above the stand logo with transforms on it that raise it above the model.
This is all closely matched in both the FBX file and the model Prefab. In the non-model Prefab, the original hierarchy, names, and materials are kept. The deleted mesh is now a missing mesh, but the GameObject is still present. The renamed mesh is also not visible because it is referencing a mesh name that doesn’t exist in the model anymore. The changed material is not updated because the GameObject is still referencing the original material. Additionally, the hierarchy change is not respected and the mesh stays in the same place because its parent has not changed.In the before and after images below, the results of the changes made above are displayed in the scene hierarchy. The FBX file that is referenced directly in the scene and the standard model Prefab respond to any changes made to the original FBX file. The unpacked Prefab retains its original hierarchy and does not respond to deletions or name changes.It is important to make careful decisions about which methodology is used in a given scenario. If tight coupling is desired between the Editor and the FBX files, then the standard model Prefab is probably the best choice. If very loose coupling is desired (for example a very flexible character system where meshes or materials may be swapped out frequently), then creating non-model Prefabs with soft references to the components of the FBX file will work better.In the case of graph tools like Shader Graph or Visual Effect Graph, Shader Graph Subgraphs and Visual Effect Graph Subgraphs can be used to create reusable functional nodes that live in a separate file and can be edited without causing conflicts in every Shader Graph or Visual Effect Graph. This allows users to separate concerns in a similar way to Prefabs and scenes. We recommend creating a strategy for reusability by taking advantage of subgraphs where it makes the most sense.Avoiding deep hierarchies is a universal statement for content that relates to Scenes, Prefabs, GameObjects, Animation, UI, and anything else. In general, deep hierarchies of any kind tend to result in performance problems. Deep animation hierarchies in characters will result in fewer characters being able to be drawn on screen due to CPU performance concerns. Because of this, we recommend placing all animated hierarchies at the root node of the scene to help with performance. Opting for flat hierarchies when using UGUI and Canvases will result in better performance due to fewer cascading layout updates. Deeply nested Prefabs can cause performance problems and also lead to confusion when overrides are not carefully managed.We often see teams store source content in a variety of locations, from network drives to local machines. We recommend putting all important source content into version control in one way or another.The most common method we see is to put source content into a folder in version control that is outside of the Assets folder. This ensures that Unity does not try to import any content from the source files directly. Maya, 3ds Max, Blender, and Photoshop files will import automatically into models and textures if they are placed anywhere in the assets folder. While Unity does support this, we don’t recommend this practice. Additionally, we do recommend mirroring the source directory to the content in the Assets directory so that tracking assets is relatively easy.Source content should be maskable for users, as most users will not need it all and source content can be extremely large on disk (think terabytes). In some version control software, creating content masks is fairly simple. In Unity version control, this is achieved with cloaked files. In Perforce, Views are used to mask content from the client. Git, however, isn’t designed to work in this way. Because of this, we recommend creating a separate Git repository for source content or a separate repository for each type of content (for example, 3D artists may never need to sync the full audio source and vice versa).Creating content that works with version control and supports multiple users working in the same areas is a difficult task. However, Unity provides building blocks that can be used with careful thought and planning to create large-scale content that does not result in unresolvable merge conflicts or lost work.
]]></description><link>https://unity.com/blog/author-scenes-and-prefabs-with-verson-control</link><guid isPermaLink="true">https://unity.com/blog/author-scenes-and-prefabs-with-verson-control</guid><pubDate>Mon, 15 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Multiplayer Summer: Learn, build, and celebrate]]></title><description><![CDATA[It’s a summer of multiplayer gamesMultiplayer games and development have never been hotter, with 62% of the creators we polled stating they’re working on a multiplayer game. We can’t think of any better way to spend July and August. Read on for updates to all-new learning materials, webinars, product news, and live Twitch streams. Let’s dive in.Tune in for weekly upskilling and inspirationSubscribe to our webinarsRegister today to secure your spot in our free webinars to learn how to implement LiveOps to increase your player retention and use Unity 6 multiplayer features to speed up prototyping.Build a retention layer for your multiplayer game (July 25, 9 am PST)Accelerate your multiplayer prototyping with Unity 6 (August 1, 9 am PST)Join us in the Community and on TwitchIf you’re looking for something a bit more casual, join us on our Twitch channel.We’ll be hosting a LetsDev Multiplayer session on July 17, then kicking off a new series called NetCheck on July 30, where you can follow our teams converting last year’s Scope Check game into multiplayer. This series will be running through August.Finally, on August 14, we’ll host a day-long Blitz Day of question and answers on all our community channels with the multiplayer product teams who work across Unity Editor tools and supporting services.Get started with all-new multiplayer toolsMultiplayer creation in Unity 6If you haven’t yet checked out the Unity 6 Preview, there’s no better time: you’ll get access to the latest features to help with multiplayer game creation.This includes packages like Multiplayer Play Mode, which simulates multiple players within the Editor for testing; Multiplayer Tools, which now includes network scene visualization; and Dedicated Server, which helps you switch projects between server and client without needing to create a new project.On top of that, there are a few packages in an earlier state that include the Multiplayer Services Package, a one-stop solution for adding multiplayer elements to your game that combines capabilities from services into a single Sessions management system. Multiplayer Center provides you with recommendations on tools and services relevant to your project, and Distributed Authority for Netcode for GameObjects which helps achieve greater simulation complexity and run more players in a session without the complexity (or cost) of a dedicated server. To help you onboard to the Distributed Authority network and understand how to use Netcode for GameObjects, download the all-new Asteroids Bitesize Sample. Additionally, we have a new tutorial that’ll help you create a simple Hello World multiplayer project that includes the basic features of Netcode for GameObjects.Be on the lookout for these packages that will be moving to prerelease soon, and download the Unity 6 Preview today to get started.Make your own multiplayer wavesWe hope you’re as excited for Multiplayer Summer as we are. But if you just can’t wait, check out our roundup of multiplayer resources to get started. Throughout Multiplayer Summer, we’ll also be releasing new best practices guides and how-tos.Today, you can check out a brand-new VR Multiplayer Template for the Meta Quest and other OpenXR devices. This template lets you create immersive multiplayer games without the hassle of building and maintaining foundational systems from scratch. It covers everything from networked interactions to integration of voice communications to creating networked avatars and more. Download the VR Multiplayer Template for Unity 2022 LTS and Unity 6 Preview from the Unity Hub, and check out the quickstart guide for more information.Finally, we invite you to read up on other creators to get inspiration, including Fika Productions, who launched their peer-to-peer game Ship of Fools, and StickyLock’s Histera, which leveraged Netcode for Entities as well game server hosting, LiveOps services, and more.Join us at Unite in Barcelona from September 18-20 to get the latest multiplayer news, up level your skills, and celebrate other multiplayer game creators.]]></description><link>https://unity.com/blog/games/multiplayer-summer</link><guid isPermaLink="true">https://unity.com/blog/games/multiplayer-summer</guid><pubDate>Mon, 15 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[New ways of applying global illumination to your worlds in Unity 6]]></title><description><![CDATA[We’re thrilled to share more details about the new lighting features coming to Unity 6 later this year. 

With the new and robust light baking architecture and the innovative approach to authoring light-probe lit environments using Adaptive Probe Volumes (APV), you'll enjoy a more streamlined light creation process. This will significantly enhance your visuals while ensuring high performance at runtime.
If you’ve worked with precomputed lighting data before, you’ll know how tedious the process can be. The precomputing process for Lightmaps can take a long time; Lightmap UVs need to be authored, Probes need to be placed for dynamic objects to be lit correctly, and you’ll need to deal with large textures that can place a heavy burden on your applications’ runtime memory.In Unity 6 we’ve added a new way for you to author higher quality, light-probe lit environments through Adaptive Probe Volumes (APV), and delivered foundational improvements to the light baking backend for greater stability.An Adaptive Probe Volume is a group of Light Probes that Unity places automatically based on the geometry density in your Scene, to build baked indirect lighting.Due to its adaptive nature, APV will generate more densely placed probes in areas with more geometry, and fewer probes in areas with less densely placed objects, like the background of a Scene.Adaptive Probe Volumes also provide you with a complete suite of powerful features for authoring beautifully lit environments.Delivers simpler workflows for probe placement workflows and faster iteration for light-probe-based indirect diffuse lighting.APV per-pixel lighting offers significantly higher quality than Light Probe Groups and provides better directionality compared to Lightmaps, resulting in excellent overall lighting quality.Seamlessly integrates with atmospherics, making effects like Volumetric Fog in HDRP and VFX Graph particles in URP and HDRP beautifully lit by indirect lighting.Enables visually stunning lighting transition through Sky Occlusion and Lighting Scenarios, suitable for achieving time-of day and lights on/off situations.Provides more control over optimizations for runtime performance, based on your use of render pipeline and target hardware.Runs a suite of streaming features, enabling light probe data to be streamed from Disk to CPU, and from the CPU to the GPU.Provides a powerful toolset for reducing light leaking.The URP 3D Sample project currently uses the latest 2022 LTS  features. For demonstration purposes in this blog post, we've upgraded the URP 3D Sample scenes from 2022 LTS to Unity 6 Preview and the Adaptive Probe Volumes feature.
APV is a volume-based system that automates the placement of probes rather than placing them by hand.The general settings tab for APV lets you control parameters like Min and Max Probe Spacing to drive the creation of multiple subdivision levels based on the surrounding geometry. By default, dense areas will use the highest resolution, while areas with less geometry will use lower density levels. This automatic and adaptive behavior ensures efficient resource allocation, focusing on areas where they are most needed.To automatically generate probes, you can create an Adaptive Probe Volume. While you’re working, you can see live updates, allowing you to preview probe placement without baking. These updates are based on bricks and the subdivision levels you previously defined, which then adjusts according to the proximity of nearby geometry.Generate Lighting precomputes all lighting data, including light probes, which you can visualize in your scene. As previewed using bricks, you can see the various subdivision levels that have been applied when placing probes.If you have worked with light probe data, you may be aware of the common challenges with light leaking. When developing APV, we added a whole toolbox to help address light leaking issues, like Virtual Offset, Dilation, Probe Adjustment Volumes, Rendering Layers and Light Leaking Prevention Modes “Performance” and “Quality”.Here’s an example. Using lighting debug views, we can observe a problematic use case for light leaking. In this situation, the bright light from the exterior is visible through the walls and the ground of the building. Outside sees the opposite problem, with dark lighting leaking from the interior. This is likely due to the low resolution (1 meter between probes) and the thin walls. Let's explore how we can address this.To investigate this issue, the Debug Probe Sampling option allows you to display each of the sampled probes along with their relevant weights. In our case, we can see that the result is interpolated between the bright probes from the outside and the dark ones from the inside. Ideally, the interior of the tent should only sample the interior probes.Rendering Layers for APV (landed in 6000.1f.1) allows you to create up to four different masks and restrict sampling to those specific masks for certain objects. This can be incredibly useful to prevent interior objects from sampling exterior probes, or vice versa.When generating lighting, the system will automatically assign layers to the probes during the bake process based on the nearby objects, eliminating the need to manually assign layers per probe. Once this is done, you can Generate Lighting and observe that leaking is reduced for the tent, thanks to manually creating separate interior and exterior masks.For even more control over light leaking prevention, you can leverage Unity’s Leak Reduction Modes “Performance” and “Quality.”Performance Mode addresses leak reduction by shifting the sampling location away from invalid probes. This generally works well in straightforward scenarios, where a suitable sampling location for all valid probes can be identified, while sidestepping any invalid ones. However, depending on the probe configuration, such an optimal sampling location may not be available. This then results in sampling of invalid probes and potential leaks.Quality Mode (landed in 6000.0.3f1) now enabled by default, employs up to three sampling attempts to help ensure that only valid probes are utilized. This mode may introduce a slight overhead on runtime performance, which can be especially noticeable on lower-end platforms.You can combine Leak Reduction and Rendering Layers to prevent light leaking even further. This mode helps ensure that invalid probes, whether due to Validity issues or being on a different Layer, are not sampled.Additionally, we've improved the multiple subdivision levels by reducing potentially visible seams between different levels (landed in 6000.0.4f1). This is achieved automatically by replacing the values of frontier probes located between two levels with pre-interpolated values. Since this process occurs at bake time, there is no performance cost associated with it at runtime.With APV you can achieve visually stunning lighting transition through Sky Occlusion and Lighting Scenarios, suitable for achieving time-of-day and lights on/off situations.Next you’ll find two examples of lighting transitions, first through Lighting Scenarios with APV in the URP 3D Sample project’s Oasis scene, then through Sky Occlusion with APV in the Garden scene.
APV facilitates various lighting scenarios by enabling switching or blending between baked lighting data. This feature is particularly useful for simulating times of day or toggling between lights being on and off within the same scene or Baking Set.Lighting scenarios only manage baked APV light probe data; other elements need to be handled manually. To provide an example in the Oasis scene, we created a script to update the sky, lights, fog parameters, and reflection probes. APV baked scenarios can be managed at runtime using the ProbeReferenceVolume API, an example can be found in the documentation.Sky occlusion offers an alternative to lighting scenarios for managing lighting transitions in the scene. It involves a simpler setup with just a single bake, where no multiple scenarios are required. Instead, sky occlusion exclusively handles sky lighting and therefore does not extend to managing indirect lighting for directional or punctual lights.Sky occlusion uses additional baked data to manage sky lighting differently, which is separate from standard APV sky baking. This data stores the amount of sky light each area of the scene should receive, allowing for runtime adjustments to sky lighting color and intensity. By utilizing a dynamic ambient probe at runtime alongside this baked and static occlusion data, it provides a good approximation of sky lighting, while enabling dynamic adjustments to scene lighting.Sky occlusion is supported in both URP and HDRP. In HDRP, the ambient probe is updated automatically from the HDRP Physical Sky. In URP, however, when using the Skybox mode, the ambient probe cannot automatically update in real-time as the sky changes. Instead, this requires manually animating the color using the Gradient or Color mode to match the animated sky visuals, as Unity won't automatically adjust to the changing sky color.Using the Garden scene as an example, the Gradient Mode in the Environment settings enables manual animation of the ambient probe color. When paired with occlusion data, this setup can create a compelling approximation for animating the sky diffuse lighting, suitable for depicting changing times of day. This utilizes a single bake without multiple lighting scenarios, and can provide a wide range of color variations.
Find out more in our documentation APV implementation in the Universal Render Pipeline (URP), and for APV in the High Definition Render Pipeline (HDRP).With Unity’s New Light Baking Architecture delivered in Unity 6, the GPU Light Baker is now out of previewThe new light baker is built with Editor responsiveness and baking speed in mind. This means that when using on-demand baking, Unity now takes a “snapshot” of the Scene state when the Generate button is clicked. Unity no longer checks the Scene state every frame, which previously undermined Editor performance.This redesigned baking backend has significantly simplified our code base, making it easier and faster to fix bugs, and lowering the risk of introducing new ones.We’re also providing you with a new baking profile that allows you to choose your appropriate workflow intent.You can choose a range from “lowest memory usage” - ideal if you want to continue working in the Editor and want the best overall Editor responsiveness - to “highest performance” which is useful if you want to get the job done as soon as possible and don’t need to work on anything else in the Editor during baking time.Iteratively authoring and troubleshooting baked lighting data is an important use case for creators using baked Global Illumination (GI).For this reason, we have added a new interactive preview functionality to various GI-related Scene View Draw Modes, replacing Unity’s Auto Generate with a dedicated Interactive GI Debug Preview Mode for previewing lighting data.This allows debug views to be updated interactively as the Scene is modified. The preview is non-destructive, since it does not replace baked lighting data.Moving away from Unity's old Auto-Generate architecture means that we can optimize the baking pipeline for greater stability.Note that Unity 6 is the last supported release for Enlighten Realtime GI. You can find more details on our previously communicated deprecation path in the Update on Global Illumination 2021 forum post.Here are links to previous requests for feedback, for the 2023.1, 2023.2 and Unity 6 (2023.3) Beta releases respectively:Global Illumination changes with the 2023.1 beta releaseGlobal Illumination changes with the 2023.2 beta releaseGlobal Illumination changes with the Unity 6 (2023.3) Beta releaseWe look forward to seeing your creations leveraging our new lighting features delivered in Unity 6. Please send us feedback in the Global Illumination forum or Unity’s new Discussions space!]]></description><link>https://unity.com/blog/engine-platform/new-ways-of-applying-global-illumination-in-unity-6</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/new-ways-of-applying-global-illumination-in-unity-6</guid><pubDate>Thu, 11 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[New Shader Graph Production Ready Shaders in Unity 6]]></title><description><![CDATA[The Shader Graph team is excited to announce the release of our newest set of samples, available to import now in 2022 LTS and the upcoming Unity 6 release. This set of samples contains more than 25 Shader Graph assets and dozens of subgraphs that are ready to be used directly in your projects. The sample shaders work in both HDRP and URP.We have two main objectives with this sample set:Give our users a jump start in shader creation by providing a set of shaders that are ready to use.Provide examples that users can build on or modify to suit their needs.This sample set will help you achieve the shader results you want more quickly without starting from scratch.We also include a step-by-step tutorial that shows how to combine the assets to create realistic environments. With the tutorial you can see how the shaders work together in context.Here’s a breakdown of the content available in the Production Ready Shaders pack:Both URP and HDRP come with code-based shaders. The most commonly used shader for each of the SRPs is called Lit. For projects that use it, it’s often applied to just about every mesh in the game. Both the HDRP and URP versions of the Lit shader are full-featured. However, sometimes users want to add additional features to achieve a specific look, or remove unused features to optimize performance. For users who aren’t familiar with shader code, this can be very difficult.For that reason, we’ve included Shader Graph versions of the Lit shader for both URP and HDRP in this sample pack. Users can make a copy of the appropriate Shader Graph Lit shader, then change any material that’s currently referencing the code version of the Lit shader to the Shader Graph version. All material settings will correctly be applied and continue to work. They’ll then be able to make changes to the Shader Graph version as needed.Decals allow you to apply local material modifications to specific locations in your scene. Think of things like applying graffiti tags to a wall or scattering fallen leaves below a tree. But decals can be used for a lot more. In these examples we see decals making things look wet, making surfaces appear to have flowing water across them, projecting water caustics, and blending specific materials onto other objects.This set of shaders is made for meshes applied to terrain – such as grass, weeds, undergrowth, pebbles, etc. To learn more, read the terrain documentation on details. Detail meshes have some specific requirements for shaders. First, because of the high number of these meshes used on the terrain, their shaders must be as fast and efficient as possible. That mainly means keeping the number of texture samples low and doing more work in the vertex shader instead of the pixel shader. Second, because these meshes stop rendering and pop out at a specific distance, we use a method to dissolve them to prevent a harsh pop, making it less obvious that they’re being removed. In each shader, you’ll see a Distance Mask used to dissolve the mesh at a distance before the mesh stops rendering.This is a full-featured, modular rock shader that can be used for everything from small pebbles, to boulders, to large cliff faces. It has features that can be turned on and off depending on the application. Each is encapsulated in a subgraph so it’s easy to remove unneeded features. You can also add new features in the chain of modules.The sample set comes with four different water shaders – lake water, animated pond water, stream water, and stream waterfall. Each one uses reflection, refraction, surface ripples using scrolling normal maps, and depth fog. They also provide additional features unique to each water type.This sample comes with a full set of weather-related subgraphs (rain and snow) that can be mixed and matched depending on the requirements of the object type. Rain effects include rain drops on top of objects, rain drips trickling down the sides, and puddles that can dynamically accumulate on flat surfaces, including rain and wind ripples.The sample set also includes a step-by-step tutorial showing how to combine the water shaders, decals, rocks, and terrain detail meshes, along with several other Unity features to create a forest stream environment. The tutorial shows how everything is put together, and how the sample pack assets can be used together to create an environment.Install the new sample assets using the Package Manager.In the Editor, open Package Manager.2. In the Package Manager window, select the Shader Graph package.3. Select the Samples tab.4. Finally, select the Production Ready Import button to bring the new Production Ready sample set into your project.

With these steps completed, the node reference assets will show up in your project under Assets/Samples/Shader Graph/<your version>/Production Ready Shaders.After importing the samples, get started by opening the scene that corresponds to the render pipeline you’re using (High Definition Render Pipeline,(HDRP), or Universal Render Pipeline (URP):Assets/Samples/Shader Graph/<your version>/Production Ready Shaders/Scenes/URPProductionReadyShadersAssets/Samples/Shader Graph/<your version>/Production Ready Shaders/Scenes/HDRPProductionReadyShadersOnce the scene is open, select the Shader Graph Feature Samples Showcase asset at the top of the Hierarchy panel, then follow the guided tour in the Inspector.You can use the Samples dropdown box to select a sample and jump to that location in the scene.Unity continues to add more samples to Shader Graph, with several more sample packs coming in the months ahead. These will help you learn Shader Graph more quickly, understand how to set up specific functionality, and create new shaders faster with premade subgraphs and templates. We hope you’ll enjoy using them.Shader Graph basicsShader Graph documentationUnity Learn tutorialsThis is a deep and rich sample set. We hope you have fun exploring it and use it to speed up your own shader creation process.We’d love to hear your thoughts and impressions on these samples – tell us what you think in the Shader Graph forum.]]></description><link>https://unity.com/blog/engine-platform/new-shader-graph-production-ready-shaders-in-unity-6</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/new-shader-graph-production-ready-shaders-in-unity-6</guid><pubDate>Tue, 09 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games Made with Unity: June 2024 in review]]></title><description><![CDATA[Well, that was a wild month. From announcements to demos to new releases, there’s much to dive into for games made with Unity in June.Non-E3June is always one of the biggest times in gaming with plenty of non-E3/Summer Gamefest showcases, #pitchYaGame, and other shows like Games to Get Excited About Fest or Best Indie Games’ Future Game Show.Sony’s State of Play showcased a new trailer for Projekt Z: Beyond Order to kick off a slew of announcements we’re excited about, with some of the other shows hyping up games like Abyss X Zero, Screenbound, Phoenix Springs, Project DOSA, Building Relationships, and a release date reveal for Anger Foot in Devolver Direct. Towards the end of the month, Morbid Metal and FEROCIOUS debuted new trailers in the IGN “Games Baked In Germany” Show.Steam NextFestSteam NextFest ran from June 10–17, with many of your games featured in the top and trending. Some of our favorites included Blue Prince, The Explorator, ASKA, REKA, SWORN, Metal Slug Tactics, Tactical Breach Wizards, Mirthwood, Aloft, and Fata Deum.A personal highlight was watching Xalavier Nelson Jr. and Strange Scaffold’s new speed run, secret agent, gun-fu(?), FPS game – I Am Your Beast – pop off during the NextFest as people on Twitter competed for the lowest possible time.However, this list is about games released this month – and even with a stacked wishlist, there are plenty of great ones you’ve put out into the world that anyone can play right now.Speaking of wishlists, though, we’re pleased to announce a new official Unity Steam Curator page put out by our Made with Unity team. Follow this list for a running catalog of great titles you’ve made with the Unity engine, including some great titles from NextFest or the various showcases.Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project.Without further ado, to the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in June of 2024, either into early access or full release. Add to the list by sharing any that you think we missed.Action and Comedy#BLUD, Exit 73 Studios (June 18)Fireside, Emergo Entertainment (June 4)Unlanded, Eki-Eki-Eki (June 7)Perfect World, Michael Overton Brown (June 13)They Can Fart, Les Crafteurs (June 18)Astrodle, Robin Nicolet (June 19)Frogun Encore, Molegato (June 25)City BuilderDystopika, Voids Within (June 21)El Dorado: The Golden City Builder, Hobo Bunch, Gameparic (June 17)Go-Go Town!, Prideful Sloth (June 18 – early access)Nekokami - The Human Restoration Project, Rocket-in-Bottle (June 25 – early access)FPSFallen Aces, Trey Powell, Jason Bond (June 14 – early access)Histera, StickyLock Games (June 20 – early access)Narrative and mysteryTavern Talk, Gentle Troll Entertainment (June 20)Ghost Boy, Two Blackbirds (June 25)Roguelike/liteGUNCHO, Arnold Rauers, Terri Vellmann, Sam Webster (June 25)Rune Gate, Devwind (June 6)Dragon is Dead, TeamSuneat (June 7 – early access)Into the Emberlands, Tiny Roar (June 19 – early access)Dice & Fold, Tinymice Entertainment (June 24)Dragon Eclipse, Fardust (June 24 – early access)SimulationSandwalkers, Goblinz Studio (June 19 - early access)Rolling Hills: Make Sushi, Make Friends, Catch & Release, LLC (June 4)Everafter Falls, SquareHusky (June 20)StrategyCrab God, Chaos Theory Games (June 20)
clickyland, Sokpop Collective (June 3)Songs of Silence, Chimera Entertainment (June 4 - early access)Emberward, ReficGames (June 25 - early access)SurvivalASKA, Sand Sailor Studio (June 20 – early access)That’s a wrap for June 2024. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.
]]></description><link>https://unity.com/blog/games/games-made-with-unity-june-2024-releases</link><guid isPermaLink="true">https://unity.com/blog/games/games-made-with-unity-june-2024-releases</guid><pubDate>Wed, 03 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[New technical e-book for worldbuilding in XR with Unity available for free]]></title><description><![CDATA[Embark on journeys through immersive virtual realms, teleport between dimensions, or merge digital marvels with the real world – the possibilities of virtual reality (VR) and mixed reality (MR) invite creators to bring their imagination to life.Our latest comprehensive guide will help both aspiring creators and seasoned developers to delve into, and understand, the intricacies of building VR and MR experiences (or collectively referred to as “XR”) using Unity.Written by seasoned 3D artists and Unity developers, this e-book covers the tools, methodologies, and techniques essential for crafting immersive and interactive realities. From constructing environments to implementing intuitive interactions, you’ll get the tips and guidance you need to bring your VR and MR applications to life.Let’s have a look at some of the topics that you’ll find in this guide.1. Worldbuilding in XRWorldbuilding is not just about creating a visually stunning environment. It’s about crafting an immersive world that tells a story, conveys emotion, and captivates users. This section looks at the building blocks for worldbuilding in XR, such as:Designing with purpose: Every element of your story should serve a purpose. Avoid elements that could clutter your environment.Implementing visual and audio cues: Use these cues to guide users through the experience.Adding interactive elements: Incorporate elements that reveal more about the world your users are in.Immersing through detail: Pay attention to detail in the environment to create a cohesive and consistent experience.Encouraging exploration: Reward users for exploring the world.Adaptive difficulty: Adjust challenges based on user performance.Social interaction: If possible, integrate multiplayer elements where users can collaborate to solve, for example, a puzzle together.Iterative design: Use feedback to iteratively refine your world.2. Asset creation for XRWhether you’re designing small props or main characters, make sure to follow the tips in this chapter about creating assets in XR to save yourself some time later in the development cycle.These tips include:Concept and design3D modelingCreating a pivot pointTexturing and trim sheetsRigging and animationModel optimization and exporting3. Creating a new VR project in UnityThis section presents some of the main steps in developing a VR project in Unity. It covers the decision-making driving each development phase, as well as practical steps and workflows in Unity. We look at the rendering pipelines and XR tech stack with XR Interaction toolkit, AR Foundation, OpenXR, platform features, and sample projects.If you want to also follow the process of starting a new project step by step and running it on the Meta Quest hardware you can watch this video.4. Mixed reality and spatial computing applicationsMixed reality (MR) applications integrate the real world and a virtual one in a hybrid landscape where the blending of these elements should feel seamless to the user.
MR development combines aspects of VR and AR worldbuilding like:User interaction and interface designSpatial awareness and physicsCross-platform development strategiesEnvironmental design and immersionThis section also includes a breakdown of the setting up the MR template, which is designed to serve as a starting point for MR development in Unity.5. Spatial computing with Apple Vision ProIn this section of the guide, we cover how to get started with visionOS in Unity, how interactivity works in Unity projects for Apple Vision Pro, as well as tips and techniques for porting immersive VR projects and MR apps to visionOS.In the e-book you’ll learn about the different XR experiences for Apple Vision Pro:More resourcesDownload the XR guide today and find all of our e-books for artists, technical artists, and designers in the Unity best practices hub or the Unity Manual.You can connect with the Unity community to get insights and tips on XR development in Unity’s Discussion space for visionOS development. For information on upcoming features, see our roadmap.]]></description><link>https://unity.com/blog/worldbuilding-xr-free-technical-ebook</link><guid isPermaLink="true">https://unity.com/blog/worldbuilding-xr-free-technical-ebook</guid><pubDate>Mon, 01 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creating Tequila Don Julio’s immersive app on Apple Vision Pro: An interview with Trigger XR]]></title><description><![CDATA[Unity works closely with many technology partners around the world who choose Unity for their immersive XR applications and projects. Below is an interview with James Roosevelt, Director of Technology at Trigger XR. Trigger XR is an experienced XR developer and agency. For more than 15 years, they’ve been trusted by some of the biggest companies and IPs to strategize, build, and run cutting-edge AR, VR, and immersive solutions across mobile and Head-mounted Display (HMD). Trigger XR pushes the limits of emerging technologies in service of stories that brands want to tell and people want to hear.James oversees project development, with a special focus on their Unity-based work, as well as the development of their internal technology stack.Q: James, can you tell us a bit more about Trigger XR and what kind of projects you’ve worked on over the years?Trigger XR has over 8 years of HMD experience, completed over 350+ XR projects and led more than 350,000 hours of XR development with clients such as Disney, LEGO, Coca-Cola, the NBA, Nike, Mercedes AMG Petronas F1, Starbucks, Verizon, and Molson Coors, along with premium entertainment IP including Spider-Man, Star Wars, Avengers, Avatar, Jurassic World and more.We also do early development work with companies like Unity, Apple, Niantic, Qualcomm, Roblox, Snap, Meta, Adobe, and Google. We offer advisory, creative and development in-house with expertise at every stage of XR production, from R&D and prototyping to scalable mobile and HMD development, including live ops and maintenance.Trigger XR has numerous awards from Clios, Shortys, Auggies and Webbys and was recognized as one of the fastest growing companies by Inc. Magazine. As a minority owned business and a member of the National Minority Supplier Development Council (NMSDC), we collaborate with a diverse slate of clients and partners who represent inclusive values.Q: Let’s talk more about one of your customers, Diageo, who recently released their Made with Unity application on Apple Vision Pro. What led Trigger and Diageo to build this new experience?Diageo wanted to build on Apple Vision Pro to showcase the rich legacy, craft, and culture of Don Julio tequila in an immersive, engaging way. This initiative aligns with Diageo's Breakthrough Innovation strategy, offering tequila fans a unique, interactive experience that brings the authenticity of Don Julio to life from the comfort of their homes. If you’re a tequila enthusiast and over 21, with Apple Vision Pro you can enjoy fun activities like cutting agave in this innovative virtual environment.
Q: How did the process of building out the experience go? What were some barriers you ran into and how did you overcome them?Venturing head first into a new platform undoubtedly brings challenges and friction points, but also opportunities for growth and learning. That was no doubt the case for us as we partnered with Diageo to build an immersive brand experience for their product – Tequila Don Julio. We set out to tell the story of the history and production process of one of their flagship brands on an exciting new platform. Along the way we encountered and were able to overcome a lot of difficulties in the development of this project, both from a technology perspective as well as a process and operational perspective. Starting with the tech, we immediately found that we needed a better understanding of what was actually happening on Apple Vision Pro at the native level. In past projects, we had built our fair share of custom plugins and bridges into Unity from the native side, but for Tequila Don Julio we found that we needed to do this at a much deeper level than before. We explored Reality Kit, Reality Composer, a lot more Xcode, as well as several other native tools to grasp the way our content would ultimately be displayed on the device. This understanding really helped inform us how we should approach the build out of our content from the Unity side.At the time of the project's development, updates and rollouts to the Unity PolySpatial packages were also moving very quickly. We’d often check for feature support of something one day and then find out that a week later, something like Spatial video is suddenly supported. This prompted several changes to the way that we operated as a team.It meant that internally, there was a much greater need for knowledge sharing as our developers, or anyone for that matter, found or discovered key updates. It meant we also had to be better about setting expectations up front. With many features unsupported or only partially supported, we had to be clear with our creative team and 3D team about what we could achieve, even though we had done things like post processing, or complex particle systems a lot in the past.Also at this time, we were doing our best to share our understanding of the hardware itself to a larger team that couldn’t each have their own headset for testing the experience. We were able to work through this with a much higher frequency of shared video recordings of the experience, more team huddles, and even ports to Meta Quest 3 to allow for some of our team to test and review content.Overall what this came down to was quicker methods of sharing information and visual reference. It meant setting expectations as a team up front, being vigilant of a rapidly changing platform, and using our collective experience to find creative solutions to the barriers we faced.Q: Why Unity for this project with Diageo, James?Using Unity was a no brainer for us. We’ve been using Unity for about as long as Trigger has been making AR experiences, and we knew that eventually there would be a chance that this project would live somewhere beyond Apple Vision Pro. For that reason, we knew that we had to stick with Unity versus going the route of native development.Unity enabled us to tell the story of Tequila Don Julio in an authentic and accurate way. We did this by transporting the user to the fields of Jalisco Mexico, where they’re immersed in the production process of several types of tequila. It allowed us to find parts of this production process that could become interactive, where we might have the user cut the leaves from an agave plant or age a barrel of a tequila to see the results. And it allowed us to do all this with the systems and packages that we had already grown familiar with in past HMD and AR work built with Unity.

We also ended up investing a large amount of time into the implementation of several lighting and material scenarios because the device’s image-based lighting was something we were ultimately unsure of. We saw instances where, depending on the user’s real-world lighting, our models were far too bright or too dark. And obviously, we never want to display our content in a way that would make it look bad or unrealistic. As potential solutions, we looked into everything from having lighting completely baked into textures, to using real time lighting and leveraging the image-based lighting coming from the OS. Ultimately, our happy medium was controlling all of the lighting from within Unity–we called this the “unlit-lit approach”–and we did this in tandem with a baked shadow solution for our 3D content.What made this all possible, beyond the hard work and passion of our team, was getting involved in every way that we could. Whether it was the Unity discussion forums, or the Polyspatial documentation pages, we monitored all of these daily because so much crucial information was getting shared there. It’s worth noting that Unity has been great at supporting their forums and discussions pages in the past, but the interaction and support that we saw from the Unity PolySpatial team in the discussions pages was next level. They were incredibly involved in any post that got submitted and helped us on several occasions.Q: In retrospect, what were some key takeaways for Trigger XR on this project?Looking back at the development of this project, it was really the perfect opportunity to build our understanding of this new platform and this new hardware. It gave us no choice, for better or worse, but to get into the weeds and stand on the literal edge of the technology. The information we brought back internally and circulated amongst our team now enables us to build more and improve existing Apple Vision Pro experiences. It taught us how we needed to operate if we wanted to be amongst the wild west early adopters of new technology.Q: What benefits did you see from using Unity?Given the challenges that we faced up front, these key learnings, changes in our approach, and overall collaboration really allowed us to bring our partner Diageo and their product Tequila Don Julio into the world of spatial computing with a unique and engaging showcase experience. By using Unity and Apple Vision Pro, we were able to be first to market on this exciting device, and lean into their innovation objectives. Initial impressions and reactions have been really positive, and we’re excited for more people to get their hands on this and learn more about Tequila Don Julio.Q: What’s next for Trigger XR and Diageo?We want to expand the platform, add more functionality, and look for opportunities to partner with Diageo for further brand activations and experiences.
Interested in XR development? Learn more about the Unity engine and how it can be leveraged to create immersive AR, VR, and MR applications.
]]></description><link>https://unity.com/blog/industry/trigger-xr-creating-immersive-experiences-for-don-julio</link><guid isPermaLink="true">https://unity.com/blog/industry/trigger-xr-creating-immersive-experiences-for-don-julio</guid><pubDate>Fri, 28 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Beyond 50: An untapped audience ]]></title><description><![CDATA[While many marketers heavily concentrate on reaching Gen Z and Millennial audiences, an often-overlooked yet rapidly-expanding demographic has emerged within the mobile gaming sphere: adults over 50. There are over 52 million people over the age of 50 playing mobile games in the US, according to a 2023 AARP Research study. These numbers suggest that mobile gaming isn't exclusive to Gen Z and Millennials - games are a prime place to reach the 50+ demographic.To dive deeper, we surveyed 1,533 U.S. adults* aged 50+ to uncover insights into their current mobile gaming habits, advertising preferences, and health considerations.Here’s what we learned:
1. 42% of respondents play for more than an hour each day and of this group, 7.7% dedicate over 5 hours daily to mobile gaming
Takeaway: For brand marketers and advertisers, regardless of industry, it's important to recognize that audiences over 50 are engaging with mobile games throughout their day. If you’re looking to reach these audiences, make sure your programmatic partners can offer you the flexibility, scale, and reach to connect with them during their mobile gaming sessions. You might even want to double down later in the day, which seems to be a particularly great window for engagement.2. 46% of respondents play mobile games for fun or to relaxRespondents report playing mobile games for various reasons: 46% for fun, 45% to relax or take a break, 40% to pass the time, 39% to keep their brain sharp, 20% for mastery, and 9% to connect with friends and family. The preferred game genres were card, board, casino, and match-3, perhaps indicating some nostalgia for real-world gaming experiences. 
Takeaway: Reach the over 50 audience on their favorite mobile game genres and use custom playable or interactive end cards in your in-app mobile strategy to offer fun and immersive experiences. Try a word search or match-3 interactive playable to encourage an enjoyable interaction with your brand.3. 72% of respondents indicated some level of interest in improving their physical healthA significant portion of respondents over 50 recognize the importance of maintaining or improving their health as they age. 3 out of 5 respondents (60%) reported that they’re currently taking vitamins or supplements, which suggests a proactive attitude towards health maintenance.Takeaway: For health and wellness brands, mobile gaming might just uncover an untapped audience. Reach health-conscious audiences playing mobile games with products aimed at maintaining and improving health and well-being.4. 55% of respondents currently shop for over-the-counter health/wellness products onlineOver half of the respondents (56%) expressed openness to shopping for over-the-counter health and wellness products online within the next 12 months.Factors motivating purchases of over-the-counter health-related products include price (51%), product effectiveness (48%), brand reputation (39%), recommendations from healthcare professionals (32%), positive customer reviews (25%), and personalized promotions or discounts (17%).We also found out how much this group is spending:Takeaway: Leverage programmatic solutions that offer a variety of ad experiences to facilitate an easy transition from ad viewing to product purchasing- especially for those products within the <$100 range. 5. More than half of respondents express some level of likelihood to engage with in-game rewardsAdvertisements have an influence on what health-related items this group chooses to buy, with 13% saying they’re influenced to a great extent and 41% stating some influence of advertisements. 52% of respondents expressed some likelihood to engage with in-game rewards, with 24% indicating they’re very likely and 28% saying they’re likely to do so.We took it a step further and asked respondents what types of rewards or incentives would encourage them to engage with health and wellness advertisements.Takeaway: Tailoring the messaging in your creatives is essential for every audience. Consider incorporating incentives like discounts, free samples, and loyalty points in your health and wellness product ads to effectively engage with adults over 50.Advertising on mobile games presents a unique opportunity to reach audiences over 50, especially those who are actively seeking ways to improve their health and wellness. By understanding their mobile gaming habits, health considerations, and advertisement preferences, advertisers can tailor their strategies to effectively capture attention, drive engagement, and ultimately, influence purchase decisions within this growing market segment.*The survey encompassed 45% female participants, 46% male participants, 5% who identified as genderfluid, nonbinary, or genderqueer, and 4% who preferred not to disclose their gender identity.]]></description><link>https://unity.com/blog/beyond-50-an-untapped-audience</link><guid isPermaLink="true">https://unity.com/blog/beyond-50-an-untapped-audience</guid><pubDate>Mon, 24 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ad revenue and churn: A balancing act]]></title><description><![CDATA[A diverse monetization strategy is vital to provide your app with long-term resilience. Using varied revenue streams, you’re able to ensure that your app keeps running and growing even if one stream fails to deliver.For subscription and IAP-based apps, ad monetization can offer this resiliency. When IAP and subscription conversions are low, ads enable these apps to continue monetizing and generating revenue, making them a valuable addition to their monetization mix.But, some apps are cautious to adopt ads, since, if left unmonitored, they can lead to churn due to negative user experiences or poaching from competitor apps. Furthermore, if a user has a negative ad experience in an app, that could cause them to view the app negatively too.To effectively monetize using ads, developers need a way to monitor the ads they run, identify those that are problematic, and balance the churn that some ads cause alongside the revenue they create.To that end, let’s dive into how ads can cause churn, why that needs to be an element of how you understand your ad monetization and tools that can help you find the right balance between churn and revenue.How ads can cause users to churnChurn here refers to users leaving your app once they’ve already installed it and are engaging with your content. Many factors can lead to churn: an unfriendly user interface, failing to meet the needs of a user, or even fulfilling the user’s needs to a level where they no longer need your app. But another cause of churn can be the ads running in your app.To help break down how ads can cause user churn, we can use two distinct categories - negative ad experiences and competitor ads.A negative ad experience can mean a variety of things but generally can be defined as ads that create frustration. This frustration can be the result of the ad being difficult to close due to a hidden or tiny close button, the ad length being too long, or even ad content that is seen as inappropriate.Then there’s competitor ads. This is when an ad gets the user to leave your app to download another. We can separate the source of these ads into two categories, direct and indirect competitors.Direct competitors are those that have an app offering that is in the same vertical as your own, offering the same or similar services. Indirect competitors are those apps that take a share of attention away from your app. Social media apps, streaming apps, and news apps (to name just a few) are all in indirect competition with one another, as a user typically goes to each from a similar motivation, and can only be focused on one at a time.Whatever the reason, churn can cause major damage to the long-term success of your app. So, preventing churn should be a top priority.The other side of the coinAs important as preventing churn is, there’s another side here. The ads that will be running in your app most often are likely to be those from direct and indirect competitors - they’ll be the primary source of demand for your placements since they have the most to gain and have the best chance of converting users.So, to effectively monetize with ads it’s important to include those that originate from competitors. However, doing so without taking into account the churn they could cause can be harmful to the longevity of your app. Effective ad monetization is about striking a balance between the churn and the revenue generated from ads.Necessary tools to balance revenue and churnSolving for the right balance can be a daunting task, particularly since for most apps, seeing which creatives are running can seem like peering into a black box. Luckily, there are many tools available to help, including Ad Quality from Unity - but to make sure you’re able to use them effectively to find that balance between revenue and churn, there are several important functions you’ll want to consider.1. Churn managementObvious but vital is the ability of these tools to reliably measure user churn on a per-ad basis. This is your canary in the coal mine and your best defense against ads that are causing users to leave your app. Churn management allows you to monitor user churn across the user journey, which means you can see when users are leaving your app and which ads they engaged with before they did.2. Creative overviewAlso important is the ability to see all the creatives currently running on your app. This allows you to review the creatives users are seeing manually, so you can spot problematic or inappropriate ads and report them. Used in conjunction with churn management, you can see which ad a user saw that could have caused them to churn.3. Revenue per creativeTo make effective use of an ad management solution without negatively affecting revenue generation, you also need to be able to see the revenue individual ads are bringing in. Without this visibility, it won’t be possible to calculate your revenue/churn balance.4. Competitor ad detectionAnother essential is the ability to detect competitor ads. Solutions that offer competitor ad detection let you set which ads can run on your supply by source. If an ad is coming from a direct competitor, you can set custom triggers to report the ad before it runs.Finding the right balanceIdeally, your ad management tool should allow you to see which ads are causing churn, block ads from competitors that you see as harmful, get an overview, and manually review all ads that are running, and see how much revenue these ads are generating.Using this information, you can start to find the right balance between revenue and churn. You can do this by examining the ads’ CTR (click-through rate) and churn rate. If you see that an ad’s CTR is high, but revenue is low, you’ve found an ineffective ad. What these data points are telling you is that users are clicking on the ad, which then causes them to leave your app, without generating revenue sufficient to justify allowing it to keep running. Similarly, if an ad’s bounce rate is high and the revenue is low, the ad is causing users to leave without generating revenue sufficient to justify it.These are the most simple outcomes of the revenue/churn equation, but what happens when CTR or churn is high, and so is revenue?The answer depends on your goals and app. For an app that is still scaling and attempting to acquire loyal users, the correct choice could be to block this ad as it is negatively affecting retention, but for an established app with a loyal user base, the answer might be to keep it running. This is the balancing act of revenue and churn.Whatever your needs, to find the right balance for you, a prerequisite is the visibility and control that an ad management solution affords, like Ad Quality from Unity. Talk to a Unity expert about how we can help you effectively manage your ad monetization while protecting your app and brand.]]></description><link>https://unity.com/blog/ad-revenue-and-churn-a-balancing-act</link><guid isPermaLink="true">https://unity.com/blog/ad-revenue-and-churn-a-balancing-act</guid><pubDate>Thu, 13 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get our first-ever guide about animation in Unity]]></title><description><![CDATA[Animation is one of the most important parts of making a game. Things need to move and characters to react to their environment with nuance and detail. Each gesture and move, like feet landing on an uneven floor or a character reaching for and grabbing an object, contributes to the storytelling and helps build immersion.Our new e-book, The definitive guide to animation in Unity, aims to provide animators and technical artists with an in-depth understanding of the animation features in Unity. It joins our collection of technical guides for developers, artists, and designers looking to create as efficiently as possible with Unity. The animation system in Unity has been powering many games for years, providing core features like:- An easy workflow and setup of animations for all elements of Unity, including objects, characters, and properties- Support for imported animation clips and animation created within Unity- Humanoid animation retargeting – the ability to apply animations from one character model onto another- A simplified workflow for aligning animation clips.- A convenient preview of animation clips, transitions, and the interactions between them- Management of complex interactions between animations with a visual programming tool- The ability to animate different body parts with different logic- Layering and masking featuresTogether with the e-book, you’ll also get a new tutorial on how to import and control animation clips in Unity:What's in the animation guide?Our comprehensive guide kicks off with a foreword by Dave Hunt, a technical artist for animation and rigging at Unity. After that, the main topics you’ll learn about include:- How to import animations into Unity from motion libraries, Autodesk Maya, and Blender, as well as a look at working with FBX files- Exporting animations, the FBX exporter, and Unity Recorder- The Generic animation type, the Controller, settings, layers, blend trees, and character controller- Shortcuts, animating UI, and events- Advanced animation features, events in read-only clips, root motion, and blend shapes- The humanoid animation typeAnimation rigging, set up, rigs, and merging IK with animations- The Timeline system for animated cutscenes, keyframing, track types, and sequences- Using advanced physics, animating the movement of fur and hair, as well as particle systems and working with the Alembic package.- AI navigation- 2D animation, the PSD Importer, rigging, and IK in 2DFrom the e-book: Tips for organizing your animation filesEnjoy these tips from the e-book on how to organize your animation files. Ultimately, every project is unique and the goal should always be to make a pipeline that works for your production.Naming conventionsCharacters are made up of many objects, geometry, bones, and accessories. A good practice is to standardize names so everyone in the team knows how to navigate the hierarchies. Find a good balance between simplicity and readability. Standardized, easy-to-understand naming can also be useful if custom tooling has been created for the animators on your team.Scene organizationIf you are an animator planning to work directly in Unity, consider making a sandbox scene and/or working in prefab mode for common gameplay animations.Asset version tracking and automationThe AssetPostprocessor class in Unity enables you to run code upon asset import or apply automated import settings with Presets. This can be useful to efficiently verify that assets comply with the team’s standards, enabling you to focus more on the actual content creation.Mock up in Unity and use the FBX ExporterDesigners can mock up animations and cinematic sequences in Unity with systems like Timeline that make it efficient to express general intent and timing. Prototyped animations can then be exported via the FBX Exporter to the animator’s preferred DCC software for further polishing.Visualizers and custom Editor toolsUnity offers great flexibility through Editor tooling, allowing you to create custom interfaces for your needs, like visual control rigs, or other tools that make it easier for artists to use many of the animation tools’ APIs in Unity.IK in Unity with the Animation Rigging packageEnabling runtime rigging enables your characters to be in contact with the game world. Sweeping a hand across a surface or gripping and turning a door handle are just a couple of examples of subtle movements that require modifications in the bone chain to make them look realistic. Unity’s Animation Rigging package will allow you to create these detailed movements, making it a great addition to your character creation process.Unity Recorder for capturing game footageIf you are creating an animated feature in Unity or need high-quality footage of your game then export out the final animation as a video file. Capturing raw footage while playing the game can be tasking on the resources of your computer making the game not run as it should for marketing or video content purposes. To ensure a stable frame rate, not stuttering due to frame skipping, and achieve the best possible recording quality Unity Recorder lets you create video or image sequences in real-time from inside the Editor.Motion librariesAdobe Mixamo and Reallusion ActorCore are motion library websites that feature thousands of small motion clips that can be downloaded into Unity. In addition to having a range of free characters to choose from, you can upload your own character, this is covered in the guide. The Unity Asset Store is also a great place to find premade animations. Search the animation category and download packages to Unity through the Package Manager. The animations should be set up automatically and ready to use.Download the animation guide today and find all of our e-books for artists, technical artists, and designers in the Unity best practices hub.Plus: To further expand your animation knowledge, the mocap company Rokoko has great free resources for animators, including e-books on rigging and animation. Find their animation resources here.]]></description><link>https://unity.com/blog/games/first-guide-animation-in-unity</link><guid isPermaLink="true">https://unity.com/blog/games/first-guide-animation-in-unity</guid><pubDate>Thu, 13 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 ways to help your app scale during major sporting events]]></title><description><![CDATA[Major sporting events often mean an increase in both app engagement and interest from users for relevant apps. And the 2024 Olympics and Euro Championship, kicking off in July, will likely have billions tuning in to watch their nation’s athletes compete.As they watch, viewers will be looking to place their next food order, check the latest commentary, and buy their team’s merchandise. For marketers of QSR, news, e-commerce, and sports streaming apps, among others, this represents a huge opportunity to scale with highly engaged users.To help you accomplish this, here are 4 ways to revitalize your campaigns for an Olympic surge in screen time this July and August.1. Update your creatives with sports-themed elementsUpdating creatives with themes related to a specific time or event has been seen to generate improvements in performance. Themed creatives are a powerful tool to connect your app with what’s top of mind for users. They also work as reminders for the event, igniting interest in related purchases.Leading up to and during major sporting events like the Olympics or Euro Championship, update your creatives with sports-related imagery and themes to link the event with your app and make the global contest a part of your marketing. One simple way to do this is by featuring objects associated with the event in your creatives - like gold medals, podiums, scorecards, trophies, and flags.2. Engage your audience with interactive polls and contestsAudience interaction is a core pillar of community building and brand recognition. And few things get an audience as emotionally engaged as asking for their opinion on their team’s performance and competing against others. By running interactive polls and contests you can incentivize users to engage with your social media channels, building brand awareness.An example would be to run a poll on your app’s social media account asking followers who they believe will win in a given Olympic category. You can also run contests, like the first to respond with the correct answer to a Euro Championship trivia question wins a prize, to incentivize users to engage.3. Create FOMO using time-limited seasonal offersFear of missing out (FOMO) is an incredibly motivating force. Limiting the availability of offers to a specific window is a great way to leverage FOMO to your advantage. A case in point is McDonald’s Szechuan sauce offer, which was only available for a limited time using the app. The limited offer generated international publicity for the fast-food giant and worked to drive users to place orders through the app.Use major sporting events as an opportunity to create a limited offer associated with the event. This could be in the form of a discount on a subscription, a special sale on a particular product, or even releasing a themed product that ties into the event.4. Diversify your marketing channelsThe massive viewership of the Olympics, Euro Championship, and other major sporting events presents a golden opportunity to grow your app. Make sure you’re getting the most out of it by using a diverse mix of marketing channels. The more diverse and varied your channels, the better your chances to reach users when they want to make that next purchase or install their next app.This is also a great time to innovate on top of what you know works - don’t just stick to social and traditional channels, try performance channels that enable you to reach new users in new ways. On-device channels, like Aura from Unity, are an example of how you can complement your existing channels with native placements directly on a user’s device which appear when they are most likely to install.]]></description><link>https://unity.com/blog/4-ways-to-help-your-app-scale-during-major-sporting-events</link><guid isPermaLink="true">https://unity.com/blog/4-ways-to-help-your-app-scale-during-major-sporting-events</guid><pubDate>Mon, 10 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games Made with Unity: May 2024 in review]]></title><description><![CDATA[Wondering what games were made with Unity?May was one of the most packed months of releases we’ve seen in a while, with tons of indie games we’re excited about. To the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in May of 2024, either into early access or full release. If you see something that inspires you, be sure to purchase, wishlist, or even share on your social media. Any bit helps these devs!Working on a game in Unity? We’d love to help you spread the word. Be sure to submit your project here.
Surmount: A Mountain Climbing Adventure, Jasper Oprel, Indiana-Jonas (May 2)Seal: WHAT the FUN, PLAYWITH GAMES Inc. (May 3 – early access)Nerobi, SANOBUSINESS S.R.L. (May 7 – early access)SMYS : Show Me Your Stairs, StarvingFox Studio (May 15)Pre Dusk, Okba Amrate (May 18)FOUNDRY, Channel 3 Entertainment (May 2 – early access)Fabledom, Grenaa Games (May 13)Coffee Caravan, Broccoli Games (May 20)Songs of Conquest, Lavapotion (May 20)Synergy, Leikir Studio (May 21 – early access)Galacticare, Brightrock Games (May 23)Dethroned, Irid Games (May 26 – early access)ROBOBEAT, Simon Fredholm (May 14)MULLET MADJACK, HAMMER95 (May 15)Crow Country, SFB Games (May 9)The Tower on the Borderland, DascuMaru (May 20)Imaginary Friend Asylum, Grant Marrs (May 20)Cosmic: A Journey Among Shadows, King's Pleasure (May 6 – early access)Arcane Assembly, Isaac Lee (May 17)Genopanic, Mobirate (May 17)Venture to the Vile, Studio Cut to Bits (May 22)Nine Sols, RedCandleGames (May 29)1000xRESIST, sunset visitor 斜陽過客 (May 9)Deep Beyond, Avix Games (May 15)Pine Hearts, Hyper Luminal Games Ltd (May 23)Duck Detective: The Secret Salami, Happy Broccoli Games (May 23)Gift, Toydium, Million Edge (May 8)Lorelei and the Laser Eyes, Simogo (May 16)Paper Trail, Newfangled Games (May 21)Ouros, Michael Kamm (May 22)Hauntii, Moonloop Games (May 23)Rogue Voltage, Horizont Computergrafik(May 10 – early access)Ruindog, Rama Studio (May 12)The Land Beneath Us, FairPlay Studios Co. Ltd (May 13)Gatekeeper, Gravity Lagoon (May 13 – early access)Never Mourn, Primal Seed (May 13 – early access)Terra Randoma, Deniz K. (May 23)Zet Zillions, OTA IMON Studios (May 23)Fay's Factory, egor dorogov (May 8 – early access)Plushie from the Sky, fishwind (May 6)Cryptmaster, Paul Hart, Lee Williams, Akupara Games (May 9)Dread Delusion, Lovely Hellplace (May 14)Seablip, Jardar Solli (May 17 – early access)SKALD: Against the Black Priory, High North Studios AS (May 30)Vendir: Plague of Lies, Early Morning Studio (May 30)Little Kitty, Big City, Double Dagger Studio (May 9)Brocula, Destroyer Doggo (May 9)Cozy Caravan, 5 Lives Studios (May 16 – early access)Heading Out, Serious Sim (May 7)Blacktop Hoops, Vinci Games (May 16)When the Light Dies, Electric Monkeys, Secret Level Studios (May 2 – early access)V Rising, Stunlock Studios (May 8)Carth, Deidre Reay Studios LLC (May 15 – early access)That’s a wrap for May. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/games-made-with-unity-may-2024-releases</link><guid isPermaLink="true">https://unity.com/blog/games/games-made-with-unity-may-2024-releases</guid><pubDate>Mon, 10 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing our new e-book: Unity’s Data-Oriented Technology Stack (DOTS) for advanced developers]]></title><description><![CDATA[Unity's Data-Oriented Technology Stack (DOTS) lets you create complex games at large scale by providing a suite of performance-enhancing tools that help you get the most out of your target hardware.This 50+ page e-book, Introduction to the Data-Oriented Technology Stack for advanced Unity developers, is now available to download for free. Use it as a primer to better understand data-oriented programming and evaluate if DOTS is the right choice for your next project. Whether you’re looking to start a new DOTS-based project, or implement DOTS for performance-critical parts of your Monobehaviour-based game, this guide covers all the necessary ground in a structured and clear manner.With Unity 6 in preview and DOTS 1.0 production-ready, this is a great time to explore the opportunities DOTS brings. The e-book, written by Brian Will, senior software engineer at Unity, joins the updated Unity Learn samples, recent DOTS bootcamp, and the GitHub samples in the collection of resources available to developers who want to learn how to work with DOTS.Our goal with this e-book is to help you make an informed decision about whether implementing some or all of the DOTS packages and technologies is the right decision for your existing or upcoming Unity project. Each part of the stack plays a role in enhancing a game's execution speed and efficiency. The guide aims to explain each of these parts, how they can be used together, and their common foundation, the Unity Entity Component System (ECS).A major reason to use DOTS is to get the most performance from your target hardware, and this requires understanding multithreading and memory allocation. Additionally, to leverage DOTS, you’ll need to architect your data-oriented code and projects differently to your C#-based Monobehaviour projects with their higher level of abstraction.Let’s take a closer look at what you’ll find in the e-book.CTA: Download Introduction to the Data-Oriented Technology Stack for advanced Unity developers.The first section in the guide, which we’ve included below, presents some of the factors that can contribute to poor CPU performance in a game, like garbage collection overhead, data and code that aren’t cache-friendly, suboptimal compiler-generated machine code, and more.The next section explains how each of the DOTS packages and features facilitate writing code that avoids CPU performance pitfalls. You’ll find helpful explanations for:C# Job SystemBurst compilerCollectionsMathematicsEntitiesEntities GraphicsUnity PhysicsNetcode for EntitiesAfter a rundown of each part of the stack you’ll get an introduction to the EntityComponentSystemSamples GitHub repo, which includes many samples that introduce both basic and advanced DOTS features. Some of the samples in the Github repo are reproduced in a new Unity Learn course on DOTS, Get acquainted with DOTS.The other key section in the DOTS guide is the appendix. It’s here that Brian Will provides detailed explanations for concepts related to Unity ECS, including memory allocation and garbage collection, memory and CPU cache, multithreaded programming, the limitations of object-oriented programming, and data-oriented programming.If you’re an experienced game developer then you know that performance optimization on target platforms is a task that runs through the entire development cycle. Maybe your game performs nicely on a high-end PC, but what about the low-end mobile platforms you’re also aiming for? Do the frames take much longer than others, creating noticeable hitches? Are loading times annoyingly long, and does the game freeze for full seconds every time the player walks through a door? In such a scenario, not only is the current experience subpar, but you’re effectively blocked from adding more features: More environment detail and scale, mechanics, characters and behaviors, physics, and platforms.What’s the culprit? In many projects it’s rendering: Textures are too large, meshes too complex, shaders too expensive, or there’s ineffective use of batching, culling, and LOD.Another common pitfall is excessive use of complex mesh colliders, which increase the cost of the physics simulation. Or, the game simulation itself is slow. The C# code you wrote that defines what makes your game unique might be taking too many milliseconds of CPU time per frame.So how do you write game code that is fast, or at least not slow?In previous decades, PC game developers could often solve this problem by just waiting. From the 1970’s and into the 21st century, CPU single-threaded performance generally doubled every few years (a phenomenon known as Moore's law), so a PC game would “magically” get faster over its life cycle. In the last two decades, however, CPU single-threaded performance gains have been relatively modest. Instead, the number of cores in the CPU have been growing and even small handheld devices like smartphones today feature several cores. Moreover, the gap between high-end and low-end gaming devices has widened, with a large chunk of the player base using hardware that is several years old. Waiting for faster hardware no longer seems like a workable strategy.The question to ask, then, is“Why is my CPU code slow in the first place?” There are several common pitfalls:Garbage collection induces noticeable overhead and pauses: This occurs because the garbage collector serves as an automatic memory manager that manages the allocation and release of memory for an application. Not only does garbage collection incur CPU and memory overhead, it sometimes pauses all execution of your code for many milliseconds. Users might experience these pauses as small hitches or more intrusive stutters.The compiler-generated machine code is suboptimal: Some compilers generate much less optimized code than others, with results varying across platforms.The CPU cores are insufficiently utilized: Although today’s lowest-end devices have multi-core CPUs, many games simply keep most of their logic on the main thread because writing multithreaded code is often difficult and prone to error.The data is not cache friendly: Accessing data from cache is much faster than fetching it from main memory. However, accessing system memory may require the CPU to sit and wait for hundreds of CPU cycles; instead, you want the CPU to read and write data from its cache as much as possible. The simplest way to arrange this is to read and write memory sequentially, and so the most cache-friendly way to store data is in tightly-packed, contiguous arrays. Conversely, if your data is strewn non-contiguously throughout memory, accessing it will typically trigger many expensive cache misses; the CPU requests data that is not present in the cache memory and instead needs to fetch it from the slower main memory.The code is not cache friendly: When code is executed, it must be loaded from system memory if it’s not already sitting in cache. One strategy is to favor calling a function in as few places as possible to reduce how often it must be loaded from system memory. For example, rather than call a particular function at various places strewn throughout your frame, it’s better to call it in a single loop so that the code only needs to be loaded at most once per frame.The code is excessively abstracted: Among other issues, abstraction tends to create complexity in both data and code, which exacerbates the aforementioned problems: managing allocations without garbage collection becomes harder; the compiler may not be able to optimize as effectively; safe and efficient multithreading becomes harder, and your data and code tend to become less cache-friendly. On top of all this, abstractions tend to spread around performance costs, such that the whole code is slower, leaving you with no clear bottlenecks to optimize.All of the above ailments are commonly found in Unity projects. Let’s look at these more specifically:Although C# allows you to create manually-allocated objects (meaning objects which are not garbage collected), the default norm in C# and most Unity projects is to use C# class instances, which are garbage collected. In practice, Unity users have long mitigated this issue with a technique called pooling (even though pooling arguably defeats the purpose of using a garbage-collected language in the first place). The main benefit of object pooling is the efficient reuse of objects from a preallocated pool, eliminating the need for frequent creation and deallocation of objects.In the Unity Editor, C# code is normally compiled to machine code with the Mono Compiler. For standalone builds you can get better results using IL2CPP (C# Intermediate Language cross-compiled to C++), but this brings some downsides, like longer build times and making mod support more difficult.It’s common that Unity projects run all their code on the main thread, partly because doing so is what Unity makes easy:The Unity event functions, such as the Update() method of MonoBehaviours, are all run on the main thread.Most Unity APIs can only be safely called from the main thread.The data in a typical Unity project tends to be structured as a bunch of random objects scattered throughout memory, leading to poor cache utilization. Again, this is partly because it’s what Unity makes easy:A GameObject and its components are all separately allocated, so they often end up in different parts of memory.The code in a typical Unity project tends to not be cache friendly:Conventional C# and Unity’s APIs encourage an object-oriented style of code, which tends towards numerous small methods and complex call chains. Unlike a data-oriented approach it’s not very hardware friendly.The event functions of every MonoBehaviour are invoked individually, and the calls are not necessarily grouped by MonoBehaviour type. For example, if you have 1000 Monster MonoBehaviours, each Monster is updated separately and not necessarily along with the other Monsters.The object-oriented style of conventional C# and many Unity APIs generally lead to abstraction-heavy solutions. The resulting code then tends to have inefficiencies laced throughout that are hard to disentangle and isolate.This e-book is freely available to everyone, but is tailored to Unity developers who are experienced with Monobehaviour-based, object-oriented game development, but are new to Unity DOTS and data-oriented design development.We hope the guide will help you understand DOTS and how these features might benefit your next Unity project, as well as make it easier for you to get the full value from the samples available on our GitHub repo.]]></description><link>https://unity.com/blog/engine-platform/new-ebook-understanding-unity-dots</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/new-ebook-understanding-unity-dots</guid><pubDate>Thu, 30 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing the all-new Unity LevelPlay]]></title><description><![CDATA[Partnering with a strong mediation provider has never been more important. As the shift to bidding and mounting privacy regulations present challenges for app publishers, using a mediation that can boost your business across both monetization and user acquisition is critical. In 2024, LevelPlay is releasing significant product updates designed to help you drive more revenue, connect with high-quality users, and streamline the experience from game creation to growth. The combined updates will be transformational, making the ad mediation an all-new LevelPlay.In the first phase, LevelPlay has already released support for a dedicated package in the Unity Editor Package Manager. This powers a dramatically easier integration process that is only available for Unity LevelPlay, simplifying mediation setup to enable Unity developers to start monetizing faster. Developers will be able to complete their mediation integration in the same place they build their games, with the LevelPlay integration a native part of Unity developers’ workflow. The package also reduces overhead for publishers by enabling them to upgrade their SDK without being required to update the whole Unity package.But that’s not all. Over the coming months we’re releasing a series of additional product launches designed to maximize app growth and simplify growth management from every angle.Upcoming phases of the roll-out include:Major upgrades to network UA tech. Powered by a new generation of machine learning tech, the Unity Ads and ironSource Ads networks now make LevelPlay publishers’ UA more impactful than ever. Publishers who run automated ROAS campaigns are already seeing meaningful uplift in both scale and quality on both networks, and additional optimizations will be released on a rolling basis through the rest of the year.Multiple ad units. Publishers will be able to load multiple ad units simultaneously, which means they can create a dynamic waterfall setup and customize the waterfall by in-app placement. This gives publishers more control over their ad strategy with additional ways to optimize for key metrics like latency and ARPDAU.One home for Unity growth data. We’re centralizing data from Unity’s leading growth solutions into a new platform homepage, giving publishers an instant snapshot of the health of their app portfolio in one clear view. This new page will allow publishers to view UA and revenue data side-by-side, compare performance over set time periods, monitor their brand safety, and see combined network performance for Unity Ads and ironSource Ads. In addition to the two networks, the homepage will include LevelPlay and Ad Quality data, with Aura and Tapjoy Offerwall data coming next.Platform experience revamp. We’re also updating our platform UX to make it simpler than ever to grow your game. It’ll take fewer steps to manage and optimize your ad strategy with smoother functionality and greater ease-of-use. The platform revamp will be wrapped up in a new UI reflecting Unity’s look and feel for an even more seamless flow from game creation to growth.Stay tuned on the Unity Grow LinkedIn page and your email inbox for ongoing announcements.]]></description><link>https://unity.com/blog/introducing-all-new-unity-levelplay</link><guid isPermaLink="true">https://unity.com/blog/introducing-all-new-unity-levelplay</guid><pubDate>Wed, 22 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Using rich LLM integrations to power relevance and reliability with Muse Chat ]]></title><description><![CDATA[Unity Muse helps you explore, ideate, and iterate on real-time 3D experiences by empowering you with AI capabilities. Muse Chat is one of several tools that you can use to accelerate creation. Bringing Unity knowledge and Editor awareness to your fingertips, Muse Chat can be your assistant by providing helpful information including debugging advice, using code generation for a first draft, and more, all within the context of the Unity Editor and your project.To show you how exactly Muse Chat is designed to provide helpful solutions, we’re going to give you a peek under the hood of how we structure the plan to generate a response. We’ll also give you a preview of our current explorations and upcoming developments of the LLM pipeline.Muse Chat is built as a pipeline consisting of several different systems and Large Language Model (LLM) integrations for query planning and arbitration of different pieces of information. For each incoming request, Chat derives a plan of action to outline the format of the upcoming response based on the Editor selection or information you provided and the problem you are trying to solve.“I built and coded everything myself using Muse as my personal assistant. Of course, I had the support of my colleagues, but I don’t think I could have achieved this result in such a short time if I didn’t have Muse by my side.”



– Jéssica Souza, cocreator of Space Purr-suitWhen assembling a reliable response, there are two challenges. One is retrieving relevant information to build the response, and the other is making sure that the information is usefully embedded in the response, based on the conversation’s context and history.Muse Chat’s knowledge is assembled to address both of these challenges, with more than 800,000 chunks of information such as sections of documentation or code snippets. The chunks are processed and enriched with references to surrounding information, so that each one provides a useful and self-standing unit of information. They are cataloged both by their content and their unique context, as traced through the documentation. It provides transparency and interpretability of the system, and it enables effective retrieval of compatible information. See the diagram and description below to learn how the rest of our current pipeline is structured.REQUEST: Your request comes in.EDITOR CONTEXT: If you are in the Editor, the relevant context is dynamically extracted from the Editor, along with the request to give Muse the proper information.QUERY EXPANSION: The initial planning system performs query expansion, which is intended to derive precise plans. We instruct an LLM to give its best attempt at replicating the knowledge catalog format and recreate the ideal structure of a chunk for each step. This approach allows the system to compute an embedding that captures the desired context, contents, and use case of the chunk we’re looking for. Each of these plan steps are used for fine-grained semantic retrieval.KNOWLEDGE RETRIEVAL: To find the relevant information, we use symmetrical semantic retrieval and metadata filtering to retrieve the chunks in our knowledge catalog that most resemble the ideal estimated chunk, identified in the Query Expansion stage.FORMULATION: To generate the final response, we use another LLM to compose a response, based on the detailed outline containing both the filtered original plan steps and the sources needed to convey the relevant underlying information.RESPONSE: Muse Chat responds with an answer.To drill into the work behind making Muse Chat available in the Editor, we introduced the second step to the pipeline, Editor context extraction. Adding this to the very beginning of the pipeline, we analyze the query to identify what to extract from the Editor, and parse this to inform Muse on next steps. Based on your feedback, we began with project setup, project settings, GameObjects/Prefabs, and console access.Now, if you were to experience a console error with warnings or messages, simply click the relevant row(s) in the console to add the error as part of your selection. In the example below, we triggered an error for a missing curly bracket in a script.Consider a simple example of answering “How can I create a scriptable feature and add it to the Universal Renderer?” in a new conversation in the Editor. This will be converted into plan steps:REQUEST: “How can I create a scriptable feature appropriate for my render pipeline?”EDITOR CONTEXT: Muse identifies which render pipeline is used, the version of Unity that’s running, which project settings are relevant to the question. It then extracts dynamic context, along with any Editor selection you might have.QUERY EXPANSION: LLM generates a plan with the following plan steps:Introduce the concept and purpose of scriptable features for URP. Explain the steps to create a scriptable feature in URP. Provide an example showing how to add the scriptable feature to the Universal Renderer.KNOWLEDGE RETRIEVAL: For this example, the request is fulfilled by following the steps to retrieve information from the embedding.FORMULATION: LLM mediates the final response.RESPONSE: You get an answer, as seen below, along with a code snippet.In the above example involving URP, the final response plan is composed of an introduction built on top of the “What is a Scriptable Renderer Feature” section on in the URP documentation, the step-by-step directions in “Create a scriptable Renderer Feature and add it to the Universal Renderer,” and the directions in the subsection on finally adding the custom Renderer Feature to a Universal Renderer asset.This way, we are able to efficiently swap generic information coming from the LLM’s base knowledge with specific Unity knowledge from first-party sources related to recommended approaches or implementation details. While the occurrence of sometimes inaccurate information is somewhat inevitable when using LLMs, our system is built to minimize their frequency by relying on trusted Unity knowledge.We are working on developing a wide ecosystem consisting of task specific models. As we expand our interoperability with the Editor, we want to enable an accelerated workflow to better serve your needs. We believe that the key to do so is embracing and fostering a culture where we can quickly adapt to research and industry developments for rapid experimentation.Muse Chat serves as a companion for AI-assisted creation, right in the Editor. We are currently working to extend what you can select as part of your context in the Editor, including the full hierarchy and project window, as well as including the associated code for a GameObject. Furthermore, we’re investing in widespread system improvements, improving on our performance benchmarks on Unity knowledge and code generation, and preparing for a future with agent behavior enabled, so that Muse can perform actions on your behalf in the Editor.At GDC, we showcased how you could use all five Muse capabilities together to customize a game loop in the garden scene of our URP sample project. Check out our session “Unity Muse: Accelerating prototyping in the Unity Editor with AI”to learn how you can use all of Muse’s abilities to quickly customize a project scene and gameplay. This interoperability between Muse features is only going to increase as we roll out new improvements to Muse Chat.We’ve updated the Muse onboarding experience to make it easier to start a free trial of Muse and add the Muse packages to your projects. Visit the new Muse Explore page to get started, and let us know what you think of the newest capabilities and improvements in Discussions.]]></description><link>https://unity.com/blog/engine-platform/llm-integration-relevance-reliability-unity-muse-chat</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/llm-integration-relevance-reliability-unity-muse-chat</guid><pubDate>Tue, 21 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 6 Preview is now available]]></title><description><![CDATA[We’re excited to announce the release of Unity 6 Preview, which is available for you to download today. Unity 6 Preview (formerly known as 2023.3 Tech Stream) is the last release of our development cycle for Unity 6, which is launching late this year.Last November at Unite, we announced that we were updating our naming conventions (you can read more about these changes in this forum post).Unity 6 Preview is structured just like a Tech Stream release. It’s a supported release that gives you a head start using new and updated features in projects that are in discovery or prototyping stages. For projects in production, we recommend using the Unity 2022 LTS release for greater stability and support.Here are a few highlights from the Unity 6 Preview, which also includes features released in 2023.1, and 2023.2. You can also find more details in the official release notes.In Unity 6 Preview, the Universal Render Pipeline (URP) and the High Definition Render Pipeline (HDRP) both see significant performance enhancements that speed up production across platforms. Depending on your content, the improvements described here can reduce CPU workload by 30–50% while providing smoother, faster rendering across various platforms.The new GPU Resident Drawer allows you to efficiently render larger, richer worlds without the need for complicated manual optimizations. You can optimize your games with up to 50% CPU frame-time reduction for GameObjects when rendering large, complex scenes across platforms, including high-end mobile, PC, and consoles.Working alongside the GPU Resident Drawer, GPU Occlusion Culling boosts the performance of GameObjects by reducing the amount of overdraw for each frame, which means the renderer is not wasting resources drawing things that are not seen.You can optimize GPU performance and significantly enhance visual quality and runtime performance with Spatial-Temporal Post-Processing (STP).STP is designed to take frames rendered at a lower resolution and upscale them without any loss of fidelity, delivering consistent, high-quality content to platforms with varying levels of performance capabilities and screen resolutions. STP is compatible with both URP and HDRP, across desktops, consoles, and, notably, compute-capable mobile devices.Render Graph for URP is a new rendering framework and API that simplifies the maintenance and extensibility of the render pipeline and improves rendering efficiency and performance. The new system introduces various key optimizations, such as the automatic merging and creation of native render passes, in order to reduce memory bandwidth usage along with energy consumption – especially on tile-based (mobile) GPUs.The new Render Graph API also streamlines the custom pass injection workflow, allowing you to extend the render pipeline with your own custom Raster and Custom passes, as well as to reliably access all of the pipeline resources needed using the new Context Container.Lastly, with the new Render Graph Viewer tool, you can now analyze the Engine’s render pass creation and frame resource usage directly in the Editor, simplifying render pipeline debugging and optimization.Foveated Rendering API in URP allows you to configure the Foveation Level, improving GPU performance at the cost of reduced fidelity around a user’s mid/far peripheral.Two new foveation modes are available. With Fixed Foveated Rendering, regions in the center of the screen space benefit from higher quality, while Gazed Foveated Rendering uses eye tracking to determine which regions of the screenspace will benefit.The Foveated Rendering API is compatible with the Sony PlayStation®VR2 plug-in and Meta Quest through the Oculus XR plug-in, with support for the OpenXR plug-in coming soon.Volume framework enhancements in both HDRP and URP optimize CPU performance on all platforms to make it viable even on low-end hardware. It allows you to set global and per-quality levels volumes in URP, similar to what was possible in HDRP with an improved user interface across the board. Additionally, it’s now easier to leverage the Volume framework with Custom post-processing effects for URP to build your own effects like a custom fog (check out this demo from our December live stream to learn more).Adaptive Probe Volumes (APV) provide a new way for you to build global illumination lighting in Unity. They enable more streamlined authoring and iteration times for Light Probe-lit objects, and open new possibilities like time-of-day scenarios and streaming.Building on the development of APV delivered in the 2023.1 and 2023.2 Tech Stream releases, enhancements in Unity 6 Preview improve authoring workflows, expand streaming capabilities, and extend control and platform reach to achieve impactful lighting transitions.We have expanded APV Scenario Blending to URP, enabling a wider range of platform support for you to easily blend between baked probe volume data for day/night transitions or to switch lights on and off in rooms.APV Sky Occlusion, supported in both URP and HDRP, enables you to apply a time-of-day lighting scenario to your virtual environments and achieve more color variations in static indirect lighting from the sky compared to APV scenario blending.APV disk streaming now supports a non-compute path in URP, and we’ve enabled support for AssetBundles and Addressables.Leverage the Probe Adjustment Volumes tool to fine-tune your APV content and fix light leaking situations. Adjustments you can make to probes inside these volumes include Override Sample Count and Invalidate Probes. Light Probes not affected by the Adjustment Volume can be hidden, and probe lighting data can now be previewed only for impacted probes, then baked directly from the Probe Volume and Probe Adjustment Volume components.Finally, we introduced a new C# Light Probe Baking API,enabling you to control how many probes to bake at a time to balance execution time against memory usage.We’ve used the APV probe baking editor code as an example of how to use the API, and you can find this example on GitHub.In HDRP, we improved sky rendering for sunset and sunrise to better enable your project’s time-of-day scenarios. This adds ozone layer support and atmospheric scattering to complement fog at long distances.Water has been improved with support for Underwater Volumetric fog that samples caustics to create volumetric light shafts. Performance optimization now includes an option to read back simulation from the GPU with a few frames of delay instead of replicating the simulation on the CPU. We also added support for transparent surfaces with mixed tracing mode to mix raytraced and screen space effects when rendering surfaces like water together with terrains and vegetation.Because performance is key when rendering large dynamic worlds, we optimized SpeedTree vegetation rendering for both URP and HDRP, leveraging the new GPU Resident Drawer mentioned above.For VFX artists, we’ve improved tooling and URP support so you can efficiently reach more platforms. VFX Graph profiling tools allow a VFX artist to find what could be optimized within a graph by getting feedback about memory and performance to tweak certain effects and maximize performance.Build VFX shaders with the support of Shader Graph Keywords, and more complex effects with URP with URP depth and color buffers for fast collision or for spawning particles from the world.Get a quick start in VFX Graph with new Learning Templates, a collection of VFX assets designed to help you learn about VFX Graph concepts and features.Unity 6 Preview addresses many of the top user pain points when using Shader Graph by including new editable keyboard shortcuts, a heatmap color mode to quickly identify the most GPU-intensive nodes in your graphs, and faster Undo/Redo.Access new Node Reference Samples containing a set of Shader Graph assets where each graph is a description of one node, with breakdowns of how the math works under the hood, and examples of how the node can be used. Learn more in the Node Reference Samples Tutorial video.Unity 6 Preview brings multiplatform enhancements across desktop, mobile, web, and XR, aimed at delivering optimizations to multiplatform development workflows and expanding reach across the most popular platforms.With the new Build Profiles feature, managing builds will be more efficient, with a higher degree of flexibility than ever before.As well as configuring build settings in each profile, you can now include different scene lists to customize the content of your builds, creating multiple unique, playable demos for your game with the scenes you want to share most.Additionally, you can set custom scripting defines for any profile, which are additive over those found in player settings, to allow for fine-tuning of features and behavior of both builds and Editor Play mode. This could be used to create vertical slices or target different behavior for different platforms.You can add an override for player settings to any profile, allowing you to customize settings that relate to the platform module. This feature makes it easier to configure publishing settings for different profiles. Overall, this new feature reduces the need to rely on custom build scripts to customize the way that builds are managed in the Editor.Finally, we also added the Platform Browser to enhance platform discovery inside the Editor. The platform browser is a place where you can discover all the platforms that Unity supports and create build profiles for any you choose.Android and iOS browser support has arrived With Unity 6 Preview. Now, you can run your Unity games anywhere on the web, without limiting your browser games to desktop platforms. Additionally, you can embed your games in a web view in a native app or use our progressive web app template to make your game behave more like a native app, with its own shortcut and offline functionality. With more bells and whistles such as mobile device compass support and GPS location tracking, your web games will be able to react to wherever your gamers choose to play.Fine-tune your web games with an update to the Emscripten 3.1.38 toolchain and the latest support for WebAssembly 2023, our collection of newer WebAssembly language features such as sign-ext opcodes, non-trapping fp-to-int, bulk-memory, BigInt, Wasm table, native Wasm exceptions, and Wasm SIMD. WebAssembly 2023 also supports up to 4GB of heap memory, unlocking access to even more RAM for you to use on the newest hardware.Additional mobile improvements coming with Unity 6 Preview include the latest Android tooling and support for Java 17 out of the box, as well as the ability to include debug symbols within your Android App Bundle. This will save you time when submitting to the Google Play Store and ensure you always have stacktrace information in the Play Console.The introduction of experimental support for a WebGPU backend marks a significant milestone for web-based graphics acceleration, paving the way for future leaps coming to graphics rendering fidelity for Unity web games.WebGPU is designed with the goal of harnessing and exposing modern GPU capabilities, such as Compute Shader support, to the web. This new web API will achieve this by providing a modern graphics acceleration interface that’s implemented internally via native GPU APIs such as DirectX 12, Vulkan, or Metal, depending on the desktop device you use.The WebGPU graphics backend is still in experimental state, so we do not recommend using it for production. Can’t wait? Discover how to gain early access and test WebGPU in our graphics forum.Unity delivered support for Arm-based Windows devices in 2023.1, enabling you to bring your titles to new hardware. With Unity 6 Preview we are now delivering native Unity Editor support for Arm-based Windows devices in Unity 6. This means you can now take advantage of the performance and flexibility that Arm-powered devices can offer to create your Unity games.Unity’s DirectX 12 graphics backend is fully production ready, and available for use when targeting DX12-capable Windows platforms. This change is preceded by a comprehensive array of improvements to both rendering stability and performance.Using DX12, Unity Editors and Players can benefit from significant improvements to CPU performance by using Split Graphics Jobs. Performance gains are expected to scale based on scene complexity and the amount of draw calls submitted.Most noticeably, the DX12 graphics API unlocks support for a wide range of modern graphics capabilities in order to enable the next generation of rendering techniques, such as Unity’s ray tracing pipeline. Upcoming features will make use of DX12’s advanced capabilities, ranging from graphics to machine learning, to enable an unprecedented level of fidelity and performance.Thanks to the ongoing partnership between Microsoft and Unity, two new Microsoft GDK packages are now available with Unity 6 Preview, 2022 LTS, and 2021 LTS. The Microsoft GDK Tools and Microsoft GDK API packages can be used for Microsoft gaming platforms with the same configuration and code base. These packages make it easier than ever to build for Microsoft gaming platforms like Windows and Xbox using the same code to utilize Xbox services like user identity, player data, social, cloud storage and more.The combined Microsoft GDK packages allow you to make games for Microsoft platforms with a shared code base and the ability to automate the build process through APIs. Additionally, new samples are provided to showcase various features available in the packages.Previously when targeting Xbox consoles and the Microsoft Store on Windows, guidance was to install separate GDK packages provided by Microsoft and Unity. This required the maintenance of a different branch of code for different Microsoft platform targets. Using the new Microsoft GDK packages, this is no longer the case. Also, it will now be possible to modify the MicrosoftGame.config file from an API directly in the build server. Combined with the new build profiles features in Unity 6, bringing your games to the Microsoft gaming ecosystem from a single project has never been easier.If you’ve been using the legacy Game Core Package or the Windows GDK package and want to migrate to these new Microsoft GDK packages (the Microsoft GDK API and Microsoft GDK Tools), follow the instructions detailed in this migration guide.We support most popular XR platforms, including ARKit, ARCore, visionOS, Meta Quest, Playstation VR, Windows Mixed Reality, and more. In Unity 6 Preview, you’ll find cutting-edge cross-platform features like mixed reality, hand and eye input, and improved visual fidelity. Many of these new features are now integrated into our revamped templates so you can get started more quickly.Whether you want to expand your existing game with mixed reality or you’re making something entirely new, AR Foundation helps you incorporate the physical world into players’ experience in a cross-platform way. In Unity 6 Preview, we’ve added support for image stabilization on ARCore, as well as improved support for mixed reality platforms like Meta Quest, including features like meshing and bounding boxes.To help you streamline your interactions, we’ve added a couple of major improvements to XR Interaction Toolkit 3.0 (XRI). This includes a new interactor called the Near-Far Interactor, enabling greater flexibility and modularity when customizing how interactors behave in your projects.We’ve also improved how we handle input in XRI with the addition of our new Input Readers, which streamlines the input process and reduces code complexity across various types of input. Lastly, we will ship a new virtual keyboard sample, giving you the ability to build and customize in-game keyboards in a cross-platform way.More platforms now support the use of hands to interact with content. Our XR Hands package enables you to implement custom hand gestures (such as thumbs up, thumbs down, pointing), as well as common OpenXR hand gestures. It includes samples to help you get started quickly. We’ve also included tools for creating, fine-tuning, and debugging your hand shapes and gestures so that your content is accessible to more people.One way to improve the visual fidelity of your game is through a feature called Composition Layers, which is currently available as an experimental package.This feature renders text, video, UI, and images at much higher quality using native support for the runtime’s compositor layers, enabling clearer text, sharper outlines, and an overall better appearance with significantly reduced artifacts.Unity 6 Preview accelerates the creation, launch, and growth of multiplayer games with the simplicity of integrated end-to-end solutions.We’ve made the new Experimental Multiplayer Center package (com.unity.multiplayer.center) available in the package registry. Multiplayer Center is a streamlined guidance tool designed to onboard you into multiplayer development. This central location in the Editor gives you access to the tools and services Unity offers for your project’s specific needs.Multiplayer Center presents interactive guidance based on your project’s multiplayer specifications, access to resources and educational materials, and shortcuts to deploy features and experiment rapidly with multiplayer capabilities.We’ve released Multiplayer Play Mode version 1.0., enabling you to test multiplayer functionality across separate processes without leaving the Unity Editor. You can simulate up to four players (the main Editor player plus three virtual players) simultaneously on the same development device while using the same source assets on disk. You can use Multiplayer Play Mode to create multiplayer development workflows that reduce the time it takes to build a project, run locally, and test the server-client relationship.We updated the Multiplayer Tools package to version 2.1.0, adding Network Scene Visualization as a new visual debugging tool. Network Scene Visualization (NetSceneVis) is a powerful tool included in the Multiplayer Tools package to help you visualize and debug network communication on a per-object basis in the Unity Editor Scene View of your project with visualizations such as mesh shading and text overlay.We added Distributed Authority mode in Netcode for GameObjects version 2.0.0-exp.2 (com.unity.netcode.gameobjects) when paired with the new Experimental Multiplayer Services SDK version 0.4.0 (com.unity.services.multiplayer). With Distributed Authority, clients have distributed ownership of/authority over spawned Netcode objects during a game session. The netcode simulation workload is distributed across clients, while the network state is coordinated through a high-performance cloud backend Unity provides.We improved the experience of Netcode for Entities with support for GameObjects to render debug bounding boxes. We also added the NetCodeConfig ScriptableObject which contains most NetCode configuration variables, which you can customize without needing to modify code.We’ve released the Dedicated Server package, which allows you to switch a project between the server and client role without the need to create another project. To do this, use Multiplayer roles to distribute GameObjects and components across the client and server.Multiplayer roles allows you to decide which multiplayer role (Client, Server) to use in each build target. This breaks down into:Content Selection: Provides UI and API for selecting which content (GameObjects, Components) should be present/removed in the different multiplayer rolesAutomatic Selection: Provides UI and API for selecting which component types should be automatically removed in the different multiplayer rolesSafety Checks: Activates warnings that help detect potential null reference exceptions caused by stripping objects for a multiplayer roleThis package also contains additional optimizations and workflow improvements for developing Dedicated Server platforms.The Experimental Multiplayer Services SDK is a one-stop solution for adding online multiplayer elements to a game developed in Unity 6 Preview. Powered by Unity Gaming Services (UGS), it combines capabilities from services such as Relay and Lobby into a single new “Sessions” system to help you quickly define how groups of players connect together.The Experimental Multiplayer Services SDK version 0.4.0 (com.unity.services.multiplayer) enables you to create peer-to-peer (P2P) sessions while providing multiple methods for players to join those sessions, such as by a Join Code, by browsing a list of active sessions and “Quick Join.”For this Unity 6 Preview milestone, several of these capabilities are still in an Experimental state, which means they are not yet supported for production. We intend to rapidly transition them to Pre-release and Release states for a fully supported experience on Unity 6 that integrates your feedback. You can engage with us in our community forums and on our official Discord server.Unity 6 Preview streamlines ECS workflows and resolves common pain points. As part of this effort, we changed the way that Entities are stored in preparation for a future consolidation of Entities and GameObject workflows. Entity IDs are now globally unique, and you can now move them efficiently from one Entity’s world to another. This does not impact ECS workflows, but it does disambiguate debugging by always showing exact entities.Additionally, the recent improvements delivered to ECS in Unity 2022 LTS are also available in Unity 6 Preview:ECS 1.1: Major physics collider workflow and performance improvements, plus 80+ fixes across the ECS frameworkECS 1.2: Quality-of-life and performance improvements across Editor workflows, serialization, baking, plus 50+ fixes and Unity 6 compatibilityThe Unity 6 Preview ships with Unity Sentis, a neural engine for integrating AI models into the runtime. Sentis makes new AI-powered features possible, like object recognition, smart NPCs, graphics optimizations, and more. Recent enhancements to Sentis focus on performance and simplifying the experience of getting startedWe now support AI model weight quantization (FP16 or UINT8) in the Unity Editor if you want to reduce your model size by up to 75%. That’s a big savings when it comes to shipping games on mobile. Model scheduling speed was also improved by 2x, along with reduced memory leaks and garbage collection. Lastly, we now support even more ONNX operators.To make it easier to find the right AI model for your project, we partnered with Hugging Face, the largest AI model hub in the world (600,000+ models). Now you can instantly find “grab and go” AI models for Unity Sentis to ensure easy integration.Once you have the right model, you’ll need to hook it up to your game. To make that easier, we introduced a new Functional API that helps to build, edit, and chain AI models. It’s intuitive, stable, and optimized for inference. The Backend API is still available for those of you who need a lower-level and fully customizable API to have full control over memory management and scheduling.To learn more about Unity Sentis, check out our blog overview, documentation, or dive into the community.The Unity Engine offers tools ranging from Visual Scripting to UI Toolkit to enhance your productivity and functionality. On top of existing tools, Unity 6 Preview specifically comes with two updates within the profiling tools portfolio.Unity 6 Preview brings two major updates when it comes to the Memory Profiler. First, graphics memory that was previously uncategorized is now measured and reported per resource (e.g., render textures and compute shaders). Second, reporting of resident memory is more precise – for example, memory that is swapped to disk is no longer counted towards this. These updates address direct feedback around the problem of understanding native memory use in particular.To learn more details about what’s in the Unity 6 Preview, check out the release notes for a comprehensive list of features, and the Unity Manual for details on how to use them.Unity 6 Preview release is supported with weekly updates until the next version. Remember to always back up your work prior to upgrading to a new version. Our Upgrade manual can assist with this. For projects in production, we recommend using Unity 2022 LTS for greater stability and support.Unity 6 Preview is most suitable for testing during preproduction, discovery, and prototyping phases of your development process. However, if any code, functionality, or fixes from any Unity 6 version are incorporated in a live game, it may be subject to the applicable runtime fees if the game is upgraded to Unity 6 in General Availability (provided the Runtime Fee criteria are met).The Unity 6 Preview release is an opportunity to both get early access to new features and to shape the development of future tech through your feedback. We want to hear how we can best support you and your projects. Let us know how we’re doing on the forums, or share your feedback directly with our product team through the Unity Platform Roadmap.]]></description><link>https://unity.com/blog/engine-platform/unity-6-preview-release</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-6-preview-release</guid><pubDate>Wed, 01 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get over 80 tips to speed up in Unity with our latest productivity e-book]]></title><description><![CDATA[Each mouse click adds up when you work in the Unity Editor every day. To help you speed up your workflows, we updated our popular e-book, 80+ tips to increase productivity, to Unity 2022 LTS.This new edition brings together numerous steps, settings, and workflows from across Unity 2022 LTS toolsets and systems that each in their way, make creating in the Editor more efficient and fun. Whether you’ve just recently begun to learn Unity or have shipped multiple projects with it, we’re confident you’ll find plenty of helpful hints for getting things done faster in your game development with Unity.There’s been no shortage of big product news from Unity lately, and many of the new features and workflows in Unity 2022 LTS are covered in our updated productivity guide. We included tips for making the most of the Universal Render Pipeline (URP) with Forward+ rendering, Renderer Features, and Decals; production-ready 2D tools like Sprite Atlas V2, Splines packages, and VFX Graph for 2D effects; and Material Variants for both the High Definition Render Pipeline (HDRP) and URP.But you’ll also pick up tons of time-saving gems that don’t make the headlines but can help you create faster. Read on for a sampling of what’s in the main sections on Editor, artist, and developer workflows.Leverage new search capabilities like Query Builder to craft complex queries and explore your projectUse Presets to:Customize the default state of anything in your InspectorCopy the settings of a component or asset, save it as an asset, and then apply the same settings to another item laterUse the Scene visibility and picking to hide and show objects in the Scene view:Avoid incorrect clicks or a cluttered hierarchy for complex scenes, without changing their in-game visibilityConveniently select and edit specific GameObjectsDisplay UVs, normals, tangents, and other Mesh information in the Inspector previewUse the Layers menu to toggle off the visibility of any Layers (such as UI) that may obscure your Scene view; lock a Layer to avoid changing its state accidentallyIf you frequently select the same objects in your scene, use the hotkey combos under Edit > Selection to quickly save or load a selection setChange colors in the Editor via Unity > Preferences > Colors to find certain UI elements or objects more quickly in Editor; adjust the Playmode tint to remind yourself when Play Mode is active so you don’t lose any changes you intended to save on exitPick up pointers from the latest URP 2D sample, Happy Harvest, on how to use Sprite Atlas, 2D Tilemap, 2D skeletal animation, 2D lights, and 2D Sprite Shape.Get tips to help you work in prefab mode, and with nested prefabs, prefab variants, and moreSee how the Animation Rigging package can help bring your 2D characters to lifeSpeed up your lightmapping with the Progressive LightmapperGet tips for for optimizing performance with light probes; for example, if you have set dressing or other static meshes that don’t require lightmapping, you can remove them from your lightmap bakes and use light probes insteadGet updated URP tips like: Basic steps for setting up DecalsUsing URP converters to correctly convert a project made with the Built-in Render Pipeline to URPA brief look at the Add Renderer Feature for injecting scripts into the rendering processAnd, updated HDRP tips for: HDRP Global SettingsThe Volume frameworkLightmapping optimization tipsUse Enter Play Mode settings to reduce compilation timeUnderstand the effects of disabling the Reload Domain and Reload Scene settingsImprove your debugging workflow with tips on how to use the Unity Debugger while in Play Mode: Attach breakpoints within the code editor in order to inspect the state of your script code and its current variables at runtimeLearn how you can use script templates to help create consistency in your code base across your development teamUse custom windows and customize inspectors to streamline workflows for your project needsUse the Platform Dependent Compilation feature to include or exclude certain sections of code based on the target platform for your buildOrganize your scripts into custom assemblies to promote modularity and reusabilityUse the Device Simulator to test your project on a range of devices directly in the Editor.Get the new Unity 2022 LTS productivity e-bookFind all of the technical e-books in Unity’s best practices hub or the advanced best practices page in Unity documentation.]]></description><link>https://unity.com/blog/engine-platform/tips-to-speed-up-in-unity-productivity-ebook</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/tips-to-speed-up-in-unity-productivity-ebook</guid><pubDate>Tue, 30 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Find a treasure trove of lighting and visual effects in our new match-3 sample Gem Hunter Match]]></title><description><![CDATA[Gem Hunter Match, a new official Unity sample, shows you how a 2D puzzle/match-3 game can stand out from the competition with eye-catching lighting and visual effects created in the Universal Render Pipeline (URP) in Unity 2022 LTS.Download the sample, together with its mini-manual, and get ready to dive for riches in crystal blue waters populated with brightly colored jewels and sea creatures. You’ll learn how to prepare and light 2D sprites to add depth, apply a Sprite Custom Lit shader for shimmer, and create glare and ripple effects.Download Gem Hunter Match.View the Gem Hunter Match script in Unity Samples.Gem Hunter Match follows the URP 3D Sample and Happy Harvest as the latest in a series of samples, created by multiple teams at Unity, that illustrate the many capabilities of URP in Unity 2022 LTS for 3D and 2D multiplatform projects. At the end of this post, we link to more great URP learning resources.This playable slice of a cross-platform match-3 puzzle game is available on the Unity Asset Store and Unity Samples. You can customize Gem Hunter Match with your assets or gameplay, or reuse any of its sprites, shaders, effects, audio, textures, and scripts in a project of your own.Bubbles, coral, and a watchful mermaid form the backdrop to the game board in Gem Hunter Match. Pearls, pink sapphires, ruby-red starfish, blue fish, golden clams, and sleepy sea turtles populate the board across three playable levels. Clear the gems and earn boosters and coins by matching three or more items. Boosters help you achieve the goals, but if you fail, you lose a heart. Wooden crates and rope are blockers; match three next to a wooden crate or underneath a piece of rope to remove them.The simple game loop includes an inventory you can reuse. Here are its main elements:The Main scene: This screen lists all the playable levels, which are referenced from a ScriptableObject called LevelList, located inside the Data folder. The Level scene: This shows the setup for the gameplay. You need to clear the elements in the Goals section. End of level / The Shop: Access the shop when you fail or complete a level; buy yourself boosters, hearts, or other currency. All of the shop items are in the folder named Data/ShopItems (you can also add your own via Assets > Create > 2D Match. Items in the shop include:  Stars: You collect these after completing each level; in actual match-3 games, stars are often a part of the metagame, decoration, or are used to advance the storyline. 2D puzzle/match-3 games are popular because they’re cute and colorful, easy and fun to play, and accessible to anyone from almost anywhere.They can also include beautiful artwork, but with their static camera, repetitive gameplay, and, in many cases, prebaked lighting and shadows, they’re not known for bleeding-edge light and visual effects. And yet there are plenty of ways you can add pops of sparkles and glimmer for extra fun.A Sprite Custom Lit shader is one of the techniques used for creating the visual effects in Gem Hunter Match. This shader substitutes for scene lighting, allowing us to modify the 2D light texture information and control the lighting on each piece. The result is creative illumination of the sprites, like the shimmery effect that moves over the pieces.The light position data is moved into the shader, eliminating the need for actual light objects in the scene, which also helps to keep it neat. The encapsulated per-object lighting in the shader works well for better isolation and editing at scale and improves performance where batching is possible.With the light and shadow information held in the shader, only the color information is included in the sprites. The normal map is used by the 2D light system to calculate the direction of each pixel, ensuring it receives more or less light based on its position. The mask map is used by lights that can affect a specific RGB channel.The Lights prefab in Gem Hunter Match level scenes contains the 2D lights for the grid. These lights affect the default Sprite Lit shader and are applied to the grid items included in the Sorting Layer that receives light.The following image illustrates the steps in creating the sprites and how the Sprite Custom Lit shader fits into the process.In Gem Hunter Match, a “fictional” light position is represented by the LightRotator GameObject, which is animated to create a glare effect off the gems. The modifications to the 2D light texture and the fabricated highlights with the Dot Product node are both used in the TileShader Shader Graph that’s applied to the gems in the game.The Dot Product node can be useful in 2D projects when you want to do custom lighting. Dot Product measures how close two vectors align. In the sample, the LightDirection position is compared to the apparent direction of each pixel in the Normal map. The sampled black and white image can be used to add light to the sprite and update the values at runtime for all the pieces using the same shader.Get Gem Hunter MatchThe Radial Warp shader uses the URP 2D Camera Sorting Layer Texture setting. This handy feature gives you access to the graphics generated up to the indicated Sorting Layer in the URP 2D Renderer settings that you can then use in Shader Graph to apply effects. In the Happy Harvest sample, the Camera Sorting Layer Texture is used to create a water refraction effect, and in Dragon Crashers, it’s used for smoke distortion. In this sample, we use it to apply a distortion that simulates a shockwave, adding extra visual appeal when you make a match. It’s the kind of effect that creates an impact that your players will remember.We hope you’ll download Gem Hunter Match, play and customize it, then try out its graphics techniques in your own projects. All of these and more are covered in the Unite 2023 session, Lighting and AI techniques for your 2D game.Don’t miss out on these other samples, e-books, and tutorials for URP:E-book: 2D game art, animation, and lighting for artistsE-book: Introduction to the Universal Render Pipeline for advanced Unity creatorsUnite 2023: Accelerate your multiplatform development with the latest for URPLivestream: What’s new in Unity’s Universal Render Pipeline?Video tutorial: Happy Harvest: Custom crops and player notesE-book: The definitive guide to creating advanced visual effects in UnityMake sure to join the conversation about the Universal Render Pipeline on the Unity Forums or join Unity Discussions.]]></description><link>https://unity.com/blog/engine-platform/2d-puzzle-match-3-sample-gem-hunter-match</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/2d-puzzle-match-3-sample-gem-hunter-match</guid><pubDate>Mon, 29 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[All Unity Muse capabilities are now available in the Editor, plus 3 new updates]]></title><description><![CDATA[We’re excited to announce that Unity Muse users can now use all five Muse capabilities directly in the Unity Editor. By bringing AI abilities to where you create, you can now more easily and conveniently use Muse to complement your creative process and streamline development.While you may already be familiar with Muse Sprite for creating original 2D assets and the recently improved Muse Texture generation for creating a breadth of unique textures for 3D objects, this update brings three exciting improvements:A new Editor-integrated version of Muse Chat provides project-aware responses.Now available to all users, Muse Animate allows you to create animations within the context of your project.LLM-powered Muse Behavior, which you can use to set up character interactions with an intuitive AI-assisted interface, is now available to anyone using Muse.Following Muse’s launch last year, we asked for feedback on how we can continue to improve the chat experience. What we heard was an overwhelming desire to be able to troubleshoot errors without leaving the Editor. We received feedback that it would be helpful for Muse Chat to automatically know more details of a project to reduce the time spent giving context and get more relevant answers faster. We’ve heard your feedback, and are excited to announce that Muse Chat is now available as an in-Editor package. This update also provides a foundation for providing project-aware responses. Muse Chat will now be able to retrieve key details about your project, including the Unity version, active render pipeline, input system used, target platforms, API compatibility, and other project settings.One example of how this update will simplify troubleshooting issues is solving console errors. When you have an error, you can now click on it and ask “How can I fix this error?” Muse will automatically retrieve information on what’s causing the issue and provide a suggestion for how to resolve it.Muse Chat will also continue to provide usable scripts that you can plug and play, just as it has before. Over time, Muse Chat will continue to evolve and become a more intelligent chat-based assistant that can provide tailored answers and information, code snippets, and smarter integrations with the Editor.Animation is a complex craft. Prototyping basic movements capable of plugging into game mechanics early can save you a lot of time in later stages of development. Muse Animate is perfect for helping you rapidly generate humanoid animations through natural language.Similar to Muse Chat’s feedback, we commonly heard that Muse Animate needed to be more deeply integrated in-editor. Based on that resounding feedback, we’ve launched a new in-Editor Muse Animate prerelease package that’s available for all Muse users. With this new version, you can create Unity Animation Clips directly within the Unity Editor and easily retarget them to work with characters that use the Unity Humanoid Rig.You can also edit your generated animations with Muse by selecting an animation to decompose it into multiple poses. From there, you can select effectors (little orange dots on some of the character’s joints) to more finely adjust the movements. Muse Animate will process your changes and regenerate the animation. The package also makes additional editing features available, such as extrapolated posing, loop to first pose, and transition duration.With this release, we are also actively working on enhancements to the existing AI animation model and introducing new ways to generate and modify animations, including the ability to create animations from sketches or videos.We’ve received a lot of requests for a built-in behavior tree that would allow you to bring game characters to life with NPC interaction abilities. Last year, we started a closed prerelease of Muse’s Behavior capability – our take on LLM-powered decision trees – to allow you to create custom logic for characters and objects in an easy-to-use workflow. This set of features also included generative abilities to help you set up more complex interactions.Now, the Muse Behavior prerelease package with LLM features is available to all Muse users. We’ve designed and improved this package to make it easier to use and for more intuitive editing. Like a classic behavior tree model, Muse Behavior consists of nodes and branches that are human-readable, allowing you to create representations that read like stories.Words within a node’s story are tagged as inputs used by the node’s internal logic. The words are then automatically converted into fields so you can embed data directly into the node. Want your character to speak? Add the talk node, provide the words and just like that, your character will have dialog that’s triggered by player interactions.Muse Behavior also includes a blackboard, which contains variables that can be reused in nodes across the graph. Simply click on the link button of a field, then choose from a menu of assignable options. Variables in the blackboard can be assigned values in code or assigned through the Behavior Graph Agent component in the Inspector window. This ability to set up and then duplicate repeatable actions makes it faster and easier to create complex and repeating interactions.With Muse Behavior, you can create custom actions that give you control over the high-level structure and narrative of your behavior trees. And don’t worry if you’re totally new to creating behavior trees – the node wizard guides you step by step through the process of creating a new action type and adding to the graph. You can also use the LLM feature to automatically generate your tree.As we continue to improve Muse Behavior, you can expect more generative features to further simplify complex behavior tree setups.These new packages and improvements are just the start. We’re continuing to innovate on existing capabilities like Muse Texture, where we’re leveraging new original research and proprietary models to generate true PBR materials for 3D objects. This means that you’ll be able to produce a multi-material UV texture that can wrap onto an object directly, and it will react more accurately to lighting.We also understand the importance of audio for setting the scene, so later this year, we’ll release Muse Sound so you can produce AI-generated, prompt-to-sound effects such as movement and environmental sounds.At GDC, we showcased how you could use all five Muse capabilities together to customize a game loop in the garden scene of our URP sample project. Check out our session Unity Muse: Accelerating prototyping in the Unity Editor with AI to learn how you can use all of Muse’s abilities to quickly customize a project scene and gameplay.We’ve updated the Muse onboarding experience to make it easier to start a free trial of Muse and add the Muse packages to your projects. Visit the new Muse Explore page to get started, and let us know what you think of the newest capabilities and improvements in Discussions.]]></description><link>https://unity.com/blog/engine-platform/unity-muse-ai-capabilities-in-editor-plus-new-updates</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-muse-ai-capabilities-in-editor-plus-new-updates</guid><pubDate>Tue, 23 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Valeo unveils in-car XR racing game at SXSW]]></title><description><![CDATA[“Are we there yet?” What parents wouldn’t give to banish this phrase forever from long car trips, or to have some peace and quiet when driving their family around day-to-day! This was the challenge a team of Valeo software engineers tackled when they developed Valeo Racer, which was unveiled for the first time at South by Southwest (SXSW) in Austin, Texas this year.Valeo Racer is an in-vehicle, extended reality (XR) game that combines the real-world driving environment and virtual 3D elements to create a unique and immersive experience. Passengers compete against each other, playing on their phones or tablets connected to the car’s WiFi. Players control their race car to get as many points as possible by collecting coins while avoiding obstacles, which includes the other real cars on the road.Valeo Racer is the first XR video game to combine live video, vehicle environment perception, and digital gaming elements. The infinite runner game is generated by a new software stack developed by Valeo. It uses the vehicle’s existing Advanced Driver Assistance Systems (ADAS), including cameras, radar, and ultrasonic sensors, as well as artificial intelligence perception algorithms to process the car’s real-time environment data through the Unity Runtime to generate game elements.Unity Runtime is a proprietary component of the Unity Engine that handles various critical components of the game, rendering high-performance graphics, managing user inputs and interactions, coordinating game components, supporting real-time physics simulation, animation, scripting languages, asset management, and networking – all on the end device. By using Runtime, Valeo was able to give passengers the option to to play a mixed reality game with real-time data harnessed from the car’s sensors on their phone or tablet connected with in-vehicle WiFi – and even compete against each other during trips.Why did an international automotive supplier develop Valeo Racer, beyond just the fun of the game? The automotive landscape is rapidly evolving, from electric vehicles and advanced autonomous functions, to reinventing the driver and passenger experience. In-vehicle entertainment has become an important element of enhancing the user experience.Valeo CTO Geoffrey Bouquot and Unity’s Nick Facey, managing producer for Unity Industry, got together with Elizabeth Hyman, president and CEO of XR Association, at SXSW for a fireside chat titled “Cruising with Augmented Reality: Exploring Entertainment in Autonomous Cars.”Bouquot insisted on the limitless possibilities using automotive sensors and software for applications beyond their primary functions.“By 2030, almost all cars will be equipped with cameras and other sensors. Together with the associated software, these technologies support safety, electrification, and sustainability in the next generations of mobility,” Bouquot said. “Beyond that, it offers a world of opportunities for other applications, such as gaming, education, and so much more. It’s exciting to explore these new frontiers with our partners in automotive, gaming, and other creative industries.”Facey added, “A lot of the focus has been on the driver, such as bringing car signals into better graphics engines, Unity being one of them. Today, we have really good graphics and real-time information going to the driver to make driving safer, better, more efficient. Now we’re bringing the passengers into that experience. This convergence of technology is almost always a good thing for consumers.”Valeo is a world leader in automotive sensors and cameras and has also been working with augmented reality for more than 20 years. The parking guidance displays that you see overlaid on your backup camera video feed and your car’s head-up display? Those are AR features developed by Valeo and already available on millions of vehicles. The company’s new XR software development kit will offer game developers the means to create new types of games that utilize a car’s existing onboard cameras, sensors, perception algorithms, and artificial intelligence to reimagine the in-vehicle gaming experience.“As the leader of the XR Association, the industry trade association for virtual, augmented, and mixed reality, I'm always looking for opportunities to identify and showcase the latest advancements and use cases for immersive technology,” Hyman said. “While Valeo Racer is a gaming experience, it is also a platform that will inspire developers to create new products and experiences in a way that marries up the advancements of autonomous vehicles with immersive technology.”Valeo Racer is not a signal that the automotive tech company is entering the gaming space. Rather, it’s a demonstration of what Valeo’s XR software development kit could bring to the automotive industry, and it’s a proof of concept for a new type of in-car entertainment. As vehicles reach more advanced levels of autonomy, XR will offer even more opportunities to create new experiences for both passengers and drivers.Learn more about how Unity can help you with your XR project. Missed out on trying the Valeo Racer XR game at SXSW 2024? Here’s what a few people had to say about it.]]></description><link>https://unity.com/blog/industry/valeo-xr-racing-game-sxsw</link><guid isPermaLink="true">https://unity.com/blog/industry/valeo-xr-racing-game-sxsw</guid><pubDate>Fri, 19 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[See the Unity 2022 LTS updates to two of our biggest e-books: URP and HDRP for advanced users]]></title><description><![CDATA[The Universal Render Pipeline (URP) and the High Definition Render Pipeline (HDRP) are built to help you scale and deliver your games for wide platform reach with the best possible visual quality and performance.We created two technical e-books to provide Unity artists, technical artists, and developers with a better onboarding experience to help you harness the wide-ranging capabilities of URP and HDRP. We’re happy to announce that both guides are now updated to include all relevant features in Unity 2022 LTS.The Universal Render Pipeline for advanced Unity creators and Lighting and environments in the High Definition Render Pipeline are written by Unity and external technical experts. Each guide provides a treasure trove of illustrated step-by-step instructions and best practices for creating high-quality, performant graphics with your chosen pipeline.With the HDRP guide weighing in at 186 pages and the URP one at 166 pages, these are two comprehensive resources you can reference throughout the planning and development of your Unity 2022 LTS-based projects.Let’s look at what’s in each of the guides.URP is a multiplatform rendering solution built on top of the Scriptable Render Pipeline (SRP) framework. It is the successor to our Built-in Render Pipeline and is designed to be efficient for you to learn, customize, and scale to all Unity-supported platforms. In Unity 2022 LTS, URP provides the majority of the functionality offered by the Built-in Render Pipeline, and in certain areas exceeds it. Our top goal is that URP is the leading renderer for mobile, XR, and untethered hardware.The URP e-book will help you migrate your Built-in Pipeline-based projects to URP, or start a new project based on URP.The updates are threaded through almost every section of this latest edition of the guide – updated instructions for setting up and applying the myriad capabilities of URP, new links, images, and code snippets – so you can rely on it to match as accurately as possible your experience using URP in Unity 2022 LTS.There are new additions and changes for areas like applying decals, URP quality settings and converters, comparing rendering paths to include Forward+, Full Screen Shader Graph including custom post-processing, LOD Crossfade, the SubmitRenderRequest API, and much more.To show you how comprehensive the URP e-book is, here’s a full list of the topics and workflows it covers.The URP e-book concludes with an introduction to the four environments included in the URP 3D Sample, which is available in the Unity Hub. Each environment has a distinct art style that showcases the different lighting and visual effect capabilities of URP for multiple platforms.You can also explore the URP 3D Sample through this short walkthrough video.HDRP is Unity’s high-fidelity SRP built to target modern (compute shader-compatible) PC and console hardware. It utilizes physically based lighting techniques, linear lighting, HDR lighting, and a configurable hybrid Tile/Cluster Deferred/Forward lighting architecture.We added so much new information to the 2022 LTS version of the HDRP e-book that it’s close to double the length of the previous one! Just like the URP guide, this one has new images, links, and information in many of its sections, with the biggest additions as follows.The water systemA 30+ page deep dive into the new water system covers waves, wind effects, swells, ripples, foam effects, decals, caustics, underwater scenes, water scripting, and much more.In addition to the e-book updates you can also dive deeper into the water system in HDRP through this video tutorial.TerrainFrom sparkling water to beautiful landscapes: A whole new Terrain section covers texturing and detailing, trees and vegetation, including how to work with SpeedTree, the Terrain tools package, painting terrain, ray tracing for terrain, and a look at the HDRP Terrain demo.Shaders and materialsWe also cover HDRP materials in detail in the new edition, with a section explaining material samples, variants, and properties; subsurface scattering; translucency; decals; HDRP Master Stack; Full Screen Shader Graph, and Volumetric Shader Graph fog.CloudsThe section on creating clouds is expanded to include steps for atmospheric and sun-based lighting and blending between two distinct cloud systems.Other key topics covered in the HDRP guide include:You can find all of the advanced e-books from Unity in the best practices hub and best practices page in the Unity Manual.]]></description><link>https://unity.com/blog/engine-platform/unity-2022-lts-updates-urp-hdrp-e-books</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-2022-lts-updates-urp-hdrp-e-books</guid><pubDate>Thu, 18 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mazda and Unity: Pioneering a new future for automotive cockpit HMI]]></title><description><![CDATA[With market-leading multiplatform support and efficient development workflows for user experiences (UX), the Unity Engine and Editor are becoming the go-to solution for carmakers to develop their next-generation in-vehicle Human-Machine-Interfaces (HMI).On March 7, 2024, Unity Japan publicly announced a partnership with Mazda Motor Corporation to embed Unity in future Mazda vehicles. In a conversation with Seiji Goto, general manager of Infotainment and Cockpit Electronics at Mazda, we gained insight on their perspective on HMI and Unity.A vision for 2030: Driving forward with MazdaAs part of Mazda’s ambitious 2030 roadmap, research and development is accelerated in many areas, including HMI. The aim is to take on the challenge of simultaneously improving safety and value for customers through intuitive, great-looking, and responsive UX. Mazda will work directly with Unity to create a more “human-centric” in-vehicle experience.“Drivers process a variety of information while driving, and we believe it is important for them to be able to recognize and understand information inside and outside the car intuitively, and to operate the car intuitively,” explains Mr. Goto.The current world of HMIOver the last few years, the amount of information passed to drivers and passengers in vehicles has increased. Goto, who joined Mazda in 2015, points to the move from hard disks to cloud-connected vehicles, and the continuous growth of data to be managed just for the navigation systems alone.Throughout the industry, the same is true for the recent advent of Advanced Driver Assistance Systems (ADAS), where the amount of information displayed has scaled with system performance. A key challenge is to convey relevant information to the driver in an easy-to-understand manner while keeping the system quick to react and distraction free.Bridging the technology gap and the human-machine gapIn-vehicle HMIs now require technologies that were pioneered in the games industry. Systems like a scene tree for 3D graphics, animation blending, or easily exchangeable prefabs are a challenging thing to build from scratch, but these are standard in the video game industry. These technologies are ideal to tackle the challenges of modern HMI.“By utilizing Unity’s expertise in real-time 3D rendering for our user interface to spatially represent information from many car systems, we will be able to reduce the time and burden on the driver to recognize and understand information, realizing a safer and more convenient driving experience,” says Goto.Which UI works best differs between individuals. But Goto believes that by using Unity, the HMI can be personalized to meet each driver’s individual requirements.Unity and Mazda: A strategic partnershipFor carmakers, it’s important to have an integrated development environment that allows designers, developers, and other contributors to iterate on the project efficiently. Over the course of their search for a toolchain to power their next-generation HMI, Unity emerged as an innovative, future-looking solution.Goto outlines a multitude of reasons that make Unity a clear choice for automotive HMI:An active community provides a trove of documentation, tools, and solutions.The ability to tap into a large user base of game developers makes it easy to hire Unity experts anywhere in the world.Unity has a track record of multiplatform adaptability that reduces the risk of long-term technological changes.Development tools have ease-of-use benefits.The partnership between Mazda and Unity Technologies Japan Corporation is a milestone in automotive HMI development. “Mazda is accelerating research and development in all areas under the 2030 Management Policy,” said Michihiro Imada, Mazda’s executive officer in charge of Integrated Control System Development.“In the cockpit HMI area, Mazda will continue to evolve the interface between the human and car based on the ‘human centric’ development concept to deliver exciting mobility experiences. Specifically, Mazda will take on the challenge of further improving safety and convenience by enabling intuitive human operation and creating new value for vehicles.”Mr. Imada continues, saying, “By working with Unity, which is highly regarded globally for its technical capabilities and high quality in the rapidly innovating game industry, Unity can offer graphical user interface (GUI) solutions in the cockpit HMI and advance Mazda’s goal of human-centric vehicle engineering.”Future outlookWith the complex processes involved in creating an automotive HMI experience, there is a lot of exchange between departments such as marketing, manufacturing, UX design, and software engineering. On top of embedded HMI, Unity’s real-time 3D (RT3D) capabilities are used for VR-based UX testing, prototyping, engineering and design visualizations, car configurators, operational digital twins, and other applications in the automotive sector.Mazda believes that it is possible to introduce Unity in each of these departments, and if they do so successfully, they will be able to communicate through the same development environment. This will help to make the work itself more enjoyable and encourage more customer-oriented proposals. By building an open development environment and system, better products can be created.Learn more about how Unity can boost your HMI project at unity.com/hmi]]></description><link>https://unity.com/blog/industry/mazda-unity-partnership-automotive-cockpit-hmi</link><guid isPermaLink="true">https://unity.com/blog/industry/mazda-unity-partnership-automotive-cockpit-hmi</guid><pubDate>Wed, 17 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to maintain control and transparency with in-app bidding]]></title><description><![CDATA[Compared to traditional waterfall instances, in-app bidding can be advantageous. However one concern raised within the context of in-app bidding is the loss of manual tweaks to fill ad requests. Given the automation with in-app bidding, it can raise concerns about losing control and transparency.To help mitigate concerns around moving to in-app bidding, there are tools and services that help you maintain transparency and control. This article looks at three key pillars to addressing those concerns: testing, granular reporting, and understanding your ad experiences.Maintain control through robust testingIn the automated in-app bidding environment, you need to be able to test, learn, and adapt ad strategies to see long-term success. A/B testing gives you greater understanding of your monetization metrics, from average revenue per user (ARPU) to retention. Knowledge is power, and A/B testing is the only way you can truly measure the impact of different in-app bidding strategies. Running an A/B test can give you the answers you need to feel secure in this new landscape.Certain KPIs you can look at to help determine success could be: overall average revenue per daily active user (ARPDAU), ARPU growth, increase in the number of impressions per user, and fewer managed instances. Tracking ARPDAU before and after you implement bidding measures overall revenue, not just performance by network.In addition, A/B testing gives you granular insights into your strategy so that you can continue to optimize and build a dynamic marketplace in this new ecosystem. Unity LevelPlay has a robust A/B testing solution that allows you to test a wide range of variables including bidding vs. traditional waterfalls, mediation groups, new networks, instance pricing, and ad strategy. Among LevelPlay customers who A/B tested integrating the Unity Ads bidder, the test group won in 78% of the cases, and those who applied the changes saw ad ARPDAU increases of up to 7%.Overall, A/B testing brings you peace of mind when transitioning to an in-app bidding world, confirming the switch is right for your app. After switching, a robust A/B testing tool continues to give you control over the bidding environment, allowing you to test and implement new optimizations.Learn more about A/B testing.Gain transparency with deeper reportingHaving transparency into your ad performance can help you make informed changes to accelerate your app’s growth. In-app bidding is an automated setup which will run based on general best practices, so the ability to make real-time, data-informed choices for your app is incredibly valuable, giving you a leg up on competitors.Features such as real-time pivot from LevelPlay provide granular visibility into monetization performance and the ability to make instant changes. Publishers can detect performance changes as they occur, compare revenue over time, and analyze network performance. Trackable KPIs such as eCPM buckets, ad latency, impressions, DAU, DEU, and sessions per DEU can help publishers understand not only ad performance, but user engagement patterns as well. These metrics can be sliced and diced by country, time, ad source, and more to give a deeper level of insight to determine what, if any, changes are needed.“In 2024, Unity LevelPlay remains focused on giving developers more control and transparency through granular analytics that provide actionable data in real time, to help optimize their monetization strategies and maintain user experience to drive higher retention and ARPU,” Omer Adato, Senior Director of Product Management at Unity says.Experience ads as your users doAnother concern raised is that since in-app bidding operates in real time and your ad space can be filled quite quickly without you even knowing, having transparency into the ads being shown in your app is key to ensuring you’re selling ad space to advertisers that won’t disrupt the user experience. After all, seeing a frustrating ad or having a glitchy experience can quickly cause users to churn. However you can gain insight that supports both brand and safety as well as revenue.Gaining oversight of your users' ad experiences supports not only branding and safety, but revenue as well. By blocking troublesome ads initially, you cultivate a healthier ecosystem until networks address issues. Once resolved, lifting blocks on revenue sources restores income while maintaining a quality user experience. Overall, targeted blocking and unblocking empowers monetization through cooperation on ad quality.Ad Quality from LevelPlay is designed to give full transparency into your ad experience. You can access a gallery of all the ads shown in your app, ad analysis, and user journeys. Publishers can also define a set of triggers in Ad Quality, called custom notifications. This feature proactively alerts publishers if a specific creative, advertiser, content rating, or buggy ad appears in your app, so that you can immediately respond to any critical needs.While in-app bidding is running automatically in the background, a feature like Ad Quality gives you much needed transparency into how your ad space is being filled.“Ad Quality helps us ensure that ad content in our apps is appropriate for our audiences. We get notified when titles with high content ratings are displayed, so we know when to reach out to the networks. This visibility is key for us.”-- Stefano Accossato, Head of UA & Ad Monetization at TutoTOONSIn an in-app bidding environment, working with a mediation platform that has the right features to maintain control and transparency over your ad strategy can help make the transition from traditional waterfalls easier and help create a top performing ad strategy.Learn more about Unity LevelPlay and how you can get started with A/B testing, Real time pivot, and Ad Quality.]]></description><link>https://unity.com/blog/how-to-maintain-control-and-transparency-with-in-app-bidding</link><guid isPermaLink="true">https://unity.com/blog/how-to-maintain-control-and-transparency-with-in-app-bidding</guid><pubDate>Tue, 16 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity Asset Bundles tips and pitfalls]]></title><description><![CDATA[Asset Bundles are archive files containing assets for your game. They are used to split your game into logical blocks, allowing you to deliver and update content on demand while making your game build smaller. They’re also commonly used to deliver patches and DLCs for your game. Asset Bundles can contain all sorts of assets, such as Prefabs, Materials, Textures, Audio Clips, Scenes, and more, but they can’t include scripts.Previously, it was necessary to build Asset Bundles manually, marking each asset accordingly, then tracking and resolving dependencies by yourself at runtime. Nowadays, all of this is taken care of by the Addressables system, which will build Asset Bundles for you based on the Asset Groups you define, as well as loading and handling dependencies transparently.While there are a lot of guides on how Asset Bundles work, I’d like to cover some lesser-known aspects of the system, with a focus on game performance, memory runtime usage, and general compatibility.Whenever you attempt to use an asset contained within a bundle, Unity ensures the corresponding bundle is loaded into memory, then in turn loads the asset in memory.While it’s possible to partially load specific assets within an Asset Bundle, the opposite is not allowed. This means that as soon as an asset within an asset bundle is loaded, it can only be unloaded if the entire group of assets is no longer needed.As a result, if your bundle structure is not ideal, you will often see increasing runtime memory usage as the game goes on, leading to deteriorating performance and potential crashes. For this reason, it’s best to avoid bundles with a large amount of assets in it, as it will end up taking up a lot of runtime memory and turn into a bottleneck for your game. Instead, aim to pack assets based on how frequently they are going to be loaded and used together.Asset Bundles are generally forward compatible, so bundles built with older versions of Unity will in most cases work on games built on newer versions of Unity (assuming you do not strip the TypeTree info, as covered later). The opposite is not true, so bundles built on a version of Unity that’s newer than the one used for your game build are unlikely to load correctly.As the difference in version between the bundle and the engine used for the game build increases, compatibility becomes less likely. There are also cases where the bundle might still be loaded, but the objects contained within the bundle cannot be loaded correctly in the new version of Unity, likely due to a change in the way the objects are serialized, thus creating issues. In that case, you’ll need to rebuild your bundles to maintain compatibility.There’s also a performance cost in loading bundles from a different version of Unity, as covered in the TypeTree section below.For these reasons, it’s recommended to test thoroughly whenever you update the Unity version of your game build against existing Asset Bundles, and to also update them whenever possible.Asset Bundles do not generally offer cross-platform support. While in the Editor, you will be able to load bundles from another target platform, however on-device this will fail.This is still true for bundles that contain assets that are not necessarily platform-specific.The reason for this limitation is that data might be optimized or compressed in ways that only work for the target platform. Also, bundles can contain platform-specific data that should not be shared between different platforms, so this prevents leaking content that is not intended for another platform.The Loading cache is a shared pool of pages where Unity stores recently accessed data for your Asset Bundles. This is global, so it’s shared between all Asset Bundles within your game.This has been introduced fairly recently, I believe on Unity 2021.3, then backported to 2019.4. Before this, Unity relied on separate caches for each Asset Bundle, which resulted in significantly higher runtime memory usage (covered below in “Serialized File Buffers”).By default, this is set to 1MB, but it can be changed by setting AssetBundle.memoryBudgetKB.The default cache size should be enough in most cases, although there are some scenarios where changing it might bring benefits to your game. For example, if you have bundles with a lot of small objects contained within, increasing the cache size might lead to more cache hits, improving performance for your game.Along with your game assets, Asset Bundles include a bunch of extra information and headers, used by Unity to know which assets to load and how, as well as a dedicated cache (depending on the Unity version you are using).A map of the assets in a bundle. It’s what allows you to lookup and load each individual asset in the bundle by name. Its size in memory is normally not a concern, unless you have exceptionally large asset bundles containing thousands of objects.The Preload Table lists the dependencies of each asset contained within your bundle. It’s used by Unity to correctly load and construct assets.This can become quite large if the assets contained in your bundle have a lot of explicit and implicit dependencies, as well as cascading dependencies coming from other bundles. For this reason (and many others), it’s a good idea to design your bundles to minimize the dependency chain.TypeTrees define the serialized layout of the objects contained in the Asset Bundles.Their size depends on how many different types of objects are contained within the bundle. For this reason, it’s a good idea to avoid large bundles where objects of many different types are mixed together.TypeTrees are necessary to maintain compatibility when upgrading the Unity version of your game build while still trying to load Asset Bundles built on older versions of the engine. For example, if the format or the structure of the object have changed, they allow you to do a Safe Binary read so Unity can attempt to load it regardless. This has a performance cost, so in general it’s recommended to update bundles whenever possible when you update the engine.It can optionally be disabled, by setting the BuildAssetBundleOptions.DisableWriteTypeTree flag when building your bundles. This will make your bundles and the related memory overhead smaller, but it also means that you’ll need to rebuild all your bundles whenever you update the engine version of your game build. This is especially painful if you rely on bundles built from your players for user-generated content, so unless you have a very strong reason to do so, it’s recommended to keep TypeTrees enabled.One case where TypeTrees can normally be safely disabled is for bundles included directly in your game build. In this case, upgrading the engine would require making a new game build and new Asset Bundles anyway, so its retrocompatibility aspect isn’t relevant.Each bundle has their own TypeTrees, so having multiple small bundles containing the same type of objects will slightly increase the total size on disk. On the other hand, when loaded, TypeTrees are stored in a global cache in memory, so you won’t incur a higher runtime memory cost if multiple asset bundles are storing the same type of objects.Note: Since Unity 2019.4, this has been replaced by a global, shared Loading cache, as described above.When an Asset Bundle is loaded, Unity allocates internal buffers to store their serialized files into memory.Regular Asset Bundles contain one serialized file, while Streaming Scene Asset Bundles contain up to two files for each scene contained in that bundle. The size of these buffers depends on the platform. On Switch, PlayStation, and Windows RT it will be 128KB, while all other platforms have 14KB buffers.For this reason, it’s best to avoid having a large amount of very small asset bundles, since the memory occupied by these buffers might become significant compared to the assets they actually provide.A CRC (Cyclic Redundancy Check) is used to do checksum validation of your Asset Bundles, ensuring the content delivered to your game is exactly what you expect. CRCs are calculated based on the uncompressed content of the bundle.On consoles, Asset Bundles are normally included as part of the title installation on local storage or downloaded as DLCs, which makes CRC checks unnecessary. On other platforms, such as PC or Mobile, it’s important to do CRC checks on bundles downloaded from a CDN. This is to ensure the file is not corrupted or truncated, leading to potential crashes, and also to avoid potential tampering.CRC checks are fairly expensive in terms of CPU usage, especially on consoles and mobile. For these reasons, it’s normally a good compromise to disable CRC checks on local and on cached bundles, enabling them only on non-cached remote bundles.By default, Unity offers three ways to lookup assets within bundles:Project Relative Path (Assets/Prefabs/Characters/Hero.prefab)Asset Filename (Hero)Asset Filename with Extension (Hero.prefab)While this is convenient, it comes at a cost. In order to support the last two methods, Unity needs to build lookup tables, which can consume a significant amount of memory for large bundles.In addition, loading assets using a different method than Project Relative Path will incur a performance cost, again because of the table lookup required.For these reasons, it’s recommended to avoid using those methods. You can even disable them when the Asset Bundles are built, which will improve loading performance for your asset bundles, and runtime memory usage.To do that, you can set these two flags when building your bundles:BuildAssetBundleOptions.DisableLoadAssetByFileNameBuildAssetBundleOptions.DisableLoadAssetByFileNameWithExtensionTo learn more about asset management, share feedback, or engage with the community and Unity staff, check out the Asset Management forum.]]></description><link>https://unity.com/blog/engine-platform/unity-asset-bundles-tips-pitfalls</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-asset-bundles-tips-pitfalls</guid><pubDate>Tue, 16 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Social networks are not enough: why you should diversify your app marketing channel mix]]></title><description><![CDATA[App marketers now have more capabilities than ever before to reach new audiences. Yet, despite the wealth of options available, many app marketers choose to rely solely on social ad networks (SANs) for their user acquisition (UA) efforts.This is in part because many app marketers believe that SANs are sufficient for effective UA. But, this misses the significant impact that SDK networks can offer apps in terms of scale, optimizations, and resilience. All of which is left behind when marketers choose to only utilize SANs.Here we’ll address the reasons app marketers should be leveraging SDK networks, as well as the common misconceptions that lead app marketers not to do so, and the impactful resources left on the table when choosing not to diversify UA marketing channels.Capturing untapped growth opportunitiesScalability is the measure of app success, and effective scaling requires access to as wide a pool of users who can be converted as possible. While there’s no doubt that social ad networks offer substantial growth opportunities, they are not, or even close to, the totality of the market.In other words, limiting marketing channels to SANs means losing out on the untapped scale that is available through SDK networks, and as a consequence limiting your app's growth potential. Using SDK networks in tandem with SANs mitigates this loss of scale.Resiliency to market and channel policy changesExpanding beyond social networks also has the added benefit of resiliency to market and channel policy changes.SANs operate under a set of requirements different from SDK networks, needing to conform to standards unique to them. While your app may be currently compliant with these guidelines, they continue to evolve and update. When changed, your app would need to quickly adapt or stop running UA. Diversifying your marketing mix enables you to create a buffer with additional avenues for growth.And that’s just at the regulatory level. On a business level, the companies behind these social networks frequently change their policies. A change in policy could mean extensive work to meet the new requirements, which could then result in a loss of growth. By adding SDK networks to your marketing mix you can create a more resilient UA strategy that isn’t totally reliant on one set of policies that are subject to change.A bigger toolbox for optimizationsA significant benefit to a diverse UA marketing mix is having multiple processes for reaching high-quality users. Each SDK and SAN has its optimizations for finding you the right user for your app. But, with differing solutions come differing results. This is a weakness when marketing channels are siloed from one another, or used in isolation. However, used as a part of a comprehensive and diverse marketing strategy, this means you get access to more tools to reach high-quality users at the right price.Each network prioritizes users differently. So while SANs may miss the users you actually want, SDK networks could help you fill in those gaps, and vice versa. The larger your toolbox of algorithmic solutions, the better you can optimize and the more likely you’ll be able to find the right users for your app.Common misconceptions: Implementing SDK networksWhile there are many clear upsides to integrating SDK networks into your UA mix, some app marketers have been reluctant to do so. A large part of this reluctance is connected to the higher investment needed, both in terms of personnel and capital. But, this reluctance is for the most part based on two common misconceptions:Misconception 1: SDK network implementation and optimization is highly manualA common myth around SDK network integration and optimization is that it requires a lot of manual management in order to drive results. While this was true in the past, the industry has since become far more efficient and automation driven. This is particularly true for optimizations.Thanks to advancements like automated bid optimizers, much of the manual heavy lifting has been taken out of the equation. The ironSource Ads tCPA optimizer, for example, uses machine learning functions to optimize bids based on certain actions. In the past, this would all be done manually, but it’s now a streamlined process that only requires the setting of which action and price you wish to optimize for.Misconception 2: ROAS is difficult to solve forAn important metric for utilizing SDK networks successfully is return on ad spend (ROAS). This is the measure of revenue generated in relation to the cost of running the campaign. To effectively leverage SDK networks, app marketers need to know what ROAS goal they should be solving for. Without it, spending could exceed revenue, meaning that your UA could cost you more than it earns you.A common concern is that efficient ROAS is tough to identify and that generating a reliable ROAS benchmark requires a deep understanding of SDK networks and their optimizations. While this was historically the case, the industry has evolved to account for this difficulty. Most SDK networks offer account managers to assist marketers in calculating their ideal ROAS. Plus, solving for ROAS is now an established science - with the correct formulas and tools, it’s now far easier.Diversify your marketing mix for better UA performance and more resiliencyWhile SANs offer performance and scale and should be a part of your UA channels, there is significantly greater growth potential in adding SDK networks into your marketing mix. On top of this, having a diverse marketing mix gives your app a more resilient UA strategy that can adapt to changing policies, both on the regulatory and business levels. Combined with easily accessible automated optimizers and comprehensive account management, app marketers can now easily integrate SDK networks into their marketing mix for a more diverse and efficient UA strategy.Let’s get you started. Talk to a Unity account manager today.]]></description><link>https://unity.com/blog/social-ad-networks-sdk-networks</link><guid isPermaLink="true">https://unity.com/blog/social-ad-networks-sdk-networks</guid><pubDate>Mon, 15 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Fika Productions set sail with their peer-to-peer multiplayer hit Ship of Fools]]></title><description><![CDATA[When Fika Productions set out to fill the market gap for a co-op roguelite game, they had their sights set on couch co-op. And then 2020 happened. We sat down with lead gameplay programmer Daniel Carmichael and developer Yannick Vanderloo to discuss their game and explore some of the development challenges they had to solve to get Ship of Fools to market during a complicated time for the industry.What was the inspiration behind Ship of Fools? Do you have any colleagues with a nautical background?Daniel: Our inspiration was first and foremost about filling the market gap for a cooperative roguelight. We’re all fans of the roguelite genre, and although there are a lot of great roguelite games, we felt that none of them did the co-op part really well.Thematically, we loved the idea of a boat because if the boat sinks, everyone sinks. That’s the main core idea: work together to keep the boat afloat. No one had any nautical experience, and we’re not sea creatures or anything like that.No octopi or salty sea dogs on staff. Got it. What does market research look like for you?Daniel: Our market research was really just a small Reddit research activity, but we got a lot out of it. On 25–30 subreddits about couch co-ops and roguelites, we asked the question “What do you feel is necessary to have a successful co-op roguelite game?” We received a lot of suggestions, summarized them into a document, and looked for overlaps and themes. This process validated some of our ideas and also gave us some new ones.What was your favorite moment of working on Ship of Fools?Daniel: We had a small running gag in the office. Every time we shipped a small feature, someone would say “We have a game!” And, one day, we merged a big part of the game that was really important, and I playtested it and I’ll always remember saying to the team “We have a sellable game!” and that felt really different. That was a very proud moment for us.Was there a particularly challenging aspect of the game’s multiplayer development, and how did you overcome it?Yannick: Networking in games is usually straightforward when either the host or the client takes full control. However, things get tricky when control needs to be divided, like when some elements are managed by the local player and others by the game host.Projectiles were particularly challenging in this setup. We wanted them to feel snappy when fired, and that involved numerous scenarios to consider. Moreover, when an enemy fires back and a player deflects the shot, we had to meticulously plan the interactions and ensure they felt right for all players, even in high-latency situations. There were a lot of edge cases to think about. Especially how to make it fast and responsive for both players.Daniel: Another big snag we ran into was networking. We spent a good year and a half designing the game for local co-op, not even thinking about online play. Then bam! The pandemic hit. Suddenly, our local-only game didn’t make much sense since everyone was stuck at home, not hanging out together.Originally, we were all about that face-to-face, in-the-moment vibe. That was the heart of our game. But with the pandemic, our publisher was like, “Hey, we gotta go online,” and we were like, “Alright, let’s do this.” And man, it felt like we had to rework a year’s worth of stuff, tweaking every part of the game for online play.So, a little tip for fellow devs: always have online play in mind from the start, even if you’re not 100% on it. Designing with online in mind is generally a solid move, and it’s way easier to strip it out later than to shoehorn it in after the fact.Tell me more about managing projectiles, and how did Netcode for GameObjects come into play here?Yannick: Networking our game ended up being a unique twist. We don’t have a traditional Netcode for GameObjects setup. Instead, we have objects that exist on both the client and host sides, each aware of the other’s actions and who’s in control at any moment. It’s like they’re constantly in a conversation, updating each other on what’s happening.For instance, in a scenario where a bullet is fired, if it hits the target on the host’s side, the game waits for the client to confirm the hit. The client might agree, or it might say, “Nope, I dodged that one,” or even, “I reflected the bullet!” Depending on the client’s response, the game adjusts the outcome, ensuring both sides are in sync.This setup allows for a lot of flexibility. Players on the client side can see immediate reactions to their actions, like a bullet being deflected, making the game feel responsive. However, the final outcome might need adjustments based on the host’s input, which can override initial reactions if there’s a discrepancy.It’s a bit of a dance, with authority potentially shifting back and forth. We found the simplest solution was to let each side do its thing, then reconcile differences as they come up, based on feedback from the other side. It’s a collaborative process, ensuring both host and client contribute to the game’s flow.Here’s a bit of a visual explanation for your readers.In the first image, we’ve got our multiplayer setup, where I’m playing as Todd, the host on the left, and my friend is Hink, the client on the right.Then, a crabster enemy pops up and launches a projectile. It’s all about coordination here: both the host and client are informed via a remote procedure call. Both players see the projectile, but whether it hits the boat or gets deflected depends on player reactions, and the host needs to wait for the client’s input to confirm the final outcome.Finally, here we see what happens when the client, playing Hink, deflects the projectile. There’s a bit of a delay if there’s high ping, so while the host might initially see the projectile hitting the boat, it’ll correct itself once the client’s reaction is confirmed. This way, the client feels no lag – it’s as if they’re playing in real-time, and their actions are mirrored by the host to keep the game in sync.The whole idea is to make sure that when you’re in the heat of the moment, taking a shot or fending off an attack, the game responds instantly, making the multiplayer experience feel seamless.Any other specifics you could share? Anything our readers could take away as a powerful lesson learned?Daniel: We hit a bunch of challenges, but one biggie was all about memory management. Getting our heads around assembly and Addressables was a steep learning curve, especially since this was the first multiplayer game for the whole team.What’s funny is our game isn’t even that asset-heavy, but the load times hit two minutes at one point, which is crazy for a smaller game. That definitely caught some heat from the players.So, yeah, we learned the hard way about keeping things streamlined, memory and asset-wise. We should’ve nailed down the basics from the get-go.What about Addressables? What specifically did you learn there?Yannick: The deal with Addressables is pretty straightforward. You’ve got to organize your assets into groups that make sense to load together at the same time. This way, you’re not bogging down your game with stuff you’re not even using in a particular scene.For example, our game has different sectors, each with its own set of enemies, scenes, and scenery. Initially, we lumped everything into one massive group, which was a nightmare for loading times. To streamline things, we started grouping assets by sector. This made a huge difference because now, we can load just the enemies or just the scenery of a sector as needed, making everything way more efficient and smoother in the end.Why did you choose Netcode for GameObjects (NGO) for networking?Yannick: We went with NGO for networking mainly because it’s backed by Unity. This means it’s likely to evolve alongside the platform and get long-term support, which is crucial for us. Plus, NGO had all the features we needed.The key thing we wanted was a peer-to-peer connection to avoid server costs, which can be a big deal for a game whose future sales and player base are uncertain. With NGO, we felt confident we were making a safe bet for both our present needs and future development. It seemed like the smart choice to stay within the Unity ecosystem and ensure long-term support for our game.What’s next for Ship of Fools?So far, we’ve rolled out two big updates, packed with fresh content, and launched two DLCs, introducing new characters to mix things up. These DLCs are totally optional, giving players more choices without making them feel left out if they decide not to grab them. The cool part? Those major content updates were on the house, and from what we've seen, folks really dug them.As for what’s coming next, we’ve got plans, but we’ve got to keep a lid on them for now. However, when we’re ready to spill the beans on future updates, you’ll definitely be in the know.Interested in multiplayer development? Explore the multiplayer section in the 2024 Unity Gaming Report to get insights from successful studios, fresh data on why more studios are developing multiplayer games, and a wealth of tips to help you and your team stay ahead of the curve.]]></description><link>https://unity.com/blog/games/couch-co-op-multiplayer-ship-of-fools</link><guid isPermaLink="true">https://unity.com/blog/games/couch-co-op-multiplayer-ship-of-fools</guid><pubDate>Thu, 11 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Addressing addressability: How brand marketers can adapt their mobile programmatic strategy]]></title><description><![CDATA[ATT and cookie deprecation signifies more than just a technological shift - it's a game-changer for marketers who are looking to reach engaged consumers where they are spending the most time. So how can marketers adapt their mobile advertising strategy and continue to ensure they reach their consumers where they are?In short, as the mobile advertising landscape changes, so should the way advertisers run digital campaigns. Let's break down how advertisers adapt their mobile strategy accordingly (spoiler: all signs point to in-app advertising where more than half of users are still addressable.)Brief history of privacy changes on mobileTraditionally, to advertise on web browsers or apps, marketers have utilized cookies and mobile ad IDs (MAIDs). That means marketers utilize unique user identifiers for tracking, retargeting, frequency capping, audience segmentation, and attribution. But following privacy changes over time, addressability has become significantly more challenging.September 2017: Apple released ITP 1.0 to limit the use of cookies on Safari and prevent cross-site tracking.May 2018: The GDPR became applicable in the EU.January 2020: CCPA gave California residents rights over their personal information.April 2021: Apple introduced App Tracking Transparency (ATT) on iOS.2024: Chrome plans to disable third-party cookies for all of their users. They’ve already started with 1% of their global users, and plan to expand to 100% of users by Q3. You know the history. Now, here are some tips for tailoring your mobile strategy to maximize your impact with both addressable users, users who have a unique identifier, and non-addressable users, users who do not have a unique identifier.Addressability strategy of advertisers in the industryHere are some commonly used practices that marketers use to get ahead of their competitors before the last cookie falls.Embrace first party data: Without third-party cookies, first-party data has a key role to play. Marketers invest extensive resources in building user trust, encouraging opt-ins, and building a robust data infrastructure.Collaborate with industry players to explore alternative ID solutions: Some marketers explore alternative methods to cookies and consider testing with partners like The Trade Desk or Liveramp, who offer other ID solutions to address these cookie-based challenges.Optimize in-app advertising: Mobile users only spend 10% of their time on web, so 90% of mobile time is spent in-app, particularly social media and gaming apps. The best part: the majority of supply in apps is still addressable. Marketers are optimizing in-app strategy with more personalized ad experiences, retargeting, audience segmentation, and strategic placements to engage users. Getting even more granular, let’s discuss how marketers can better understand non-addressable users.How advertisers segment non-addressable usersNon-addressable users are still very valuable - marketers are getting more innovative with how they market to them. While marketers may not be able to get specific-user level information, some contextual data is still available:Contextual information: The type of content users are engaging with (e.g. what they are reading, mobile games they are playing, how long they’re engaging with this content, how the app is rated, etc.) Contextual demographic information: General demographic information can be inferred based on the content users are engaging withTechnical device information: Device type, model, OS, connectivityGeographic location: Country, city, time of dayBy adapting to this constantly-evolving advertising landscape, you can continue to make sure you’re in the best position for growth - just make sure you’re using the right approach. And with users spending 5 hours a day on their mobile devices and 90% of that time happening in-app according to data.ai - building a comprehensive mobile strategy is crucial to long term brand success.That’s why it’s also essential to have the right partners - and at Unity, we can help connect you with premium demand sources, offer full data transparency, and much more.Get started with Unity’s programmatic solutions and get ahead of the game.]]></description><link>https://unity.com/blog/addressability-adapting-your-mobile-programmatic-strategy</link><guid isPermaLink="true">https://unity.com/blog/addressability-adapting-your-mobile-programmatic-strategy</guid><pubDate>Wed, 10 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[A look ahead at spatial computing with Owlchemy Labs]]></title><description><![CDATA[We’re entering the new era of spatial computing, where robust extended reality (XR) tools and flexible workflows can enable developers to add interactions, scale graphics, prototype, and test in-Editor. In the2024 Unity Gaming Report, we predict greater demand for XR games, and many of the contributing studios agree with this forecast.Unity’s senior advocate Antonia Forster sat down with Andrew Eiche, Owlchemy Labs’s CEOwl, to get his perspective on the future of spatial computing and practical tips on developing for Apple Vision Pro.Antonia Forster: Hi Andrew, thanks for joining me. Let’s start by looking ahead. What do you see as the future for VR and spatial computing?Andrew Eiche: One of the biggest things that we’re moving into is using XR devices as a general spatial computing environment for domain-specific tasks, with Apple Vision Pro and the changes to Meta’s operating system leading the way. We’re trying to solve the paradigm of how to do a generic workload in VR versus an extremely specific one.What does it look like when we actually want to work in XR? We’re trying to take existing tasks and transfer them to an identical paradigm in a spatial environment. Hopefully developers will settle in quickly and we will be able to understand what the breadth and depth of this media is.This is very important for us to do so we can discover the utility and intuitiveness of the technology. In this industry, platforms fall along a spectrum of these markers, and those with the most potential for adoption land in the high utility and high intuitiveness quadrant. With VR, we want to ensure that it’s moving in that direction – highly useful and highly intuitive, the quadrant where phones, PCs, and smart TVs fall into.Looking into the future, thinking about spatial computing helps make VR more useful, but we still need to work on its attainability. How do we do this? We change the primary input vector to align with the platform that players focus on the most: mobile. From there, we need to focus on removing friction with implementing hand tracking, making headsets lighter, and getting better optics.You spoke about the evolution of technology. What other tech trends do you think might impact XR in the next few years?Gaussian splatting is incredible, and I think that the next step for it is going to be figuring out better capture and animation. We solved the wrong problem with three-dimensional capture, where we assume that if we just cover the space and cameras or use light fields, it would be great, but there’s something that just works better, like a transparent Gaussian. I think we’re going to see a huge push into that and in figuring out how we are going to optimize it.I also think AI is going to have an influence. One of the really interesting use cases I’m waiting for is when we don’t have to render the whole frame, just part of it. What if we render 30% and then we kick it off to a Tensor Processing Unit (TPU), and it just fills it in, based on all the data it has before and after? Suddenly, the graphics chip that’s sitting in our headset is now PC-capable. It’s literally how the reflections work for NVIDIA RTX™, so we are already walking down that road.There’s also AI filling in the gaps of weight painting, or seeing generative AI potentially replace a best-fit algorithm as a tweening. A best-fit algorithm has pieces to build with, and if the optimal fit is halfway between the pieces, using generative AI to move the slider halfway is interesting, useful, and has artist control. This would be great for animators who want to focus on doing their key poses and not spend time tweening. AI could help with that, and then the animator can go in and clean it up.Thank you for the insight! Based on how the XR space is trending, what is your advice for developers entering this era of spatial computing?From an interaction design standpoint, you need to break down the way you interact with something and not try to fit a square peg into a round hole. It’s tempting for developers to jump in and get deep into it, but as a new developer, I recommend approaching spatial computing slowly. Take your time stacking the right building blocks.For example, when porting Job Simulator, we started by thinking about the right times to use operating system-level interactions. When we put up a SwiftUI window for the Apple Vision Pro version, we debated when to use pinch. We really followed how Apple uses it because they’re extremely specific about when to use it and what to use it for.When you’re not interacting with a window, you’re interacting with a 3D object. At this point, you need to stop thinking about it like an app on a 2D monitor and more like a physical product design for a real-world object. Design objects in an intuitive way, following principles of real-world object design. Make sure that you continuously test your user experience, and realize that the only thing that counts is when the game is actually being tested with real users in a real space, on a device. You need to do the work.It’s key for you to have it in your hands, and have others interact with it. I recommend allocating plenty of time for modification. The experience can feel different on different platforms. Specs can differ and it’s important to be flexible.Lastly, what’s special about VR is how to explore it. Our version of exploration includes sitting at a desk that has closed drawers and getting to rummage through it. It’s incredibly interesting to pick up each object and see how it works and interacts. One of the key reasons that players prefer this interaction is because we’re putting things in their hands and allowing them to really mess with the world around them, and find out what that world is like. We are not making them interact with something that is far away or that they’re disconnected from.Getting more granular on tips for spatial computing, what advice would you give to developers looking to port or develop games for Apple Vision Pro? How has your experience been using Unity’s visionOS support while porting Job Simulator?We’ve been working closely with Unity and Apple, and aligning on the best way to bring our hopes and vision to life. We got Job Simulator running really quickly on Apple Vision Pro and used it similarly to building in iOS. One of the things that took some time to work out was making it a fully immersive game. Unity had to call a function that would communicate our desired output to the Apple operating system. Prior to doing so, we kept encountering a flat window, and if you closed it, the game was over.We were developing for a fully immersive game, and being a general computing operating system, exiting a game is new to us. Building for PC, we never had the second step of quitting the application, since the player can just hit the X. When we put it on Quest, it was really binary and the game either ran, or did not. Suddenly, on Apple Vision Pro, we were on this device where the game can go into the background, and we needed to do the work to figure out how to actually leave the application.My advice is to be really collaborative and open. You never know when someone will have the fix to a bottleneck you’re experiencing. It’s not only good for you, but the community as a whole. We’re extremely active on the Discussions forums, and in opening tickets and speaking with Unity. It helps us find solutions that also benefit the rest of the community. Submitting bug reports there has provided us with the opportunity to work with other devs who are in similar situations. It definitely speeds up our learning curve and is instrumental in helping us move development forward.I’d love to end this interview with one last nugget of inspiration and insight for our community. What’s the most valuable thing you learned about visionOS development that you will take to your next Apple Vision Pro project?We’ve existed in two ecosystems for years – Windows PC and Android. In moving to development for visionOS, which shares many similarities with other Apple operating systems,we learned in what spots we had made assumptions and leaned a little bit harder on the operating system in a potentially incorrect way. We figured out where we could have done better.Another key insight to keep in mind is the value of Facetime and sharing your screen to show other people what you’re experiencing – say, for debugging. That screen is your application running, your code running, and others can see your view perfectly. This is something that is notoriously hard for other headsets to do, and Apple Vision Pro does it effortlessly. That would be my fast tip.Want to know more? Read our new 2024 Unity Gaming Report, and check out this video playlist, where expert creators discuss this year’s biggest game development trends.If you’re ready to dive into Unity’s support for Apple Vision Pro, you can get tips from other devs developing for Apple Vision Pro and share your feedback on the AR/VR/XR discussion forum.]]></description><link>https://unity.com/blog/engine-platform/spatial-computing-with-owlchemy-labs</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/spatial-computing-with-owlchemy-labs</guid><pubDate>Tue, 09 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Bring more players into your game with Unity Multiplayer Services]]></title><description><![CDATA[In the 2024 Unity Gaming Report, 68% of studios said they’re developing multiplayer games – a number that’s risen steadily over the last few years in response to increasing player demand.Multiplayer games offer more competition and community, encouraging greater engagement and retention. In 2023, mobile-only games with multiplayer features had 40.2% more monthly active users (MAU) than single-player games, and overall multiplayer gaming revenue grew by 10%, a substantial bump compared to 0.6% YoY industrywide.Achieving that success requires investing a lot more into development, operations, and player retention, but this additional complexity is manageable with the right tools. Instead of solving all of these problems in-house, many game developers fill the gaps in their networking stack with solutions custom-built to help dev teams stay focused on gameplay. According to one study, 88% of studios are looking for new tools to meet their needs for demanding game projects.By offering Netcode for GameObjects and Netcode for Entities frameworks, as well as Unity Gaming Services (UGS) multiplayer solutions like Unity Multiplay Hosting and Vivox Voice Chat, Unity’s suite of live game tools covers the entire multiplayer game development journey, from concept and prototyping through to launch and live operations. This flexible system enables you to build within Unity’s ecosystem or mix and match whichever tools and services you need to fit your game and development team’s needs.Games with community are more engaging, have a lasting impact on gamers’ lives, and monetize better for their developers. My fondest childhood memories are playing multiplayer mode in games like Goldeneye, Red Alert, and Halo with my friends. Those memories wouldn’t be possible without their early versions of local, co-op, and online multiplayer.In today’s games industry, retaining customers and creating an engaging community are more important than ever. This is the most effective way to create a game that lasts forever and delivers long-term business success, which is why we’re continuing to invest heavily in multiplayer dev tools and services to help you build, deploy, and operate multiplayer games.Multiplayer Services power boldly innovative games. When Triangle Factory created Breachers, a 5v5 first-person shooter for VR, their strategic focus was on maximizing player reach through cross-platform access while keeping the lean studio team focused on gameplay. To do it, they needed the multiplayer backend on track with as little friction as possible.Using Multiplay Hosting, they were able to reduce server costs with a hybrid server solution, scaling quickly to 110k MAU in the first month, supported by UGS backend architecture and Multiplay Hosting. They also used a range of Multiplayer Services to simplify their stack and accelerate development time, including Authentication, Matchmaker, Vivox Voice Chat, and Leaderboard.“Unity Multiplayer Services has reduced development time on player features from a few weeks to a few days,” says Pieter Vantorre, Triangle Factory’s CTO. “Had we built everything ourselves, it would’ve required more resources and significantly more funds.”StickyLock also opted to use several Multiplayer Services together to streamline a complex development process. “It’s hard to quantify the exact amount of time that UGS has saved us, but I would put it in the ballpark of hundreds to thousands of dev hours,” says Jamel Ziaty, producer of StickyLock’s upcoming multiplayer game Histera.The StickyLock team was already tackling a big game concept – a fast-paced dystopian first-person shooter given a twist by a novel game mechanic called “the glitch,” which bounces players into different historical eras. The small team needed all hands on deck to execute on gameplay, so getting coverage in their multiplayer stack was crucial.“We chose multiplayer UGS because we wanted to have a third party take care of all complex logic for us so we could focus on the core gameplay of Histera,” Ziaty explains. “We use quite a few services from UGS, and it’s very useful to get them with one single provider. There’s less glue between various services for us to worry about.”In these games and many others, Multiplay Hosting has been tested at scale for performance, capacity, and customer savings:Unity Gaming Services hosts 77 million game sessions a month.Multiplay Hosting has supported more than 3 million concurrent users, demonstrating its ability to scale.Recently, Unity supported more than 175,000 game servers running concurrently.Multiplay Hosting reduces hosting cost per player by 30–40%.Multiplay Hosting has access to 292 data center locations.We want to support every customer that is building a multiplayer game. For that reason, we offer services ranging from Relay, Matchmaker, Distributed Authority, and Multiplay Hosting. To support the rapid growth in options for hosting multiplayer games, we’re making Multiplay Hosting agnostic to the hosting hardware by relying on our industry-leading, cloud and bare-metal hybrid approach that has scaled to millions of players whenever a game needs it. That means you will be able to rely on us to provide the infrastructure, or you can bring your own compute to Multiplay Hosting through your favorite cloud provider.We’re adjusting our multiplayer hosting and tools to offer greater flexibility to ensure that you can use the multiplayer hosting solution that has demonstrated reliability, performance, and success for years.We’re continuing to invest heavily in multiplayer game development and have a lot of exciting new features planned:Greater cloud flexibility: Bring Your Own Compute (BYOC) lets you run your game directly on the infrastructure you choose from our partner network.Flexible cloud provider marketplace spending: Our products and services will be available on the cloud providers marketplaces, enabling you to use your existing commits/spends with them.Additional CI/CD and observability options: Build the CI/CD pipeline you need with new external bucket upload and build tagging options, while new self-serve logs and metrics exports improve your game observability.Distributed authority:This brand-new network topology enables you to build large-scale multiplayer games with deep simulation in a cost-effective way, without the complexity of dedicated servers.New multiplayer game sample: We recently released Megacity Metro, a sample game that offers a blueprint for end-to-end multiplayer development in Unity, including services like Multiplay Hosting, Matchmaker, and Vivox Voice Chat.Multiplayer VR template, coming soon: Setting up multiplayer for VR games is difficult, so we’re making that easier with our new Multiplayer VR template, built on top of OpenXR and announced in the Unity Roadmap session at GDC 2024.We’re also simplifying your multiplayer game development with deeper integration between the Unity Engine and Unity Multiplayer Services in Unity 6, including:Multiplayer Play Mode delivers a first-class Editor experience so you can quickly test game functionality.Multiplayer Center streamlines your project setup.Unity Multiplayer Services, including Matchmaking, Lobby, and Vivox Voice Chat, allow for quick experimentation and richer gameplay, and these are integrated into the Unity Editor.Leverage Relay and Multiplay Hosting for smoother development, playtesting, and deployment.Check out the GDC 2024 Roadmap session to learn more about what’s in store and how these tools work together.I’m excited that we’re extending the flexibility of our Multiplay Hosting to support customers however they want to run their infrastructure. At the same time, we’re democratizing multiplayer game development to support any type of game for any device with a simple integration into the Unity Engine. With these investments, Multiplayer Services will continue to be the go-to solution for the most demanding, high-performance games and support the growing adoption of multiplayer gameplay across the industry.Stay ahead of the latest multiplayer development tools and share your feedback in the Multiplayer Forum. Check out the recent “Multiplayer resource roundup” blog post for the latest templates, samples, and demos for hands-on learning for all things multiplayer, including our new Megacity Metro sample game.]]></description><link>https://unity.com/blog/engine-platform/more-players-unity-multiplayer-services</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/more-players-unity-multiplayer-services</guid><pubDate>Mon, 08 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[An update about Ziva]]></title><description><![CDATA[Today, users of Ziva VFX, Ziva Real-Time, Ziva Face Trainer, and related Ziva products received a notice from Unity that we are no longer actively selling or supporting these products. Active subscribers have the option to convert their existing license to a five-year term in the Ziva customer portal so that they may continue using the product beyond the expiration date of their existing license.This decision is a part of our ongoing company reset. At Unity, we are focused on our core: the Unity Editor and Runtime, Unity Cloud, and our Monetization Solutions. By focusing on these few areas, we believe we can best serve our community’s needs.Unity has also entered into an agreement with DNEG, a leading technology-enabled visual effects (VFX) and animation company for the creation of feature film, television, and multiplatform content, for an exclusive perpetual license of the Ziva IP. Unity will continue to retain ownership of all the technology acquired from Ziva Dynamics, and we will continue to evaluate the best way to enhance our core offerings with it over time.We extend a huge thank you to all of the creators who tried Ziva over the years.]]></description><link>https://unity.com/blog/news/update-about-ziva</link><guid isPermaLink="true">https://unity.com/blog/news/update-about-ziva</guid><pubDate>Tue, 02 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Multiplayer resource roundup: Get the latest templates, samples, and demos]]></title><description><![CDATA[The 2024 Unity Gaming Report reveals that studios are building more multiplayer games despite the complexity. While bringing more players into game development poses challenges, it’s never been simpler to build multiplayer games with Unity. Browse this curated list of resources to get familiar with the latest multiplayer demos, samples, and templates.Our high-level networking library, NetCode for GameObjects (NGO), simplifies developing multiplayer games by abstracting networking logic. It enables you to manage and transmitGameObjects and world data efficiently across networking sessions to multiple players. If you’re just getting started with multiplayer development, NGO serves as an excellent starting point.“Hello World” project: This beginner-friendly tutorial guides you through setting up a project with NGO to lay the groundwork for your first networked game.2D space shooter: Delve into physics, movement, and status effects using Netcode, NetworkVariables, and ObjectPooling with this engaging code sample.Invaders: Gain insights into game flow, unique movement mechanics, networked shared timers, and more.Client-driven sample: Explore client-driven movements, networked physics, object spawning, and reparenting.Dynamic Addressables network Prefabs sample: Learn to dynamically add new spawnable prefabs at runtime with this advanced code sample.Finally, the Unity Gaming Services (UGS) team recently updated their documentation for NGO and multiplayer services. You can also stop by the multiplayer forum if you have questions or need help.Ready to tackle more complex multiplayer projects? These advanced demos and samples introduce sophisticated multiplayer concepts, integrating services like Lobby, Vivox, Relay, Multiplay Hosting, and DOTS/ECS.Small-scale competitive multiplayer template: This is your starting point to create and ship a multiplayer project using Netcode For GameObjects and UGS. The template includes a Bootstrapper tool that helps you test faster using various network modes (Host, Client, Server) and dynamic configurations, in-Editor tutorials, and a bare-bones, event-driven gameplay flow.Game lobby sample: Learn how to use the Lobby and Relay packages from UGS to create a typical game lobby experience. Connecting to the lobby will also enable Vivox Voice Chat as long as an audio input device is available.Serverless multiplayer game sample:This sample showcases how to join or create a Lobby Service game lobby and compete in a simple coin-collecting arena game.Boss Room: This fully functional co-op multiplayer RPG made with Unity Netcode is an educational sample designed to showcase typical netcode patterns often featured in similar multiplayer games. Prefer to follow along with a video? Check out this webinar series.Galactic Kittens: This 2D co-op space adventure sample game helps you learn how to apply and synchronize sprite animations, particle effects, and basic 2D movement.Battle Royale with Photon Fusion: We teamed up with Photon to launch a new asset to help you produce peak performance on Unity’s Game Server Hosting (Multiplay) orchestration platform and Matchmaker.Megacity Metro: Our most robust multiplayer demo to date, Megacity Metro supports 128+ players and uses the latest multiplayer tech, including Unity Gaming Services and DOTS/ECS.There are so many videos out there built by our community of developers and content creators, but here are a few of our favorites.Tarodev’s “How to: Unity Online Multiplayer”:Tarodev has graced us with a wonderful intro to NGO that takes you from installation to interpolation, all the way through to server authority.Code Monkey’s “Learn Multiplayer Free”:Our pal Code Monkey has an excellent guide on how to build a multiplayer game in Unity using NGO and the rest of UGS.Turbo’s “Netcode for Entities”course:We couldn’t leave Turbo out of the mix. This course guides you through how to build a multiplayer MOBA-style competitive game.If you’re an experienced multiplayer developer and you’ve got a big idea that requires a high degree of performance and determinism, DOTS and ECS might be the right base for your game.Moving from an object-oriented to a data-oriented design approach can be an adjustment, even for seasoned programmers. We’ve put together this reading list to help you get started with data-oriented design in Unity.This year at GDC, we showcased our multiplayer roadmap for Unity 6. We’re working hard to bring you Multiplayer Play Mode, distributed authority, a simpler Multiplayer Services SDK, and more. Check out the roadmap and vote for your favorite features, or jump into the conversation in the multiplayer forum.]]></description><link>https://unity.com/blog/engine-platform/multiplayer-resource-roundup</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/multiplayer-resource-roundup</guid><pubDate>Wed, 27 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[GDC 2024: Trends, the Unity 6 roadmap, multiplayer, AI, and more]]></title><description><![CDATA[At this year’s Game Developers Conference (GDC), we went deeper into the tech and tools. Read up on industry trends, get a look at the roadmap featuring Unity 6, download a new multiplayer sample, experiment with Unity Muse’s latest AI capabilities, and join in celebration of games that are made with Unity.Starting off the week, we released the 2024 Unity Gaming Report, which can help you understand the forces that are shaping today’s industry. The report draws insight from approximately five million Unity Engine developers, an astonishing 342 billion ad views, and this data is complemented by commentary from 19 studios from across the globe, who share their own insight and experiences. The stories, data, and five trends are compiled to help inform your own game development journey and better understand where the year is going, now and in the years ahead. Check it out.Looking toward the future, we dedicated a session to the roadmap for not only Unity 6, but all of the complementary products and services to help you create and run your game. The roadmap covers topics including all-new graphics features for creating immersive worlds, innovation in XR (also tackled in our in-demand Apple Vision Pro deep dive session that’ll be uploaded soon), and how Unity Cloud and Unity Muse can help you leverage to boost efficiency. We also address what’s new in multiplayer, both in-Editor and for operation using Game Server Hosting and Vivox Voice and Text Chat. Watch the session below to see what’s new and how Unity is taking your feedback to invest in the future.We just released Megacity Metro, a new sample that showcases multiplayer game development across platforms and supports over 100 players. Built using DOTS and the Universal Render Pipeline (URP) for cross-platform compatibility, it comes pre-integrated with Unity Cloud services like Authentication, Multiplay Hosting, Matchmaker, and Vivox Voice Chat. Think of the sample as a blueprint if you want to better understand multiplayer game mechanics or incorporate the latest technologies into your game.You can download the Megacity Metro sample today, then join us on Wednesday, March 27 for a webinar where we’ll go behind-the-scenes into the tech, discuss how the sample was set up, and give you a look at the breadth of our multiplayer solutions.By adding Unity Cloud to all Unity subscription plans, we’re helping to make working as a team more efficient. Unity Cloud centralizes content and streamlines team workflows with vital connections between Unity Asset Manager, Unity Version Control, and the Editor. You can get started for free, and Unity Pro and Unity Enterprise plans get increased cloud storage and team administration capabilities.Muse helps you ideate and iterate faster by harnessing the power of AI to complement your creativity. This week, we revealed that we’ll soon be incorporating all of Muse’s capabilities into the Editor, bringing AI closer to where you create to streamline your workflows.We also previewed an improvement to Muse texture generation, Texture 3D. This new model leverages new original research and proprietary models to generate true PBR materials for 3D objects. This means that you’ll be able to produce a multi-material UV texture that can wrap onto an object directly and will react more accurately to lighting.You can get started with a free trial of Muse to begin experimenting and see how AI can help you create more efficiently.For mobile game studios, Tapjoy recently introduced Daily Rewards, a unique new campaign type on Offerwall that can help advertisers to drive higher ROAS. Daily Rewards offers players daily incentives by inviting them to come back to unlock in-game rewards every day.In the ads space, the Unity Ads Network and ironSource Ads will soon be available in beta on the Google AdMob mediation platform as real-time bidders. Stay tuned for more on the release.GDC wouldn’t be complete without the latest games, and we celebrated alongside a few studios at our Creator Lounge. Tomas Sala’s Bulwark: Falconeer Chronicles is an open-world combat builder that showcases the flexibility of Unity’s extensibility. Southfield, by Radical Forge, combines farming with ridiculous physics in an online multiplayer experience across platforms, leveraging everything from netcode to matchmaker to Multiplay game server hosting. Super Gear Games soft-launched Racing Kingdom to both iOS and Android, powered by URP to ensure peak performance across devices.VR is having a resurgence this year, and we featured Nosebleed Interactive’s Arcade Paradise VR, an immersive arcade experience built with URP along with the 2D toolset used to make the arcade games. Demeo Battles, by Resolution Games, brings its turn-based strategy game to VR with help from the Input System to allow for cross-play with PC. Resolution Games also announced a brand-new mixed reality mode for Angry Birds VR: Isle of Pigs.Finally, awards were handed out at the Game Developers Choice Awards – a special shout out to Visai Games’s Venba for taking home the Best Debut and Social Impact awards. Congratulations!As we close out GDC, we want to thank everyone who took time to connect with us live and in person. You chatted with us and played games at the Creator Lounge, provided insightful feedback at our product roundtables, and inspired us with your games and technology curiosity. We hope you enjoyed reconnecting as much as we did, and we can’t wait to see you at the next GDC. In the meantime, keep creating amazing games.Stay tuned as we share all of our GDC Dev Summit content online and on-demand, and feel free to explore how Unity can help you create, run, and grow your games.]]></description><link>https://unity.com/blog/games/gdc-2024-recap</link><guid isPermaLink="true">https://unity.com/blog/games/gdc-2024-recap</guid><pubDate>Thu, 21 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity Expands Direct Brand and Agency Support in EMEA]]></title><description><![CDATA[Unity is excited to announce its expansion in the European (EMEA) market for its Programmatic Exchange, following four years of exponential growth for direct brand and agency sales in North America .Growing Opportunities for European AdvertisersMany of the largest brands in Europe are already utilizing supply from both the Unity and ironSource Exchanges on the open market, indicating the significant value the supply holds for European advertisers. In fact, Unity has established preferred supply partner relationships with major agency holding companies, laying a solid foundation for its expansion into Europe. By establishing direct relationships, Unity can now better support global brands' marketing efforts and drive mutual success in the EMEA market.In addition to existing partnerships and supply relationships, Unity is excited to introduce our programmatic solutions and support to EMEA brands and agencies. Leading the charge for our work in sales in the EMEA market will be Katya Kornilova. With her proven track record in the mobile gaming and programmatic industry, Kornilova will spearhead the initiative to establish and nurture direct relationships with brands and agencies across the European market, further solidifying Unity's commitment to delivering unparalleled support and innovation.Commitment to Programmatic ExcellenceAs part of our expansion strategy, select demand partners connected with the ironSource and Unity Exchanges can now receive consent signals, per IAB's Transparency & Consent Framework (TCF) 2.2. By supporting the transmission of TCF consent signals, Unity reaffirms its dedication to supporting demand partners in their efforts to comply with data protection regulations for a more ethical, sustainable advertising ecosystem.Unity's expansion into the EMEA market signifies more than just a geographical growth; it represents a commitment to redefining the future of mobile gaming and programmatic advertising in Europe. By leveraging its success in North America and combining it with strategic partnerships and industry expertise, Unity is poised to lead the way in delivering innovative solutions, exceptional service, and measurable results to brands and agencies across Europe.For any inquiries or further information about our expansion into Europe, please contact Katya Kornilova.]]></description><link>https://unity.com/blog/unity-expands-direct-brand-and-agency-support-in-emea</link><guid isPermaLink="true">https://unity.com/blog/unity-expands-direct-brand-and-agency-support-in-emea</guid><pubDate>Wed, 20 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[New Shader Graph feature examples in 2022 LTS]]></title><description><![CDATA[The Shader Graph team is excited to announce the release of our newest set of samples, available to import now in 2022 LTS and Unity 6 Preview (2023.3).With this sample set, our goal is to provide examples of how to achieve a wide range of effects and techniques using Shader Graph. If there’s an effect you want to add to a shader, it’s often available online in the form of a math equation or code – both of which may be out of reach for some. We want to make it easier for you to achieve the effects you’re looking for.Shader features such as parallax mapping, interior cube mapping, angle blending, flow mapping, and custom lighting are just five of the over 30 different feature examples available in this set. While these examples don’t provide complete shader solutions, they do show you how to create specific effects, and most are neatly encapsulated in subgraphs, so they’re easy to drag and drop into your own shaders.Here’s a full list of the sample categories.Blending Masks: This set of blending mask subgraphs includes altitude blending, angle blending, camera distance blending, and height blending.Conditional Branching: Find two examples of how to branch your shader, depending on which render pipeline you’re using and the quality level you select.Custom Interpolator: This offers an illustration of how to improve performance by moving operations to the vertex stage, including an illustration of some effects that don’t work very well when computed per-vertex.Custom Lighting: Many of you have asked for a way to customize how lighting works in Shader Graph, either to make lighting cheaper to render or to achieve a unique artistic style for a project. These samples show how that can be done and include an example of PBR lighting, simple lighting, and a cel shader.Detail Mapping: This set includes three different techniques for applying more detail to a material using detail mapping: color detail, normal detail, and full material detail.Procedural Noise and Shapes: It’s often more cost effective to generate patterns procedurally rather than using texture maps. This category contains an example of how to generate a brick pattern procedurally, a subgraph for generating a hexagon grid, and a set of signed distance field shapes.Shader Graph Feature Examples: Shader Graph has several features that can be tricky to master, such as subgraph dropdowns and branching based on input connection. This section contains examples of how you can use these features to improve subgraphs’ usefulness.UV Projection: A large set of features are based on the manipulation of UV coordinates, including flipbook blending, flow mapping, interior cube mapping, latitude longitude projection, matcap or sphere projection, parallax mapping, and triplanar projection. This section includes all of these effects.Vertex Animation: When most people think of Shader Graph, they think of pixel shaders, but Shader Graph can also animate vertices using the vertex stage. These examples include a waving flag, a bend deformer, a camera-facing billboard effect, Gerstner waves, and a full-featured particle system built entirely in Shader Graph.Install the new sample assets using the Package Manager.In the Editor, open Package Manager.2. In the Package Manager window, select the Shader Graph package.3. Select the Samples tab.4. Finally, click the Import button in the Feature Examples section to bring the new sample set into your project.With these steps completed, the Feature Examples assets will show up in your project under Assets/Samples/Shader Graph/<your version>/Feature Examples.After importing the samples, get started by opening the scene that corresponds to the render pipeline you’re using (High Definition Render Pipeline, or HDRP, Universal Render Pipeline, or URP, or the Built-in Render Pipeline) in the Scenes folder.Once the scene is open, select the Shader Graph Feature Samples Showcase asset in the Hierarchy panel, then follow the guided tour in the Inspector.You can use the Samples dropdown box to select a sample and jump to that location in the scene.We’re continuing to add more samples to Shader Graph, and we have several more sample packs in the coming months. These will help you learn Shader Graph more quickly, understand how to set up specific functionality, and create new shaders faster with premade subgraphs and templates. We hope you’ll enjoy using them.Shader Graph basicsShader Graph documentationUnity Learn tutorialsThis is a very deep and rich sample set. We hope you have fun exploring it and use it to speed up your own shader creation process.We’d love to hear your thoughts and impressions on these samples – tell us what you think in the Shader Graph forum.]]></description><link>https://unity.com/blog/engine-platform/shader-graph-feature-examples-2022-lts</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/shader-graph-feature-examples-2022-lts</guid><pubDate>Tue, 19 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 tips for optimizing towards in-app events with ironSource Ads’ tCPA optimizer]]></title><description><![CDATA[As you grow your app, scaling your user base is essential. Traditional CPI advertising ensures you can grow your installs, but what if you could acquire higher quality users who don’t just download your app, but also take action in your app, like making an in-app purchase? That’s where ironSource Ads’ tCPA (target cost per action) optimizer comes in.With the tCPA optimizer, advertisers can automatically acquire users that are likely to complete a specific in-app event, or action. By reaching high-quality users who are likely to achieve key milestones in your app, you can save yourself time and operational overhead. And by reaching more engaged users, you can even boost your LTV in the process. Let’s break down how to make the most of the tCPA optimizer, from choosing the right actions to adjusting your goal.Choose meaningful actionsWith the tCPA optimizer, you get to ask yourself: “Who are the high-value users I'm interested in reaching?” The answer will vary for each advertiser and app - but you get to choose the action that fits best. For example, if you have a subscription-based app, you might choose signing up for a free trial as the required user action.To make efficient use of your campaign spend, it’s important to choose an action that is often achieved by high quality users. That’s why the growth experts at ironSource Ads recommend aiming for an action that your top 5 - 20% of users (with the highest LTV) complete within 7 days.For example, if many players in your game sign up for a free trial, that shouldn’t be the action you choose to optimize towards, since it’s not unique enough to indicate high engagement. Instead, choose an action deeper in the game, like upgrading to a paid subscription - which is far more likely to indicate a high quality user.Set targeted goalsJust like you need to set an action in your app for users to complete, you also need to set a tCPA goal. Essentially, you need to set the average amount you’re willing to spend for these high-quality users. It’s important to choose a goal that is realistic - a goal that’s too high might cause you to overpay, but a goal that’s too low won’t allow you to scale.The simplest way to determine your goal is by calculating how much you pay per action, or eCPA (effective cost per action). To calculate your eCPA, just divide spend by the number of users who have completed your desired action.So, if your action is paying for a subscription, first choose a cohort of users and calculate their total spend - then divide it by the number of users from that cohort who paid for a subscription. Now you’ve got your eCPA. This value should be your minimum goal. In fact, with the tCPA optimizer, you don’t need to calculate this yourself - the tCPA dashboard will calculate your ideal goal for you.Give your optimizer time to learnNow it’s time to turn on the tCPA optimizer. In order to accurately measure your eCPA, it’s important to give your optimizer enough time to learn and analyze your data, and adjust your goal accordingly. With the tCPA optimizer, that means waiting a full 7 days after turning on the optimizer. If you only give the optimizer a day or two to adjust, then your data won’t accurately reflect your eCPA, making it harder to optimize and scale up down the line.Manually adjust your goal (if needed)So, you’ve given your optimizer enough time to measure your data - now it’s time to observe your results. But what if your eCPA performance is too high? This likely means the goal you set was likely too low.Why? The higher the goal you set, the higher the optimizer bids - so if you’re not enabling the optimizer to bid high enough, you won’t get enough users. And this means you’re likely spending too much for the few users you do reach.So, to lower your eCPA, you should consult with your account manager and gradually start to raise your goal. By increasing your goal, you’ll be able to reach higher quality users - so you can get more user actions from the same spend. Not to mention, increasing the amount of quality actions can lead to higher ROAS and retention.For example, one of our clients had a higher eCPA than their tCPA goal - so with the growth strategy team’s help, they raised their goal on the 27th. As a result, their eCPA naturally lowered, dropping right below their goal - so they found the sweet spot that allowed them to optimize their growth.Ultimately, UA optimization is all about maximizing the number of high quality users you can reach, while minimizing the amount you need to spend to reach them. By using the tCPA optimizer to set the right action and goal, you can ensure you’re setting up your UA strategy for maximum success.To get started using the tCPA optimizer, just reach out to your account manager. Learn more about how the Unity team can help you optimize your UA strategy here.]]></description><link>https://unity.com/blog/ironsource-ads-tcpa-optimizer</link><guid isPermaLink="true">https://unity.com/blog/ironsource-ads-tcpa-optimizer</guid><pubDate>Mon, 18 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity and Google expand partnership with availability of Unity's networks as bidders into Google AdMob's SDK bidding program]]></title><description><![CDATA[Unity is delighted to announce that Unity Ads and ironSource Ads will soon start their alpha as real-time SDK bidders on the AdMob mediation platform and Google Ad Manager (GAM) platform, helping app publishers maximize their revenue opportunities.In-app bidding increases buyer access to the mobile app inventory, helping developers maximize their revenue opportunities within the bidding networks. AdMob and Google Ad Manager’s access to Unity Ads and ironSource Ads bidders creates an opportunity for their publishers and developers to get the highest bids possible for their inventory, while empowering the networks' advertisers with access to premium ad inventory and strong opportunities for scale and growth.App publishers using AdMob mediation and the Google Ad Manager platform will benefit from access to the Unity Ads and ironSource Ads bidders. In addition, AdMob and Google Ad Manager publishers will be able to seamlessly add Unity Ads and ironSource Ads networks to their monetization stacks without creating new waterfall instances, improving operational efficiency.“We have long collaborated with Unity, and are excited to take the next step in this journey by making demand from Unity and ironSource’s ad networks available to our AdMob and Google Ad Manager publishers,” said Ali Pasha, Director of Product Management for Apps Monetization at Google. “This SDK integration will especially benefit our gaming app publishers, bringing additional value and access to high-quality advertisers.”“We’re excited to be working with Google to help more publishers maximize their apps’ revenue through the strength of our bidding networks,” explains Nadav Ashkenazy, SVP and CRO, Unity Grow. “This partnership helps more developers and publishers take advantage of high quality demand from two of the industry’s strongest networks.”There will be further announcements from Unity once the bidders are available in beta.]]></description><link>https://unity.com/blog/unity-google-expand-partnership-with-unitys-networks-as-bidders</link><guid isPermaLink="true">https://unity.com/blog/unity-google-expand-partnership-with-unitys-networks-as-bidders</guid><pubDate>Sun, 17 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tapjoy from Unity, launches Daily Rewards, delivering Offerwall campaigns that being users back to your app daily]]></title><description><![CDATA[Unity is excited to announce Daily Rewards - a new and unique offering for advertisers on its Offerwall product, Tapjoy from Unity.Offerwall, a rewarded marketplace, is widely used by advertisers looking for a user acquisition channel with strong ROAS performance that drives high quality, loyal users. Daily Rewards, the newly-launched campaign type, gives users rewards for every task they complete in an app, such as finishing a level or winning a battle, encouraging users to return to the app each day to earn more rewards as they progress further in the game.The daily nature of the rewards is a good fit for audiences that prefer short challenges with fast and frequent rewards. It maintains the precision of an event-based optimization model, promoting user engagement, supporting player loyalty, and driving long-term value for the advertiser.Summary of Daily Rewards benefits for mobile game advertisers:- Increases conversion rates by offering shorter, quicker and more frequent rewards, well suited to the preferences of players across a wide range of game genres. - Drives higher ROAS by capping the number of Daily Rewards that a player can receive, thereby incentivizing players to return daily to the Offerwall and spend more time in the advertiser’s game.- Allows for easy bid management - advertisers simply set a maximum bid to be paid if a user completes the final event in the funnel.Daily Rewards also benefits the app publishers that monetize with the Offerwall, by engaging a new segment of players who respond better to more frequent, daily rewards. Apps utilizing Daily Rewards in beta have, on average, shown a 6% increase in unique daily users converting on an offer.]]></description><link>https://unity.com/blog/tapjoy-launches-daily-rewards</link><guid isPermaLink="true">https://unity.com/blog/tapjoy-launches-daily-rewards</guid><pubDate>Tue, 12 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile gaming trends 2024]]></title><description><![CDATA[In 2023, a shifting global economy impacted financial landscapes across sectors, and the mobile gaming industry was no exception. Mobile gaming still saw YoY growth of 0.6%, but consumer spending on in-app purchases lagged and total downloads dipped slightly, according to data.ai. At the same time, demand for games hit an all-time high, indicating that those who are downloading and engaging with mobile games are doing so often and with great enthusiasm.As mobile games continue to evolve in the year ahead, the industry is positioned for another demanding and eventful year in 2024. From new ways to maximize monetization in the current economic climate to optimizing in-game ads and focusing on new genres, here are some of the top gaming industry trends to keep in mind as you continue to build your 2024 strategy. 1. Tech’s starring roleMaytal Shaul, VP Strategic Operations & GTM at Unity
Tech will continue to take center stage as more developers and publishers use software to move to in-app bidding, test for game marketability before publishing, and run campaigns through CTV. Additionally, developers will scale up their use of AI to help improve their creativity, from ideation to design.On the business side, AI will become a communication tool to help smaller or indie game developers track their business and provide tech support. At Unity, we’re already using a chatbot to provide developers with additional support on a range of topics, like integrating SDK.2. Optimizing the ad experienceAnna Popereko, Senior Game Design Consultant at Unity
This year, developers will place a greater emphasis on improving user experience (UX) when it comes to their ad monetization strategy. More developers will increasingly look at the quality and composition of in-game ads to strike a better balance between ad performance and a positive user experience.This means rethinking the timing and frequency of interstitials, and the placements of rewarded videos to resolve user frustration. Google’s interstitial ad guidelines will also help shift the tides, encouraging more developers to refine their ad experience. As part of this pivot, more developers will embrace a data-centric approach to ad quality in order to achieve a better balance of performance with churn. Developers will also lean more heavily on what the data says about the quality of their ads, both in the composition of ad formats and in the content. This is possible with tools like Ad Quality by Unity.
3. Hyper-casual games will evolve and more games will go hybridNadav Ashkenazi, SVP and Chief Revenue Officer for Unity Grow
While gaming trends indicate hyper-casual games are still going strong, it’s getting harder to launch a hyper-casual hit that’s successful over the long run. In order to reach the chart-topping success that Going Balls and Bridge Race achieved, developers will need to work on the evolution of their gameplay, adding more depth and progression to ensure optimization. Among gaming trends in 2023, we also saw larger hyper-casual developers launch new hybrid-casual games. With an eye toward the future, the entire mobile gaming market is taking it all in and doubling down their hybridization efforts. In 2024, many more hyper-casual developers will look at ways to hybridize their existing hyper-casual game as a way to increase retention of quality users. This means adding richer gameplay and a deeper economy that includes more casual monetization techniques with a wider variety of ad formats like IAPs.4. Puzzles for the winYuval Lotan, Director, Head of Growth, LevelPlay at Unity
There’s no doubt that 2023 was a very strong year for the puzzle game sub-genre. Known for their solid retention rates that lead to the generation of high ad revenue, 2024 is set to be another profitable year for puzzle games, as more developers and advertisers will increasingly focus their monetization and UA strategies on this genre.
5. Letting go of the myth that ads will cannibalize IAPsEyal Hendelman, Senior Director, Head of Offerwall at Unity
To find success in today’s market, more game developers will soon start to step outside of their comfort zone and test new ways to optimize their growth. Another top gaming trend this year will involve more developers embracing user-initiated ad formats to monetize non-paying users.As developers start implementing user-initiated ad formats like Offerwall, they’ll find that they are not only a great way to monetize non-paying users, but they can also lead to an increase in IAP and turn more players into payers. In fact, implementing offerwall into games is a great way to increase retention and user engagement, while complimenting your IAP.6. A market rebound on the horizonAmir Shaked, VP, Revenue, Ads at Unity
Along with the economic slowdown in 2023, the gaming industry has also experienced a noticeable drop in both acquisitions and IPOs. Despite this decrease, the future of mobile gaming appears much more promising as we head into 2024. Looking ahead to H2, it’s becoming clear that the stage is now set for considerable growth. We are hopeful that this period will mark the beginning of an industry-wide resurgence that will continue into 2025, characterized by the launch of new studios, and a significant uptick in UA investment.Hungry for more insights into the mobile game industry? Tune into our podcast, or check out our Medium featuring top-tier experts from the industry.]]></description><link>https://unity.com/blog/mobile-gaming-trends-2024</link><guid isPermaLink="true">https://unity.com/blog/mobile-gaming-trends-2024</guid><pubDate>Sun, 10 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[AI model improvements for higher-quality textures in Unity Muse]]></title><description><![CDATA[At Unite 2023, we introduced the world to Unity Muse, a suite of capabilities to help you explore, ideate, and iterate with greater ease in the Unity Editor. One of these capabilities is Texture. Muse’s texture capability transforms natural language and visual inputs into PBR-enabled materials that can be applied directly to surfaces and objects in your project.In our blog “Responsible AI and enhanced model training at Unity,” we shared how Muse’s foundational model for textures, Photo-Real-Unity-Texture-1,was responsibly built and trained so that outputs are safe to use and respectful of others’ copyrights. Specifically, we detailed how we pioneered a bespoke diffusion model trained from scratch on proprietary data that is Unity-owned or licensed.We remain committed to responsibly building AI in service of our creators and today, so we are launching the next generation of this model, Photo-Real-Unity-Texture-2.In the latest version of our model, we focused on improving material types that commonly occur in games. Materials such as wood, bricks, concrete, leather, metals, gravel, soil, and many others have all had significant improvements. Prompt-based color consistency has also improved, and an upcoming release of the Muse Texture package will include the ability to choose both a specific color and specific pattern at the same time.In addition, our model has significant improvements related to the creation of heightmaps. Heightmaps are now 16 bit by default, and the model is much more capable of producing believable maps for abstract concepts in many cases.Photo-Real-Unity-Texture-2 has been implemented into Unity Muse, so all Muse users can take advantage of these improved textures today.These side-by-side comparisons show the difference in quality between Photo-Real-Unity-Texture 1 and Photo-Real-Unity Texture 2.The images on the left are from our previous model, and images on the right are from our new one.Depth is a critical aspect of achieving high-quality interaction with light. The side-by-side comparisons show the difference in quality of the height maps and normals between Photo-Real-Unity-Texture-1 versus Photo-Real-Unity-Texture-2.The images on the left are from our previous model, while images on the right are from our new model.We will continue improving Muse Texture’s output quality in the most responsible way possible. Other areas for improvement in our current roadmap include Editor integration, artistic control, and better tools for education and onboarding.Editor integrationYou’ve told us that deeply integrating Muse Texture into your Editor workflow is paramount to your success. We will continue doing so and aim to create as seamless an experience as possible with new features such as quick in-scene variation, and by making it easier to bring our material maps into other shaders.Artistic controlThe models will continue improving, but we learned that many of you want and need more artistic control to achieve your desired results. Additional features that improve artistic control will enable you to achieve your vision more quickly and easily. We plan to further improve color control and consistency, add the ability to convert photos or reference images to materials, and allow you to control texture stylization using reference assets.Education and onboardingGenerative AI is a new technology. We will focus on better onboarding and learning materials to help you leverage the tool’s features for deep artistic control. We will focus on shortening your journey to help you find success as quickly as possible.Try Unity Muse free for your first 15 days to experience how AI capabilities allow you to prototype faster in the Unity Editor. If you have questions, check out our AI FAQ, or visit our dedicated Unity Muse Discussions to chat with us directly.]]></description><link>https://unity.com/blog/engine-platform/ai-model-improvements-higher-quality-muse-textures</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/ai-model-improvements-higher-quality-muse-textures</guid><pubDate>Tue, 05 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Data-oriented design roundtable: Your questions, answered]]></title><description><![CDATA[In December, we hosted a DOTS-focused creator roundtable with Stunlock Studios (V Rising) and Sunblink Entertainment (HEROish, Hello Kitty Island Adventure). We invited these early adopters to share their experiences using the Data-oriented Technology Stack (DOTS), show what features and capabilities data-oriented programming has unlocked for their games, and see how they’re leveraging the latest Entity Component System (ECS) tech in Unity 2022 LTS.The Q&A was on fire during the webinar, with many insightful questions from the audience – so many that we couldn’t get to them all live. To follow up, we asked Joe Valenzuela, director, software engineering at Unity, and Rasmus Höök, technical director at Stunlock Studios, to answer some of our favorite questions from the session. Check them out below, and catch the Maximize your game’s potential with data-oriented design webinar on demand here.“Is it better to start new projects with DOTS right away or with regular GameObjects and then optimize performance by moving to ECS (either pure or hybrid)?”JOE VALENZUELA: ECS, DOTS, and data-oriented design (DOD) isn’t just about better performance. It’s also about avoiding the complexity inherent when you model problems using object-oriented programming (OOP).Anyone intending to make a multiplayer game – particularly one with an authoritative server and client-side prediction – should seriously consider starting with DOTS. Netcode for Entities offers a really robust, powerful system that scales up and allows you to write straightforward gameplay code.If you’re not making a multiplayer game, or you are just prototyping and looking to try out new things quickly, you might want to consider leveraging MonoBehaviour/GameObjects.“Is it possible to create a game entirely on the DOTS system, or does DOTS only support the GameObject system?”JOE VALENZUELA: No, you’re probably going to need some GameObjects at some point. It’s something we’re working on.“What are disadvantages or use cases where a developer shouldn’t use DOTS?”JOE VALENZUELA: You’re probably asking the wrong person – I can’t think of a case where I’d prefer to use something other than DOTS in Unity! But if you twisted my arm, I guess I’ll say that traditional MonoBehaviour/GameObject-based projects really excel when you’re prototyping. When you’re expecting rapid changes, you don’t want to necessarily spend a lot of time making Bakers or designing your data. It’s an area we hope to streamline for DOTS in the future.“Rasmus, do you have any advice for ramping up engineers on data-oriented programming?”RASMUS HÖÖK: I think a good start is to just write as straightforward and simple code as you can to solve the actual problem you have. Kind of get into the mindset of a beginner programmer and write very result-oriented code, where the goal is to make the code do what you want it to. The initial goal should not be about writing reusable code, creating abstractions or whatever.In the context of getting started with ECS, don’t overthink or overengineer. Rather, use larger components and bigger systems at first instead of splitting them up in many smaller pieces. This will make your code easier to follow. Split up later when you have a reason to. We definitely made this error early on.I’d say a good opportunity to practice data-oriented programming is when you have something you need to optimize. Then you have an actual problem you can experiment with and measure your result. You will also see how important thinking about data is.“We hear a lot about DOTS being used to scale up and build more ambitious games, but are there benefits to scaling down? Like using DOTS in a small project to target lower-end systems?”JOE VALENZUELA: Efficient operation on low-power systems improves the quality of the simulation code they can run. It also reduces the battery requirements for battery-operated devices, leading to longer running time and overall system health.“When switching from SystemBase to ISystem, how do you deal with the calls to managed code?”JOE VALENZUELA: Technically, you don’t need to get rid of managed code to use ISystem – managed code can be called from ISystem. Its managed data can’t be stored in an ISystem directly – for this, I would use managed component data.However, if you’re asking, “How do I excise the calls to managed code from ISystem so I can use Burst and get the best performance out of my code?” the answer is… it depends.If you’re using .NET containers, you might find a suitable replacement in com.unity.collections. If you’re interfacing with a managed Unity API and there isn’t an unmanaged alternative, sometimes it helps to split the work into “fetch data” and “process” phases, the latter of which is where you do your ISystem-based processing.“I've read in documentation that ECS is not compatible with multiple scene architecture. So how should that approach be done using ECS?”JOE VALENZUELA: Nothing in ECS precludes additively loading multiple Unity scenes. However, those scenes will not contain any ECS data, only GameObjects with MonoBehaviours.You can author any number of subscenes, and each will bake the authoring GameObjects and MonoBehaviour data into compact entity and component data that can be loaded at runtime. Subscenes can be further split into sections and each section can be streamed in or out as needed.“How [much] does having hybrid monobehaviours/DOTS affect determinism in a project?”JOE VALENZUELA: Determinism is not a binary state, and we don’t guarantee that every execution detail is identical between runs. Generally, hybrid interoperability is sometimes needed for presentation details like particle systems or audio, where a perfect per-frame reproduction isn’t necessary.For features like predictive gameplay, you’ll want your simulation running in ECS.How do you manage hundreds of systems? Do they all run all the time and just not execute logic when there are no entities in the query? Or do you contextually activate systems based on game state?JOE VALENZUELA: For ease of development, we’ve made systems update by default. The difference in performance isn’t huge, but if you truly have hundreds of systems, you might benefit from making them latent update by calling RequireForUpdate or using the RequireMatchingQueriesForUpdate attribute.The idiom in that case is to add a RequireForUpdate<Foo>() to the relevant system, and use Foo IComponentData in your scenes as a sort of flag to turn on the update of those systems.“I understand that DOTS improves performance in terms of handling large amounts of data during runtime, during gameplay (rendering especially, from what I’ve heard). However, I’ve also heard DOTS improves production performance in terms of easing any refactoring needed. Could you speak a little on how DOTS helps refactoring?”JOE VALENZUELA: A big appeal of DOTS, ECS, and DoD in general from my perspective is that it makes more of your simulation state visible and inspectable. If you’ve ever tried to add tests for an OOP library, you may have run into the problem where you end up having to mock or instantiate a huge amount of functionality in order to replicate the state necessary to invoke a “simple” method instance. With DoD style systems, you can almost always represent a transformation kernel as a standalone function that turns one value type into another.This is hugely easier to reason about, to test, and to parallelize.“In my (amateur) experience, I find that DoD creates tight coupling between the data and the architecture, causing changes to data structures to introduce large refactoring work. Is this your experience? How did you handle or avoid this problem?”RASMUS HÖÖK: In our experience, when changing the data we usually have to alter the code that’s using it, even before using ECS. So we haven’t suffered more than what we’re used to!JOE VALENZUELA: I don’t think this is a fundamental problem of DoD or even our ECS, at least as it’s evolved over time.For one thing, the traditional method of breaking tight coupling in OOP is typically to make instance-oriented functions and class hierarchies. While that’s nice in theory, that kind of abstraction is one of the first things to go in performance programming.There’s nothing preventing you from writing utility functions in an ECS. While it’s true in our ECS you have to revisit systems when you change the data contract for specific queries, that can be a sign that you’re querying data in a scattered fashion. Are you repeatedly transforming component data? Can that be rewritten to reduce the number of mutations per frame? Repeatedly reading component data? Maybe you can hoist it into an immutable data structure early in the frame.Lastly, I think it’s safe to say DoD, or at least ECS, does make a lot more of the problem state explicit. That’s not a negative: That’s a different tradeoff. I much prefer reasoning about a tight coupling while refactoring than a loose or implied one.“Does the ECS/OOP work well for mobile games, or can you recommend this approach for a mobile game project? Any risks or considerations?”JOE VALENZUELA: We’ve had multiple customers successfully use ECS in their mobile games. Check out this GDC talk to see how Sunblink Entertainment used it for HEROish.“How did you go about networking V Rising? Did you use Netcode for Entities or another framework?”RASMUS HÖÖK: We made our own framework. We started using DOTS for production very early and were aware of the risks of doing that. To eliminate as many risks as we could, we tried to rely on as few packages as possible and rolled our own when possible. We have always made multiplayer games and have always used our own solutions, so we were comfortable with doing it ourselves.“Is ECS stable enough for production? We’ve been struggling with it for the past few months with a prototype and aren’t sure if those were growing pains as we learn or if it isn’t quite ready to strive for a pure ECS production project.”RASMUS HÖÖK: I’d say it’s stable enough for production but it is lacking features that many game developers might take for granted. Our gameplay code is pure ECS in V Rising, but presentation stuff, such as animated characters, particle effects, and UI, are all using GameObjects. Realistically, I think a hybrid approach is the best way for most teams starting a project today.We made V Rising using a one-way approach. We use pure ECS to only push data to GameObjects, never the other way around. For example, we keep the state of a character in ECS data – input, velocity, etc., that will decide the locomotion state, and what animation should be active and at what time and speed. Then we make sure the animator of the GameObject is in that state. Whatever state the animator is in never affects the gameplay. I think this separation overall simplifies the game.JOE VALENZUELA: ECS is production-ready and used by customers worldwide, but we have a long way to go until the experience is as seamless as we’d like. Stay tuned for future developments – and thanks for using DOTS!Make your ambitious game a reality with DOTS, which enables you to create scalable, high-performance games and unforgettable experiences. Get the latest features with Unity 2022 LTS and try out the latest tech in Unity 6 Preview.]]></description><link>https://unity.com/blog/engine-platform/dots-webinar-roundtable-q-a</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/dots-webinar-roundtable-q-a</guid><pubDate>Wed, 28 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity: January/February 2024 highlights]]></title><description><![CDATA[Congratulations to all the Unity nominees and winners at the 27th annual DICE Awards. Cocoon won Outstanding Achievement for an Independent Game, and What the Car?was awarded Mobile Game of the Year. In total, there were over 20 games nominated that were created with Unity. This is incredibly impressive and a testament to the innovation and creativity within our developer community.Earlier this month, Apple launched the highly anticipated Apple Vision Pro. Some of the very first spatial computing experiences available for the device are made with Unity, including the critically acclaimed LEGO® Builder’s Journeyfrom Light Brick Studios and TRIPP,a VR meditation app recognized by Time Magazine as one of the best inventions of 2022. For those itching to kick off the new year with new games, check out Steam’s Top New Releases from December. It featured six games made with Unity: Warhammer 40,000: Rogue Trader, Disney Dreamlight Valley, Arizona Sunshine 2, Against the Storm, Steamworld Build, and House Flipper 2. Alternatively, if you’re just looking to play a game that everyone else is playing, Rust, Lethal Company and Unturned continue to make their mark on Steam’s most-played games chart.*In video and streaming, we started the year off with an in-depth look at Cookie Cutter, a hand-drawn 2D Metroidvania. We spoke with the creators, Subcult Joint to hear how they used 2D animations, Sprite Sheets, lights and more to build this unique beat-em-up.For our next creator spotlight, we talked to the developers at Dumativa and Cellbit on their latest game, Enigma of Fear, and how they built this 3D pixel art horror game in Unity’s Universal Render Pipeline (URP).Finally, if you’re keen on keeping a pulse on some of the best and brightest up-and-coming developers, our education team spent nearly two hours playing through winning and nominated games from the Best Student Project category in our 15th Annual Unity Awards.There were also some great highlights from our Unity Insiders. Here’s a roundup of the top content from some of your favorite community voices:Dilmer: Speaking of Apple Vision Pro, Dilmer (@Dilmerv) gave his first impressions of the device from a developer’s perspective.Turbo Makes Games: Johnny from Turbo Makes Games (@TurboMakesGames) teams up with Dani Anderson, a software engineer at Unity, to do a DOTS-centric livestream series. You can catch the first episode here.SpeedTutor: For an in-depth overview of the new changes to the Input System, be sure to check out this tutorial form Speedtutors (@SpeedTutor). He starts by installing the system and showing you how to set up your first action map, then guides you through scripting a manager script and creating your own 3D and 2D character controllers, complete with practical examples.There are so many impressive shares on social media using the #MadeWithUnity hashtag. Below are some highlights.We’re all excited about the early access announcement from Southfield. The physics-based chaos looks incredibly fun, and we can’t wait to get our hands on it.Have you checked out Goblin Cleanup? It’s exactly what it sounds like, and it’s amazing.Keep adding the #MadeWithUnity hashtag to your posts to show what you’ve been up to and spread the project love.Prince of Persia: The Lost Crown, Ubisoft (January 18, 2024)Wild Legion, BluSped (January 1, 2024)Sovereign Syndicate, Crimson Herring Studios (January 15, 2024)New Cycle, Core Engage (January 18, 2024 – early access)Stargate: Timekeepers, Slitherine (January 23, 2024)Oblivion Override, Humble Mill (January 24, 2024 – early access)Speed Crew, Wild Fields Games (January 31, 2024)Airhead, Octato (February 12, 2024)Lysfanga: The Time Shift Warrior, Sand Door Studio (February 13, 2024)The Great Ocean, Actrio Studio (February 15, 2024 – early access)Sons Of The Forest, Endnight Games Ltd (February 22, 2024 – launched out of early access)Inkulinati, Yaza Games (February 22, 2024 – early access)The Inquisitor, The Dust S.A. (February 8, 2024)Deep Rock Galactic: Survivor, Funday Games (February 14, 2024 – early access)Helskate, Phantom Coast (February 15, 2024)Solium Infernum, League of Geeks (February 22, 2024)Bandle Tale: A League of Legends Story, Lazy Bear Games (February 21, 2024)Do you see any on the list that have already become favorites or find that we’re missing a title? Share your thoughts in the forums.We post new game releases and milestone spotlights on the @UnityGames Twitter and @unitytechnologies Instagram. Be sure to give us a follow and support your fellow creators.If you’re creating with Unity and haven’t seen your projects in any of our monthly roundups, submit them for the chance to be featured.That’s a wrap for January and February. For more community news as it happens, follow us on social media: X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.*Ranking as of February 12, 2024 at 5:30 pm PT.]]></description><link>https://unity.com/blog/games/made-with-unity-monthly-roundup-january-february-2024</link><guid isPermaLink="true">https://unity.com/blog/games/made-with-unity-monthly-roundup-january-february-2024</guid><pubDate>Mon, 26 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Start learning data-oriented design in Unity with these resources]]></title><description><![CDATA[Optimizing performance while maintaining scalability is vital for helping your game succeed across platforms. The Data-Oriented Technology Stack (DOTS) can be a game-changer, enabling you to deliver more complex and ambitious experiences to players on a wider array of devices. However, moving from an object-oriented to a data-oriented design approach can be an adjustment, even for seasoned programmers.To help you get started with data-oriented design in Unity, we’ve put together this reading list. From educational video tutorials to inspiring customer stories, these resources offer practical insights and guidance so you can hit the ground running with DOTS.Dive in with our comprehensive list of DOTS learning resources below.ECS samples: Get hands-on with our DOTS sample projects on GitHub covering Entities, Netcode, Physics, HDRP graphics, and URP graphics.Character controller samples: Use the ECS to configure common character movements like walking and jumping, as well as character collision.ECS Network Racing sample: This racing game sample showcases best practices for using Unity Netcode for Entities.Firefighters sample: Previously used for internal Unity training, this project will be the focus of the upcoming DOTS bootcamp. Take this GameObject-based project and unlock performance using DOTS components.Megacity Multiplayer: Available now, this third-person multiplayer action demo supports 64+ players. Learn more about building ambitious games using ECS for Unity and our Multiplayer solutions.Megacity Metro: Megacity Metro is a scalable, high-concurrency, cross-platform demo of our latest technology, including the Netcode for Entities package.Entities: This package provides a data-oriented implementation of the ECS architecture.Entities Graphics: This package contains systems and components for rendering ECS entities.Netcode for Entities: This package provides a server-authoritative framework with client prediction for use in multiplayer games.We recently launched our first comprehensive e-book guide to data-oriented design in Unity. Introduction to the Data-Oriented Technology Stack for advanced Unity developers can help you make an informed decision about whether implementing some or all of the DOTS packages and technologies is the right decision for your project.Understand the basics of the core DOTS components using the official Unity Documentation pages, including overviews of Entities, Unity Physics, and Netcode for Entities.DOTS best practices: This two-hour advanced course focuses on ECS. Learn how to improve runtime performance in code written using the DOTS packages.Physics for ECS: Understand how and when to use Havok Physics for Unity versus Unity Physics, our two Entities-based physics solutions.Basics of DOTS: Learn the fundamentals of DOTS, which lets you implement data-oriented design to create higher-performing applications. You’ll follow three sample scripts to help you get started with the Jobs System and Entities.Get acquainted with DOTS: Three tutorials for intermediate developers addressing common questions that you or your team may have in the primary stages of your DOTS learning.Data-oriented design bootcamp: Revisit the recordings from all four sessions of our recent community learning event.Unity Forums: Talk data-oriented design with other developers, and get your questions answered in our ECS for Unity subforums: Entity Component System, Graphics for ECS, Netcode For ECS, and Physics for ECS.Discord: Join the Official Unity Discord to chat in real-time with devs about ECS concepts, Burst, Jobs, Netcode for GameObjects, and more.Unity Twitch: Go under the hood of Made With Unity games. DOTS streams include Bare Butt Boxing, V Rising, Ship of Fools, Zenith: The Last City, and most recently, Cataclismo.Unity Insiders: Follow community creators like Turbo Makes Games, Code Monkey, and Taro Dev for educational content on data-oriented design.Diplomacy is Not an Option: Watch this Twitch stream to see how Door407 uses DOTS to power their game's massive battles with thousands of units.Zenith: The Last City: See how Ramen VR leveraged Entities to enable scale and avoid rate limits while building their ambitious VR MMO.V Rising: Discover how Stunlock Studios uses data-oriented technology to power a sprawling open world.Bare Butt Boxing: Learn how Tuatara Games built modular software architecture with DOTS for their early access multiplayer game.HEROish: In this GDC talk,Sunblink Entertainment’s Justin Larrabee discusses harnessing ECS to build a successful mobile adventure game.DOTS roundtable: Stunlock Studios’ Rasmus Höök and Sunblink Entertainment’s Justin Larrabee join Unity’s Andrew Parsons and Joe Valenzuela to share how they use Entities in Unity 2022 LTS.Curious about the future of DOTS now that we’ve released Entities 1.0? For more information, check out the DOTS development and next milestones thread on the Unity Forums.Make your ambitious game a reality with DOTS, which enables you to create scalable, high-performance games and unforgettable experiences. Get the latest features with Unity 2022 LTS and try out upcoming tech in Unity 6 Preview.]]></description><link>https://unity.com/blog/engine-platform/dots-bootcamp-resources</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/dots-bootcamp-resources</guid><pubDate>Thu, 22 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building the first NFL-licensed VR football franchise with Unity]]></title><description><![CDATA[In this guest blog, StatusPRO walks through how they tackled developing NFL PRO ERA.

When cofounders Troy Jones and Andrew “Hawk” Hawkins set out to deliver this VR football game, the first to be licensed by the NFL, they knew it was an ambitious task. With experienced professionals behind them, their team not only launched NFL PRO ERA in September 2022 but also delivered a multiplatform game available on Meta Quest, Sony PlayStation® (PS VR and PS VR2), and Steam. Now, they’ve gone farther, introducing new features such as head-to-head multiplayer and expanding to new platforms.

StatusPRO’s Head of AI and Gameplay Derrick Levy lays out how they made it happen with help from Unity.To achieve our goals, we needed to assemble a team of skilled developers who were knowledgeable and passionate about football game development. And we did. With over 100 years of combined experience, the team knew what worked and what didn’t.As a small company with a big license, our team operates differently than larger studios. For example, we have just one technical artist and one technical animator, while a bigger company may have a team of 10–15 artists or multiple animators. Our team members wear multiple hats, with engineers needing to know a little bit about everything in order to contribute to any part of the game. This versatility helps us be more efficient and focused.In order to build the Coach Confidence system, we leaned heavily on the ability to extend the Editor. I created a set of tools that allowed design to create over 100 unique events that could be updated and tuned without additional engineering support. This flexibility allowed both design and engineering to continue to create new, engaging experiences without one team being blocked by another.We have multiple design principles at StatusPRO, but our core principles are:1. Quality over quantity2. Content and variety are key3. Give gamers a reason to come backIn building NFL PRO ERA for multiple platforms, we maintained focus on giving users an immersive football experience like no other and adjusting to different platforms as needed. Unity was especially helpful as a partner, offering platform-specific guidance and sharing experiences from other developers who faced similar issues. This helped us anticipate and address any challenges before they became major setbacks.Unity’s XR Plug-in Management system made it possible for us to support the Meta, Steam, PSVR, and PICO platforms easily and without the need to learn each platform's specific SDK.Using the OpenXR subsystem along with the new Input Action Assets made it easy to support not only these platforms but the multitude of headsets that are available for PC, without the need for managing any additional plug-ins. Setup takes minutes instead of days.During the development process of NFL PRO ERA, we faced numerous performance challenges. Prior to alpha, there were stability issues due to memory load times while running at 15 frames per second. Unity played a critical role in helping us overcome these obstacles through a four-day sit-down with a Unity engineer. We conducted a thorough performance analysis and investigation into the game’s performance issues, receiving valuable feedback and suggested actions to improve the performance.This collaboration also extended to error reporting and handling platform-specific code. Unity introduced us to Backtrace, a tool we now use for error reporting, and provided us with priority support for any issues we encountered during the development process.The cross-platform support offered also made it possible for us to write the majority of the game’s code in a platform-agnostic way. With 85% of the code shared across platforms, we were able to easily roll out our game on multiple platforms while still maintaining a high level of quality.If you’re building a multiplatform VR experience, take advantage of opportunities for support because it is almost guaranteed to significantly improve performance. There’s nothing more satisfying than meeting deadlines while also achieving a high level of quality.Take this season of football to the next level and experience NFL PRO ERA II on Quest, PlayStation, or Steam. Be sure to check out more Made with Unity stories straight from developers here.]]></description><link>https://unity.com/blog/games/football-vr-statuspro</link><guid isPermaLink="true">https://unity.com/blog/games/football-vr-statuspro</guid><pubDate>Fri, 09 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[The shift from hyper to hybrid-casual games (and why it matters for everyone)]]></title><description><![CDATA[The last 4 years are widely regarded as the age of hyper-casual. In just a few short years, the genre went from being relatively unheard of to taking 40% of the total share of voice for games - its snackability, accessible gameplay, and innovative creative strategy fueling its success.This success also impacted other game genres, which looked to the mass appeal of hyper-casual games as a source of users and an opportunity for growth. Since 2017, mobile game installs saw a 20% YoY increase, driven by hyper-casual games boosting game installs overall. The resulting growth peaked in 2020, reaching over 5B installs in the US.Since then, the growth of hyper-casual games has stayed consistent. But other mobile game genres haven’t been so lucky, with a moderate decline in downloads and eCPMs over the past two years thanks to macroeconomic shifts.A changing marketToday, hyper-casual games still reach 1.7B installs per year and bring in $2-2.5B in annual revenue. But a decline in installs is starting to show. As downloads for other genres declined, demand from these genres declined too, leading to a current decline in hyper-casual growth.It’s also no longer as easy as it once was to monetize hyper-casual games - eCPMs and LTVs have started to decline due to new regulations, app store policies, and macroeconomic conditions.While the hyper-casual genre is still very much alive and kicking, these conditions have led to an organic pivot for some studios and publishers with a new genre of games emerging: hybrid-casual.What are hybrid-casual gamesHybrid-casual games take the mass appeal and accessible mechanics of hyper-casual games and combine them with deeper gameplay loops and balanced economies of casual games. Hybrid-casual gameplay is still simple, but the quantity and quality of content are optimized for longer playtimes, aiming to keep players playing up to D60 and beyond. The result is a genre that remains accessible and marketable to the majority of players while having deeper content to motivate players towards rewarded ad units, IAP, and longer playtimes to create greater LTV.Consequently, there is less of an emphasis on interstitial and banner ads compared to hyper-casual games. In general, hybrid games get 45% more rewarded video impressions and generate 20-50% of their revenue from IAP - significantly more than hyper-casual.Also important is the longer development time required to create hybrid-casual games, usually 9-12 months. But this is not necessarily a bad thing. With games taking longer to develop, the market is less prone to saturation and is more stable - as of now, there are only roughly 15 successful hybrid-casual games that have reached scale.What this means for everyone1. A more stable supply for advertisersDue to the small number of hybrid-casual games on the market, and the long development time needed to create new ones, advertisers can expect more stability from the hybrid-casual supply. In the past, hyper-casual games launched at a massive rate, so it was hard to predict which game your ads were running on and who was seeing them. But with a narrower supply of hybrid-casual games, advertisers are more likely to know where their ads are running and who is seeing them - allowing them to more reliably predict ROAS.2. Better quality users for advertisersThis shift to hybrid-casual presents major opportunities for advertisers to acquire high-quality users. This is because hybrid-casual players are usually of higher quality and are willing to play and pay more than the average hyper-casual player. After all, they’re looking for a deeper game experience. The stability of the hybrid-casual market plus these higher quality players means that advertisers can acquire the right users.3. New monetization opportunities for developersHyper-casual games primarily monetize with interstitial and banner ads, which enable explosive growth, but can feel invasive to some players and, with the current market conditions, might offer lower performance to advertisers.In contrast, hybrid-casual games have a bigger focus on rewarded videos, and as a consequence playables. Rewarded videos are premium placements for playables since they motivate users to stay and watch an ad, rewarding them for doing it. Playable ad units demand a longer time commitment from the player (interstitial ads are usually limited to roughly 15 seconds, and playable ad units are often 45 seconds or more), but their conversion and engagement rates are far higher than interstitial ads.Thanks to the longer playtime and deeper meta of hybrid-casual games, players are more motivated to engage with these ad formats, giving developers access to effective monetization opportunities.A new mobile game market with hybrid-casualThe impact of the growing adoption of hybrid-casual will mean a bigger emphasis on playables and rewarded videos for developers. This will mean a better supply for advertisers who stand a stronger chance of converting users with these ad formats. Plus, the greater data predictability from the longer shelf-life of hybrid-casual games will lead to better optimization for developers and advertisers - offering great new avenues to success for both.]]></description><link>https://unity.com/blog/the-shift-from-hyper-to-hybrid-games-and-why-it-matters-for-everyone</link><guid isPermaLink="true">https://unity.com/blog/the-shift-from-hyper-to-hybrid-games-and-why-it-matters-for-everyone</guid><pubDate>Wed, 31 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Find the right AI model for your game with Unity and Hugging Face]]></title><description><![CDATA[We’re excited to share a new integration with Hugging Face and some product updates for Unity Sentis, our neural engine for bringing AI models into Unity. With Sentis, we aim to make AI models more accessible to help you power in-game features like object recognition, smart NPCs, graphics optimizations, and more.However, given how many models are available, it’s often difficult to know which one fits your use case, ensure it’s reliable, and determine whether it works well with Unity. This is why we integrated with Hugging Face, the largest AI model hub in the world (470,000+ models as of this writing), to offer validated AI models for Unity Sentis that our team has tested to ensure they integrate seamlessly.If you’d like to start with Unity Sentis right away, check out our blog overview, documentation, or dive into the community.Going forward, we’ll continue collaborating with Hugging Face to provide high-quality, validated AI models for use with the Unity Engine. These models are optimized for easy implementation into Unity with the Sentis framework, tagged with “Unity Sentis” in the Hugging Face hub. We also share the corresponding ready-to-use C# file to perform inference in your game. The models are preconverted to the .sentis format to bypass the ONNX conversion step. Today, we’re offering 11 validated models that cover common use cases the community has asked for, like sentence similarity, speech to text, object detection, and more.In order to build an expansive free and open-source set of models across all use cases, we encourage you to post personal projects of interest to the Hugging Face Hub using the Unity Sentis tag.Please reach out on the discussions forum for help adding a model or to share the link to your Hugging Face uploads with the community.Hugging Face also works well with Unity, even if your use case is not conducive to running AI model inferences locally with Sentis. You can use the Hugging Face Unity API package to host your model on the Hugging Face Inference API, which is a free API for rapid prototyping, or you can use their Inference Endpoints, a paid API for production use.Unity Sentis entered open beta as a prerelease package in 2023, and the team has been working hard to bring some stability improvements for early this year. The most recent release is focused on addressing issues identified by our developer community. We really appreciate everyone’s continued feedback to improve the package.Unity Sentis will officially launch later this year as part of the Unity 6 release. Until then, Sentis will remain a prerelease package in Unity 2023 as we add consistent feature updates and fixes. There are also a number of exciting product updates planned.It can be challenging to implement and optimize your model without a good visualization. To this end, we plan to create an intuitive graph viewer for AI models that allows for native visualization directly inside the Unity Editor. In addition, this will give you the ability to dispatch model nodes (operations) to different compute types (CPU vs GPU). Yay, graph-based visual optimization!Performance is always a concern for game developers. Our plan is to integrate with hardware acceleration libraries and neural-specific chipsets, also known as neural processing units (NPUs), on platforms like Microsoft Direct ML, Apple Core ML/MPS Graph, Google NN API, and more to achieve faster inference on every device. What’s better, when inference is run on an NPU, it means the computation is offloaded from CPU/GPU to leave more budget for your game needs.While many AI models can run on-device with Sentis, there are some cases where having a cloud inference is preferred. For instance, the model may only be available through a hosted service, or you need to maintain server authority, or you require faster performance on low-end devices.These cases can be solved for if you want to use standard Unity web requests with your API, or, as previously mentioned if you are using Hugging Face infrastructure you can use the Hugging Face Unity API. In the future, we plan to work with Hugging Face further to align their Unity API with the Sentis API to keep the local and cloud inference inputs and outputs consistent so it’s easier to prototype between native and cloud compute without modifying your C# code.Unity Sentis is now available for free in open beta to all Unity developers operating on Unity 2021.3 or higher through the Package Manager. If you’re already working with Sentis and want to collaborate with our team, please fill out this form.]]></description><link>https://unity.com/blog/games/hugging-face-ai-models-and-more-sentis-updates</link><guid isPermaLink="true">https://unity.com/blog/games/hugging-face-ai-models-and-more-sentis-updates</guid><pubDate>Thu, 25 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tomas Sala on building an indie IP with award-winning Bulwark: Falconeer Chronicles]]></title><description><![CDATA[Tomas Sala, BAFTA-winning solo developer behind The Falconeer, won the Indie CommUnity Choice Award during gamescom 2023. Ahead of the game’s upcoming multiplatform release on March 26, we interviewed him to learn more about why he’s revisiting the world of The Falconeer with his upcoming multiplatform game, Bulwark: Falconeer Chronicles.Continue reading for insights on how Bulwark plays with genre, the reason Tomas designs for gamepad before keyboard and mouse, and why he thinks indies should consider going all-in on IP.Thanks for jumping on a call with us, Tomas, and congratulations on your Indie CommUnity Choice Award win! To start things off, can you give the community some background on your upcoming game, Bulwark: Falconeer Chronicles, and how it fits into The Falconeer’s wider universe?Bulwark is set in the same world, and it's a continuation of the same story, following the events of the big war in The Falconeer. Players are dealing with the aftermath: Everything’s decimated, all the gold and treasure has been taken, and many people have left. In this post-war scenario, everybody's just trying to get along and not default to old factional conflicts. So that’s the backdrop for this game – refugees trying to build a new settlement and make a better world for themselves. As you build out your settlement, you'll meet other people and sometimes get pulled back in old patterns, get into fights, things like that.Why did you choose to set Bulwark in the same universe?There are definitely practical considerations. I've deeply invested in building out my own toolset over the past decade – there's the matter of reusing what you have. This approach is opposite of the game-jam mentality, where you reinvent the wheel and make something new to see if it sticks. You instead have to work with what you’ve got.I had a look at The Falconeer and said to myself, "Well, what're the best and worst things about this game?" The worst thing was its niche, ‘90s throwback genre, which, gameplay-wise, wasn't for everybody. The best things were the worldbuilding, visual aesthetic, emotional layering, and personal narrative surrounding the gameplay. Those things were super strong and carried the game, so I wanted to keep them. I decided to let go of the genre (which I personally enjoyed) and go in a different direction to see if it would resonate more with players.For me, it's about all that. Doing an analysis of what you've done, seeing what's worth continuing, and expanding on that and making it better. I’d already spent seven years or so investing in The Falconeer’s world. There are definitely rough edges and things that need to be improved, but if I just dropped it completely, all that effort is gone. That's what I don't understand business-wise in what we've been telling indies. “Make small, cool games.” No. Make a world, and tell a story that gets players invested in the IP.Going back to what you were saying about genre… From Black Salt Games’ DREDGE to Cosmo D’s Betrayal at Club Low, more devs are combining genres for new gameplay experiences. You call Bulwark a “chill grand strategy” game – why did you decide to mix two genres, especially ones that seem so oppositional?I want to see new things every day in what I do. Replicating somebody else's game is boring – I wouldn't be able to do that. Within the “chill” genre, there’s something that I really like and got inspired by. It’s the opposite of the “hardcore efficiency mindset” where you want to beat the game, you want to win, you want to be the fastest, the best, the most efficient… That’s our mechanical brain talking. But there’s also the dreamy side of our brains that’s more focused on enjoying the fantasy of a game. It's not concerned about winning.Creativity is what I'm interested in for Bulwark. Giving people that sense of enjoying building their own base. That's the whole essence of the “chill” genre – being in the fantasy and creating. And then what I add is the history, the events of The Falconeer. Even though that part’s not super chill in Bulwark, it makes the world feel alive.How are you balancing creativity and conflict in the gameplay to keep players engaged?It's definitely a balancing act. Even though I enjoy looking at my own buildings for hours, I realize that for some people, it's more interesting if something gets blown up after a while.Looking back at The Falconeer, it was a very artistic, personal game. It’s in the genre I liked when I was young. It's about fraughtness and burnout and depression, and it’s heavy. Because I worked on the game alone, it didn't get a lot of testing. For Bulwark, I wanted to approach things differently. I decided to do an evolving early access demo to get players’ opinions, see where I was losing them, and figure out how to keep them on board. I'm still doing that, even though I'm back to closed development for now.But that was one of the reasons – if you try to “find the fun” in a void, you're going to get into trouble. In this game I’ve tried not to make things required. There's no progression path where you need to be violent. You can just chill and build. But if you go out into the world, these things unfold. They're not there to challenge you or to frustrate you. They're just there to bring the world to life.Why did you choose to launch a demo versus Early Access on Steam?I wanted user validation and user feedback. Early in my career, I did a lot of modding on Steam, back when it was mostly open development projects. You'd release something and people would request stuff or complain, and you'd implement their feedback and they'd be happy. It was super fun – a bit hardcore, but if you're into that kind of stuff, it's an interesting kind of punishment.If you go into Early Access and you're by yourself, people sometimes forget that you’re a solo dev. I make very polished stuff, but at the end of the day, it is just me. If I had my publisher respond to everybody, the community wouldn't like that – they want to speak to the developer, not a spokesperson. Early Access would create a lot of additional work for me. The program has gone from being about evolving the game to providing players with fully polished, fully playable content to enjoy. Early Access players are not beta testers. Nowadays, you need staff to run a proper Early Access. You need a roadmap, you need milestones, and when you hit those milestones, you need to let the community know. On top of that, you’re asking for money, so players have an opinion and they’re also your customer. And the customer is always right.That's why I made an evolving demo. It was available for eight months, non-stop, free-to-play. Players responded well, and I’m listening to their feedback. Running a demo can be kind of a brutal way to validate, but I don't think it’s possible to do this and not walk away with a substantially better game.You’re adding controller support. Has that been difficult for a grand strategy game? People typically go with mouse and keyboard for this genre.Here’s an interesting tidbit: When I make games, I always start with gamepad controls and work in reverse. When you pick up a controller to play Bulwark, it immediately feels very intuitive.From a game design perspective, I like to start with gamepad controls because I feel like it lets you focus on how you are controlling the world rather than “controlling the controlling.”Interesting! What’s your preferred control method?Gamepad. What I love about controllers on a philosophical level is – and this goes back to the dreamy side of our brains – I don't need to look at the controller to play. I'm actually looking at the screen. Whenever I'm playing a game with mouse and keyboard, I'm looking at the cursor. I'm not looking into the world – I’m just controlling the world from a separate layer above it. Playing with a controller, I like that I don't need to do that.I won a Steam Deck from the CommUnity Choice Award, and I've been using it every day [since]. I found out that if you use a Steam Deck and you upload a new build to your development branch on Steam, it's on Steam Deck in seconds. On PC you have to restart your Steam for it to detect that an update has been made. So my Steam Deck is now the easiest development kit on Earth. I just press upload and I can play it, and I'm not messing up my computer that's set up to debug.How are you generating the environments for players to build on?There's actually no map generation in Bulwark. It's the same world as The Falconeer, so it's a 10x10 km open world. I threw a bunch of stuff in there and Unity can handle it. There is literally no streaming code, although I did use a lot of instancing – that’s the rocks and the ocean itself.At the moment I’m streaming in faction settlements – groups for players to fight against if they want to – and those are streamed in quite simply, not as a JSON files, but as a long string which the engine parses. There aren’t that many objects, so I can get away with it.I also don’t use any Prefabs. It gets too messy in my head. Instead there’s just a pooling of objects in the scene that I copy to build the walls and so on. Those build up the dynamic settlements, which get dispatched when you move away from them.What technical achievement – even if it’s a small one – are you most proud of?I made an interesting resource system for the game – well, it’s more of a logistics system. To build, you don’t need gold, you just need to connect one building to another. For example, you might have a windmill that supplies +4 wood, which means you can keep building wood up to four nodes of your tower network. Building houses and industry around your windmill improves the output of the windmill, because you need people to do the work, right? It’s an actual economy that iterates throughout your settlement. It’s also quite a pretty complicated bit of code. As someone who considers himself an artist, I’m like, “Ah, I made a nice recursive economy system.” I don’t know if that’s the right term, but I’m pretty proud of it!You did a case study with us not too long ago on using the Asset Store to make The Falconeer. Have you picked up any new assets for Bulwark?I picked up a nice new ambient occlusion package. I’m using Unity 2022 LTS, but I’m still using the built-in render pipeline, because I’ve spent a long time building out my own workflow and am used to my own tools. Because Unity’s post-processing is more supported for URP and HRDP, I needed an ambient occlusion solution to do some modern tricks. I ended up buying FSR 2 – Upscaling for Unity from Alterego Games – another Dutch developer – which works for both URP and built-in. It’s been amazing. It really excites me seeing Asset Store developers take this new stuff and make it accessible to developers like me.That’s great. Taking the time to add visual polish can really make the difference when getting your game noticed. What advice do you have for developers looking to find more players for their game?A lot of it's just luck. Making 20 small games might teach you the basics, but today’s market isn’t about small games anymore. Look at the Indie Arena Booth this year – they’re all highly ambitious, highly polished, beautiful, original games, all of which would have been considered “AAA” just a few years ago. And there are so many of them.Statistically, the most important thing you can do to get your game noticed is to hang in there. If you stop making games, you're never going to get noticed. It's a waiting game. Whoever has the most perseverance wins eventually. At some point you'll know more people. You'll get even better. You'll find out new tricks. You'll meet more journalists. The longer you stay in the game or in the work, the better you're going to get at it. So hang in there and don't give a damn. Just do it. Just hold on. It's a ride.This interview has been edited and condensed.Bulwark: Falconeer Chronicles is available now on PlayStation®5, PlayStation®4, Xbox Series X|S, Xbox One, and digital storefronts. Wishlist the game and follow @falconeerdev for updates. Visit our Made With Unity hub for more stories spotlighting innovators in game development.]]></description><link>https://unity.com/blog/games/tomas-sala-on-indie-game-bulwark-falconeer-chronicles</link><guid isPermaLink="true">https://unity.com/blog/games/tomas-sala-on-indie-game-bulwark-falconeer-chronicles</guid><pubDate>Wed, 24 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Samsung smartphones in 2023: The users, innovation, and technology]]></title><description><![CDATA[50 years after the first cellphone call was made in 1973 by Martin Cooper, the World Economic Forum reports that there are now more mobile device subscriptions (8.58 billion) in use than people in the world (7.95 billion). Mobile device ubiquity is undeniable, and the smartphone market is only set to grow. The global smartphone market is projected to have a compounded annual growth rate of 3.4% (2024-2028) and is expected to reach $0.5 trillion in 2024, according to Statista.These devices present a valuable opportunity for advertisers, offering significant campaign scalability using a high-ROAS channel: on-device advertising.On-device advertising connects you directly with OEMs and carriers, placing your app in front of users at the most impactful moments of the device lifecycle, like device set-up and OS updates. The rich device experience of on-device advertising then engages and retains customers, resulting in an expected conversion rate upwards of 20%.The most widely used mobile OS in the world is Android, with 70% of the global market. And the world's largest supplier of Android smartphone devices is Samsung, with 1.03 billion users.Let’s dive into the Samsung smartphone market, user base, and new technology in 2024.Samsung in numbersAs of January 2024, Samsung has a market cap of $370 billion (1) Samsung is a Top 5 Global Brand according to Interbrand Best Global Brands 2023, with a brand value of $91.4 billion, a 4% YoY increase from 2022 (2) In 2023 alone, Samsung shipped 226.6 million smartphones worldwide (3)Samsung accounted for 19.4% of total smartphone shipments worldwide, coming second only to Apple at 20% (4) Identifying the over 1B Samsung usersIn 2023 there were 1.03 billion active Samsung smartphone users - and that number is expected to grow in 2024. Before running on-device campaigns on Samsung devices, it’s important to understand the users you’ll be reaching in order to optimize your campaigns as effectively as possible.1. Most Samsung users are Gen XGeneration X ( 1965 – 1980) and Millennials (1981 – 1996) make up around 90% of both Apple and Samsung’s user base. While the distribution on iOS devices skews younger in the US, Android users tend to be Gen X or older.Gen X males have the largest labor force participation rate in the US, 90% according to the US Department of Labor. As a result, Gen X makes up a large portion of purchasing power in the US - they have money to spend. This means that by making Samsung a core channel of your marketing strategy, you’re reaching an audience with great influence over household and company decisions. 2. Samsung users care more about features than designAndroid users are 57% more likely to prefer a full-featured, advanced device that’s less attractive as opposed to a sleek device that only does a few things according to ansonalex. With all Samsung smartphones and tablets using the Android operating system, this statistic can be extended to Samsung users.Samsung is known to push the envelope on innovation with every phone they release, and its users put a lot of value in the tech advancements that have improved device functioning. For example, the ability to work on two apps on the same screen at the same time with a Samsung device is much more important than the size and color of the device.By advertising directly on Samsung devices, you’re reaching early adopters. They are likely to look past the potential challenges of being the first to jump into a new technology. Samsung users will embrace on-device advertising placements as a new and unique feature on their device - like Aura’s Game Spotlight, which puts a new game on users’ phones every week based on their current preferences, or Aura’s In-Life App Discovery, which recommends your app to users during device updates. 3. Samsung owners have high brand loyaltySamsung leads Android phones with 63.9% trade-in brand loyalty, while just 10.8% of users stick with other Android devices according to Tom's Guide. Once consumers start using Samsung devices, they’re likely to stay loyal to the brand.When running UA campaigns, your goal is to acquire users who remain loyal in the long term. Advertising on Samsung devices means reaching users that are dedicated to the brands they engage with.You’re also reaching the generation with the highest likelihood of making brand loyalty a priority - Gen X has the highest rate of brand loyalty of any generation according to Streng. All of this means that if you reach users with your food delivery app early on in the Samsung device lifecycle, users are likely to stick with you.Trends and innovations from SamsungLet’s dive into the innovations and trends shaping the Samsung brand in 2024.An equitable and secure AI-enabled tomorrowAt a CES 2024 press conference Samsung unveiled its AI for All strategy. Jong-Hee Han, Vice Chairman, CEO, and Head of Samsung’s Device eXperience Division, shared how Galaxy AI-enabled Samsung devices will improve the lives of consumers “in the background.” He stressed the importance of AI’s role in enhancing connected experiences.Included in the presentation were a number of Samsung products with integrated AI features to create a more intuitive and convenient user experience. One of the standouts for mobile marketers was Samsung’s renewed focus on security and privacy across devices. In the new hyper-connected era that Samsung is helping to build, security solutions are foundational.A case in point is the Samsung Knox Matrix, providing end-to-end encryption across Samsung Galaxy smartphones and smart TVs. It works by allowing Samsung devices to monitor, identify, and isolate security threats across one another.For advertisers, this is good news. A more secure mobile market means a more trusting pool of users, who’ll be more likely to engage with ads and apps knowing that their private data remains safe and encrypted.The Samsung Galaxy S24 has lift-offIn late January 2024, Samsung announced the global release of its anticipated Galaxy S24 smartphone. While every edition of the Galaxy series offers new features and improvements for users, the Galaxy S24 promises to be one of the most transformative due to its Galaxy AI capabilities. Following the announcement, pre-orders for the device skyrocketed, with a double digit increase in pre-order sales compared to previous models according to Samsung.TM Roh, President and Head of Mobile eXperience Business at Samsung describes the device as “our initial step toward a new era of AI phones that go beyond the current smartphone.” AI features are set to include Live Translate, Chat Assist, and a suite of new AI-powered camera tools.With consumers showing considerable interest in AI-enabled devices and Samsung at the forefront of these innovations in consumer goods, many consumers may look to switch to Samsung as their mobile brand of choice. This could represent a major shift for advertisers, with more users choosing Samsung, and therefore Android, opening a larger market for on-device advertising.The future is foldableHalf of US consumers are either very (16%) or somewhat (34%) interested in buying a foldable phone as their next device according to CNET, and Samsung is the first-mover in this cutting-edge technology. In 2019, Samsung released the foldable Galaxy Z series and the end of 2023 saw the most recent addition join the fold, the Galaxy Z Fold5.Watch how they're made here: https://news.samsung.com/global/video-behind-the-foldable-phones-in-our-pocketsThe Galaxy Z Fold5 offers the greatest comfort and display quality yet in the series, giving consumers all the features and tools the Galaxy Z series is known for, but now slimmer and brighter.These quality of life improvements are expected to boost foldable device adoption. And that’s good news for advertisers. Foldable devices offer new ways to keep users engaged and entertained with your ads, such as ads that allow users to reveal more ad content as they fold or unfold their devices. Foldable screens also mean more room to fill your ad with more important and detailed information.Learn more about leveraging foldable phones for your app’s advertising strategy.If you’re not already leveraging Samsung for your advertising strategy, it may be time to look into it. After all, the users, technology, and innovation are some of the best in the world, making these devices an incredibly valuable channel.Start advertising on Samsung devices with AuraCompanies Market CapInterbrandStatistaStatista 
]]></description><link>https://unity.com/blog/samsung-in-2023-the-users-innovation-and-technology</link><guid isPermaLink="true">https://unity.com/blog/samsung-in-2023-the-users-innovation-and-technology</guid><pubDate>Tue, 23 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Knowledge unboxed: The top learning tools of 2023]]></title><description><![CDATA[The past year was an exciting one for Unity Learn. What educational journeys did creators take in 2023? What adventures did they get into as they explored new tools, or built experimental games? Let’s get into some highlights.Unity Learn saw:4.2 out of 5 average content rating12,000 pathway completion badges issued36.2% of users who start with Unity Learn still use the Editor 6 months laterRead on to find out more about the year that was and discover top-performing content to help you make your creative goals come true with Unity in 2024.With content ranging from bite-sized tutorials to larger projects, courses, and learning pathways, Unity Learn allows you track your progress, earn badges, and bookmark any resources that look interesting. If you’re just getting started, look no further than this roundup of our most popular content from 2023.Short, step-by-step tutorials help you explore specific features or skills. These are our top three tutorials of 2023.Get ready for Unity EssentialsNew to Unity? This tutorial, the first in the Unity Essentials Pathway, teaches you the foundations for using the Unity Editor, so you can confidently create real-time 3D experiences and bring your vision to life.Start the tutorial.Publish your first mobile runner gameBuild and publish your own mobile runner game with ease thanks to this tutorial. The template provided accelerates the game development process. It also includes end-to-end runner game mechanics, custom presets, and a level editor.Start the tutorial.Get started with the Unity HubThis tutorial provides you with a tour of the Unity Hub, the Editor, and the Package Manager in order to get you comfortable with using each feature.Start the tutorial.Projects help you create a Unity application, with opportunities to mod and experiment. Give our most downloaded projects from last year a try.Roll-a-BallUse this project to learn how to write custom scripts and create UI for your first game. In it, you’ll use the Editor and its built-in capabilities to set up a simple game environment, write scripts, and more.Start the project.Introduction to Visual ScriptingThis is the perfect place for creators of all levels to start learning about Visual Scripting. This project introduces you to the different windows and tools in our Visual Scripting user interface.Start the project.Creator Kit: RPGThe RPG Creator Kit is made for intrepid adventurers who love completing NPC quests to fill up their inventory. This code-free kit helps you focus on learning about the Editor and customizing a game based on your own ideas and interests. Plus, when completed, you’ll have a game to share with friends.Start the project.We design courses that allow you to explore a topic in depth using step-by-step resources. Check out which ones were most popular in 2023.Create with CodeProgram your own exciting projects from scratch using C#. This course will transform you from beginner to capable Unity developer as you iterate with prototypes, tackle programming challenges, and develop your project. It is also a stepping stone for the Unity Certified User Programmer exam.Start the course.Create with VRIn this course, learn to design and develop VR applications by creating prototypes, attempting challenges, and completing quizzes that will build and solidify your skill set. You’ll also be guided through creating a VR project from start to finish, beginning with a blank design document and ending with a fully functional project.Start the course.Create with AR: Markers and PlanesLearn how to create AR apps that respond to a user’s physical environment in this course. Anchoring AR content to real-world objects, like markers and flat surfaces, produces more compelling, grounded, and immersive AR experiences – which you’ll know all about when you’re finished.Start the course.Build all the skills you need to master the Editor with our free online pathways. These learning journeys, designed by Unity creators, for Unity creators, all build on one another to make achieving your goals as simple as just “following a path.” Start your journey with our top most-completed pathways of the last year.Unity EssentialsNew to Unity? This guided experience includes everything you need to get started. Designed for any beginner, this is a great first step toward gaining the background, context, and skills you need to confidently create in the Unity Editor and bring your vision to life.Start the pathway.Junior ProgrammerReady to code? Designed for anyone interested in learning to code or obtaining an entry-level Unity role, this pathway assumes a basic knowledge of Unity and has no math prerequisites. It also prepares you to get Unity Certified so that you can demonstrate your job-readiness to employers.Start the pathway.Creative CoreLooking to go deeper? Level up your core understanding of Unity by focusing on the creative aspects of the engine. Creative Core is an excellent next step toward becoming a Unity creator. With Unity Essentials as a foundation, this free pathway will teach you all the elements you need to know in order to bring your projects to life with Unity.Start the pathway.Feeling inspired? Create a Unity ID (or sign in with an existing one) to start learning today.]]></description><link>https://unity.com/archive/blog/games/top-learning-tools-of-2023</link><guid isPermaLink="true">https://unity.com/archive/blog/games/top-learning-tools-of-2023</guid><pubDate>Mon, 22 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[A look at mobile screen reader support in the Unity Engine]]></title><description><![CDATA[In a positive shift toward inclusivity, an increasing number of game developers are prioritizing accessibility as an integral aspect of their creations. Unity is dedicated to providing support to help developers achieve their accessibility goals. As Leah Skerry presented during GAconf USA 2023, Unity has been actively working on mobile screen reader support, marking the first of many accessible runtime features slated to enhance gaming experiences in the coming years.Since projects developed with Unity use our own graphical user interface (GUI) systems, it was not previously possible for mobile screen readers to be compatible with Unity-made content. This meant that when an Android or iOS user opened a game made with Unity on their devices while a screen reader was running, there was no way to interact with it until the screen reader was turned off. Allowing users of all abilities to enjoy gaming on their mobile devices has been one of our main objectives, so let’s dive into what this support means for Unity developers today.A screen reader is a form of assistive technology that allows visual input to be output in a nonvisual way, such as speech or braille. Mobile devices running Android and iOS have built-in screen reader technology, such as TalkBack and VoiceOver, respectively. This form of assistive technology is essential to people who are blind, and also useful to people who are visually impaired, illiterate, or have cognitive disabilities.For mobile devices, screen readers use a text-to-speech (TTS) engine to translate on-screen information into speech. They can be used to navigate the UI by either touch or gestures.Older games made with Unity are, by default, incompatible with screen readers. For a screen reader to navigate such an application, its technology has to receive information about what the accessible elements are, where they are placed on the screen, what role they have, and how a user can interact with the UI. This means we needed a way to tell the screen reader that, for example, there is a label in this position, with this particular text, and in this position there’sa button with thisparticular text, and the action to take when the button is activated is this function, and so forth.Starting with Unity 2023.2 Tech Stream, and improved with 2023.3 Tech Stream (now known as Unity 6 Beta), developers can now convert their GUI into data that a screen reader on mobile devices can use to allow navigation and interaction with a Unity game. This API was developed to not depend on a particular GUI system and can therefore be used by anyone developing a game with Unity – no matter what technology they use to implement their GUI. Non-GUI elements can also be represented as screen reader elements.The screen reader API is a simple data structure hierarchy that contains the information that a screen reader needs in order to allow interaction with each GUI element. Every node in the hierarchy usually represents an accessible element in a game, featuring a label (the first thing read by the screen reader when the node is focused), a position on screen, sometimes a value, and extra information to help the screen reader give a user more information about that element, such as if it’s a button or a toggle, or if the element is disabled.The order of nodes in the accessibility hierarchy are what defines the order in which the screen reader will navigate a screen. That means sibling nodes (nodes at the same level of the hierarchy) are read in order, and a parent node is read before its children, for example.Currently, the initial implementation of this API for screen readers works only with mobile devices running Android or iOS operating systems. According to our product strategy, we are also considering extending support to MacOS and Windows, each with native screen reader capabilities, and to desktop-based web browsers as well. While game consoles are not inherently accessible platforms, we are looking into what is possible for them, too.Unity recognizes the significance of ensuring that every gamer, regardless of ability, can fully engage with all that the world’s developers create. This latest capability underscores our commitment to fostering an inclusive and enjoyable gaming industry for all players. Our Accessibility Team is just getting started and has a lot more to do – check our roadmap, along with the one for UI Systems, to learn more.The APIs mentioned are documented and found in the Scripting API section of the Unity Manual. Get started through the AssistiveSupport class. Additionally, we’ve put together a GitHub repository with a practical example (LetterSpell, pictured in the banner at the top) on how to implement screen reader capabilities in your Unity application or game, alongside extra AccessibilitySettings usage examples.We’d love to hear how you’re using our tools to support accessibility. Show us the amazing things you’re working on in Unity and send us feedback directly in the Accessibility forum.]]></description><link>https://unity.com/blog/engine-platform/mobile-screen-reader-support-in-unity</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/mobile-screen-reader-support-in-unity</guid><pubDate>Fri, 19 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Best conferences for mobile app developers in 2024]]></title><description><![CDATA[Each year the number of conferences filling up calendars only seems to increase - for every niche in the market, there’s an accompanying event. With so much to attend, it can be hard to figure out where you should be and when. So, to help you do just that, here’s a handy guide to the top conferences in 2023 for mobile app developers, publishers, and marketers. We can’t wait to see you there.Mobile app conferencesThis post will be updated with more mobile app conferences as they become available.GamesforumWhere: BarcelonaWhen: February 7 - 8, 2024What: Gamesforum Barcelona is designed to be a highly informative and intimate networking event for sponsor partners. The event focuses on F2P mobile games and ad monetization, with a concentration on providing actionable content for its delegates.Why you should be there: With topical keynotes and interactive panels, Gamesforum Barcelona is a key chance to network with the top players in the industry.Learn more here.MWC BarcelonaWhere: BarcelonaWhen: February 26 - 29, 2024What: Every year MWC Barcelona brings together app marketers, telcos operators, vendors, and device manufacturers for the largest event in the connectivity ecosystem. This year, attendees will hear from top executives from Microsoft, Dell, Accenture, and more.Why you should be there: There are few better opportunities to connect with senior executives from some of the largest connectivity companies in the world.Learn more here.Game Developers Conference (GDC)Where: San FranciscoWhen: March 18 - 22, 2024What: GDC is one of the gaming industry’s most prominent events, bringing the game development community together to discuss, determine, and inspire the future of the industry. It welcomes the best of the best – game designers, programmers, producers, business leaders, and more.Why you should be there: GDC is not just an opportunity to immerse yourself in great content and networking, but also includes a must-see expo showcasing the latest development tools and innovation from top tech companies. Also on offer are the Game Developers Choice Awards, a peer-based video game awards show celebrating the best games and their developers, and the Independent Games Festival, dedicated to honoring the best indie games of the year.Learn more here.Mobile Apps UnlockedWhere: Las VegasWhen: April 2 - 4, 2024What: The renowned MAU returns for yet another year, gathering experts from top mobile app brands for two days of learning, connecting, and building relationships. As an inclusive event, registration is simple and admission free for app marketers and businesses.Why you should be there: With leaders from top mobile companies in attendance, you’ll get to hear from and connect with the movers and shakers of the app economy.Learn more here.Mobile Apps UnlockedWhere: LondonWhen: July 2 - 4, 2024What: MAD//Fest is the kind of event that marketers look forward to all year. With speakers ranging from top ad execs to award-winning broadcasters and novelists, it’s the perfect mix of value and entertainment.Why you should be there: MAD//Fest has become a destination event in every marketer's calendar, sure to be jam-packed with quality content and connecting with top-tier talent.Learn more here.ChinaJoyWhere: ShanghaiWhen: July 26 - 29, 2024What: Chinajoy is the largest digital entertainment and gaming exposition held in Asia. It highlights the present and future of the tech and gaming industry, including product demos, tech showcases, developer sessions, tech talks, and much more.Why you should be there: ChinaJoy is a key opportunity to connect with leading industry experts in the global digital entertainment industry - not to mention, it’s completely free.Learn more here.]]></description><link>https://unity.com/blog/best-conferences-for-mobile-app-developers-in-2024</link><guid isPermaLink="true">https://unity.com/blog/best-conferences-for-mobile-app-developers-in-2024</guid><pubDate>Thu, 18 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Dive into the URP 3D Sample]]></title><description><![CDATA[Many studios have used Unity and the Universal Render Pipeline (URP) to build games of various genres and visual styles, running on many different platforms. Yet it’s sometimes hard for beginners and even experienced users to get started with a reference setup.We released the HDRP 3D Sample in 2021 to help you get started on high-fidelity rendering, and last November we announced the launch of our URP 3D Sample during the Unite 2023 Keynote.This robust sample features four environments with different art styles, rendering paths, and scene complexity to help you learn how to create and scale rich graphics across many platforms. From low- to high-end mobile, PC to console, and VR, we wanted to make a visually engaging experience so you can better learn and use URP. The sample is designed to help you build, optimize, and scale your next game efficiently against your target hardware.You can also discover how to use the latest features available with URP, such as Forward+ rendering, Decals, Lens Flares, Physically Based Rendering (PBR) materials, Shader Graph, Volumes, and Post-processing.The sample requires Unity 2022 LTS and will deliver added support in the next release, Unity 6, also announced at Unite. Unity 6 will also include powerful new URP features including Render Graph, GPU Resident Drawer, and an innovative cross-platform temporal upscaler called Spatial Temporal Post-processing (STP).You can download the sample in the Unity Hub, and we can’t wait to see what you create. In the meantime, let’s take a look at what each scene delivers.The Terminal scene takes place in an architectural sci-fi building that features PBR materials and realistic lighting. The Terminal allows you to teleport into the other three scenes, each built to showcase the capabilities of URP with different art styles: a garden, a spaceship’s cockpit, and an oasis.With its neutral setting and lighting, The Terminal is the ideal scene for you to drop in assets for look development. The scene showcases various custom shaders made with Shader Graph (water, teleportation signs) as well as advanced effects like the teleportation allowing transition between two scenes. To learn more, watch our GDC 2023 talk.Follow the ramp to access the three scenes by focusing on the Unity logo above the teleporting device for a few seconds (requires Play mode).This stylized nocturnal garden, inspired by the Japanese shoin-zukuri, features beautiful vegetation crafted with SpeedTree, interconnected interiors, a meandering stream, and numerous decorative lights that take advantage of the new Forward+ Render path, which surpasses previous lightcount limits.This environment is a great showcase of URP’s range because it’s optimized to scale for low-end mobile devices through to higher-end platforms. You can learn, for example, how we optimized the shaders using custom function nodes in Shader Graph, custom translucency for vegetation, as well as optimizing lighting or simulating shadows using light cookies.The Oasis is a photorealistic environment showcasing advanced shaders tailored for higher-end, compute-capable platforms. It features Decals, Lens Flares, PBR materials, and more complex custom Shader Graph shaders for sand, water, fog, and vegetation. It shows you that URP can reach a higher level of visual quality for platforms with more performant GPUs.This rollercoaster ride puts you in the seat of a spaceship, where you will witness an epic battle between two factions. The heavily stylized environment uses a custom lighting model in Shader Graph, and it’s particularly well suited to the high-performance requirements of VR headsets such as the Meta Quest 2.Install Unity 2022.3.12f1 via the Unity HubCreate a new Project, and select “3D Sample Scenes (URP)”Click the “Download template” button on the right panel, and click “Create project”The project will load in the Editor (the first import may take a few minutes)Are you new to Unity?A Unity subscription lets you unlock the full potential of URP and deploy across multiple devices such as game consoles. Learn more about our plans to see which is right for you and see how creators, like Two Point Campus, are using URP today.Join the conversation in the URP 3D Sample forum channel and stay up to date on bug fixes, additions, and major changes. We invite you to share your general sentiment, ask questions and request help directly in this thread. We also encourage you to experiment with the content of this project and share your findings.Session | Accelerate your multiplatform development with the latest for URPDiscover the latest enhancements for URP in this Unite 2023 session, including the new Render Graph, additional lighting capabilities with GPU Lightmapper and APV (Adaptive Probe Volumes), and improvements to VFX Graph.Livestream | What’s new in Unity’s Universal Render PipelineJoin technical artists and product managers for a live discussion as they go over Unity’s URP 3D Sample scenes, looking at the latest graphics features, device support, and more. This includes a live coding session to create a custom fog and custom renderer features.Session | Cross-platform game development with the new URP sample sceneWatch this talk from GDC 2023 to get a deeper understanding of the URP samples’ teleportation effect, lighting in VR in the Garden and Cockpit scenes, and performance optimizations.Blog | How to make nature shaders with Shader Graph in 2022 LTSExplore how to create two distinct nature shaders using Universal Render Pipeline (URP) in 2022 LTS. We also take a closer look at a stylized water shader and a semi-realistic sand shade, released with the new URP 3D Sample.]]></description><link>https://unity.com/archive/blog/engine-platform/dive-into-the-urp-3d-sample</link><guid isPermaLink="true">https://unity.com/archive/blog/engine-platform/dive-into-the-urp-3d-sample</guid><pubDate>Thu, 18 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[From AI to code style: The best of Unity on YouTube in 2023 ]]></title><description><![CDATA[The year 2023 was chock-full of new patterns, products, and Unity creators. To commemorate the year that was, we’ve decided to round up some of our most exciting YouTube content and resources that you may have missed.Keep reading for the best of tutorials, livestreams, and session recordings of 2023.This video covers how to use the command design pattern in a Unity project. Discover ways to delay logic so that you can execute, manage, or plan a series of actions, undo and redo a set of actions, and evaluate a sequence of actions. We’ll even break down the components of the command pattern.For more on programming design patterns, download the Level up your programming with game programming patterns e-book.Recorded at GDC 2023, this session gives you a glimpse of the Water System, which is fully integrated into the High Definition Render Pipeline (HDRP). Unity engineers Rémi Chapelain and Adrien de Tocqueville show you how the system works and explain what you can achieve in terms of art direction, gameplay, and performance.Read this blog from the team to learn even more about features for Unity 2022 LTS and the 2023.1 Tech Stream.For this Let’s Dev stream, Unity’s own Nathan Thomas helps viewers get familiar with animations in Unity by building a basic example of “looting a chest.” The example runs through Unity’s animation system, timeline, and Cinemachine. By the end, you should be able to build your own chest unlocking animations.Subscribe to our Twitch channel to get notified about future streams.Get your head in the clouds during this tutorial, where you’ll learn how to construct a cloud in Unity in three stages. In addition to cloud construction, we dive into how to create simple spheres within a cube mesh, use 3D textures to define shapes, and add lighting for shadows and highlights. To follow along, download the project from GitHub.This tutorial comes from a recipe featured in the Recipes for popular visual effects using the Universal Render Pipeline e-book.With just a few natural-language prompts, Unity Muse delivers the power of generative AI, so you can save significant development time in the ideation and iteration phases of your game. Watch this Unite 2023 session to see how it can transform the way you work in the Unity Editor. Regardless of skill level, you’ll learn ways you can use this powerful technology to build an entire game level in just 20 minutes.Read this blog post to learn more about the AI models behind Unity Muse’s asset generation, responsible AI practices, and how we can extend output quality with only owned data.Currently available in the Unity Asset Store, this stream showcases Shapes by Freya Holmér. Watch as Freya walks you through her gamedev journey from making tools to games, as well as being a math influencer.This tutorial provides you with useful tips and tricks for developing and maintaining a clear, helpful code style guide that can help your team work more efficiently. The recommendations featured are based on general industry standards for C# and are meant to be inspirational rather than rules set in stone. They also include insights on naming, formatting, classes, and methods.If you like what you see, take things even further with the Create a C# style guide: Write cleaner code that scales e-book.Subscribe to Unity’s YouTube channel to keep up with the latest sessions, tutorials and livestreams, or head over to our best practices hub for more in-depth technical resources. If you’re ready to dive into the Editor but don’t yet have a subscription, check out available plans and pricing.]]></description><link>https://unity.com/blog/news/best-of-unity-youtube-2023</link><guid isPermaLink="true">https://unity.com/blog/news/best-of-unity-youtube-2023</guid><pubDate>Fri, 12 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity: 2023 in review]]></title><description><![CDATA[From award winners and nominees for The Game Awards, Unity Awards, MWU Korea Awards 2023, and more to everything in between, the Unity community has accomplished a lot in the past year. As we kick off a new one (Happy New Year, by the way), let’s reflect on all the amazing games released over the past 12 months.To the best of our abilities, here’s a non-exhaustive list of games made with Unity and launched in 2023, either into early access or full release. This is a long list, so we’ve attempted to categorize projects by genre (19 in all, including Action, Comedy, Horror, Metroidvania, and Survival) to make it easier to parse. Of course, many titles aren’t so easy to categorize – like horror-fishing sim DREDGE, management-adventure-RPG Dave the Diver, or the DREDGE x Dave the Diver hybrid. Hopefully, you can find something that inspires what you’re making or playing in 2024 and beyond.For additional fun, see which made with Unity games you can spy in this year-end list from NPR.El Paso, Elsewhere, Strange Scaffold (September 26)Other action releases included:Zombie Admin, Hastily Assembled Games (January 13)Rain World: Downpour, Videocult and Akupara Games (January 19)WuJiDaoRen, indielight incubator (March 13 – early access)Re:Fresh,Merge Conflict Studio (April 24)We Love Katamari REROLL+ Royal Reverie, MONKEYCRAFT Co. Ltd. (June 1)Pixel Ripped 1978, ARVORE Immersive Experiences and Atari (June 15)Rider Worlds, Ketchapp (July 13)Double Dragon Gaiden: Rise Of The Dragons, Secret Base (July 27)Hammer of Virtue, No Pest Productions (August 7)Savant – Ascent REMIX, D-Pad Studio (September 29)Delicious Dungeon, Digital Cauldron (November 3)Nickelodeon All-Star Brawl 2, Fair Play Labs (November 7)Robocraft 2, Freejam (November 7)Big Fat Battle, Robot Squid (November 10)World Reborn, Wicked Saints Studio (December 1 – Demo) [Unity for Humanity grantee]LONE RUIN, Cuddle Monster Games (January 12)Other bullet heaven releases included:Nebula, JuTek Pixel (January 25)GunSuit Guardians, Matt Glanville (March 31)20 Minutes Till Dawn, flanne (June 8)Yet Another Zombie Survivors, Awesome Games Studio (July 13 – early access)Vampire Hunters, Gamecraft Studios (July 26 – early access)Whisker Squadron: Survivor, Flippfly LLC (August 21 – early access)God Of Weapons, Archmage Labs (September 12)Pathfinder: Gallowspire Survivors,BKOM Studios (September 14 – early access)FatalZone, Midhard Games (October 23 – early access)Battle Grid, Barking Dogs (October 25)Slime 3K: Rise Against Despot, Konga Games (November 2 – early access)Survivors of the Dawn, indieGiant (November 6 – early access)Death Must Die, Realm Archive (November 14 – early access)Warhammer 40,000: Warpforge, Everguild Ltd. (October 19 – early access)Other card and deckbuilder releases included:Power Chord, Big Blue Bubble (January 26)Aces & Adventures, Triple.B.Titles(February 23)Star Survivor, SpaceOwl Games (March 2)Munchkin Digital, Dire Wolf (March 9)Crush the Industry, Cognoggin Games (March 31 – early access)Wildfrost, Deadpan Games and Gaziter (April 12)Sunshine Shuffle, Strange Scaffold (May 24)Rune Gate, Devwind (August 25)Astrea: Six-Sided Oracles, Little Leo Games (September 21)Beneath Oresa, Broken Spear Inc. (September 27)Death Roads: Tournament, The Knights of Unity (November 15)Pizza Possum,Cosy Computer (September 28)Other casual and party releases included:Gorilla Tag, Another Axiom (January 1)My Lovely Planet, Ubisoft Lab (January 18 – Apple release) [Unity for Humanity grantee]Devolver Tumble Time, Nopopo (January 26)Rhythm Sprout: Sick Beats & Bad Sweets, SURT (February 1)Innchanted, DragonBear Studios (March 28)Soundodger 2, Studio Bean (April 10)MONOPOLY GO!, Scopely (April 11)Bread & Fred, SandCastles Studio (May 23)Goosey Guess, Gas Lantern Games (July 14)Moving Out 2, SMG Studio and Devm Games (August 15)KallaX, Unexpected (September 18)Party Animals, Recreate Games (September 20)Headbangers: Rhythm Royale, Glee-Cheese Studio (October 31)Secret Shuffle, Adriaan de Jongh (November 1)Terra Nil, Free Lives (March 28) [15th Unity Awards, Best Social Impact Project]Other city builder releases included:Surviving the Abyss, Rocket Flair Studios (January 17 – early access)Plan B: Terraform, Gaddy Games (February 15)Outlanders, Pomelo Games (March 7)Fabledom, Grenaa Games (April 13 – early access)Havendock, YYZ (April 20 – early access)Pan’orama, Chicken Launcher (May 9)Pile Up!, Remoob (June 2 – early access)Cardboard Town, Stratera Games (August 18)BRIXITY, Studio Kingdom Corporation (August 24) [MWU Korea Awards 2023, Best Graphics]URBO, Door 407 (September 13)InfraSpace, Dionic Software (September 22)dotAGE, Michele Pirovano (October 4)Cities: Skylines II, Colossal Order Ltd. (October 24)SteamWorld Build, The Station (December 1)Against the Storm, Eremite Games (December 8)Bare Butt Boxing, Tuatara Games (May 4 – early access)Other comedy releases included:Clunky Hero, Chaosmonger Studio (January 25)Pineapple on pizza, Majorariatto (March 28)Orbo’s Odyssey, Feverdream Softworks (August 20)Billy Bumbum: A Cheeky Puzzler, Frambrosa (September 7)BattleBit Remastered, SgtOkiDoki, Vilaskis, and TheLiquidHorse (June 15 – early access)Other FPS releases included:Hellscreen, Mixtape Games UK (March 9 – early access)Vertigo 2, Zach Tsiakalis-Brown (March 30)Breachers, Triangle Factory (April 13)MEATGRINDER, Vampire Squid (April 13)KILLBUG, Samurai Punk and Nicholas McDonnell (May 3)Friends vs Friends, Brainwash Gang (May 30)We Are One, Flat Head Studio (June 1)Battle Bows, WIMO Games (July 13)Trianga’s Project: Battle Splash 2.0, Dranya Studio (September 26)Battle Shapers, Metric Empire (October 3 – early access)Deadly Rain, FireRing Studio (October 6)Executive Assault 2, Hesketh Studios Ltd (October 18)GUNHEAD, Alientrap (November 8)Wizordum, Emberheart Games (November 29)Blood West, Hyperstrange (December 5)Notable horror releases included:Life Gallery, 751 Games (January 12)Death in the Water 2, Lighthouse Games Studio (January 26)PARANORMASIGHT: The Seven Mysteries of Honjo, Square Enix (March 8)STASIS: BONE TOTEM, THE BROTHERHOOD (May 31)Killer Frequency, Team17 Digital (June 1)My Friendly Neighborhood, John Szymanski and Evan Szymanski (July 18)Labyrinthine, Valko Game Studios (August 18)The Fabulous Fear Machine, Fictiorama Studios (October 4)EMPTY SHELL, CC ARTS (October 16)Lethal Company, Zeekerss (October 23 – early access)The Voidness – Lidar Horror Survival Game, Steelkrill Studio (October 30)You Will Die Here Tonight, Spiral Bound Interactive LLC (October 31)Little Goody Two Shoes, AstralShift (November 7)Dinky Guardians, Endless Loop Studios and Code Monkey (October 2)Other management and automation releases included:The Pale Beyond, Bellular Studios (February 24)Potion Tycoon, Snowhound Games (March 13)Diluvian Winds, Alambik Studio (May 25 – early access)Mad Games Tycoon 2, Eggcode (May 31)Nova Lands, BEHEMUTT (June 22)DAVE THE DIVER, MINTROCKET (June 28)A Long Journey to an Uncertain End, Crispy Creative (June 28)Techtonica, Fire Hose Games (July 18 – early access)One Military Camp, Abylight Barcelona (July 20)Lakeburg Legacies, Ishtar Games (July 20)Let’s School, Pathea Games (July 26)The Cat Fishing Village, Nexelon (September 19) [MWU Korea Awards 2023, Best Monetization]Definitely Not Fried Chicken, Dope Games (September 29)Mob Factory, LiterallyEveryone Games (November 9)Dyson Sphere Program, Youthcat Studio (December 15)Blasphemous 2, The Game Kitchen (August 24)Other metroidvania releases included:Glimmer in Mirror, MapleDorm Games (January 9 – early access)Alice Escaped!, illuCalab (January 27)Elderland, Mantra and Sinergia Games (February 16)9 Years of Shadows, Halberd Studios (March 27)DOOMBLADE, Muro Studios (May 31)Curse of the Sea Rats, Petoons Studio (April 6)The Last Case of Benedict Fox, Plot Twist (April 27)Laika: Aged Through Blood, Brainwash Gang (October 19)Ebenezer and the Invisible World, Orbit Studio and Play on Worlds (November 3)The Last Faith, Kumi Souls Games (November 15)Cookie Cutter, Subcult Joint LTD (December 14)Dordogne, UN JE NE SAIS QUOI and UMANIMATION (June 13)Other narrative and mystery releases included:A Space for the Unbound, Mojiken (January 19)Roller Drama, Open Lab Games (January 26)JETT: The Far Shore + Given Time, Superbrothers and Pine Scented (January 31)Ten Dates, Wales Interactive and Good Gate Media (February 14)The Wreck, The Pixel Hunt (March 14)Storyteller, Daniel Benmergui (March 23)The Last Worker, Oiffy and Wolf & Wood Interactive Ltd (March 30)MINDHACK, VODKAdemo? (April 5 – early access)Tron: Identity, Bithell Games (April 11)Mask of the Rose, Failbetter Games (June 8)Fall of Porcupine, Critical Rabbit (June 15)OXENFREE II: Lost Signals, Night School Studio (July 12)Frank and Drake, Appnormals Team (July 20)Crime O’Clock, Bad Seed (July 21)Venba, Visai Games (July 31)Goodbye Volcano High, KO_OP (August 29)I doesn’t exist – a modern text adventure, LUAL Games KIG (October 5)Saltsea Chronicles, Die Gute Fabrik (October 12)Peaky Blinders: The King’s Ransom Complete Edition, Maze Theory (November 2)Notable platformer releases included:Catch Me!, ByteRockers’ Games (January 24)Rise of Fox Hero, Josep Monzonis Hernandez (February 17)Joon Shining, Orchid of Redemption (February 17)Clive ‘N’ Wrench, Dinosaur Bytes Studio (February 23)BETON BRUTAL, Jan Malitschek (March 31)Moons Of Darsalon, Dr. Kucho! Games (April 19)CONVERGENCE: A League of Legends Story™, Double Stallion (May 23)No More Rainbows, Squido Studio and Robot Teddy (June 1)Life of Slime, 0-Game Studios (July 13)Disney Illusion Island, Dlala Studios (July 28)Meowmentum Mori, Vancouver Film School (August 1)[15th Unity Awards, Best Student Project]Ninja or Die: Shadow of the Sun, Nao Games (August 2)Bomb Rush Cyberfunk, Team Reptile (August 18)Corn Kidz 64, BogoSoft (October 17)Cavern of Dreams, Bynine Studio (October 19)Here Goes Muffin, Project610 (October 23)SANABI, WONDER POTION (November 8)Bzzzt, KO.DLL (November 13)A Highland Song, inkle Ltd (December 5)Viewfinder, Sad Owl Studios (July 18)Other puzzle and adventure releases included:Children of Silentown, Elf Games and Luna2 Studio (January 11)Colossal Cave, Cygnus Entertainment (January 19)Birth, Madison Karrh (February 17)Rytmos, Floppy Club (February 28)Stuffo the Puzzle Bot, Hapatus Ltd (March 2)Figment 2: Creed Valley, Bedtime Digital Games (March 9)Life of Delta, Airo Games (March 13)The Forest Cathedral, Brian Wilson (March 14)Ogu and the Secret Forest, Moonlab Studio and Sinkhole Studio (March 23 – early access) [MWU Korea Awards 2023, Best PC, Console]The Library of Babel, Tanuki Game Studio (April 7)Cynthia: Hidden in the Moonshadow, Catthia Games (April 10)KATOA, Sankari Studios (April 22)Unboxing the Cryptic Killer, Eleven Puzzles (April 27)Humanity, tha ltd. and Enhance (May 15)Tin Hearts, Rogue Sun (May 16)Planet of Lana, Wishfully (May 23)The Bookwalker: Thief of Tales, DO MY BEST (June 22)Rose and Lotus: Petals of Memories, 5minlab Corp. (June 28) [MWU Korea Awards 2023, Best Innovation]Stories of Blossom, Soft Leaf Studios (August 16)Chants of Sennaar, Rundisc (September 5)Headlong Hunt, Toombler Games (September 28)COCOON, Geometric Interactive (September 29)A Tiny Sticker Tale, Ogre Pixel (October 4)Midnight Girl, Italic (October 6)Monolith, Animation Arts (October 11)Reliefs The Time of the Lemures, Calepin Studio (October 14)Logic Town, Mark Ffrench (November 3)Have a Nice Death, Magic Design Studios (March 22)Other roguelike or roguelite releases included:Corpse Keeper, Melancholia Studio (February 15 – early access)Dust & Neon, David Marquardt Studios (February 16)Patch Quest, Lychee Game Labs (March 2)Mortal Sin, Nikola Todorovic (March 15 – early access)Stories from the Outbreak, Coldwild Games (March 27)DROP – System Breach, Etherfield Studio (March 28)Spiritfall, Gentle Giant (April 3 – early access)Wall World, Alawar Premium (April 5)Blocky Dungeon, SquareAnon (April 6)Trinity Fusion, Angry Mob Games (April 13)Beyond the Long Night, Noisy Head Games (April 17)Mr. Sun’s Hatbox, Kenny Sun (April 20)Darkest Dungeon® II, Red Hook Studios (May 8)Inkbound, Shiny Shoe (May 22 – early access)Battle Talent, CyDream (June 1)Oblivion Override, Humble Mill (June 13 – early access)Ember Knights, Doom Turtle (July 18)Let’s! Revolution!, BUCK and Antfood (July 19)Quasimorph, Magnum Scriptum (October 2 – early access)ENDLESS™ Dungeon, AMPLITUDE Studios (October 19)The Unliving, RocketBrush Studio (October 26)Voltaire: The Vegan Vampire, Digitality Games (October 26)Cuisineer, BattleBrew Productions (November 9)Backpack Hero, Jaspel (November 14)Below the Stone, Strollart (November 17 – early access)Sea of Stars, Sabotage Studio (August 28)Other RPG releases included:Vendir: Plague of Lies, Early Morning Studio (February 21)Limbus Company, ProjectMoon (February 26)Kowloon’s Curse: Lost Report, Studio [notes.] (March 22)Tainted Grail: The Fall of Avalon, Questline (March 30 – early access)Hunt the Night, Moonlight Games (April 13)The Mageseeker: A League of Legends Story™, Digital Sun (April 18)Honkai: Star Rail, HoYoverse/miHoYo (April 26)Greedventory, Black Tower Basement (May 17)Ghostlore, Andrew Teo and Adam Teo (May 17)Evil Wizard, Rubber Duck Games (May 25)Bleak Sword DX, more8bit (June 8)Arcadian Atlas, Twin Otter Studios (July 27)Waven, Ankama Studio (August 16 – early access)BOOK OF HOURS, Weather Factory (August 17)WrestleQuest, Mega Cat Studios (August 21)Eternights, Studio Sai (September 12)WitchSpring R, KIWIWALKS (September 25)The Lamplighters League, Harebrained Schemes (October 3)Embers Off, IfThenElse Digital (October 5)Stolen Realm, Burst2Flame Entertainment (October 14 – early access)Dreadhunter, Trickster Arts (October 18 – early access)Dark Envoy, Event Horizon (October 24)Dungeon Full Dive, TxK Gaming Studios (October 24 – early access)Lunacid, KIRA LLC (October 30)For The King II, IronOak Games (November 2)The Iron Oath, Curious Panda Games (November 2)Thirsty Suitors, Outerloop Games (November 2)Don’t Die in the West, Funday Games (November 9)Worldless, Noname Studios (November 20)Warhammer 40,000: Rogue Trader, Owlcat Games (December 7)Hello Kitty Island Adventure, Sunblink Entertainment LLC (July 28)Other simulation releases included:Waves of Steel, TMA Games LLC (February 6)My Dream Setup, Campfire Studio (February 20)Chef Life: A Restaurant Simulator, Cyanide Studio (February 23)Kerbal Space Program 2, Intercept Games (February 24)Contraband Police, Crazy Rocks (March 8)DREDGE, Black Salt Games (March 30)Shadows of Doubt, ColePowered Games (April 24 – early access)Everdream Valley, Mooneaters (May 30)Space Reign, Propulsive Games (June 12 – early access)Mars First Logistics, Shape Shop (June 22 – early access)One Lonely Outpost, Freedom Games (June 26 – early access)Void Crew, Hutlihut Games (September 7)Mineko’s Night Market, Meowza Games (September 26)Paleo Pines, Italic Pig (September 26)Thief Simulator 2, CookieDev and Ultimate Games S.A. (October 4)Ooblets, Glumberland (October 5)Hotel: A Resort Simulator, Ringzero Game Studio (October 12)Outpath, David Moralejo Sánchez (October 16)Hero Planter, Aleda Games (October 19)This is Fine: The Game, Andris Gauracs (October 30)Back to the Dawn, Metal Head Games (November 2 – early access)My Time at Sandrock, Pathea Games (November 2)GearBlocks, SmashHammer Games (November 9 – early access)Undisputed, Steel City Interactive (January 31 – early access)Other sports or driving releases included:Punch A Bunch, Pontypants (January 20)MiLE HiGH TAXi, Cassius John-Adams (March 13)Monster Racing League, Flightless (March 23)Disney Speedstorm, Gameloft (April 18)Tape to Tape, Excellent Rectangle (May 3 – early access)Toasterball, Les Crafteurs (May 3)Punch Club 2: Fast Forward, Lazy Bear Games (July 20)Synthwave Racers, Corrtex Games (August 10)DepowerBall, Mega Power Games (August 21)Karting Superstars, Original Fire Games (September 13 – early access)RoboDunk, Jollypunch Games (September 25)subpar pool, grapefrukt games (October 12)NFL PRO ERA II, StatusPRO Inc (October 16)Elfboarders, Lylek Games (November 6)Shadow Gambit: The Cursed Crew, Mimimi Games (August 17)Other strategy releases included:We Are The Caretakers, Heart Shaped Games LLC (January 6)Inkulinati, Yaza Games (January 31 – early access)Phantom Brigade, Brace Yourself Games (February 28)The Last Spell, Ishtar Games (March 9)Mechabellum, Game River (May 11 – early access)Kingdom Eighties, Fury Studios (June 26)Xenonauts 2, Goldhawk Interactive (July 18 – early access)The Banished Vault, Lunar Division (July 25)Thronefall, GrizzlyGames (August 2 – early access)Cantata, Afterschool Studio (August 15)Six Ages 2: Lights Going Out, A Sharp (August 21)Towers of Thana, Bishop Games (August 21 – early access)Spirited Thief, Koi Snowman Games (September 19)DinoBlits, Taba Marton (September 23)Project Planet – Earth vs Humanity, Fifth Harbour Studios (September 25)PROTOTYPE, Cold Enemy Gaming (October 15)Growth, VoodooDuck (October 16)Warcraft® Rumble™, Blizzard Entertainment (November 3)Stronghold: Definitive Edition, FireFly Studios (November 7)Dungeons 4, Realmforge Studios (November 9)Demeo Battles, Resolution Games (November 9)Howl, Mi’pu’mi Games GmbH (November 14)Sons Of The Forest, Endnight Games Ltd (February 23 – early access)Other survival releases included:Atrio: The Dark Wild, Isto inc. (January 10)Osiris: New Dawn, Fenix Fire Entertainment (January 18)The Pioneers: Surviving Desolation, Supercube (January 20 – early access)ZED ZONE, Leven Liu (March 29)Survival: Fountain of Youth, Odinsoft Inc. (April 19)Above Snakes, Square Glade Games (May 25)Farworld Pioneers, Igloosoft (May 30)I Am Future: Cozy Apocalypse Survival, Mandragora (August 8 – early access)Dawnlands, SEASUN GAMES PTE. LTD. (August 9)Sunkenland, Vector3 Studio (August 25 – early access)Wildmender, Muse Games (September 28)Saleblazers, Airstrafe Interactive (September 29 – early access)Wizard with a Gun, Galvanic Games (October 17)That’s a wrap for 2023. Want more Made with Unity and community news as it happens? Don’t forget to follow us on social media: X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/made-with-unity-2023-review</link><guid isPermaLink="true">https://unity.com/blog/games/made-with-unity-2023-review</guid><pubDate>Thu, 04 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why folder structures matter]]></title><description><![CDATA[As a consultant on the Customer Success team, I often get asked “Have we built our asset bundles right?” or a variation of this question. My answer is always the same: It depends on the project. I then chat with customers about the specifics. Although this answer is accurate, it doesn’t provide any insights to aid future projects.While a common dilemma, I struggle to find a more general answer to the question (despite our existing guidelines and best practices for addressables). Some users don’t know if bundles are correct to start with, and my time is often limited to examining projects for memory optimization. This means I can’t tell the intended use for every asset in a project. Additionally, as a project scales, it can become impossible for any one person to answer the same question for each and every asset.Eventually, a realization hit me: The question of building asset bundles correctly limits the perspective to find a more general answer. Let me explain.An asset bundle occupies memory to load, so if assets are bundled together with other assets that don’t get loaded and unloaded at the same time, you’re not using memory as optimally as you could. Therefore, asking if an asset is in the right bundle or if the bundles have the right assets in them is essentially the question of whether you’re loading the right assets at the right time. The answer to when specific assets should be loaded is what the intended use of that asset is, which is why the answer is usually, “It depends on the project.” In practice, I’ve found that learning the intended use of the asset reveals how the assets are loaded in memory, and how they should be bundled.So, “intended use” is the key phrase: Who knows what the intended use for an asset is? How do you communicate that intent to everyone? And, finally, when should this happen?In my opinion, there is one moment where the answer to this question is crystal clear: upon asset creation and modification. Whether it’s a specific texture for a character, a global lighting shader, or a tree mesh for use in multiple game levels, the creator knows its intended use and, thus, they are best suited to communicate that intent. Artists can communicate this intent by implementing a consistent file naming convention and grouping files with the same intended uses in the same folder.Programmers and other team members can then use this information to decide when and if an asset should be bundled with other assets that will be loaded simultaneously. Because of this, the intended use of an asset must be made very clear – at a glance – for the duration of a project, and the file directory acts as the source of truth for all team members.In this blog post, I will look at some best practices and common edge cases that will hopefully help you better structure future projects. First, let’s discuss some of the common folder structures and their issues.From my experience, there are four types of folder structures: random, by asset type, by feature, and by purpose. Of these, the last one is the best by far, because it conveys the intent and is therefore most suitable for an optimal bundling strategy.Random is not one I see often. This mostly happens with solo developers who might be unfamiliar with software development, this becomes untenable, for obvious reasons, as a project grows in size or complexity. A lack of structure, or a random structure, comes with many problems – assets are hard to find, and understanding the intended use is practically impossible.Structuring by asset type is quite common as this is how many artists work on assets before importing them into the engine. If you know the asset type, finding its location is easy but everything else about it is obscured. Even with a great naming convention, it can be hard to tell if a character, environment, UI, or any combination of the three requires a specific shader, texture, mesh, etc. An appropriate file directory should not obscure information, but reveal it.Folder structures by feature are rare, but seem sensible at first glance. Many companies divide into feature teams, so why not group the data similarly? Well, that is not how the game uses the data. In the past, I have seen examples, such as shaders and audio, that should be bundled together but because they are authored by different teams this truth becomes obscured.A file directory with a clear naming convention driven by the assets’ purpose bypasses these issues. To illustrate this, I will use a fictitious game example called “Dinosaur Brawl.”For the purposes of this example, Dinosaur Brawl is a third-person 3D action-adventure game where the player chooses one dinosaur to control across a vast open world with multiple biomes, fighting other dinosaurs and prehistoric creatures in an attempt to grow stronger and pass their genes to the next generation – all in a giant struggle to survive the coming Ice Age. The game is designed for mobile, and some of the data will be distributed as part of the original application. The rest will be downloaded from a CDN as needed.We can devise a general folder structure for the whole project from the above synopsis. Since the player can select and fight other dinosaurs, it makes sense to create a folder per dinosaur that will hold all assets specific to that dinosaur: meshes, sound effects, textures, animations, particle effects, etc. I'll categorize these as Unique Assets.Since it is an action game, it will have environments that are separate biomes. We should therefore create a single folder for each biome, or level, in the project: plains, deserts, tundra, swamps, volcanos, etc.Of course, there will also be assets whose presence will be required for whole sections of the game. One such set is UI elements. You can think of these assets as Global Assets. Just like we made one folder for all Unique Assets, there should be a global folder that sits on top of the folder hierarchy. For example, a Global UI folder, a Global Dinosaur folder, a Global Environment folder, and so on. This way, all things shared by these game sections are stored in one place.This category of assets is defined as being shared by some Unique Assets but not all. As such, they fit in neither the Global or Unique Asset categories. For Dinosaur Brawl, an example of this type of shared asset could be those that are present in all flying dinosaurs, such as particles, shaders, and sound effects required to give the sensation of soaring through the air.What often happens is that these assets are put in the folder for the first dinosaur that needs them. Unfortunately, this does not accurately describe how they are meant to be used and therefore muddles their intent. In the worst-case scenario, assets get duplicated into each flying dinosaur bundle which is inefficient for memory, debugging, and application size.The best solution is to create a new folder with a name that indicates its intended use, such as Flying Dinosaurs. The specifics of deciding the location are trickier; there is no standard. I prefer to put these in a subfolder at the same level as the global and unique dinosaur folders, but putting them with other Unique folders is just as suitable.A typical edge case with this convention is when the project requirements change and an asset that was originally intended to be Unique becomes Shared. In our Dinosaur Brawl example, to save development time, the decision is made to use the Velociraptor prefab as the base for all other Raptors (such as the Utahraaptor, Dokataraptor, etc.).What the developers don’t realize, though, is that when the Velociraptor prefab is added into a bundle, all the Velociraptor assets will be downloaded when all other raptors are loaded, increasing download times despite only the prefab being used.This happened because the intent of the asset was changed and the folder structure no longer reflects that. When a change in intent happens, the asset(s) location and name should be updated to reflect this, in order to maintain consistency and accuracy in the system. This communicates to the team creating the bundles which assets should be in a “Shared Raptor” bundle and which should stay in the Unique Velociraptor model.One of the most common and hard-to-fix edge cases is when an asset is unintentionally used in a way it was never intended. When this happens, it is usually an accident. For example, someone has a deadline to meet and they use an already existing asset in the project to finish the job quickly.Take this scenario: An artist is adding a tutorial for an upcoming expansion of Dinosaur Brawl and finds a “gold glow” shader to accentuate when players can do a counterattack on elite enemies. What the artist doesn’t know is that this shader is end-game content against a massive T-Rex – it’s a unique boss that has a lot of assets bundled together. Now all of these assets will be downloaded during the tutorial, in a place where most of the assets are not used. This bundle is enormous, so the system that usually downloads minor assets like this in the middle of a game is stressed, causing anything from performance spikes to crashes because the asset can’t be downloaded quickly enough by players with poor connections.The above is an extreme, but entirely realistic, example and one that I have seen happen in more than one project. This is why, in addition to folder structure, all assets should have a name that communicates their intent. If the shader were called gold_glow_trex_endgame, for example, it would be apparent what the intended use was. Then, upon debugging, it would be obvious that this asset should not be loaded during the tutorial.If you are familiar with Addressables, you may know that Groups and Labels are used to group and label assets in much the same way I have suggested in the game example above – by using folders and sensible naming conventions. You may wonder, “Why bother with all of this if you can do this using Groups and Labels?”My answer is that you should do both. As I explained at the beginning, as the number of assets in a project grows, it becomes harder and eventually impossible for one person to know how all assets are meant to be used. Knowing the Addressables Groups should match the folder structure can be used as a way to confirm that they are set up correctly.I have seen many of our clients that use Asset Bundles without Addressables code complex systems as a solution to this problem. For instance, they will create and maintain a master list that is used to create the bundles, or check version control commits to compare changes in bundles, etc. My experience has been that these solutions are not cost-effective in the long term. It is yet another system to develop and maintain, which creates additional points of failure. As the project scales, they buckle under a myriad of exceptions and edge cases that long-lived projects naturally accrue. Worst of all, at a fundamental level, they fail because they don’t have a remedy for user error.A well-structured folder system and file naming convention should result in a 1-to-1 match for asset bundles and addressables groups. Categorizing files into logical groupings and subfolders ensures that all team members interpret and locate files uniformly, mitigating potential misunderstandings and discrepancies as personnel change and project requirements evolve. Asset creators can facilitate easy access and navigation, sparing other team members from the time-consuming task of hunting down specific assets. A systemic approach saves valuable time and minimizes the likelihood of errors and oversights. Becoming an enduring reference point, a source of truth, easing the onboarding process for new team members and ensuring the project's viability over time.Looking for support or advice on folder structure? Chat with us in the forums. And check out more technical blogs from Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/why-folder-structures-matter</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/why-folder-structures-matter</guid><pubDate>Thu, 28 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity October/November 2023 roundup: Meme-ification, year-end celebration, and a $1B milestone]]></title><description><![CDATA[How can it already be the holiday season? With a trip to Amsterdam for Unite 2023 and the exciting reveal of our 15th Unity Awards and MWU Korea Award 2023 winners, the last two months at Unity have been packed with pizazz. Keep reading to discover what Unity creators accomplished in October and November, including the latest game releases.From Andris Gauracs turning a meme into a playable game (see above) to reports on how games impact the climate, Unity creators keep making eye-popping headlines. October and November saw one horror game blow up in popularity, a shooter reach the coveted 500-review mark, and a mobile game make the switch to a F2P model. And year-end lists have arrived, starting with this one from Paste Magazine, of which nearly half of the honorees are made with Unity.If you’re curious which PC game studios packed the biggest punch in the latest Steam reports, look no further. Steam’s top 20 new releases in September featured four games made with Unity: WitchSpring R, Void Crew, Party Animals, and Astrea: Six-Sided Oracles. October, on the other hand, saw seven titles, including Lethal Company in the top five.When it comes to the top most played games recently, Rust and Unturned continued to shine, with NARAKA: BLADEPOINT, Lethal Company, and Yu-Gi-Oh! Master Duel joining the ranks.*Last but not least, Scopely’s Monopoly Go hit $1 billion in player spending within seven months of its release, making it the biggest casual game launch ever. Check out the team’s celebratory post below.Moving to the world of video and streaming, the last two months have been somewhat quiet on the Unity side. We’ve begun to ramp things up, however, starting with a recent spotlight on Best Artistic Tool winner Febucci Tools’ Text Animator (above) and this deep dive on the Universal Render Pipeline. Keep an eye on our schedule for future videos. And, if you’re looking for bite-sized tips, check out our YouTube Shorts.While we may have been a bit quiet, Unity Insiders added to the conversation in big ways. Here’s a roundup of the top content (in our opinion) from your favorite community voices.AIAAIA (@AIAdev) shared a YouTube short that walks though advanced probe volumes, which is a new feature that will make day and night cycles simpler in Unity 6.Coco CodeIn a first look at Unity Muse, Coco Code (@CocoCode) shares examples of working with the tools compared to other AI generative solutions. We appreciate all feedback and encourage you to share your thoughts on Muse in our discussions forum.Code MonkeyAlso coming out of Unite, Code Monkey (@CodeMonkeyUnity) dove into Unity 6 and recapped the Keynote session. Check it out below. And congrats to Code Monkey on reaching 500,000 subscribers.There are so many impressive shares on social media using the #MadeWithUnity hashtag. With so much activity – from award winners to Unite 2023 chatter – here are some highlights from October/November.With Halloween on the horizon, developer Adam Gryu launched his annual pumpkin carving game and saw more carvers than ever before at 6,000+. Keep your eyes peeled next year so you, too, can spend time carving in Ghost Town.In the end, it was all eyes on Unite, with speakers, award winners, and more spreading the love online. If you’re thinking ahead to 2024 and how your next project can have an impact, dive into AR Earth Savers – MWU Korea Award 2023 winner for Best Innovation – in this blog about the project.Last but not least, here are some Unity Asset Store highlights from the last two months:Little Heroes Pack | SURIYUNOffice With Conference Room | AK STUDIO ARTAlien Planet Fantasy Environment - Jungle Plants | Etherion DesignsKeep adding the #MadeWithUnity hashtag to your posts to show what you’ve been up to and spread the project love.Just in time for the holiday season, the last two months were huge for releases of games using Unity. Read on for some highlights (and maybe even add some of these games to your holiday wishlist).The Lamplighters League, Harebrained Schemes (October 3)Battle Shapers, Metric Empire (October 3 – early access)The Fabulous Fear Machine, Fictiorama Studios (October 4)Ooblets, Glumberland (October 5)I doesn’t exist – a modern text adventure, LUAL Games KIG (October 5)Embers Off, IfThenElse Digital (October 5)Midnight Girl, Italic (October 6)Deadly Rain, FireRing Studio (October 6)Monolith, Animation Arts (October 11)Hotel: A Resort Simulator, Ringzero Game Studio (October 12)Saltsea Chronicles, Die Gute Fabrik (October 12)subpar pool, grapefrukt games (October 12)Reliefs The Time of the Lemures, Calepin Studio (October 14 – early access)PROTOTYPE, dennispr33 (October 15)Growth, VoodooDuck (October 16)NFL Pro Era II, StatusPRO Inc (October 16)Corn Kidz 64, BogoSoft (October 17)Wizard with a Gun, Galvanic Games (October 17)Dreadhunter, Trickster Arts (October 18 – early access)Laika: Aged Through Blood, Brainwash Gang (October 19)ENDLESS™ Dungeon, AMPLITUDE Studios (October 19)Hero Planter, Aleda Games (October 19)Warhammer 40,000: Warpforge, Everguild Ltd. (October 19)Cavern of Dreams, Bynine Studio (October 19)Here Goes Muffin, Project610 (October 23)Lethal Company, Zeekerss (October 23 – early access)Dungeon Full Dive, TxK Gaming Studios (October 24 – early access)Dark Envoy, Event Horizon (October 24)Cities: Skylines II, Colossal Order Ltd. (October 24)This is Fine: The Game, Andris Gauracs (October 30)Secret Shuffle, Adriaan de Jongh (November 1)Back to the Dawn, Metal Head Games (November 2 – early access)My Time at Sandrock, Pathea Games (November 2)Peaky Blinders: The King’s Ransom Complete Edition, Maze Theory (November 2)Thirsty Suitors, Outerloop Games (November 2)Delicious Dungeon, Digital Cauldron (November 3)Logic Town, Mark Ffrench (November 3)Warcraft® Rumble™, Blizzard Entertainment (November 3)Elfboarders, Lylek Games (November 6)Little Goody Two Shoes, AstralShift (November 7)Robocraft 2, Freejam (November 7)Cuisineer, BattleBrew Productions (November 9)Demeo Battles, Resolution Games (November 9)Don’t Die in the West, Funday Games (November 9)Dungeons 4, Realmforge Studios (November 9)GearBlocks, SmashHammer Games (November 9 – early access)Mob Factory, LiterallyEveryone Games (November 9)Big Fat Battle, Robot Squid (November 10 – early access)Bzzzt, KO.DLL (November 13)Howl, Mi'pu'mi Games GmbH (November 14)SUPER CRAZY RHYTHM CASTLE, Second Impact Games (November 14)Buildest, Arkhipov Pavel (November 15)Hell Throne, BoomBit (November 15 – early access)Lake – Season’s Greetings, Gamious (November 15)The Last Faith, Kumi Souls Games (November 15)Naheulbeuk’s Dungeon Master, Artefacts Studio (November 15)Flashback 2, Microids Studio Paris and Paul Cuisset (November 16)UKNON Jones & Guynelk – Awesome!, Guynelk ROSAMONT (November 19)Worldless, Noname Studios (November 20)Jujutsu Kaisen: Phantom Parade, Sumzap, Inc. (November 21)Lose Ctrl, Play From Your Heart Ug (haftungsbeschränkt) (November 30 – early access)Do you see any on the list that have already become favorites or find that we’re missing a title? Share your thoughts in the forums.We post new game releases and milestone spotlights every Monday on the @UnityGames Twitter and @unitytechnologies Instagram. Be sure to give us a follow and support your fellow creators.If you’re creating with Unity and haven’t seen your projects in any of our monthly roundups, submit them for the chance to be featured.That’s a wrap for October and November. For more community news as it happens, follow us on social media: X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.*Ranking as of December 6, 2023 at 8:30 am PT.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-roundup-october-november-2023</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-roundup-october-november-2023</guid><pubDate>Mon, 18 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to implement an offerwall placement strategy]]></title><description><![CDATA[Your offerwall monetization strategy is only as strong as engagement with your offerwall - that’s why traffic drivers are key. So how exactly can you utilize these call-to-action buttons to set up your monetization strategy for success? It’s all about location and messaging. Let’s break it down.Focus on high-traffic locationsTo maximize traffic driver engagement, start by putting your traffic drivers in high-traffic areas - specifically the home screen and store.Home screenWhen it comes to boosting engagement, it’s critical to put offerwall placements as early in the game as possible. The home screen is the most visible location in your game, so placing a traffic driver here will help you maximize your exposure.In fact, we’ve seen that the home screen placement makes the biggest impact on engagement. According to our research, when offerwalls include placements on the home page, it boosts their overall open rate by 38%.To boost engagement and your users’ experience, you can even get creative and put your placement in the specific home screen spot your users check the most (e.g. the stats bar).The home screen is also an ideal spot because users in the home screen are idle, and not in a hurry somewhere (e.g. to complete a level). As you expand your traffic drivers to new locations, try placing them in other screens where players spend idle time.StoreAnother strategic and natural location to place your traffic drivers is in the store. Players who come to the store are high-intent to get extra currency, so they come to the store looking for it. Since players are more eager in the store than they are in any other part of the game, traffic drivers in the store tend to have very high conversion rates.After all, timing is everything - players who come to the store are already looking for hard currency, so your offerwall traffic driver can give them the ideal opportunity to maximize their earnings.Not to mention, by promoting the offerwall in your game’s store, you’re offering players an opportunity to save their money and get hard currency for their time insteadInclude clear and exciting messagingLet’s say you decide to add an offerwall traffic driver to your home screen - now it’s time to make sure your placement converts. To optimize your placement strategy, your traffic driver messaging and design should be clear, straightforward, and exciting. The text should focus on the value proposition at hand: get hard currency for free with offerwall.In fact, according to our research, when developers emphasize in their pop-ups that the offer is free, they see a 33% boost in their overall open rate.Message to EarnMessaging is also key for notifying users about time-limited opportunities, like special offerwall promotions, otherwise known as currency sales. These promotions take place on holidays throughout the year, and users can get up to 10x the standard offerwall rewards, without any extra effort required.To encourage extra user participation during special promotions, the unique value needs to be clear - that’s where messaging, or Message to Earn, is key. The messaging can and should also be topical for users, so if a special promotion is taking place during a certain holiday, the messaging should fit the theme.In fact, when comparing two special promotion weekends, one where a client didn’t use any messaging, and another where they used Message to Earn, Message to Earn led to a massive spike in offerwall impressions.Getting startedSetting up a placement strategy is a marathon, not a sprint, but all you need is the right foundation to get started. To optimize your engagement and revenue, we recommend starting with a home screen and store placement, then making small adjustments to your messaging and A/B testing to see what works.If you have any questions about getting started with an offerwall placement strategy, just reach out to one of our experts.]]></description><link>https://unity.com/blog/implementing-an-offerwall-placement-strategy</link><guid isPermaLink="true">https://unity.com/blog/implementing-an-offerwall-placement-strategy</guid><pubDate>Wed, 13 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creative collective: The power of community]]></title><description><![CDATA[Last month, during Unite 2023 in Amsterdam, we welcomed educational leaders at the forefront of teaching Unity from universities across Europe, Australia, Africa, and North America. These innovative educators blend theoretical knowledge with practical, real-world experience.Through our discussions, a notable trend emerged: Higher education institutions are incorporating paid internships into four-year degree programs outside the standard summer break internship. For example, Hans Wichman from Saxion Applied University in the Netherlands, integrates yearlong paid internships for students into the Creative Media and Game Technology program. Similarly, Saihesh Maharaj from Midlands Computer Training Centre in Pietermaritzburg, South Africa, offers students paid work experience at a VR company founded by the college. These initiatives not only enhance academic learning but also ensure that graduates are prepared for the workforce with comprehensive portfolios and practical experience.In short, learning and earning at the same time is becoming a best practice to prepare future graduates for 21st-century careers. This approach isn’t just limited to students in Unity programs at universities; it can also be part of alternatives to four-year degree programs.What happens when creators don’t have access to high-quality Unity programs? Let’s examine one creator’s story to understand.I was lucky enough to meet with Egodi Beloved Ulinwa, also known as Love, from Portland, Oregon, to learn how a combination of discipline, brotherly support, and hard work could be an alternative to a four-year degree.“Back in high school, I started a creative collective with a few friends. We called it ‘Creative Crew’and began making games. It sort of dispersed after graduation when I went to college for accounting. I didn’t really like accounting, so I switched to computer science and still wasn’t happy. I really just wanted to get my creative juices flowing, so I called my friend Ben, who was part of the original Creative Crew, to see if we could reignite our work.”Love left school and stumbled upon an unexpected source of inspiration closer to home – his younger brother, Liight. For a 14-year-old, Liight demonstrated remarkable artistic talent. Love began nurturing his brother’s artistic abilities, steering him towards game art and animation.“There has never been anyone in my life who pushed me to take the next step and make it real,” Love recalled. “I wanted to be that for Liight, and from that day forward it was Liight, Ben, and me working on designing our game together.”Love and Liight started putting their designs into the Unity Editor and, according to them, “it looked terrible.” They realized they needed stronger skills, so they started teaching themselves everything, including game design, art, producing, and programming.Their self-taught approach included networking, getting tips from industry professionals, remaking their game several times based on user feedback, and learning for free through Unity Learn tutorials.Love recalls when Unity launched live classes during the early months of the COVID-19 pandemic. “I was on it every day, watching videos with my brother [and] learning how to optimize our game. Unity Learn made a major impact on our lives. Money has always been a hard part of game development, and having free classes was incredibly helpful to our work.”Today, Love runs Kaizen Creed with funding from Kickstarter, Microsoft, Sony, and other grants. The studio’s first game, 5 Force Fighters, follows five teenagers with powers granted to them by a mysterious figure, as they attempt to stop an evil villain from enacting his tyranny. The game’s audience is youth of color who adore anime and fantastical narratives – basically, the Creative Crew. “Games never really center people like us as heroes so we wanted to make sure we created something that spoke to players like us.”“We wanted to make sure we created something that spoke to players like us.”Passion, persistence, and the power of community are turning dreams into reality for Kaizen Creed. They’re charting a course from high school creativity to the cusp of gaming stardom. Love and his team are now actively looking for a publisher – if you have any leads, reach out. After all, it’s the power of our community.We look forward to sharing additional creator stories with you in the New Year. If you’re curious to hear even more about the changing workforce and how Unity is a driver for social impact, check out my past columns on future generations, AI, or global impact.]]></description><link>https://unity.com/blog/news/collective-power-of-community</link><guid isPermaLink="true">https://unity.com/blog/news/collective-power-of-community</guid><pubDate>Wed, 13 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Achievement unlocked: 10 Chambers, The Game Awards, and Unity]]></title><description><![CDATA[On December 7, millions of people around the world watched the biggest event of the year for video games: The Game Awards 2023. It was an incredible night celebrating some of the biggest games from the past year and the most anticipated games for the year to come. Following an evening filled with announcements and surprises, we’re excited to celebrate our friends at 10 Chambers and all of the other creators who announced their made with Unity games at the show.This year’s event was jam-packed with game reveals and updates, and there were a few Unity projects that caught our attention. One such reveal was The Odd Gentlemen’s upcoming interactive sign language musical and adventure/narrative game, Harmonium the Musical, with a charming trailer. In addition to new announcements, several Unity games picked up awards in different categories. Congratulations to the following made with Unity winners:Sea of Stars, Sabotage Studio – Best Independent GameHonkai: Star Rail, HoYoverse – Best Mobile GameCOCOON, Geometric Interactive – Best Debut Indie GameFor a complete list of winners and nominees, visit The Game Awards website.Some of the biggest news of the night came from 10 Chambers, a team who have worked closely with Unity since they first revealed gameplay footage from their cooperative horror shooter GTFO at Unite Berlin in 2018. This collaboration has continued over the years, most recently at Gamescom in Cologne, where the team joined us in a lively booth in The Ash restaurant (complete with an on-site tattoo artist) to meet players, dish out swag, and offer hands-on time with their game.On stage at The Game Awards, 10 Chambers’ Creative Director and CEO Ulf Andersson announced that GTFO would be releasing the game’s final chapter, “Rundown 8.0 Duality.” To celebrate this milestone, they hosted a free weekend through December 10 and also announced their first ever 40% off sale (through December 21) for the full game. If you’ve been waiting for the right moment to experience GTFO’s explosive action and gripping suspense, head to Steam before the celebration ends.Coinciding with the GTFO news, 10 Chambers followed with an even bigger announcement: the reveal of its next blockbuster game, Den of Wolves. Through a riveting cinematic trailer rendered entirely in-engine, onlookers were given a first peek at the action-packed heist FPS which builds on the studio’s DNA of creating thrilling cooperative shooters.When asked why they chose Unity as the engine for their game, Andersson called out the features that best support the studio’s goals and ambitions for the project. “We choose Unity for many reasons, amongst them is the short iteration times and incredible performance through the Burst compiler,” he says. “As a team, we are able to stay creative and agile throughout [a] project – this is key for us as we are a studio focused largely on gameplay.”“[With Unity] as a team, we are able to stay creative and agile throughout [a] project.”Get to know even more amazing projects using Unity, including the 15th Unity Award winners. If you’re creating with Unity and interested in being featured, share your project with us today.]]></description><link>https://unity.com/blog/games/achievement-unlocked-10-chambers-game-awards</link><guid isPermaLink="true">https://unity.com/blog/games/achievement-unlocked-10-chambers-game-awards</guid><pubDate>Tue, 12 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get our 2022 LTS best practice guides for optimizing mobile, console, and PC games]]></title><description><![CDATA[The phones might get bigger (or smaller), the PCs more powerful, and different visual styles may come in or out of fashion. But one thing remains constant in game development: You need to optimize your game for its target hardware.Luckily, our updated optimization guides are now available. Optimize your game performance for mobile and Optimize your game performance for consoles and PCinclude the latest updates from Unity 2022 LTS and provide you with an arsenal of useful tips, tactics, and workarounds to optimize your projects.These guides are built on the deep knowledge of the Accelerate Solutions team. Made up of Unity’s most senior software engineers, this team supports a plethora of Unity customers, diving deep into game projects to help identify points where performance could be optimized for greater speed, stability, and efficiency.Note: The Unity 2020 LTS versions of the guides are still available if you’re developing on that version of the engine. All of the advanced technical and creative e-books are available in the Unity best practices hub.Each guide includes actionable tips across profiling tools, programming and code architecture, working with assets, render pipelines, UI, and much more. There are also many new and updated links to additional documentation and other resources if you want to go deeper.Here’s a sampling of the topics the guides cover.Identifying the bottlenecks: How to understand the basic methodology of performance optimization and use the Unity Profiler and Profile Analyzer; how to account for mobile device temperature, work within a specific frame budget, and see if your project is CPU- or GPU-boundMemory management: How to use the Memory Profiler, reduce the work of garbage collection, and use the Incremental Garbage collectorProgramming and code architecture: How to minimize expensive code, why you should use hash values instead of string parameters, choosing the right data structure, and using ScriptableObjects to improve performanceProject configuration: How to disable unnecessary Player or Quality settings, or physics; how to avoid large hierarchies and work with VsyncAssets: How to import and compress textures correctly, check polygon counts, automate your import settings using the AssetPostprocessor, Unity DataTools, and how to leverage the Addressable Asset SystemGraphics and GPU optimization (mobile): When to use draw call batching, avoid too many dynamic lights, and how to use Light Layers effectively; how to use Occlusion Culling to remove hidden objects, avoid mobile native resolution, minimize overdraw and alpha blending, deal with post-processing effects, and much moreGraphics (console/PC): How to optimize render pipelines and the Shader Graph, remove built-in shader settings, strip shader variants, and work with reflection probes, shadows, and shader effectsGPU optimization (console/PC): How to benchmark the GPU, optimize fill rate and reduce overdraw, look at your draw order and render queues, reduce the batch count, activate Graphics Jobs, avoid tessellation shaders, and replace geometry shaders with compute shadersUser interface: Understanding the differences between UGUI and UI Toolkit; how to split up your Canvases, hide invisible UI elements, limit GraphicRaycasters and disable Raycast Target; why you should avoid Layout Groups, large List and Grid views, and numerous overlaid elementsPhysics: How to simplify colliders, adjust simulation frequency, modify CookingOptions for MeshColliders, use Box Pruning for large scenes, modify solver iterations, disable automatic transform syncing, reuse Collision Callbacks, move static colliders, use non-allocating queries, batch queries for ray casting, and visualize with the Physics DebuggerAudio: A comparison ofmono vs stereo; compression techniques, Load Type and techniques to unload muted AudioSources from memory, use of lossless files as your source, how to reduce your AudioClips and optimize the AudioMixerOptimizing your mobile, PC, and console games is a process that underpins the entire game development cycle. Like the lists of many points in the previous section show, these e-books provide a broad range of tips for every part of your game, like scripting, rendering, graphics, and profiling.Be sure to reference the optimization guides alongside our e-books on these related topics:Ultimate guide to profiling Unity gamesIntroduction to the Universal Render Pipeline for advanced Unity creators Unity 2022 LTSVersion control and project organization best practices for game developersLevel up your programming with game programming patternsLighting and environments in the High Definition Render Pipeline (HDRP) Unity 2022 LTSCreate modular game architecture in Unity with ScriptableObjectsWe hope you enjoy our latest optimization guides for mobile and console/PC games.You can find all the e-books (and many how-to articles) in the Unity best practices hub or via the advanced best practices page in Unity documentation.]]></description><link>https://unity.com/blog/engine-platform/updated-2022-lts-best-practice-guides</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/updated-2022-lts-best-practice-guides</guid><pubDate>Thu, 07 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[9 tips to boost your UA over the holidays]]></title><description><![CDATA[In a season marked by high installs per mille (IPMs), the holidays are an optimal time for user acquisition (UA). During this time, there’s a strong uptick in mobile user activity due to longer breaks from work and school, a spike in online shopping activity, and a rise in consumer spending, presenting a prime opportunity for in-app purchases (IAPs) and subscriptions.To optimize your UA strategy, doubling down on key channels, making data-driven decisions, creating content that drives conversions, and promoting high-performing creatives are key. Follow these tips to maximize your scale and improve your return on advertising spend (ROAS).Optimize your UA strategyAs you think about how to optimize your UA strategy during the holidays, consider these five techniques:1. Expand your reach: Acquiring the right users for your app during the holiday season means casting a wide net in markets with a higher number of high-quality users who are actively engaged. To make the most of the holiday season’s uplift in mobile engagement, increase your advertising reach to include all of the top geos, such as the US, UK, Germany, Canada, and France, to name just a few.2. Lower your goals and raise your bids: With access to greater volumes of high-value users during this time of year, you can lower your goals and increase your bids by ~15%. Doing so allows you to maximize scale and ROAS while bringing in users that are likely to retain well beyond the holidays.3. Use automated UA optimizers: Utilizing advanced machine learning can also help you acquire high-quality users at an optimal price. With the ROAS optimizer, you can maximize your in-app or ad revenue for D1 or D7.Additionally, the tCPA optimizer, which is currently in closed beta, will allow you to identify and acquire users more likely to complete specific in-app actions that are important to you. With so much going on during the holiday season both professionally and personally, automating your UA can free up time for where you’re needed most—like that holiday party that you still need to organize.4. Test offerwall campaigns: A good way to test the impact of offerwall during the holiday season is with campaigns that incorporate holiday messaging, include a sense of urgency, and offer users opportunities to make special purchases at the height of the shopping season. For more pointers on how to maximize growth over the holidays with offerwall currency sales, check out this blog.5. Run cross-promotion campaigns: Utilizing a cross promotional tool during the holidays can ensure that you not only retain the high-value users you’ve acquired, but also maximize the revenue they generate across your portfolio. Capture the influx of high-quality holiday users where they are most active by advertising your app in other apps within your portfolio. Doing so, you can keep these high-intent users within your reach.Refine your creativesIn addition to optimizing your UA strategy, make the most of the season by ensuring your creatives are holiday ready. Mastering your creative strategy can help grab the attention of users, positively impacting IPM and eCPM, and allowing you to buy high-quality users at a lower price. Here’s how.6. Refresh your creatives: As you refine your creatives, tap into holiday nostalgia to inspire compelling content and high-IPM creatives with some of these ideas:Use footage of real people who show pure emotionTest holiday images and seasonal concepts like snowflakes, gifts, and hot chocolateGive your pointer and buttons a holiday theme, like Santa7. Rotate your content: Amplify your best-performing holiday-themed creatives by switching up different variations of videos and end cards at least once a week. Fresh, timely, and diverse content can give you the competitive edge needed to attract new users.8. Update your custom store pages: Optimizing your app store landing page to match your holiday-themed creatives will lead to a consistent ad flow, which will likely improve your conversion rate and boost your IPM. Try this technique out with custom product pages in iOS and custom store listings in Android.Pocket Gems, a game developer with hits like War Dragons, offers a prime example of how updating your custom store pages can boost your UA. When launching their new game, Episodes, Pocket Gems connected versions of their app store landing page to specific creatives they were running on the ironSource network. As a result, they boosted their conversion rate by 8% and increased their IPM by 16%. Read more about their strategy here.Now imagine this same scenario but this time with a compelling winter holiday theme.9. Use long videos: The right length of videos that highlight more of your gameplay can attract high-quality users who are more likely to stay in your game. Recently, 60-second video ads have been performing well for this very reason. After all, only a grinch could resist a full minute of holiday-themed interactive content.The holiday season is a great time for advertisers to grow their app, leveraging the abundance of high-quality, engaged users who have embraced an online spending mindset.To ensure your app is ready to scale in the new year, it is essential to take action now by refining your UA strategy and capitalizing on holiday-driven IPMs. Running on ad networks, such as ironSource Ads or Unity Ads, can serve as valuable tools for maximizing your UA strategy over the holidays.Manage your campaigns]]></description><link>https://unity.com/blog/nine-ua-holiday-tips</link><guid isPermaLink="true">https://unity.com/blog/nine-ua-holiday-tips</guid><pubDate>Tue, 05 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Web runtime updates are here: Take your browser to the next level]]></title><description><![CDATA[At Unite 2023 we unveiled our latest web runtime offerings. This included more details on highly anticipated support for mobile browsers, an early look at what WebGPU can do for advanced graphics and rendering on desktop browsers, and an exciting announcement with our partners at Meta to bring Unity titles to the Instant Games platform on Facebook and Messenger. Keep reading for a deep dive on what’s in store for your next web-based project.Unity has a long history with web runtimes. In 2006, the Unity web player debuted as a plug-in for web browsers. With the advent of HTML5, browsers began to remove support for plug-ins, and Unity’s web player was deprecated in 2015. Next, we adopted WebGL to run games directly in the browser with asm.js. Unity was there at the beginning of the WebAssembly (WASM) design process, and we’ve been evolving alongside WASM ever since. This brings near-native performance of the Unity Engine to the web. In 2018.2, our WebAssembly solution replaced asm.js as the default.You haven’t heard from us in a while, but we believe we’re now at a tipping point for Unity content on the web.In addition to our tech advances, we’ve updated our naming scheme for the platform. WebGL is now known as Unity Web in order to separate WebGL technology from Unity’s web platform. We also want to prepare for a future with more than one rendering standard. Eventually you’ll be able to create a build using WebGL, one with WebGPU, or a single build with both.Offering content in this way gives gamers instant access to an experience with just the click of a link – or the scan of a QR code – without needing to install anything on their devices. In addition, when you bring your content into the secure environment of browsers, you have a direct connection between you and your gamers, without another online store getting in the way.Web doesn’t have an installation step like other platforms, which promises low friction and instant engagement. However, this means users need to download the runtime and starter assets on first load. This means that for us, for you, and for all end users, load time is everything. There’s a ton of work being done to reduce load times, and you’ll hear more about that later in this post.The depth and breadth of the engine gives developers the power to handle more complex simulations and interactive elements compared to other web technologies. That said, with users downloading the runtime and starter assets up front, smaller is almost always better in the context of the web – at least for now.Given those tradeoffs, there are certainly some types of games that work better on the web than others, such as casual and hypercasual games, with their bite-size play sessions and easy-to-grasp mechanics.Additionally, you can capitalize on the low-friction nature of the web by taking a small part of a larger game, say, your tutorial level, and making its own web build separate from the rest of the game and available for everyone. This allows for a frictionless first-time player experience without installing anything on their devices and gives you the opportunity to convert the player to the full native app after they’ve engaged with the mechanics.The Artemis Real-time Orbit Website (AROW) is an interactive real-time tracker for the Artemis I mission, launched last November and built with Unity.In mythology, Artemis is the twin sister of Apollo, so NASA named the series of missions that marks its return to the moon’s surface after the Greek figure.Space fans around the globe were able to track where the Orion capsule was in orbit, as well as see its eventual splashdown site in the Pacific Ocean, all within their desktop web browsers. NASA is planning to build on this tool for all future Artemis missions and expand it to track not only the Orion capsule, but all mission components.AROW was created by an intern, Seth Lambert, who has since become a full-time member of the NASA communications team.At Unite, we were proud to announce that Android and iOS browser support will be coming in Unity 6. You will soon be able to run your Unity games anywhere on the web, including in iOS or Android browsers themselves. You will also be able to embed your games in a web view in a native app or use our progressive web app template to make your game behave more like a native app, with its own shortcut and offline functionality. We’re confident that if you’ve been targeting Unity Web on mobile, you likely had success with high-end mobile devices released in the last two or three years, but your results may have varied depending on your content. By the time we ship Unity 6, we’ll have clearer guidance around the minimum hardware requirements for Unity Web on mobile.Here you can see our recent 2D sample project Happy Harvest running in Safari on an iPhone 15 Pro.Safari has started supporting WebGL2, allowing Unity Web to work on iOS as well as Android devices. We’ve seen continuous advancements in both mobile network speed and reliability, as well as ever-improving CPU and GPU power. With modern audiences hungry for instant experiences with very low friction, we believe players are now primed for short-form interactive content.As announced in the Unite Keynote, Unity has partnered with Meta to build support for their Instant Games platform. By unlocking this ecosystem for creators, players will be able to find and play games instantly on Facebook and inside Messenger conversations. With an audience of gamers in the hundreds of millions, this is a fantastic opportunity for you to extend your content’s reach to a whole new cohort.“The close collaboration between Meta and Unity has already yielded some promising early results in terms of performance gains for HTML5 games built using Unity,” noted Andrew Mo, product lead for Facebook Gaming at Meta. “We are excited to continue this momentum into the coming year and look forward to making it easier for game developers to bring their content to Facebook and Messenger.”He added, “We believe there’s a lot of potential in making games instantly accessible, especially when they’re designed to be played with your friends and community. And we’re excited to partner with Unity to unlock that potential on our platform.”“There’s a lot of potential in making games instantly accessible, especially when they’re designed to be played with your friends and community [...] we’re excited to partner with Unity to unlock that potential on our platform.” – Andrew Mo, Product Lead for Facebook Gaming, MetaThere are a number of things the Unity Web platform team is working on to facilitate this partnership, including a dedicated build target so you can test, optimize, and publish games in a streamlined flow tailored for Instant Games. There will be a C# SDK to interface with Instant Game APIs and a multitude of net new optimizations to ensure players can get into games in seconds.We’re also partnering with game studios to validate this new tooling. Launch partners include Coatsink, who have a few games on Meta’s platforms, including Ready, Set, Cook! Soon after Coatsink signed on as a launch partner, the team at Unity applied some early optimizations to this game, and the results were extremely promising.With just a 25% drop in load time, active sessions grew by 50% and click-to-play rates jumped from 35% to 58%. This means that at the very beginning of this optimization work, Ready, Set, Cook! went from most players never seeing gameplay to the majority getting into a game with their friends. This is just the tip of our optimization iceberg, but you can see how relatively small reductions in load time can make a huge difference in engagement.This graph shows a comparison between the original build provided by Coatsink and the optimized version with our latest Instant Games-ready tools applied. As you can see, we’ve already reduced the time to interactivity for Ready, Set, Cook! by over 50%. This particular test was run on a Pixel 5 throttled to 48 Mbps.In the chart above, you can see what the load times were before optimization and where we are currently using Ready, Set, Cook! as a testbed title. First, throttled to 48 Mbps – this is the global median mobile network speed as reported by Ookla, not even 5G. At the global median broadband speed, 86 Mbps, we’re even faster. On a solid 5G connection at 176 Mbps, we saw even faster speeds, but we also encountered diminishing returns as network bandwidth is no longer the primary limiting factor.To achieve fast load times, it’s necessary to look at all aspects of the download and initialization of your game within the web browser.A web build consists several files:WebAssembly (.wasm) file: This is the binary executable including the Unity Engine and your game logic.A large resource file (.data): This includes global metadata and asset resources for scenes included in the build.There may be asset bundles or Addressables.Your WebGL template (HTML and CSS), and some Unity Framework JavaScript files to get it all going.To begin with, there are some initial best practices you should follow to create a good release build, including:Telling the compiler and linker to build for optimal code sizeUsing Brotli compressionAdding HTTP preload tags to your web template to load any asset bundles and Addressables required for the first scene up front.We will be making these the default in the upcoming Instant Games build target.Also, consider how to reduce the perceived load time experienced by your players by displaying a splash screen or animation while the Unity Engine is loading and initializing.Depending on your game, the assets may be bigger or smaller than the WebAssembly.First, consider some best practices. Since the time taken to load that first scene is critical, consider using the Unity Addressables System to break each asset into a separate download. Then, add HTTP preload tags to preload Addressables that are required for the first scene. Subsequent scenes will then load assets on demand from the Addressables system.If your game has lots of audio usage, be sure to use compressed audio, and consider forcing it to mono and lowering the audio quality.Second, let’s look at the graphics settings used. Choosing ETC Crunch compressed textures gives the smallest download sizes and keeps GPU memory usage low on mobile devices. If you’re using ASTC compressed textures, look carefully at the block size, choosing larger block sizes for smaller textures. Likewise, configure shader stripping in the Player Settings for your project.WebAssembly technology isn’t standing still, and we’re bringing the updates to Unity. We’re incredibly grateful for the work done in the Web W3C Communities to support these advanced technologies. Web gaming isn’t possible without the investments and support from all browser developers. We particularly appreciate our collaboration with the Chrome team at Google. Together, we’ve worked on strengthening gaming use cases for WebAssembly and graphics performance for complex gaming workloads.The Emscripten compiler brings your Unity il2cpp build to WebAssembly. With each new Long Term Support (LTS) release, we include the latest version of Emscripten, allowing for faster development builds and smaller, more optimized release builds (which can take a while to build).In Unity 6,you will be able to enable 4GB memory support. This enables bigger real-time 3D experiences on the web, making use of the larger memory available to desktop browsers. In the future, this will pave the way for 64-bit memory support once all browsers release support for it.Currently, when you enable exception support for web builds, there’s some overhead, such as when code is added to all functions to support try/catch. With WebAssembly native exception handling, which will be available as an option in Unity 6, exceptions will be available with little overhead.Also in Unity 6, you can enable WebAssembly SIMD support. This accelerates CPU mathematical calculations with vectorized instructions. It works on both x64 and Arm devices, mapping the WebAssembly SIMD instructions to either SSE or Arm NEON when the web page is loaded. Improvements here vary by device and browser, but they are noticeable.These features are optional and are only available on newer web browser versions.The introduction of a new WebGPU backend marks a significant milestone for web-based graphics acceleration, paving the way for unprecedented leaps in graphics rendering fidelity for Unity web games.WebGPU is designed with the goal of harnessing and exposing modern GPU capabilities to the web. This new web API achieves this by providing a modern graphics acceleration interface that’s implemented internally via native GPU APIs such as DirectX 12, Vulkan, or Metal, depending on the desktop device you use.WebGPU will unlock support for new and exciting rendering features, enabling a level of graphics fidelity previously unseen on desktop web. Like other modern graphics APIs, lower-level control over the rendering setup and GPU execution unlocks new optimization opportunities, which could lead to reduced CPU and GPU overhead and improved throughput and latency.WebGPU also brings compute shaders to the web for the first time. GPU Compute Skinning radically improves the performance of rendering skinned mesh characters. Now, the vertex transformations are all offloaded to the GPU. The demo above takes advantage of GPU Skinning to mesh the skin of these robots to the skeleton underneath, while maintaining a relatively high framerate. If this was done on the CPU, it would run at single-digit FPS.Another example is Unity’s VFX Graph, which procedurally generates geometry directly within compute shaders. In the below particle simulation, we have just over half a million particles being animated, and they’re all being moved through compute shaders on the GPU.You may have seen the Boat Attack demo above in the past. Now, you can see it running entirely on WebGPU. WebGPU is enabled today on Google Chrome and Microsoft Edge on macOS and Windows. In this last example, we display an interactive Boat Attack, rendered in WebGPU.Throughout development of Unity’s backend for WebGPU, Unity graphics engineers have been working closely with the Chrome team to stress test WebGPU with large scenes and complex shaders, yielding fantastic results.The WebGPU graphics backend is still in development, and we do not recommend using it for production use cases. However, it’s available now in early access. Details for how to get started can be found in the graphics forum.Web is incredibly powerful because of its potential for frictionless engagement and a direct connection with your players. Because they download the WASM and starter assets up front, reducing load time is critical for web projects. Because of those tradeoffs, smaller pieces of content are typically best suited for the web.Coming late in 2024, build and deploy your Instant Games to Facebook and Messenger to access a whole new audience. If you would like to work directly with Unity and Meta to gain early access to tools and resources for making your Instant Games a success, or would like to stay up to date about this new platform support initiative, register your interest today.Mobile web support starts in Unity 6. Learn more about Unity 6 from the Unite Keynote.If you’re the tinkering type, go read our forum post about WebGPU – coming in Unity 6 – for information on early access to the WebGPU backend. Then, discover even more of the latest engine developments from the now-available, on-demand Unite 2023 sessions, including the Unite session “Instantly get your Unity game to more players on the web” (embedded below).]]></description><link>https://unity.com/blog/engine-platform/web-runtime-updates-enhance-browser-experience</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/web-runtime-updates-enhance-browser-experience</guid><pubDate>Thu, 30 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Create next-gen features with AI models using Unity Sentis]]></title><description><![CDATA[We created Unity Sentis to give developers the ability to bring AI models into games and applications. Now in pre-release open beta, Sentis allows for complex features like object identification, speech recognition, and smart NPCs in all types of projects.Once imported via the ONNX file standard, these AI models can be run directly on all Unity-supported platforms. This means that you can run the majority of AI models directly in the Unity Runtime on a user’s device, without the need for cloud infrastructure.The Unity Sentis package documentation is available here and can be downloaded via Package Manager. Once the package is installed in your project and you have the AI model you want to use, integration is straightforward.Ultimately, the model you choose to use in your project is completely up to you. Each model is dependent on the task you are trying to solve. You might start by browsing some interesting models on marketplaces such as Hugging Face, Keras, or PyTorch. You can also train your own model if you have a machine learning background, or use Unity ML-Agents for reinforcement learning needs. The main requirement is that the model must be converted to the ONNX file format. You can use an ONNX converter like TF2ONNX, if needed.See Import a model in the Sentis documentation for a code sample.Loading a model into Unity requires the same process you would follow with any asset. Simply drag and drop it into the Assets folder of the Project window within the Editor. Sentis will automatically optimize the imported model. Then, create a runtime Model object.See Load a model in the Sentis documentation for a code sample.Creating an input is fairly straightforward, just check the shape and size of the required model input in the ONNX Model Import Settings. You can then create a tensor from your data source. If multiple inputs are needed, store them all in a dictionary.See Create input for a model in the Sentis documentation for a code sample.When you're ready to run your model, you need to create a worker that breaks the model into tasks that can be run on the user’s device (CPU or GPU). Creating a worker can be achieved with this code example.Once your worker is set up, it’s time to run your AI model. Here, you are hooking up the inputs and outputs of the model to your game code, and then using the profiler to see if you are within budget. If it’s taking too much budget, you can “slice” your model across many frames, or explore other performance tuning options in Sentis.See Run a model in the Sentis documentation for more information on how to run your model, get outputs, and optimize the output.The final step is to test and deploy your game. Do this as you normally would on any Unity Runtime platform. You have a few options for shipping your model within the game binary: It can be embedded in the build, or you can run it as a streaming asset so that it’s downloaded only when needed. You also may consider encrypting your model for security reasons.See Encrypt a model in the Sentis documentation for a code sample.This beginner sample shows how to use the basics of Sentis with neural networks by running an object detection model to unlock doors in a locked room. It runs a handwritten digit (number) detection AI model called MNIST which can read written numbers and identify the most probable number drawn.This sample uses Sentis to build a bot opponent for a board game called Othello, where the game has configurable difficulty. It runs a neural network trained on the game rules and determines game win probabilities after each move, then predicts future moves that are most likely to win. It’s a simpler solution than a traditional approach using complex heuristics and tree traversal.This sample showcases how to integrate Sentis into an augmented reality (AR) experience. It uses a depth estimation neural network to allow real-world objects to occlude objects in the game scene. The depth is determined by processing video frames from the camera, so it is a more scalable solution than the traditional approach of using a lidar sensor which is limited to expensive phones.This works on mobile devices with a camera and does not require a lidar sensor.AI models can help you create engaging features that may either be impossible or very time consuming to develop with traditional code. The use cases span all categories of AI models, and the application depends on the models you choose to implement. Here are some examples, however, of instances where Sentis can aid the development process.One big reason developers choose Unity is the ability to publish more easily across multiple platforms – but optimization can still be a challenge. Using an upscaling model like Super Resolution from TensorFlow allows you to upscale low-resolution images or textures in your game to get to production quality, or help optimize assets only when needed, across different devices.Player interaction is key for connected online games when it comes to engaging with both NPCs and other players. With a speech-to-text model like OpenAI’s Whisper, you can convert live speech to in-game text. You can also bring an AI model in to automate dialog and create meaningful interactions between players and NPCs without the limitations of manual scripting.While a lot of focus in AI is on creating novel features, we’re also seeing great applications when it comes to improving game performance. One example of this is using an AI model to improve ray tracing on mobile by using an upscaling GAN AI model to hallucinate pre-rendered frames of a game scene. With an application like this, you could implement path-tracing features such as light refraction and caustics area lights in smaller projects without a hit to performance on the user’s device.Augmented and virtual reality (VR) are also a great potential use case for using AI models with Sentis. For example, you can use the Ultralytics YOLO model in VR to detect objects in a game scene, or in AR to detect real-world objects from the device camera feed. This can offer the user a super-vision sense that is only possible with AI.Unity Sentis is now available for free in open beta to all Unity developers operating on Unity 2021.3 or higher through the Package Manager.]]></description><link>https://unity.com/blog/games/create-next-gen-ai-models-with-unity-sentis</link><guid isPermaLink="true">https://unity.com/blog/games/create-next-gen-ai-models-with-unity-sentis</guid><pubDate>Wed, 29 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[UI Toolkit: New and updated demos for programmers and artists]]></title><description><![CDATA[We’re happy to announce the availability of two new and updated educational samples to support the different perspectives of programmers and artists/designers in creating professional in-game UI with UI Toolkit.UI Toolkit provides a set of tools for developing performant and scalable runtime UI for games and applications, custom extensions for the Unity Editor, and runtime debugging tools. Its core concepts and workflows will be familiar to you if you have experience developing web pages or applications.Our aim with these educational samples is to help you build rich, responsive, and scalable UIs with UI Toolkit. The new demo QuizU, for programmers, and the updated UI Toolkit Sample – Dragon Crashers for artists and designers, are two very different projects, each with extensive supporting instructional content.QuizU is a programmer-centric sample of an interactive quiz application that shows how UI Toolkit components can work together, leveraging various design patterns, in a small but functional game with multiple screens and game flow management.The demo consists of two parts: 10 small, digestible samples that demonstrate different aspects of UI Toolkit, and a mini quiz game that consolidates many of the techniques from the 10 scenes into a complete project.The minimalist visual style of the mini-game lets you focus on the mechanics of the UI implementation, without getting lost in the design details.The quiz game illustrates how to use the state pattern for game flow, manage multiple menu screens, use the model-view-presenter pattern, implement event handling in UI Toolkit, and more. The gameplay is a very simple quiz game mechanic but the intent is to show and teach implementation techniques that you can use in your own projects.By integrating some of these design patterns consistently into your project, you can improve code readability and make your codebase cleaner. Design patterns not only reduce refactoring and the time spent testing, they can speed up development processes for your entire team.Additionally, event-driven architecture, whereby game components communicate with each other through events, promotes loose coupling for scalability and testability.The second part of the demo consists of 10 small demo scenes. Each demo scene represents a specific technique or feature. Consider them as a set of recipes to inspire and guide you as you evaluate UI Toolkit for your next project. Here's a brief sampling of the UI Toolkit features and techniques the demo scenes illustrate:UXML and Visual Trees: UXML files form a hierarchical structure of UI elements. These visual trees serve as a blueprint for your user interface.Flexbox: The Flexible Box Layout Model (Flexbox) provides an efficient layout model for arranging UI elements dynamically within a container.Unity Style Sheets (USS): USS allows developers to customize UI elements with predefined styles. Reskinning your UI is just a matter of swapping style sheets.UQuery: UQuery simplifies the process of searching through a complex hierarchy of UI elements, enabling seamless navigation to specific UI components within the visual tree.Pseudo-classes: Pseudo-classes can be used to create interactive and animated UI elements with minimal extra code, adding extra “juice” to your visual interface (e.g., enlarging a button when hovering over it or changing a text field color after selection).UI Toolkit Event System: UI Toolkit has its own event system, designed to handle your UI's clicks, changes, and pointer input, even across complex hierarchies.Manipulators: Encapsulating related event callbacks into a single class, a manipulator promotes reusability and makes it easier to define user interactions (e.g., a click-and-drag manipulator for an inventory system, a gesture manipulator for a pinch-to-zoom effect, etc.).Custom Controls: The demo shows how to define and instantiate custom VisualElement through UxmlFactory and UxmlTraits classes. These custom controls can then be reused through scripts or the UI Builder.We recommend that you download QuizU using Unity 2022 LTS. You can also follow along in our series of articles, published on Unity Discussions, that accompany the demo. The articles are here:Welcome to the new UI Toolkit sample project QuizUQuizU: State pattern for game flowManaging menu screens in UI ToolkitThe Model View presenter PatternEvent handling in UI ToolkitUI Toolkit performance tipsIn September 2022, we launched UI Toolkit Sample – Dragon Crashers (you can read the launch blog post). This demo of a full-featured interface over a slice of the 2D mini RPG project Dragon Crashers, shows you techniques for leveraging UI Toolkit in your own applications. It’s the companion piece to the e-book User interface design and implementation in Unity, also released in late 2022.You can now download a new version of UI Toolkit Sample – Dragon Crashers for Unity 2022 LTS. The improvements and updates in this latest version include:Support for runtime landscape and portrait screen modes through themes and the GeometryChangedEvent in UI ToolkitImplementation of the SafeArea API to contain UI functionality within the usable screen area of a deviceIncreased fps limit for mobile devices to 60 fpsRefactored, simplified selectors and USS stylesheetsHigher resolution iconsImproved fixed VFX spawning position for different screen ratios and some cursor inconsistenciesRefactored design patterns for cleaner UI architectureNew learning content provided via the Tutorial Inspector windowWe also added a user guide for the updated project. This is in response to feedback we received from users who asked for better instructional content to help them understand the techniques and features used in the demo.Finally, a video walkthrough of the project is now available to help you navigate through the demo. Check it out:We hope you’ll pick up many useful tips with QuizU and the updated UI Toolkit Sample – Dragon Crashers. You’ll find all of Unity’s advanced e-books for programmers, artists, technical artists, and designers in the Unity best practices hub.]]></description><link>https://unity.com/blog/engine-platform/new-ui-toolkit-demos-for-programmers-artists</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/new-ui-toolkit-demos-for-programmers-artists</guid><pubDate>Mon, 27 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Top selling assets to supercharge your next project]]></title><description><![CDATA[Don’t miss the biggest asset sale of the year: Black Friday
From November 15–December 6, save 50% on over 300 Unity Asset Store bestsellers – including all of the assets in this blog post – to kick-start or speed up your next project. Plus, spark your creativity with up to 70% off limited-time Flash Deals.Ready to kick off your holiday season with Black Friday magic? Dive into a treasure trove of best-selling assets that will breathe new life into your latest game or other real-time 3D project. Whether you need a quick start or complex solution, continue reading for a look at 13 community-favorite assets.Let’s kick things off with FPS Engine, winner of Best Development Tool in the 15th Unity Awards. From publisher Cowsins, FPS Engine is a powerful solution for first-person shooter games. Its user-friendly design and extensive functionality make it an invaluable tool for developers.Text Animator by Febucci Tools earned its title as the Best Artistic Tool thanks to its remarkable ability to bring text to life through captivating animations, making it an essential asset for creating visually engaging and dynamic user interfaces.Last but not least, POLYGON – Elven Realm by Synty Studios excels as the Best Artistic Content asset based on its enchanting and low-poly 3D art, providing game developers with a captivating realm for creating fantastical environments that spark players’ imaginations.Explore a treasure trove of outstanding assets, including more nominees and winners, and uncover the solutions that can elevate your endeavors with this Unite 2023 asset roundup.Unlock the future of game development with the perfect blend of generative AI, seamless AI/ML integration, and behavior AI assets, all at your fingertips.Ai.Fy – Text To Image is a game changer for Unity editors from AiKodex. This asset is your ticket to transforming text into captivating images, turning rough sketches into lifelike textures, and generating concept designs and auto normal maps with ease. Plus, it offers a seamless solution for creating smoothness maps, making it a must-have tool for your creative arsenal.Next up, we've got Emerald AI 3.0, your key to crafting dynamic AI characters without the need for coding by Black Horizon Studios. With an array of AAA-quality features, Emerald AI simplifies the AI creation process while still offering a high level of customization. Unleash your imagination and breathe life into your characters effortlessly.High-quality 3D assets can instantly elevate the visual appeal of a game. They include detailed textures, animations, and realistic models, making it easier to create immersive and visually stunning experiences.Let’s start with Low Poly Ultimate Pack by polyperfect. Step into a world of low poly graphics with more than 3000 unique prefabs with colliders, adding inspiration scenes and stunning visuals to your game, ready to ignite the imagination of both players and creators alike.Immerse yourself in the future of game development with Triplebrick’s Sci-Fi Facility, a remarkable 3D environment tool that takes you to the depths of a futuristic world, offering endless possibilities for creating immersive sci-fi adventures and captivating gameplay experiences.Looking for cute character bundles? Meet the charming yet menacing creatures in the Monsters Ultimate Pack 02 Cute Series by Meshtint Studio. This 3D character asset pack adds a delightful twist to your game development, letting you create unforgettable encounters with a range of lovable and mischievous monsters.The Unity Asset Store offers a wide range of high-quality sound effects and music, adding depth, realism, and immersion to real-time 3D projects.Step up your audio with Universal Sound FX by Imphenzia. This multipurpose asset offers a vast library of high-quality sound effects, perfect for creating immersive, dynamic audio experiences that breathe life into your game world.Next, consider your game’s audio experience with the Pro Sound Collection by Gamemaster Audio. This versatile asset pack boasts a rich assortment of professional-quality sound effects, enabling you to add depth and realism to the auditory landscape, and immerse players in an unforgettable sonic journey.Finally, explore the RPG Magic Sound Effect Pack from WOW Sound, which includes over 700 elemental sound effects in nine categories, such as dark, electric, fire, ice, water, and more.Visual effects (VFX) assets help create magical visual elements, such as special effects, computer-generated graphics, and simulations, all with the goal of making your content more engaging, realistic, or imaginative. In game development, they are also used to create stunning and immersive visuals that enhance gameplay and storytelling.To get started, check out this gamechanger: All In 1 Vfx Toolkit. From Seaside Studios, this asset simplifies the creation of stunning VFX, making them accessible to all developers. Say goodbye to hours of painstaking development and welcome a new era of immersive game design.Looking to build a VR game? Check out Portals for VR as a VFX solution. This asset by Tom Goethals can transform your virtual reality experiences by way of captivating portals that unlock new dimensions of immersion and interactivity.With hundreds of popular, community-trusted assets on sale, find your next time-saving favorite during the Unity Asset Store Black Friday Sale.Keep an eye on the Unity Asset Store for future sales and promotions offering big discounts on the most sought-after top selling, free, or new assets – and more.]]></description><link>https://unity.com/blog/games/top-selling-assets-supercharge-your-next-project</link><guid isPermaLink="true">https://unity.com/blog/games/top-selling-assets-supercharge-your-next-project</guid><pubDate>Fri, 24 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to maximize growth with offerwall special promotions: tips for the holiday season]]></title><description><![CDATA[App engagement peaks during the holiday season - according to our client research, about half of people will play mobile games for at least an hour per day during the holidays. So, how can app developers and advertisers make the most of this uplift in traffic? By utilizing special offerwall promotions, otherwise known as currency sales.Special promotions are time-limited promotions that offer users 1.5-10x the standard offerwall reward in return for completing a task, like playing an advertiser’s game and reaching the end of a level, or filling out a survey. By participating in these promotions, developers and advertisers can both boost their revenue and acquire high ARPU users at scale.Combined with the uplift in mobile engagement during the holiday season, the offerwall is even more rewarding during the holidays. In fact, spend is the highest during holiday special promotions.Not to mention, the holiday season is the height of shopping season, so there’s even higher revenue potential than usual for retail.Let’s break down the most strategic ways app developers and advertisers can boost their KPIs with special promotions this holiday season.Users won’t necessarily know how valuable special promotions are unless it’s made clear to them - that’s why creativity with both text and graphics is key. Here’s how both advertisers and developers can step up their holiday messaging.App developersFor app developers using Tapjoy offerwall, the key to optimize your messaging is Message to Earn. Message to Earn are strategic pop-ups that notify and remind users about upcoming special promotions. As it turns out, utilizing messaging leads to massive growth in offerwall impressions.Special promotions messaging should be on brand with the unique themes from that promotion. That means that, just like advertisers’ offers, your Message to Earn pop-ups should include a festive theme based on the holiday.AdvertisersDuring the holiday season, advertisers’ offers themselves should create a festive mood that fits each upcoming holiday promotion. To best appeal to your users, advertisers should also include key terms like “gifting” and “holiday” in your messagingDuring the holiday season, timing is everything - so it’s critical that developers and advertisers create a sense of urgency during special promotions.App developersWhen using Message to Earn, or reminding users about promotions in general, app developers should highlight that the promotion is time-limited and exclusive. To minimize confusion, make sure to also clarify exactly when the promotion finishes. For example, this Message to Earn pop-up says exactly how long the special promotion lasts for, and clearly states when it ends.AdvertisersTo stay competitive and attractive, advertisers should also regularly switch out their offers during special promotions. This way, you can appeal to a wider pool of users. After all, different creatives will appeal to different users. And similarly to developers, advertisers should modify the text in their offers to make it clear that this offer won’t last long.Finally, timing is key when it comes to participating in special promotions. By setting yourself up to participate in special promotions ahead of time, you can maximize your opportunities for growth - especially during the busy holiday season.And with the Tapjoy offerwall, setting yourself up for special promotions is simple - just reach out to your account manager to get started.]]></description><link>https://unity.com/blog/offerwall-special-promotions-holiday-tips</link><guid isPermaLink="true">https://unity.com/blog/offerwall-special-promotions-holiday-tips</guid><pubDate>Tue, 21 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Podcast: Marketplace Morning Report’s ‘Skin in the Game’]]></title><description><![CDATA[Recently, I had the distinct pleasure to sit down with Unity Charitable Fund grantee Gameheads and Marketplace Morning Report podcast host David Brancaccio to talk about increased representation in gaming.Every day, our team learns of new ways changemakers are reshaping the industry to create more inclusive opportunities and communities. For nearly 10 years, Gameheads – a multi year Unity Charitable Fund grantee – has cultivated game development skills and industry opportunities for youth from underrepresented communities in Oakland, California. Through the use of video game design, development, and DevOps, young people ranging in age from 11–23 gain skills in the tech ecosystem, preparing them for college, careers, and everyday life.For the Marketplace Morning Report episode “Skin in the Game: Tech Leaders Roundtable,” I was joined by fellow Gameheads partners Kevin Johnson of Double Fine Productions and Trinidad Hermida of the Black in Gaming Foundation to discuss the opportunities we are seeing and the work being done to foster a more inclusive games industry. In addition to technical and durable skill development, we hope to ensure work environments are more welcoming of diverse perspectives.I invite you to learn more about this amazing collaboration and hear from these trailblazers by listening to the full episode, “Skin in the Game: Tech leaders roundtable,” hosted by David Brancaccio.To date, Unity Social Impact has awarded more than $8 million in grants to empower creators driving positive, inclusive change across the areas of education, digital health and wellbeing, and sustainability. If this sounds like you, learn more about and apply for our latest grant opportunity, the Unity for Humanity 2024 Grant.]]></description><link>https://unity.com/blog/news/marketplace-morning-report-skin-in-the-game-podcast</link><guid isPermaLink="true">https://unity.com/blog/news/marketplace-morning-report-skin-in-the-game-podcast</guid><pubDate>Mon, 20 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unite 2023: 15th Unity Awards, new dev resources, and the latest Tech Stream release]]></title><description><![CDATA[Yesterday, we were joined by 1,800 creators and our awesome sponsors in Amsterdam for Unite 2023. From the Keynote to breakout sessions, listening lounges to community chatter on Discord, the event was packed with expert tips, creator success stories, and technical deep dives for real-time 3D developers globally.Whether you were in-person in Amsterdam or following along from home, here are some highlights that we know you won’t want to have missed.Winners in the 15th Unity Awards were revealed, and we could not be happier for everyone the community voted to honor – including four-time winner MARVEL SNAP. You can see some of this amazing work in a highlight reel below, or read on for highlights across a few categories.When it comes to your favorite content creators, the duo below shines bright. Press play on some of our favorite videos this year, then check out their channels.Code MonkeyWinner of Best Devlog Series, Best Tutorial Series, and Best Livestreamer | Follow on YouTube, X, PatreonJasperDevWinner of Most Entertaining and Best Newcomer | Follow on YouTube, X, InstagramThe Unity Asset Store is a critical resource for the community and, between nominations and award winners, it’s clear that the value covers so many amazing publishers and packages. Click through to explore winning content now, then browse the Black Friday sale to spot nominees and shop bestsellers.Asset Store Publisher of the Year: More MountainsBest Development Tool: FPS EngineBest Artistic Tool: Text Animator for UnityBest Artistic Content: POLYGON – Elven RealmThose present in the “Go behind the scenes with the SPACE INVADERS: World Defense team” breakout session had a chance to hear from Google’s Dereck Bridié and UNIT9’s Jakub Jakubowski about how Google, TAITO, and UNIT9 used Google’s ARCore Geospatial API, Google Cloud, and the Unity Editor to help power the next generation of immersive gameplay. The team is excited about the opportunities this tooling can unlock and can’t wait to see what you build with the world as your canvas.If you missed the session, you can learn more about the technology used to build SPACE INVADERS: World Defense in this blog post from Google. To keep up with the latest updates on ARCore, Geospatial Creator, and more, follow Google’s AR and VR accounts on X, LinkedIn, and YouTube.A much-anticipated Unite session is our “road ahead” breakout on game development with Unity, which walks through important advances for the Unity Editor and Runtime – this year’s was no exception. In addition to announcements shared in yesterday’s Keynote, the session explored upcoming Unity 6 enhancements and revealed 2023.2 Tech Stream news.This latest Tech Stream brings you accelerated lighting workflow capabilities, improved XR interactions, and so many other cool features. Each release is supported with weekly updates until the next version (that’s why your feedback is critical).Not with us in Amsterdam? Don’t sweat it. Here’s an inside scoop on new resources that were revealed or shared during the event that you can access anywhere right now.Quickstart your multiplayer game with the Netcode for GameObjects package and Unity Gaming Services’s new multiplayer template, found in the Unity Hub. This resource is compatible with 2022 LTS and above and includes a Bootstrapper tool that helps you test faster using various network modes (Host, Client, Server) and dynamic configurations, in-Editor tutorials, and a barebone event-driven gameplay flow. If you’re looking for a starting point to build small-scale competitive games (e.g., real-time strategy games) that don’t require prediction, you’ve come to the right place.Revealed as part of the Keynote, an all-new 3D sample project based on the Universal Render Pipeline (URP) is now available. With it, artists and developers using 2022 LTS can explore how to develop, scale, and configure graphics for multiplatform projects.In addition to the main conference, we spent time this week hosting day-long programming catered to how our technology impacts gaming, industry, and education. Each Summit was an opportunity for leaders to dive deeper into Unity focus areas and look at current trends in real-time 3D. Session highlights include:“Creator roundtable: Taking your game into the future” (Games Executive Summit)“Building the next generation of car experiences, with Mercedes-Benz Group AG” (Industry Executive Summit)“Succeeding in the classroom with Unity” (Education Summit)We want to thank all of the Unity folks and community volunteers who came together to give back to our beautiful host city by removing plastic from the Amsterdam canals. All in, we were able to extract 30 large bags of waste from the water in just one day. Additionally, Unity has worked with climate-conscious companies to offset the carbon footprint of Unite.It’s always so great to connect with our Unity community. We hope you’ll continue to join us on the journey of building a world with more creators in it. Follow all the latest Unity happenings in the forums or on X, Facebook, LinkedIn, Instagram, YouTube, and Twitch. On-demand session recordings from Unite 2023 will be available soon. In the meantime, watch the Keynote or explore the latest news on Unity Industry and AI.]]></description><link>https://unity.com/blog/news/unite-2023-awards-developer-resources</link><guid isPermaLink="true">https://unity.com/blog/news/unite-2023-awards-developer-resources</guid><pubDate>Fri, 17 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unite 2023: New Unity Industry updates unveiled]]></title><description><![CDATA[From the Industry Executive Summit to the conference floor, Unite 2023 was packed with innovation and inspiring industry updates. Special thanks to our presenters at the Industry Executive Summit, including Mercedes-Benz, i2CAT Foundation, Airbus, Audemars Piguet, AGCO Corporation, the Vancouver International Airport, Capgemini, TomTom, and the Cincinnati Children’s Hospital.The event’s Keynote included exciting announcements about the release of Unity Cloud, AI tools, and more.Unity Industry enables developers, artists, and engineers across industries to build and deliver custom real-time 3D experiences for augmented reality (AR), virtual reality (VR), mobile, desktop, and web. Now it’s getting even better with updates to help Industry subscribers take the developer experience to the next level.Unity CloudAt Unite, we introduced Unity Cloud, a suite of new and existing cloud tools designed to accelerate development and improve collaboration between teams, now in early access. Cloud helps to make your Unity real-time 3D projects more creator focused, accessible, and connected.Unity Cloud Enterprise is now included in your Unity Industry subscription at no extra cost and includes Unity DevOps and the Unity Asset Manager.Unity DevOpsUnity DevOps is purpose built to provide robust version control and CI/CD solutions in the cloud, so you can release more often, catch bugs earlier, try more ideas, and deliver higher-quality experiences. Your Unity Industry subscription now comes with one DevOps seat, allowing you to:Leverage Unity Version Control to help your team of developers, artists, designers, and engineers collaborate efficientlyTest faster and more often with Unity Build Automation, which enables you to host multiplatform builds in the cloud to free up your computing resources and accelerate development.Unity Asset Manager betaTailored specifically for 3D content development, Unity Asset Manager is a digital asset management (DAM) tool that provides teams with a single source of truth for both owned and licensed content. Your Unity Industry subscription includes 120 GB of storage per seat, pooled with your organization, enabling you to:Manage your project’s 3D assets with simple upload tools, metadata tagging, version history, and sharing tools with permissions and rolesMake your 3D, CAD, or BIM data real-time 3D-ready on ingestion into the Asset Manager, and export your data to a wide range of formatsVisualize assets with the web viewer and collaborate with comments and annotations on any 3D assetIntegrate cloud assets into your experiences at runtime with cloud APIs, enabling you to stream massive 3D models to end users, collaborate on assets, and moreBuild cloud-connected applications with a ready-to-use reference project for viewing and collaborating on cloud-hosted 3D assetsPixyz Plugin 2.0Pixyz Plugin 2.0 for Unity includes new features and enhancements to help developers, 3D data preparation specialists, and 3D technical artists perform critical tasks more quickly. This tool is available to Unity Industry subscribers starting today. Here are some notable new features:Pixyz Plugin for Unity is now available directly in Unity’s packages registry, making it easier to add it to your projects.Unity’s Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP) are now supported. You can import and optimize your project’s CAD and 3D files with the Toolbox. Materials and textures are then automatically converted into URP- or HDRP-compatible assets.Unity Prefab compatibility has been significantly improved, including the ability to generate Nested Prefabs at import, keeping part of the hierarchy from CAD models.Explore the release notes for more information.Tools for AIAI is transforming every industry and opening the door to more creative possibilities. Unity is launching new tools to help industrial developers boost productivity and creativity while remaining fully in control of their vision. It changes how your customers interact with your experiences by embedding AI models directly into the runtime, so content reacts and responds to users in new ways.With your Unity Industry subscription, you get access to Unity Sentis, an AI tool that gives you the ability to leverage AI models directly in projects. Unity Sentis is free for subscribers who use Unity 6 and later.Unity Muse, a platform of AI-powered tools, apps, and more that simplifies and accelerates all aspects of real-time 3D development, was made available as an add-on subscription at Unite.Unity visionOS betaWe’re also thrilled to share that the Unity PolySpatial beta for Apple visionOS is now available to all Unity Pro, Enterprise, and Industry subscribers.This means that you can leverage Unity’s familiar workflows and powerful tools to build and bring your apps into a new frontier of spatial computing.Beyond support for the visionOS platform, you will be able to use Unity’s PolySpatial technology to run content alongside multiple applications while in the Shared Space on your device.With Unity Industry and visionOS, you can start creating Industry apps for Apple Vision Pro.Talk to our team to learn how Unity Industry can help your business build without constraints.]]></description><link>https://unity.com/blog/industry/unite-2023-unity-industry-updates-unveiled</link><guid isPermaLink="true">https://unity.com/blog/industry/unite-2023-unity-industry-updates-unveiled</guid><pubDate>Fri, 17 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2023.2 Tech Stream is now available]]></title><description><![CDATA[We’re excited to announce that the Unity 2023.2 Tech Stream is now available to download.Unity 2023.2 Tech Stream is the latest release of our 2023 development cycle. But after this version, we’ll be changing things up to make it easier to see what version is right for you.As announced in the Unite 2023 Keynote, we will be bringing back the clarity of our original release naming by changing the name of Unity 2023 LTS to Unity 6. This means that all 2023 releases, from 2023.1 (release in July) onwards until LTS, will be rolled up into the new Unity 6.With this change, you’ll start to see us migrating over to the Unity 6 naming convention for releases moving forward, but we’ve left this 2023.2 Tech Stream unchanged so you can find it easily. As always, our Tech Stream releases are fully production-supported until the next major release, so you can have confidence in using these great additions to the Unity Engine.For a sneak peek at what else will come in Unity 6, check out the Product Roadmap session from Unite 2023, where we talk about our focus on delivering elevated graphical performance, accelerated multiplayer workflows, dynamic AI capabilities, and support for web platforms on mobile and the latest XR platforms.Keep reading for highlights from this release, and check the full release notes for more details. We look forward to your feedback so we can continue working together to bring you the best possible Unity Editor experience.2023.2 features several improvements to cross-platform lighting performance, enhanced atmospheric capabilities for the High Definition Render Pipeline (HDRP), and improved artist workflows in VFX Graph to elevate the quality and realism of your projects.Adaptive Probe Volumes (APV) has received significant upgrades to enhance iteration times and runtime performance, especially for the Universal Render Pipeline (URP) on mobile devices. The introduction of HDRP Light Probe Data Streaming from Disk allows smoother runtime experiences, optimizing CPU pools to accommodate all probe data in large scenes.Previously, APV supported only per-pixel quality indirect lighting, however this may be unsuitable for a range of mobile devices since it can lead to APV running below acceptable performance levels at runtime. With per-vertex quality settings for APV, you can determine quality levels for indirect lighting from light probes that enable them to efficiently run light probe-lit environments on mobile devices.The production release of the GPU Lightmapper is a game-changer, providing lightning-fast baking of lightmaps and probes that surpasses the capabilities of the CPU Lightmapper. The GPU Lightmapper can more than halve the time it takes to process your lighting data as compared to the CPU Lightmapper, and it is ideal for larger scenes and higher-resolution lightmap textures.Additionally, if you’re using Static Global Illumination (GI), the new Interactive Preview functionality enables simpler authoring and troubleshooting of baked lighting data, replacing “Auto Generate.”If you’re building modular content, including Light Probes, you’re no longer limited to read-only Light Probes positions. With this release, we provide you with an API that allows you to modify light probe positions after probes have been baked.HDRP delivers enhancements to extend visual experiences. HDRP Night Sky now supports time-of-day transitions, integrating stars and celestial bodies like the moon for more immersive scenes. Volumetric Clouds have also received significant visual quality improvements through better shadow maps, delivering more realistic and visually appealing self-shadowing effects.SpeedTree visual quality is enhanced in HDRP, leveraging the new Transmission Mask to apply subsurface scattering only on leaves. You can now remove unintended light transmitted from tree bark and twigs, as well as fix the overly bright billboard lighting that doesn’t match the 3D geometry’s lighting.Improvements to decals include compatibility with the Pathtracer Shader Graph-based decals can affect transparent objects, so you can build procedural effects like raindrops, ripples, custom engravings, dirt effects on glass, and more.In 2022 LTS, we introduced VFX Graph 6-way lighting for HDRP, and now it’s available for URP. These tools allow you to bake lightmaps and simulate the lighting in sprite sheets at runtime, so you can create customizable effects, like smoke, clouds, or steam, that work under different lighting conditions.VFX Graph Motion Vectors support, in conjunction with URP Object Motion Blur support, allows artists to blur objects moving faster than the camera’s exposure time. This enables you to deliver impressive visual effects that are seamlessly integrated with systems like Temporal Anti-Aliasing.The new VFX Graph Templates and Wizard gives you access to a template window that provides predefined effects, acting as a starting point for creating unique effects with ease.Additionally, for more seasoned VFX artists and developers, we have added a Custom HLSL Block. This extends the possibilities of VFX Graph, so you can add effects like flocks (through neighbor search) or reading back from a buffer to trigger audio.Shader Graph updates include Shader Graph for UGUI, allowing you to create an infinite array of animated effects and tune the behavior and appearance of the UI while also reducing performance and memory costs.The latest visual improvements across multiple platforms enhance the graphics-rich experiences gamers crave, while improving overall mobile gaming with added stability for Android devices.With the release of High Dynamic Range (HDR) cross-platform display support, you can reproduce images with a higher range of difference in luminance that’s closer to natural lighting conditions. HDR output allows for better preservation of the contrast and quality of the linear lighting renders and HDR images displayed on devices. The Unity Editor and Standalone Players now also provide full HDR tone mapping and display support across all rendering pipelines and capable platforms, including mobile and XR.Unlock stunning hardware-accelerated ray-tracing effects and simulations with inline ray tracing, which can be utilized in rasterization and compute shaders when targeting DXR1.1-capable Windows platforms, Xbox Series X|S, and Playstation®5. You can now issue ray queries from within shaders in order to traverse the bound ray tracing Acceleration Structure and perform intersection testing.In partnership with Google, the install and runtime experience on Android were improved to help you reduce the download size and provide valuable insights into issues that impact the overall stability of your game.Play Asset Delivery and Texture Compression Format Targeting are coming to Addressables, the recommended Unity asset management solution. With the new Addressable for Android package, you can use a new or existing Addressables setup to benefit from Play Asset Delivery’s dynamic delivery options. When you combine this with Texture Compression Target Formatting, players will get textures customized for their devices, at a smaller initial install size. Read more about the new package here.You can now integrate a host of new C# APIs that provide access to your Application’s exit reasons. These insights can help you to fine-tune user messaging in case of crashes and Application Not Responding (ANR) events, send to your analytics, or even adapt how your game launches. You can read more in the documentation.Unity has added support for Meta Quest 3 in 2022 LTS, 2023.1, and 2023.2. You can create VR games with familiar workflows utilized for previous Quest devices. Moreover, you can leverage AR Foundation to craft captivating mixed reality experiences for Quest 3 and take advantage of enhanced passthrough to seamlessly blend digital content with the physical world.Get started with new project templates for mixed reality, virtual reality, and mobile AR. These templates help you build and deploy for OpenXR, Meta Quest, Windows Mixed Reality, and ARKit– and ARCore–supported devices. Learn the basics with example scenes that use AR Foundation and XR Interaction Toolkit (XRI) to demonstrate world tracking and input and interaction features. Download templates from Unity Hub, and learn more in our documentation.XRI will include loads of updates to help create better interactive experiences. We’ve updated the ray-based interactions with several visual improvements to increase accuracy when grabbing objects. To help you build more interactive cross-platform games, we’ve added new Gaze and Hand functionality, such as: target objects with gaze, swap hands with controllers, spawn menu on wrist, and more. We’ve also updated climbing-based interactions to help you build more flexible climbing functionality.These are only some of the key updates, and you can learn more about what’s new in both XRI 2.4 and XRI 2.5 in our documentation.You’ll find additional improvements to Unity Transport with support for WebGL and simplified integration with Unity Gaming Services Relay. This update also introduces a new Network Simulation tool to Netcode for GameObject that simulates network conditions.The latest update to UI Toolkit for Unity enhances the ease and flexibility of connecting data to UI elements, streamlining the development process for UIs in both the Editor and Runtime environments. The new Runtime Bindings feature can now be configured using the UI Builder or directly through C# code using a comprehensive API. Additionally, the introduction of UXML Serialization and Attributes allows you to quickly create custom UI elements, reducing the need for repetitive coding by leveraging C# Attributes and integrating Custom Property Drawers within the UI Builder.The UI Builder itself has received significant enhancements with new features that reveal the sources of style properties, faster canvas manipulation, and support for UXML Objects authoring. This includes editing capabilities for complex UI components like multi-column TreeViews and ListViews. There are also new UI Toolkit controls such as ToggleButtonGroup and TabView, alongside improvements to existing widgets such as icon support for Buttons and customization options for ListView and TreeView elements.Unity’s Scene View has been upgraded with a new Context Menu, accessible through right-click or keyboard shortcuts, created using UI Toolkit and extensible via C#. This menu offers quick access to common commands and can be tailored for new tool development. Spline functionality has also been improved, with new data storage options on Spline objects and a refined point-editing interface in the Inspector. The Scene View Context Menu can be utilized here as well, providing added efficiency when working with Splines.In this release, we’re introducing the Audio Random Container, or ARC. Designed to enhance audio workflows, ARC offers randomized audio elements for various applications within Unity. This addition marks a significant step toward creating more dynamic and immersive audio experiences without needing to code. Now available at the asset level, ARC provides the ability to configure randomized effects such as general ambient noises, impact sounds, dialogue clips, and more, which can be triggered as needed, rather than being configured through scripts.A new Highlights module is available for the Unity Profiler. It helps you quickly identify CPU/GPU bottlenecks so that you can have a starting point to your performance optimization journey. In 2023.2, this module is not enabled by default, so you will have to open the Profiler window, then select the Profiler Modules dropdown menu to toggle the Highlights feature on to use it.To learn more about what’s in the 2023.2 Tech Stream, check out the release notes for a comprehensive list of features and the Unity Manual for details on how to use them. As you dive in, keep in mind that while each Tech Stream release is supported with weekly updates until the next version, there is no guarantee of long-term support for new features.Also, remember to always back up your work prior to upgrading to a new version. Our upgrade guide can assist with this. For projects in production, we recommend using Unity 2022 LTS for greater stability and support.The Tech Stream release is an opportunity to both get early access to new features and to shape the development of future tech through your feedback. We want to hear how we can best support you and your projects. Let us know how we’re doing on the forums, or share your feedback directly with our product team through the Unity Platform Roadmap.]]></description><link>https://unity.com/blog/engine-platform/2023-2-tech-stream-now-available</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/2023-2-tech-stream-now-available</guid><pubDate>Thu, 16 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unite 2023: Deepening our commitment to game development]]></title><description><![CDATA[We’re excited to get together with the community at Unite 2023, our first large-scale in-person conference in four years. Unite is all about meeting up with Unity developers from around the world to make connections, share inspiration and expertise, and dig deep into the present and future of the Unity platform.Today’s Keynote is packed with developers sharing their stories and games, new Unity demos, and updates about what’s coming and what’s here now to support all of you as you design, build, deploy, and run video games.In the Keynote, we’re kicking things off with a preview of the next major, supported version of Unity – with a new name. Say “hello” to Unity 6, our next Long Term Support (LTS) release, heading your way in 2024. Unity 6 will come with major performance enhancements and accelerated multiplayer game creation, as well as early access WebGPU support and deeper XR device support.We’re previewing some of these capabilities in Fantasy Kingdom in Unity 6, a stylized environment demo built around assets from Synty Studios that showcases upcoming enhancements for rendering, lighting, and scaling richer worlds with significant performance improvements. A major part of the demo is Adaptive Probe Volumes, which deliver more immersive, natural lighting scenarios. GPU Resident Drawer, GPU Occlusion Culling, and Spatial-Temporal Post-Processing (STP) unlock hardware-based optimizations and additional performance boosts.Unity 6 will also bring support for a brand-new WebGPU graphics backend. Starting from Unity 6, you will be able to run your Unity games anywhere on the web, including in a web view inside native apps or inside a browser. The new capabilities unlock support for new and exciting rendering features and enable next-level of graphics fidelity.You can check out our Roadmap session, available on demand soon, for more details on Unity 6.While we can’t wait to bring you this new version, we’re also highlighting some key features from our latest Long Term Support release, Unity 2022 LTS, including its full DOTS support and Universal Render Pipeline (URP) graphics features in a 3D sample that shows you how to develop, scale, and configure graphics for multiplatform projects. Download 2022 LTS and the URP 3D Sample Project today to get started.Building on the multiplayer capabilities unlocked with LTS 2022, StickyLock Studios is joining us to describe why they turned to Unity when developing their multiplayer competitive shooter game Histera.We’re offering a sneak peek of the upcoming Megacity Metro demo and sample game, created to highlight the end-to-end capabilities you need to deliver awesome multiplayer games. Megacity Metro refreshes our Megacity sample from 2018 with a new aesthetic and greater focus on cross-platform play. This game sample will show you how you can create and scale multiplayer experiences with support for over 100 players through the use of Netcode for Entities and Multiplay Hosting.We’re also showing you Safe Voice and Moderation, tools for managing toxicity in your multiplayer games that you can access in open beta today to provide a safer community for your players.At Unite, we are also unveiling the new Unity Cloud, with tools to connect and streamline workflows. Unity Cloud includes Unity Asset Manager, Unity DevOps, centralized Team Administration, Editor integrations, and an improved Dashboard UI to bring order to the game development lifecycle.Unity Cloud is in early access today for every version and subscription tier of Unity, including Personal Edition.As part of the Unite announcements, we are also unveiling the latest evolution of both Unity Muse and Unity Sentis. Unity Muse helps you iterate more quickly using AI capabilities like Chat, Sprite, and Texture to refine your vision.With Chat, you can use natural language prompts to find exactly what you’re looking for. In seconds, you’ll have well-structured answers and instructions – and even project-ready code. Using the Sprite capability, you can produce and modify 2D art directly in the Editor, generating production-quality textures for 2D and 3D projects, in any style, all inside your project.We’re also offering a glimpse of the next set of Muse capabilities, currently in prerelease and fully supported later in 2024: Behavior, Animate, and Sketch. Behavior enables you to instantly set up character interactions. Simply describe the desired actions, and Muse will create behavior trees in the Editor. For both aspiring and skilled animators, Animate lets you bring humanoid characters to life with just a few text prompts. With Sketch, you can get started mocking up collaboratively on the web before importing your sample scene into the Editor.Muse produces game art that can be tweaked and modified for production use, so you can drop the asset directly into a Unity project. To learn more about how we trained our models and the techniques applied for quality-controlled outputs, check out our blog post on responsible AI and enhanced model training at Unity. Since it’s powered by our custom-built, responsibly trained model, you don’t have to worry about accidentally generating someone else’s copyrighted materials. We’re committed to ensuring that Muse provides safe and original assets for all paid subscribers. After this early access period, if anyone claims that your Muse-generated assets infringe copyright, we’ll defend you ourselves.Muse is available now in early access, and subscriptions are $30 a month. While Muse is still in early access, you can experiment as much as you want, without limits. During this period, as we learn with you, all features have unlimited usage. At the conclusion of early access, which we expect to be in the spring of 2024, we’ll update the Muse terms and conditions and allow you to purchase overages if needed, and we’ll give you plenty of notice before we make any changes. Follow the latest on Muse in Discussions, and be sure to check out the FAQ that will be updated as development progresses.With Unity Sentis, you can embed AI models in the Unity Runtime in your game or application, enabling enhanced gameplay and other functionality on end-user devices. You can take models from places like Tensorflow, Pytorch, Meta, and OpenAI, or marketplaces like Keras or HuggingFace. Sentis uses the open ONNX file standard to import and optimize them for the Unity Runtime.Because Sentis allows trained AI models to run locally on all Unity-supported devices, you can imagine and deliver experiences like smart interactive NPCs with open-ended quests, object recognition, and more – without worrying about cloud compute costs or latency.Sentis continues in open beta and is free for all Unity users at this time, with a full release to follow with Unity 6 next year. Follow the latest on Sentis in Discussions, and be sure to share the amazing things you build with the community.At Unite, we’re announcing a new partnership with Meta to bring Unity titles to Instant Games across Facebook and Messenger. This will be available in beta late next year.We’re adding more ways to build mixed reality games and experiences for Meta Quest 3 by officially launching AR Foundation for the Quest platform. This lets you bring the real world into your mixed reality games – and use our templates to start building for it right now.Earlier this year, Unity’s platform support for Apple Vision Pro was announced at WWDC, and the world was introduced to Unity PolySpatial, which allows you to build unique spatial experiences that can run alongside other applications in Apple Vision Pro’s Shared Space. Thousands of you, from 145 countries, registered interest to participate in our beta program for visionOS – and during the Keynote, we’re announcing that Unity visionOS Beta is open to all Unity Pro, Enterprise, and Industry customers as of today.Finally, we’re concluding the Keynote with a look at your amazing creations and by announcing the community-nominated and elected winners of the 15th Unity Awards. Congratulations to all the winners!Unite 2023 is happening now with technical sessions, roadmap deep dives, and more. Select content from the event will also be made available on YouTube over the coming weeks. Watch the full Keynote address below.]]></description><link>https://unity.com/blog/news/unite-2023-keynote-game-development-unity-6</link><guid isPermaLink="true">https://unity.com/blog/news/unite-2023-keynote-game-development-unity-6</guid><pubDate>Thu, 16 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Responsible AI and enhanced model training at Unity]]></title><description><![CDATA[Unity Muse helps you explore, ideate, and iterate with powerful AI capabilities. Two of these capabilities are Texture and Sprite, which transform natural language and visual inputs into usable assets.Introducing AI into the Unity Editor with Muse offers you the option to realize your vision more easily by being able to quickly transform ideas into something tangible. You can also adjust and iterate with text prompts, patterns, color and sketches that can transform into real and project-ready outputs.In order to provide useful outputs that are safe, responsible, and respectful of other creators’ copyright, we challenged ourselves to innovate in our training techniques for the AI models that power Muse’s sprite and texture generation.In this blog post, we share how Muse generates results, unpack our model training methodologies, and introduce our two new foundation models.As we debut Muse’s Texture and Sprite capabilities, we are also pioneering two bespoke diffusion models, each trained from scratch on proprietary data that is Unity owned or licensed.One key technique we employ to enhance the scale and variety of our datasets is data augmentation, which allows us to produce many variations from original Unity-owned data samples. This significantly enriches our training sets and enhances the models’ ability to generalize from limited samples. We also utilize techniques like geometric transformations, color space adjustments, noise injection, and sample variations with generative models, such as Stable Diffusion, to synthetically expand our dataset.Recently, Stable Diffusion has been the subject of ethical concerns because the model was originally trained on data scraped from the internet. We limited our reliance on pretrained models as we built Muse’s Texture and Sprite capabilities by training a latent diffusion model architecture from scratch, on original datasets that Unity owns and has responsibly curated. By using the Stable Diffusion model minimally as part of our data augmentation techniques, we were able to safely leverage this model to expand our original library of Unity-owned assets into a robust and diverse repository of outputs that are unique, original, and do not contain any copyrighted artistic styles. We also applied additional mitigations on top of this that we’ll describe below. Our training datasets for the latent diffusion models underpinning Muse’s Texture and Sprite capabilities do not comprise any data scraped from the internet.Below are some examples of content expanded through the augmentation techniques described above.After augmenting our existing data, there were still gaps in a range of subjects that we needed to fill. To do this, we trained Stable Diffusion on our own content until its behavior was significantly changed. Using these derivative models, we created entirely new synthetic data using a prefiltered list of subjects. The list of subjects went through both human review and additional automated filtering using a large language model (LLM) to ensure we did not attempt to create any synthetic images that would violate our guiding principles and go against what we were trying to achieve: a dataset completely devoid of recognizable artistic styles, copyrighted materials, and potentially harmful content.The result was two large datasets of both augmented and fully synthetic images, which we had high confidence would not contain unwanted concepts. However, as confident as we were, we still wanted to add even more filtering to ensure our models’ safety.Since our main priorities were safety, privacy, and ensuring our tools help you without negative impacts, we developed four separate classifier models that were responsible for additional dataset filtering. These models helped ensure that all content contained in the dataset met the standards we set with our guiding AI principles, as well as additional checks for image quality.Together, the reviewer models were responsible for determining that synthetic images:Did not contain the features of any recognizable humanDid not contain any non-generic artistic stylesDid not contain any IP characters or logosWere of an acceptable level of qualityIf an image did not pass the high confidence threshold required by any of the four reviewer models, it was discarded from our dataset. We decided to err on the side of caution and weighted our models towards rejection so that only the images with the highest confidence would pass the filters and make it into the final dataset.At Unite, we announced early access for Muse’s Texture and Sprite capabilities. The first iterations of the models that power these tools are internally referred to as Photo-Real-Unity-Texture-1 and Photo-Real-Unity-Sprite-1. These models are designed to only have a basic understanding of stylization and are primarily focused on photorealism.Additionally, if you want to guide the models to match an existing style in your project, you can teach our models how to create content in a specific art style by providing our style training system a handful of the your own reference assets. This creates a small secondary model that works in tandem with the main model to guide its outputs. This small secondary model is private to you or your organization as its trainers, and we will never use this content to train our main models.Because our models focus on photorealism, we did not have to train our main models on countless different styles. This architecture makes it easier to train the main models while maintaining our commitment to responsible AI and, at the same time, giving you a deep level of artistic control.These models today are just the beginning. We expect Muse to continue getting smarter and to provide better outputs, and we’ll be shepherding the models on this path with our model-improvement roadmaps.At the moment, our texture model is quite capable all around. It knows a significant amount of concepts, and you can freely mix completely unrelated concepts and achieve beautiful results, such as “metal slime” or “blue crystal glass rocks,” as shown above.While the model is quite capable in its current state, after learning how it responds to different prompts and input methods, we’ve observed that it may be difficult to achieve advanced material concepts with single-word prompts. There are additional methods to help guide the model to reach your vision, but we want to continue giving you more control, both in terms of basic prompts’ accuracy and by adding new methods of guiding the model.In the future, we plan to add a color picker, additional premade guidance patterns, an improved system for creating your own guidance patterns, and other new methods of visual input, which we’re currently experimenting with.Going forward, our primary focus for Photo-Real-Unity-Texture-1 is to identify any weak material concepts and continue to improve the overall quality and capability through frequent retraining of the model. Your feedback through the in-tool rating system is critical to helping us build the best tool we can by helping us identify weak points in the model’s capabilities. Combined with our frequent training schedule, we are rapidly improving the model, making it easier to use and more knowledgeable of the material world.Similar to Photo-Real-Unity-Texture-1, our foundational sprite model is overall very capable and knows many concepts. As the tool does not yet have built-in animation capabilities, we chose to focus our initial efforts on maximizing the quality of the most commonly used static sprite concepts. You can see the raw outputs of the base model in the image above. In normal use, these would be guided by a user-trained model to match a specific art style.While static objects are quite reliable already, we’re still working on improving the anatomical accuracy of animals and humans. It’s possible to get good results on these types of subjects, however you may encounter cases of extra or missing limbs or distorted faces. This is a side effect of our commitment to responsible AI and having strict limitations on what data can be used. We’re taking privacy and safety seriously, even at the expense of quality for some subjects in our initial early access release.This is a side effect of our commitment to responsible AI and having strict limitations on what data can be used. We’re taking privacy and safety seriously, even at the expense of quality for some subjects in our initial early access release.You may also experience cases where a generated sprite is completely blank. This is caused by our visual content moderation filter. We have chosen to be overly cautious during our initial launch when it comes to output filtering on Photo-Real-Unity-Sprite-1, and, as a result, some art styles may trigger false positives on the filter. We intend to ease the restrictions over time as we continue to receive your feedback and improve our content filter.We expect the quality of all subjects across the board to rapidly increase as we get feedback and continue to source more data responsibly. We intend to put Photo-Real-Unity-Sprite-1 through a similarly rigorous training schedule to Photo-Real-Unity-Texture-1.Unity Muse is our first step toward bringing greater creative control to our community with the power of generative AI in the most responsible and respectful way possible. We’ve built this product with a user-first focus, and we aim to continue to change and improve based on your feedback.We recognize the potential impact of generative AI on the creative industry, and we take it very seriously. We have taken our time in developing these tools to ensure that we are not replacing creators but instead enhancing your abilities. We believe the world is a better place with more creators in it, and with Unity Muse and the models that power it, we continue to support this mission.Stay tuned for future news about Unity Muse and AI development. If you have questions about these products, check out the FAQ on our website, or visit Discussions to chat with us directly.If you’ve come here from Unite 2023, we’ll be sharing session recordings from the event in the coming weeks. You can find full coverage here.]]></description><link>https://unity.com/blog/engine-platform/responsible-ai-and-enhanced-model-training</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/responsible-ai-and-enhanced-model-training</guid><pubDate>Thu, 16 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity for Humanity 2024 Grant now open, with wellness-focused Grant Judge, Jewel]]></title><description><![CDATA[We are always inspired by the innovative ways that creators are using real-time 3D (RT3D) to build a more equitable, inclusive, and sustainable world. Today, the Unity for Humanity 2024 Grant opens to continue our support of social impact creators and their critical work.For 2024, we will award a total of $500,000 USD across multiple projects, including a grant in collaboration with award-winning singer-songwriter, NYT bestselling author, and mental health pioneer, Jewel. Together, we’ll select a RT3D project that directly addresses themes of wellness as one of our 2024 grant recipients.Read on for additional details on our collaboration with Jewel and insights from some of our past grantees. If you’re working on a game, experience, film, mobile app, or other project that uses real-time 3D to support a United Nations Sustainable Development goal, learn more and apply today.For over 20 years, the Inspiring Children Foundation (ICF) – cofounded by guest grant judge Jewel – has transformed lives through a whole human approach to physical, emotional, and mental health.ICF’s complete portfolio of tools, including Jewel Never Broken (a free online community and curriculum), integrates mental health behavioral resources with best-in-class peer support. These trusted and proven tools have been the foundation for the emerging metaverse-based mental health platform Innerworld. Both ICF and Innerworld have helped countless young people build meaningful connections, learn mindfulness, and expand their self-efficacy to heal, grow, and flourish.We are proud to collaborate on this crucial mission to make wellness tools widely accessible. Explore the ICF mental fitness library and Jewel Never Broken to learn more about the theme for this grant category.For inspiration on your application, check out the amazing stories behind some of our past Unity for Humanity grantees. These teams have been able to accomplish so much, and you could be next.Origen, is a narrative XR piece designed to connect users to the environment through stories from the Indigenous communities that have safeguarded the land of the Amazon rainforest for centuries. Set in an ethereal forest, Origen guides viewers to consider their role in land stewardship and the cause-effect relationship we have with the Earth, while underscoring the importance of intergenerational storytelling.Emilia Sánchez Chiquetti and the Presencias team were awarded a Unity for Humanity Environment Grant in 2021 to support the development of Origen. Since then, the team has completed the Venice Biennale College and showcased the experience at the 2023 Venice Immersive Festival.Hear more about Origen from Kent Bye’s Voices of VR podcast interview with Emilia.Songs of Cultures, a 2022 Unity for Humanity Imagine Grant winner, is an app that uses AR to turn familiar environments into fantastic musical worlds, facilitating the social integration of children and migrant families. The project was developed by Binh Minh Herbst and her company A.MUSE, a female-founded interactive design studio, in partnership with educators and parents.With an emphasis on fun, Songs of Cultures encourages kids to learn about cultural differences, appreciate their own roots, and expand their horizons through the joy of music.Explore the app and embark on a musical journey around the world.2023 Unity for Humanity Community Grant winner, Amaru, is an app that offers a virtual self-care pet to assist users in developing new habits and practices for their mental health. Originally launched in May 2021, Amaru was specifically designed to address the growing mental health crisis by providing tools and resources for improving focus, managing anxiety, and alleviating depression.Downloaded over 700,000 times and boasting a 4.8 out of 5.0 rating on Google Play, Amaru has won endorsements from mental health and video game nonprofits like Take This, Guardians Mental Health, and Global Game Jam as well as awards from the NC IDEA and Unity for Humanity. Amaru has raised money for the National Alliance for Mental Illness (NAMI) and is the focus of multiple studies that indicate the game helps.While Amaru is currently only available in English, the team is embarking on a campaign to localize the app into more languages to radically expand its access and impact. Check it out today on your iOS or Android device.For more information on the Unity for Humanity Grant, see the FAQ at the bottom of our Unity for Humanity page. You can also join the Unity for Humanity Community Discord to connect with other social impact creators and find a channel dedicated to answering grant questions. If you’re ready to apply for a grant, submit an application by 11:59 pm PT on January 5, 2024.]]></description><link>https://unity.com/blog/news/unity-for-humanity-2024-grant-now-open</link><guid isPermaLink="true">https://unity.com/blog/news/unity-for-humanity-2024-grant-now-open</guid><pubDate>Tue, 14 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity fundamentals: 6 resources to help you master the basics]]></title><description><![CDATA[Tackling the basics and turning your efforts into an amazing project is difficult. It takes hard work, time, and dedication to develop the next great creative endeavor, so we’re here to help you master Unity fundamentals – no matter what you’re building.Read on for six key resources designed to help you with AR, VR, and more.You already know Unity provides powerful tools to make rich, engaging AR experiences that intelligently interact with the real world. So if AR sounds like the right path for your project idea, try these resources as a starting point.A marker-based app can recognize images (called markers) in the real world and make related content appear in the app. In this project, find out how to make a marker-based app with an interface that lets the user control a 3D model, text, and audio.Start the project.In this tutorial, learn how to use AR Session and AR Session Origin – both part of the AR Foundation package – to place and manipulate objects in AR.Get the tutorial.If you’re building an immersive VR experience for your next project, creation fundamentals and advanced audio insights are great places to start. Learn how to reach most headsets, and transport people to new worlds as your knowledge expands.In this official course, learn to design and develop VR applications by creating prototypes, attempting challenges, and completing quizzes that will build and solidify your skill set. At the same time, you will be guided through creating a VR project from start to finish, beginning with a blank design document and ending with a fully functional project.Take the course. (Bonus: Alternate version for educators building VR curriculums)The shape, layout, and physical materials of your environment affect how sound reaches your ears. In this tutorial, explore how to use audio spatializer plug-ins to match VR audio to the visual experience.Get the tutorial.When it comes to everything else real-time 3D, unlock your potential with code and scripting foundations.Program your own exciting projects from scratch in C#. As you iterate with prototypes, tackle programming challenges, and develop a project, this course will transform you from beginner to capable Unity developer. It will also prepare you to put your skills to the test on the Unity Certified User Programmer Exam.Take the course.Whether you’re new to Unity or an experienced programmer, this project will teach you the windows and tools that make up Unity’s Visual Scripting user interface.Start the project.Curious about what other educational tools are available? Check out the full Unity Learn catalog.]]></description><link>https://unity.com/blog/games/6-fundamental-resources-to-help-you-master-unity-basics</link><guid isPermaLink="true">https://unity.com/blog/games/6-fundamental-resources-to-help-you-master-unity-basics</guid><pubDate>Fri, 10 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to cultivate trust and safety: A primer for online communities]]></title><description><![CDATA[If the2023 Toxicity in Multiplayer Games Report is any indication, community and connection are key ingredients for a thriving game environment. In this guest post, Evil Mojo Games and Hi-Rez Studios’s Tony Jones shares tips for cultivating trust and safety within online communities.In the digital age, having an effective trust and safety program is not just an option; it's a necessity. Whether you're managing a social media platform, an e-commerce website, or an online gaming community, trust and safety issues are inevitable. It's not a question of if you have a trust and safety problem, but rather, how significant it is and what you're willing to do about it.Neglecting this critical aspect of online service to players can cost you and your team a game’s brand reputation, user engagement, and even revenue. Before you invest resources in a solution, here are some crucial steps to consider.The first and most critical step is understanding the problem you're trying to address, which requires a thorough analysis of your platform’s data. To do this, I recommend gathering information from various sources, such as surveys, voice chat monitoring, and user reports.Thorough data will help you identify your most significant opportunities for improvement. Some questions to consider might be: Are there specific behavior trends that stand out? And, where does your community interact the most?The better you comprehend your unique problem space, the more effectively you can address it.Trust and safety is a collective effort. As you work to build this externally, eEngage with relevant stakeholders within your organization, such as product managers, legal experts, and community managers. With this group, establish common ground and reach an agreement on the issues that need attention.Transparent communication is crucial at this stage. Ensure everyone comprehends the potential impact of investing in this process and the consequences of neglecting it. Then, determine which disruptive behaviors are less acceptable than others and define the actions you're willing to take to address them.In larger organizations, creating a charter or framework can serve as a helpful reference guide. At a minimum, establish clear guidelines to support your trust and safety initiatives.Now that you have a deeper understanding of the problem space and you’ve achieved alignment with stakeholders, it's time to prioritize the initiatives you want to tackle. Some may require product development and new features, while others may necessitate data analysis and months of iteration before a suitable solution is achieved.Recognize that not all issues can be addressed simultaneously, so focus on those that are most pressing or have the potential to yield the most substantial positive impact. Develop a roadmap for these initiatives, outlining the specific actions and strategies you'll employ to address each problem. Then, implement your plan.In conclusion, building an effective trust and safety program is essential for any online service. Start by comprehending your unique problem space, collaborate with stakeholders to establish clear guidelines and priorities, and then execute your plan.It’s important to remember that trust and safety is an ongoing process that requires continuous monitoring and adjustment as the online landscape evolves. By following these steps, you can safeguard your brand reputation, enhance user engagement, and protect your revenue while ensuring a safer and more welcoming online environment for your community.Find out more about the work Tony and his team are doing to build trust and safety on Evil Mojo Games and Hi-Rez Studios projects in this case study. And, if you’re gearing up to join us at Unite 2023, make sure to catch his breakout session, “Elevating your game community with AI-driven tools to reduce toxicity.”Still want more? Read these Made with Unity stories straight from our community.]]></description><link>https://unity.com/blog/games/trust-and-safety-primer-for-game-communities</link><guid isPermaLink="true">https://unity.com/blog/games/trust-and-safety-primer-for-game-communities</guid><pubDate>Thu, 09 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Our first-ever e-book for level designers is here]]></title><description><![CDATA[Level designers are the storytellers and master builders in game development, who, together with game designers, provide the script or blueprint for a game. They wear multiple hats and use multiple media, from paper and physical building blocks to prototyping ideas onscreen.We’re happy to announce that our first ever e-book for level designers is now available. Introduction to game level design is filled with work and career tips, and instructions on how to use the Unity tools that are most relevant to worldbuilding. It’s written by professional level designers working in the games industry and Unity product experts with backgrounds in game and level design.There are three sections in the guide. Stefan Horvath and Christo Nobbs, professional level designers with over a decade of experience in the games industry, wrote Part I. It details the responsibilities and workflows of a level designer in the preproduction and production stages of game development.Among other things, they explain how to:Prepare for game development with a research and references documentIncorporate the main camera, character, and the game controls into level designsTest ideas in a “gym” or “zoo”Set the pacing and gameplay beatsBlock out levels with 3D assets and keep assets organized for testing and iterationOrganize gameplay around “player pathing”Subvert players’ expectations and keep their attentionConsider using procedural design for large environmentsPart II is written for level designers who have little or no experience with Unity but are interested in learning how to use it. This section covers tools like Unity Visual Scripting, the Physics and Animation systems, and offers an introduction to the Unity Asset Store.Part III takes a deep dive into design tools, like ProBuilder and the Terrain system, that designers can use to create high-quality prototypes of levels to share with colleagues and stakeholders.Continue scrolling to read excerpts from Part I on how to effectively white/grey-box design ideas, and Part III, about some of the tools available in ProBuilder for blocking out designs.White-boxing (also called grey-boxing) is creating and arranging simple 3D shapes to identify which layout best suits the level design and style you’re aiming for.Keeping the white box simple allows you to manipulate the level without having to adjust art, lighting, and other details, resulting in a faster iteration process.Some level designers prefer to jump directly into white-boxing instead of creating paper designs first, since they like to work in the 3D space and get used to the game engine workflows. It’s up to you to determine which approach works best for you.Give each blocky asset a descriptive name to identify its use. This helps environment artists to understand what your intention is for each object when they need to replace them with the actual game assets.For example, is a block a wall, and, if so, does it need to have a minimum height to block the player’s view? A name for this asset could be “wall_interior_w2_h4_l6.” This label identifies the object, its location, and its measurements, details that are important to pass on to artists. Consistent formatting of your names will also make it easier for colleagues to understand their meaning.For ease of access, you can also choose to use floating text in the 3D space to identify your intentions, allowing a colleague to run a build without Editor access and see your plan.Finally, labeling your assets is not only useful for others looking at your scene, it’s also useful for you since it will help you keep track of what you’re working on.In addition to giving assets descriptive names, you can also apply materials to your blocks to clarify your intention. This is a handy way to differentiate between interactive and static objects, playable and non-playable space, breakables and non-breakables, and so on.The point of white-boxing is to try out ideas and iterate on them. To avoid spending time updating assets that are not finalized, your team should not create 3D assets until the designs have been approved.Once you have buy-in from other relevant team members and are satisfied with your level design, the artists can start going through the level and adding 3D assets to replace the white boxes.Team members might have trouble visualizing the final result from a white-boxed scene. A concept artist can help you concretize your vision by performing a paintover on your whitebox. This is a 2D representation of the level, so there’s no need to create 3D assets. Typically, paintovers are done by taking a screenshot of the level and then painting it to show a style and mood.You can also share the actual scene with a concept artist. If you’ve documented what each of the blocks represents, it will be easier for the concept artist to adhere to your overall vision.Another efficient way to amplify your white-box scene is to drop ready-made assets into it.The Unity Asset Store has many ready-to-use assets to visualize your ideas. For example, the POLYGON Prototype Pack from Synty Studios will help you “communicate design decisions with your team using the included notes and markers.”ProBuilder enables you to design, grey-box, prototype, and playtest levels in Unity without 3D modeling software or professional 3D artists. It provides many tools for creating and manipulating objects, including smoothing, stretching, flipping, mirroring, extruding, dividing, coloring, and texturing objects.The e-book includes detailed tables listing each tool and how to use it. This excerpt includes the introduction to ProBuilder and a few of these tools.When you install the ProBuilder package, make sure to import the support files (materials) that correspond to either the Universal Render Pipeline (URP) or High Definition Render Pipeline (HDRP). Otherwise, the objects might not be rendered. If you use the Built-in Render Pipeline, no action is needed.Create a ProBuilder primitive object from the top menu via GameObject > ProBuilder > Cube (for example). ProBuilder includes a number of primitive shapes that are useful for quick prototyping. These shapes, which also come with a Mesh Collider component for physics, can be added in the Scene view.ProBuilder meshes act like regular GameObjects in Unity. You can apply Transform values, add components, physics, and scripts, and animate them. However, standard Unity meshes are not the same as ProBuilder meshes: You can’t edit them with ProBuilder until you convert them into ProBuilder objects.Although it’s common to build a ProBuilder mesh by creating and editing it entirely with ProBuilder tools and actions, it can also be useful to modify existing assets. For example, you can import assets from the Unity Asset Store and modify them with ProBuilder.Smoothing groups serve to create sharp or soft edges between faces. When neighboring polygons do not share the same smoothing group, this creates a hard edge between them. Imagine the polygons that comprise a car’s windshield, or front window: They would make up one smoothing group, while the polygons that comprise the hood would be another. If the windshield and car hood polygons are all part of the same mesh, both will be smoothed but not treated as the same surface.In ProBuilder, new shapes have all faces smoothened by default. For more control with smoothing groups, uncheck the Smoothing option (as shown in the image above).The Smooth Group Editor Window offers options to help you set up and previsualize the different smoothing groups.With the Preview option, you can adjust the transparency of the color code of the faces by smoothing group, and blend them in with a dither effect. You can also previsualize the normals of the vertices.The previous example looks like the following in the Game view:You can manage texture mapping on a selected mesh with the UV Editor. Let’s look at its main work areas.1. This is the same toolbar as that in the Scene view, with options to move, rotate, and scale vertices, edges, or faces.2. These buttons enable you to manipulate the UV mapping coordinates directly from the Scene view when they are enabled. They are colored when active and gray when not.The button with arrows locks the transform tools on the Scene view to manipulate the UV instead of the transform of the selected element in the Scene view (edge, vertice, face, or object).The “brick” button enables the preview of the texture coming from the shader at coordinates 0,0.The camera button will output the texture with the polygon wireframe overlaid on the texture for reference when editing the image in DCC software. By default, it will save the file in your project Assets folder.3. Select UV to edit the UV mapping for shaders. Select UV2 (read-only) to regenerate your baked or real-time lightmaps.4. There are two ways to work on UV mapping for the selected object:Auto: ProBuilder manages the texture mapping according to the settings in the Actions panel, even when you resize the mesh. This is the default option and probably enough for most level design work, especially if you will only work with repeating patterns for prototyping purposes.Manual: This method allows you to precisely unwrap and edit UVs, render UVs, and more. It’s recommended for positioning the UV elements against a detailed image. You can watch this tutorial for a step-by-step look into advanced texturing with manual UVs.5. You can manipulate the elements to neatly arrange them in a way to match the shader texture. In the image above, a selected face is highlighted in blue.Color coding while boxing out levels can help convey your intent and ideas more clearly. For example, you could communicate to the rest of your team which elements are destructible by coloring those red.In the Vertex Colors feature, select the “plus” icon to create a color palette. Customize a palette to define the colors (and the number of colors) that you want in your scene.To color an object, select it in the Scene and click Apply. You can apply color to individual faces as well, then share your saved palette of colors with your team so that everyone is using the same color-coding standards.Under Tools > Probuilder > Dimensions Overlay, you can enable floating labels indicating the size of the current selected object in the scene.You can use the Export feature inside Probuilder or install the FBX Exporter package to export your prototyped level assets, with the correct dimensions, to a DCC application for an artist to polish and refine them.Defining a clear work plan with the team will allow for a smooth and efficient design process where the artists will be able work based on the right size and shape of the 3D environment objects seamlessly.You can also use ProBuilder or Unity Asset Store tools to “kitbash,” which involves combining different assets to create something original and new. The idea comes from modeling hobbyists, who mash up model train or airplane kits to build their own custom projects.Our level design e-book is the latest addition to Unity’s collection of advanced guides for professional developers, artists, technical artists, and designers. All the e-books are written by Unity experts and free to download. You can find them and many other resources on the Unity best practices hub.]]></description><link>https://unity.com/blog/games/e-book-for-level-designers</link><guid isPermaLink="true">https://unity.com/blog/games/e-book-for-level-designers</guid><pubDate>Wed, 08 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Update to the Unity Editor Software Terms]]></title><description><![CDATA[Editor's note: As of September 12, 2024, Unity has canceled the Runtime Fee. You can find the latest information on Runtime Fee here.--------------------------------------------------------------------------------On September 22, Marc Whitten shared an open letter with the community detailing changes to our runtime fee policy. One critical commitment was that “we will make sure that you can stay on the terms applicable for the version of the Unity editor you are using – as long as you keep using that version.”To follow through on this commitment, we have updated the language to the Editor Terms based on feedback from our employees and community. Our goal is to make sure that the terms Unity users accept state that they can stay on those terms for the named version of Unity they are using, regardless of any changes to the Unity terms afterwards. As of today, this update will be added to our GitHub repository and unity.com/legal.We've also made sure to explicitly state that the runtime fee is not in effect unless a game is created with or upgraded to the next major release of Unity (shipping in 2024) and beyond.Our overall goal is to make it easy and transparent for developers to choose a version of Unity that works for them so that they can be successful.]]></description><link>https://unity.com/blog/news/unity-editor-software-terms-update</link><guid isPermaLink="true">https://unity.com/blog/news/unity-editor-software-terms-update</guid><pubDate>Mon, 06 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Explore cross-platform mixed reality development on Meta Quest 3]]></title><description><![CDATA[XR technology continues to advance, with new devices featuring better sensors, graphics, and performance. These improvements enable creators to innovate and more fully explore the depths of their imaginations.Earlier this year, we announced that you could start developing mixed reality for Meta Quest 3 via a preview of tools. With the recent release of Meta Quest 3, our cross-platform mixed reality development tools for Meta Quest have moved from experimental preview to fully supported in Unity 2022 LTS.Unity’s AR Foundation is a cross-platform framework for building mobile and headworn AR/MR device applications. AR Foundation simplifies AR and MR app development by providing a unified API that works across multiple platforms, so you don’t need to maintain separate implementations. You can write code and deploy it to platforms including Meta Quest, HoloLens 2, and mobile devices like iOS and Android.Our AR Foundation support for Meta Quest 3 is built on top of OpenXR. For several years, we’ve maintained and distributed an OpenXR plug-in that provides an implementation of the OpenXR standard within the Unity engine and establishes a common interface between XR hardware and software. By using OpenXR, we continue to bring development in line with an industry-adopted standard.We are excited to announce version 1.0.0 of a new OpenXR: Meta package, available in Unity 2022.3 LTS and later. This package contains Meta-specific OpenXR extensions and Meta’s AR Foundation provider plug-in for Meta Quest. In addition, the OpenXR: Meta package automatically pulls in AR Foundation and OpenXR plug-ins as dependencies when it’s added to a project.AR Foundation is designed to work natively with XR Hands and the XR Interaction Toolkit.XR Hands is a new XR subsystem which adds APIs to enable hand tracking in Unity. It includes built-in support for Meta Quest devices through our OpenXR package, along with other devices that support hand tracking via OpenXR, like HoloLens 2.The XR Interaction Toolkit (XRI) is a high-level, component-based interaction system for creating VR and AR experiences. It provides a common framework for interactions and streamlines cross-platform creation whether you’re mediating between poke, rays, and grab interactions, incorporating haptic feedback, visualizing hand meshes, or responding to player selections using animation, blendshapes, or scale changes.Templates provide new and experienced creators with a simple starting point and extensible content that promotes established interaction patterns for XR creation. Talking with XR creators, we’ve learned that you’re looking for richer content, better project configuration, and access to advanced features.We’re excited to announce new VR and MR templates in Unity Hub for Unity 2022 LTS. Both are currently available for download.The new mixed reality template includes features like plane detection, passthrough, simple interactables, spatial UI, and hand and controller presence to help you get started. We know managing packages can be tricky, so the template comes pre-configured with packages for AR Foundation, OpenXR, XR Hands, and the XR Interaction Toolkit.In addition, the template shows you how to spawn a variety of example interactables by touching surfaces in the physical environment with the Object Spawner. The Object Spawner takes into account various conditions like collision position in relation to the field of view, as well as palm angle in relation to the surface.The new mixed reality template also demonstrates the ability to switch between a fully immersive virtual environment and a mixed reality passthrough. It uses a simple fade transition, a configurable shader for plane visuals that are reactive to the position of the user, a hand-coupled menu, and much more.You can start building apps for Meta Quest 3 with AR Foundation and OpenXR today by downloading Unity 2022 LTS (version 2022.3.11.f1) or later. When starting a new project, launch the Unity Hub and select the Mixed Reality Template.You can also add packages to your project manually. If you have upgraded to Unity 2022.3.11f1 or later, search for OpenXR: Meta in the Unity Package Manager (UPM) to add it to a project. Alternatively, you can click the plus (+) symbol in the top left of the UPM, select “Add package by name,” and type com.unity.xr.meta-openxr. Once downloaded, it will automatically bring in dependencies like the OpenXR plug-in and AR Foundation.The Unity XR team is always working to improve AR Foundation and the templates. As we continue development, we want to hear from you and would love to see what you build with these tools.]]></description><link>https://unity.com/blog/engine-platform/cross-platform-mixed-reality-development-on-meta-quest-3</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/cross-platform-mixed-reality-development-on-meta-quest-3</guid><pubDate>Wed, 01 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Porting Unity to CoreCLR]]></title><description><![CDATA[We’re still hard at work bringing the latest .NET technology to Unity users. As one team member leading this effort, I’m excited to share further progress with you. Part of the work involves making existing Unity code work with the .NET CoreCLR JIT runtime, including a highly performant, more advanced, and more efficient garbage collector (GC).This blog post covers recent changes we’ve made to allow the CoreCLR GC to work hand in hand with Unity engine native code. We’ll start at a high level, then get into more technical details.Memory allocation done in the C# language is managed by a garbage collector. Anytime memory allocation is required, the code allocating that memory can ignore the memory when it is no longer used. The GC will helpfully come by later and recycle that memory for other code to use.Unity currently uses the Boehm GC, which is a conservative, non-moving GC. It will scan all thread stacks (including managed and native code) looking for managed objects to collect and once it allocates a managed object, the location of that object will never move in memory..NET uses the CoreCLR GC, which is a precise, moving GC. It tracks allocated objects only in managed code, and will move them in memory to improve performance. This allows the CoreCLR GC to work with much less overhead and provide your game with better performance characteristics.Both GCs are excellent at what they do, but they place different requirements on that code using them. The Unity engine and editor code have been developed based on the requirements of the Boehm GC, so to use the CoreCLR GC, we need to make a number of changes to the Unity code, including to the custom marshaling tools Unity wrote - the bindings generator and the proxy generator.You can think of managed code as a home in the city, where there is a coffee shop around the corner and a grocery store down the street. Let’s call it “Managed Code Landia.” For developers, this is a great place to live. But sometimes, we want to get away to the “Native Code Wildlands,” where C++ code can be found in its natural habitat.When traveling between the two, you can bring some managed memory, since the marshaling railroad allows a carry-on suitcase. Over in the Wildlands, you might want to pick up a souvenir and bring it home.It’s convenient that the GC will dutifully follow and recycle any memory you might no longer be using, no matter where it is. But the GC has a lot of work to do. All of those threads and call stacks quickly add up. Many trips to the Native Code Wildlands later, and the GC is spending most of its time chasing you around.Most of the work to port the Unity engine to CoreCLR is about making that engine code work with the GC, hand in hand.The GC and the marshaling railroad have made an agreement not to let any managed memory cross over into the Native Code Wildlands. With that in place, the GC has much less work to do, leading to improved efficiency. The CoreCLR GC operates in this mode, knowing precisely what objects exist and only dealing with managed code. This also allows it to move objects around in memory for more efficiency.Fun diagrams and emoji are cute, but we need to actually implement across a production code base that has evolved for more than a decade, with thousands of round trips from managed to native code and back.Thinking about this from a systems design perspective, we need to find the boundaries. Unity has two important internal boundaries:Calls from managed code to native code (similar to p/invoke), through a tool called the Bindings GeneratorCalls from native code to managed code (similar to Mono’s runtime invoke), through a tool called the Proxy GeneratorBoth of these tools generate C++ and IL code to act as a railroad, shuffling memory between our two worlds. For the past year, developers at Unity have been modifying these two code generators to ensure they don’t allow GC-allocated objects to leak across the boundary, and provide useful diagnostics when that does happen. We have also been finding code that tries to brave the journey across the managed/native boundary itself, and we’re moving it to one of these code generators instead.Of course, this is all happening while hundreds of other developers at Unity are actively changing the engine code, delivering new features and bug fixes to users. We’re looking to modify the rocket while it is in flight. To better understand how we’ve been able to make this transition incrementally, let’s dive deep into one aspect of this managed/native boundary: System.Object.Any memory allocated by the GC in .NET must be tied to an object of type System.Object. It’s the base class for all .NET types, so it is often the focal point of memory that crosses into native code. Unity Engine C++ code uses the ScriptingObjectPtr abstraction to represent a System.Object:This is how that managed memory ends up in native code: ScriptingBackendNativeObjectPtr is a pointer to GC-allocated memory. Unity’s current GC traverses all call stacks in native code, conservatively looking for memory which might be a ScriptingObjectPtr. If we can change those instances to no longer be pointers to GC-allocated memory, then we can lower the burden on the GC and eventually change to the faster CoreCLR GC.Instead of having just one representation for ScriptingObjectPtr, we need it to have one of three possible representations:GC-allocated pointer (the current representation)Managed stack referenceSystem.Runtime.InteropServices.GCHandleThe GC-allocated pointer is a temporary step toward removing all GC-unsafe usages. It allows the ScriptingObjectPtr to continue functioning as it does currently. The intention is to remove this use case once all of the Unity code is safe for the CoreCLR GC.The managed stack reference is an efficient way to represent an indirection to a managed object in the case where a value is passed from managed to native. The address of a GC-allocated pointer variable is passed to native code (rather than the GC-allocated pointer itself). This is GC-safe because the local address itself is not moved by the GC and the managed object is kept alive on a call stack in managed code. This approach is inspired by a similar technique used within the CoreCLR runtime.The GCHandle serves as a strong indirection to a managed object, ensuring the object is not collected by the GC. If you happen to leave some memory in Managed Code Landia while you vacation in the Wildlands, the GC knows you want to preserve it until you come back. This is similar to the managed stack reference case, but requires explicit lifetime management. There is additional overhead due to the construction and destruction of a GCHandle. This overhead means we want to use this representation only where it is absolutely required.This is implemented using a new type, ScriptingReferenceWrapper, which replaces ScriptingBackendNativeObjectPtr.I’ve removed the many constructors or assignment operators here – they are used to enforce proper lifetime management of the internal resource.Note the size of this type – it consists of only one uintptr_t value, which has the same size as a pointer, meaning ScriptingReferenceWrapper is the same size as ScriptingBackendNativeObjectPtr. Then, we can do a 1:1 replacement without code, with ScriptingObjectPtr knowing the difference.The key here is the 4-byte alignment requirement mentioned in the code comment.Memory allocation done in the C# language is managed by a garbage collector. With that in place, we can reuse two bits of that value to indicate which of the three representations is used. The GetGCUnsafePtr and FromRawPtr methods then provide temporary interoperability for the GC-allocated pointer representation while we transition the Unity code.In an ideal world, the ScriptingObjectPtr abstraction would be unnecessary – managed memory would never show up in native code. But there are places where allowing this is useful, so we expect to complete the GC safety work in the engine, preserving managed stack reference and GCHandle cases and removing GC-allocated pointer cases entirely.This is where the agreement between the GC and the code generators comes into play. Now that all three subsystems can understand the possible representations of ScriptingObjectPtr, our team is replacing the usages in the engine code incrementally. We can remove ScriptingObjectPtr where it is not necessary, and use the most efficient representation where it is. As long as each usage is changed end to end, the different representations can all live side by side and the rocket continues to fly.With a fully GC-safe engine, we can enable the CoreCLR GC and ensure that it only needs to look for memory to recycle in Managed Code Landia, meaning it will do much less work and leave more time each frame for your code to execute.For more on Unity’s transition to CoreCLR, visit us in the forums or tune into Unite 2023 where we'll talk more about Unity's product roadmap. You can also connect with me directly on X at @petersonjm1. Be sure to watch for new technical blogs from other Unity developers as part of the ongoingTech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/porting-unity-to-coreclr</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/porting-unity-to-coreclr</guid><pubDate>Fri, 27 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 key takeaways on consumer engagement with shopping apps]]></title><description><![CDATA[Online shopping is common practice these days, but how well do we really know how consumers prioritize shopping apps on their phones?We surveyed 4,771 respondents based in the United States using our proprietary market research solution to look at consumer sentiment towards their shopping apps, the importance of shopping apps in their lives, and the key drivers for downloading new apps on their mobile devices.This summary offers insight to help you make informed decisions about advertising and monetizing your shopping app – especially with the holiday season right around the corner. Here are the most notable findings:Shopping apps are a popular destination1. 90% of respondents have multiple shopping apps on their phone, and 95% of respondents actively use at least one of their shopping apps once a month.Almost half of the respondents (48%) have 2-4 shopping apps on their phone, 29% have 5-9, and 13% have 10 or more, with almost all using at least one frequently, signalling a level of comfort and reliance using shopping apps. What’s more, is that 67% of respondents list 1-3 shopping apps among their top 10 most used mobile apps.Nonbinaries are super users with 22% having 10 or more apps on their phone, compared to 7% or males and 10% females. Additionally, 51% of nonbinaries consider 4 or more of their shopping apps among their top 10, compared to 30% of males and 26% of females.Takeaway: With the majority of consumers having multiple shopping apps on their mobile phones, and shopping app downloads nearly doubling between H1 2018 and H1 2023 to over 1.5B downloads*, there's room for yours too. User acquisition strategy needs to be top of mind, in order to find the right high value customers. Test and iterate your strategy to keep ahead of the curve. To keep users engaged, make sure you’re defining your unique selling point, and all the reasons a consumer should keep coming back.Early app exposure can help long term success2. Over 70%** of respondents are more likely to shop from an app if it’s already on their phone.22% of respondents are likely to download a new shopping app when they set up their phone for the first time, making it critical to get your app in front of users as early as possible. Looking at demographics, 37% of nonbinaries compared to 28% of males and 12% of females would download a new shopping app when setting up their phone for the first time. With a crowded app marketplace, being highly visible at early touchpoints can set your app up for success.Takeaway: Getting your app on a consumer’s device early is critical for long term success, since it removes barriers to entry and makes it accessible to the consumer from the get go. Engage users right out of the box as they’re setting up their new devices with Aura from Unity.
Deals drive the download3. 49% of the respondents are likely to download a new shopping app if it offers special promotionsDiving deeper into demographics, 56% of women are more likely to download a new shopping app if it offers special promotions, otherwise known as currency sales, and 55% of Gen X feel the same.Takeaway: Having specialized offers exclusively available through the app is a huge incentive for first time users, such as offering a discount or monetary savings for first-time downloads especially considering who your target customer might be.Keep shoppers connected through communication4. 44% of respondents would like their favorite app to notify them about offers and promotions, with 26% answering that they were unsureAlmost half of respondents are comfortable with communications from shopping apps, with an opportunity to nurture those who might be on the fence. Providing relevant information for your customers can be a great retention strategy.Takeaway: Sending push notifications to keep customers engaged doesn’t pose a threat for churn. Remember to keep your communications as relevant as possible to your customer in order to provide a deeper level of personalization.
Shopping apps are becoming more mainstream for consumers’ point of purchase, with verticals like clothing, health, and beauty primed to lead the charge. With this shift in behavior, you want to make sure there is strong app visibility, reasons to keep coming back, and easy navigation. Aura from Unity is an on-device advertising channel that recommends your app during critical moments of a device’s lifecycle, such as during device setup, as a native part of the device experience.*Source: Source: data.ai Intelligence . Note: Includes apps in the Shopping genre using data.ai's App IQ taxonomy. iOS and Google Play combined. China is iOS only.** 42% of respondents are more likely to shop from a shopping app if the app is already downloaded on their device with 31% saying they are unsure. This combined is 73%Methodology:Carried out a voluntary survey to 4771 respondents, all based in the US in June 2023Shopping app categories were defined as Clothes, Homeware, Electrical items, Health and beauty items, Sports and outdoor and Toys and gamesDue to the unique nature of grocery shopping, all of the respondents who marked down groceries as something they buy on their phone, also marked down at least one other shopping category aboveAll respondents shop through mobile apps on their phone (and possibly also mobile web, but not solely mobile web)Additional stats:What are people buying on their phonesClothes are the most popular item bought through mobile phones, with 57% of respondents marking it down. Health and beauty items follow next at 43%Shopping apps are a popular destination64% of respondents shop through both mobile apps and through the mobile web48% of respondents have 2-4 shopping apps on their phone, 29% have 5-9 and 13% have 10 or more95% of respondents actively use at least one of their shopping apps once a month. 74% use 2 or more at least once a month67% of respondents list 1-3 shopping apps among their top 10 most used mobile apps. 9% list 6 or more in their top 10The battle of the shopping apps35% of respondents have deleted a shopping app in the past year to free up space on their phone. 27% have done so as they only downloaded the app for a specific purchaseCheaper prices was the reason why 48% of the respondents would shop on one shopping app over the otherA more convenient app and the quality of the products came in at a close second and third at 39% and 40% respectively49% of the respondents would download a new shopping app if it offers special promotions, and 45% prefer an app as it’s more convenient than a website22% of respondents are most likely to download a new shopping app when they set up their phone for the first time42% of respondents are more likely to shop from a shopping app if the app is already downloaded on their device with 31% saying they are unsureShowing the love for shopping apps57% of respondents have at least one shopping app on their home screen, as opposed to on a different page or in a folder42-47% of respondents count good customer service, buying something they were really happy with and a smooth buying process, as reasons to provide a rating in the app store of a shopping app44% of respondents would like their favorite app to notify them about offers and promotions, with 26% answering that they were unsureDemographic breakdown80% of females compared with 57% of males and 27% non-binaries, shop for clothes through shopping appsNonbinaries are super users:22% of nonbinaries have 10 or more apps on their phone compared with 7% of males and 10% of females40% of nonbinaries actively use at least 5 or more of those apps at least once a month, compared to 21% of males and 18% of femalesAt 51%, nonbinaries consider 4 or more of their shopping apps among their top 10 apps on their phone, compared to 30% of males and 26% of femalesFemales are the most price sensitive:58% of females would choose one shopping app over the other if it offered cheaper or more reasonably priced productsAt 56%, females are more likely to download a new shopping app if it offers special promotions through the app37% of non-binary versus 28% of males and 12% of females would download a new shopping app when setting up their phone for the first timeFemales (33%) are considerably more likely than male (25%) and non-binary (11%) to download an app only for a specific purchaseMales are considerably more likely to delete an app because it was too complicated to navigate (22%) or because it was asking for too much personal info (21%)Age27% of Gen Z would download a new app if they heard about it from someone and 15% would download it after seeing a commercial55% of Gen X would download it if the app offers special promotions Surprisingly, 5% of Gen Z do not use any shopping app once a month, compared to only 2.7% of Gen XAt 7%, Millennials most likely to use 10 or more shopping apps at least once a monthAt 42%, Gen Z are the most likely to delete an app to free up space on their phone Gen X are the least likely to delete a shopping app, with 22% saying they haven’t deleted a shopping app in the past year ]]></description><link>https://unity.com/blog/5-key-takeaways-on-consumer-engagement-with-shopping-apps</link><guid isPermaLink="true">https://unity.com/blog/5-key-takeaways-on-consumer-engagement-with-shopping-apps</guid><pubDate>Fri, 27 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Toxicity in gaming is escalating: Find solutions for safe and engaged communities]]></title><description><![CDATA[From shared victories to friendly rivalries, it’s the community that makes a game resonate. Introducing Unity Community Solutions – a suite of products designed to strengthen player connections, enhance safety, and enrich the social gaming experience. Plus, get the latest on player behavior in the just-released 2023 Toxicity in Multiplayer Games Report.Communication is the heart of multiplayer games. It shapes player interactions, strategies, and immersion in a game’s universe. The newly enhanced Vivox Voice and Text Chat is designed to elevate this experience with engine-agnostic, cross-platform services to enable player communication.We’re thrilled to introduce a new Vivox SDK for the Unity Editor, which offers better functionality and an enriched gameplay experience, including:Simplified API: This removes unnecessary classes and provides a suite of events out of the boxEase of integration: The updated version substantially reduces the amount of boilerplate code required to use the SDK to under 10 lines of code (compared to the 400 lines of code previously required)Refined token management: Our new automatic token handling via the Authentication SDK ensures token management is hassle-free. (For those who’d like more customization, the Vivox Token Provider interface provides flexibility in creating bespoke token vending solutions)With Vivox audio source integration, you can seamlessly blend Vivox Voice Chat audio directly with the Unity engine’s audio system. This means that you can weave voice chat into your game’s audio mix and apply captivating effects.Audio occlusion: With 3D audio capabilities, players are treated to an immersive sound environmentCharacter interaction: Vivox audio enhances in-game realism, aligning character voices with their actions and movementsCustomizable and adaptable audio effects: Customize Vivox audio with a range of effects to enhance the overall audio experience and add depth and nuance to your gameplayVoice is not the only way players communicate, which is why we’ve added more features to Vivox Text Chat:Adaptive chat filter: Use advanced machine learning to cultivate a more respectful and inclusive gaming environment. Our new moderation feature is an ML-based system that doesn’t just block generic profanities – it intelligently scans for variations of inappropriate words, even when they are camouflaged with symbols or misspellingsChat history and anti-flooding: Offer players the ability to revisit past chats and maintain a balanced chat environment by preventing message floodingEditing and deletion: Allow players to edit or delete their messages, providing them with control over their chat interactionsText evidence management: Empower your moderation team with Server-to-Server API, making it simpler to access flagged messagesLarge channel support: Cater to massive multiplayer experiences with channels supporting up to 2,000 usersGet startedYou can test out player comms in your own multiplayer titles today by registering an account or contacting us. For those going from Vivox Unity version 15.1.x or earlier to 16.0.0, follow this guide for a smooth transition.A fun gaming experience can swiftly turn sour when toxic behavior intrudes. According to the recently released 2023 Toxicity in Multiplayer Games Report, toxic behavior is escalating. The proportion of players who’ve witnessed or encountered this behavior jumped from 68% in 2021 to 74% in 2023. In addition, almost 3 out of 4 multiplayer gamers admit they’d avoid a new game with a reputation for a toxic community.In July, we launched Safe Voice in closed beta. It is now available in open beta for integration with moderation capabilities. Together, Unity Moderation and Safe Voice empower you to make confident and informed decisions, ensuring a more harmonious environment for players. With this end-to-end moderation platform, enhanced with evidence integration from Safe Voice, you are not just reacting to incidents, you’re understanding them. Use the evidence to make moderation decisions like:Temporarily or permanently banning a player from the game by blocking their login through Unity AuthenticationTemporarily or permanently restricting player access to Vivox Voice ChatOur suite of safety solutions seamlessly integrates with Vivox Voice Chat, enabling you to build communities that are safe by design.Hi-Rez Studios recently integrated Safe Voice to elevate player experiences in Rogue Company, a multiplayer tactical shooter. Millions of players now benefit from an environment where engagements are about strategy, not disruptions. Explore the case study to learn more.More at Unite 2023If you’re gearing up to join us at Unite, make sure to catch our breakout session, “Elevating your game community with AI-driven tools to reduce toxicity,” for a chance to explore how AI can be a game-changer in crafting positive player communities.Earlier this year during GDC, we announced Friends and Leaderboards in open beta. Since then, we’ve had close to 300 customers add it to games and heighten players’ social experiences.Now in GA, both Friends and Leaderboards are available for free for a limited time.Friends ensures players can create and nurture lasting in-game relationships with features ranging from sending friend requests to monitoring online statuses.Whether tracking daily challenges, clan battles, or high-score face-offs, Leaderboards fosters a competitive spirit among players. As developers, you’ll get a customizable platform while players receive fresh challenges with every login.For Triangle Factory, who implemented the Friends SDK on Breachers, this broader suite of community solutions enables easy, cross-platform relationship building among its players. Senior Developer Tijs Van de Velde noted, “Supported by excellent documentation and samples, the implementation was a breeze. [Because of this tool], our users will be able to form friendships and easily join each other in-game.”Learn more about Breachers on the team’s guest blog.Games today thrive on collaboration, competition, and a strong sense of community. As these experiences blend the lines between virtual and reality, they craft memorable shared moments. Unity Community Solutions provides developers with the tools to tap into this trend, enhancing player experiences and deepening connections. Ready to dive in? Start creating now.]]></description><link>https://unity.com/blog/games/toxicity-gaming-escalating-solutions-for-safe-engaged-communities</link><guid isPermaLink="true">https://unity.com/blog/games/toxicity-gaming-escalating-solutions-for-safe-engaged-communities</guid><pubDate>Thu, 26 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity September 2023 roundup: Awards voting opens and other community highlights]]></title><description><![CDATA[September was a whirlwind. We heard your feedback and will continue to listen.This roundup is all about celebrating you and the incredible projects you created and released last month – plus the candidates for the 15th Unity Awards.First, let’s hear it for the PC game studios who knocked it out of the park in the latest Steam reports. Steam’s top 20 new releases in August featured nine games made with Unity, including Sea of Stars, MARVEL SNAP, Sunkenland, and Blasphemous 2, which all secured spots in the top 10. Additionally, NARAKA: BLADEPOINT, Rust, and Unturned saw success as members of the top 20 most played games on Steam.*In September news, the month kicked off with MARVEL SNAP – a Unity Awards nominee – beating out its category competitors to become the top-grossing digital trading card game. Then, positive reviews rolled in for indie title COCOON, including one from Eurogamer.The next wave of Unity Awards is here. Thanks to your help, we’ve finalized nominees across 20 categories and now it’s time to vote.With categories like Best Console/Desktop Game, Best Student Project, Best Mobile Game, Publisher of the Year, Best 2D Visuals, and Best Social Impact Project, you’re bound to find fellow creators you can’t help but vote for.To start, preview the finalists for The Golden Cube, or Best Overall Game:Dave the Diver, MINTROCKETDorfromantik, Toukana InteractiveCult of the Lamb, Massive MonsterGTFO, 10 ChambersIMMORTALITY, Sam Barlow, Half MermaidMARVEL SNAP, Second Dinner Studios, Inc.Sons of the Forest, Endnight GamesView all nominees and vote for your faves now through November 1 at 12:00 pm ET. Winners will be announced at Unite 2023 during the keynote.There was no shortage of new games this September. Check out a non-exhaustive list of the ones you’ve shared with us below.Chants of Sennaar, Rundisc (September 5)Karting Superstars, Original Fire Games (September 13 – Early access)URBO, Door 407 (September 13)KallaX, Unexpected (September 18)Astrea: Six-Sided Oracles, Little Leo Games (September 21)DinoBlits, Taba Marton (September 23)Project Planet – Earth vs Humanity, Fifth Harbour Studios (September 25)RoboDunk, Jollypunch Games (September 25)WitchSpring R, KIWIWALKS (September 25)El Paso, Elsewhere, Strange Scaffold (September 26)Paleo Pines, Italic Pig (September 26)Trianga’s Project: Battle Splash 2.0, Dranya Studio (September 26)Beneath Oresa, Broken Spear Inc. (September 27)Headlong Hunt, Toombler Games (September 28)Pizza Possum, Cosy Computer (September 28)Wildmender, Muse Games (September 28)COCOON, Geometric Interactive (September 29)Saleblazers, Airstrafe Interactive (September 29 – Early access)Savant – Ascent REMIX, D-Pad Studio (September 29)Do you see any on the list that have already become favorites or find that we’re missing a title? Share your thoughts in the forums.We post recent game releases and milestone spotlights on the @UnityGames X and @unitytechnologies Instagram. Be sure to give us a follow and support your fellow creators.If you’re creating with Unity and haven’t seen your projects in any of our monthly roundups, submit for the chance to be featured.Unite 2023 is almost here and even if you’re not joining us in Amsterdam, you can still be part of the fun.Join us for the keynote livestream on November 16 at 1:00 pm ET. And, throughout the day, ask questions of Unity experts live on Discord from 7:00 am to 3:00 pm ET.If you can’t make it to either virtual event, keep an eye on our Twitch schedule during and after Unite, and subscribe to our YouTube channel to be the first to know when session recordings are released.That’s a wrap for September. For more community news as it happens, follow us on social media: X, Facebook, LinkedIn, Instagram, YouTube, or Twitch.*Ranking as of October 2, 2023 at 8:30 am PT.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-roundup-september-2023</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-roundup-september-2023</guid><pubDate>Wed, 25 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Gaining visibility into the user experience: the metrics to focus on]]></title><description><![CDATA[As developers in the mobile gaming industry become increasingly sophisticated in user engagement, it’s critical to keep an eye on users' in-app ad experience: the impact of the ad flow, or ad journey, on the users’ perception of your app.To boost performance and create an optimal ad experience, developers should be measuring how their ad flow affects performance and then make data-driven decisions to improve it. But how?Data is obviously the answer, but not all metrics were born equal. We've gathered the metrics that are key to the overall ad experience, so that you can visualize what users experience as they move through your app, and see how the ad flow impacts your revenue and user experience. Let’s get started.Measuring the ad experienceWhen it comes to measuring the ad experience, there are quite a few metrics to cover. They fall into three main categories: clicks, ad duration, and churn. ClicksClicks are a key indicator of the ad experience - but it’s not just about the number of clicks an ad gets, but the quality of those clicks. Every type of click, positive and negative, provides key insights. Here are some things to keep an eye on:Let’s say a user wants to finish watching an ad early, so they go to the top right corner of the ad to click on the “X,” but they accidentally clicked next to the X. Those “mis” clicks are called proximity clicks. Also, pay close attention here to how quickly the user leaves the app - if a user is attempting to make any click within a second after the creative starts, it’s called an early click."It’s not just about the number of clicks an ad gets, but the quality of those clicks"Another common clicking issue is when a user doesn’t click on anything, but they get automatically directed to the store anyway. This is an auto click, or a click detected without users even touching the screen. Often, since users in this situation didn’t want to end up at the store, they’ll leave the store immediately - that’s called a hasty click, or a click directed out of the app that returned to the app within 5 seconds. In this case, it doesn’t matter where, when, or why they clicked - it’s clear that their user experience was impaired. This is exactly how to calculate the ad’s bounce rate, or the percentage of hasty clicks divided by total clicks.Once you’ve identified problematic clicks, you can sift through them to find the intentional clicks, or the quality clicks. These are measured by adding up all the problematic clicks (hasty clicks + proximity clicks + auto clicks + early clicks), and subtracting them from the total clicks. This way, instead of just knowing your click through rate (CTR), or the number of clicks per impressions, you can now calculate and understand your app’s percentage of quality, intentional clicks, or QCTR (Quality click through rate). This is measured by dividing quality clicks by total impressions. Here are some benchmarks for the average QCTR per genre.Ad durationAd duration, or the median time users spend watching ads (including the end card), is another good indicator of quality. Generally, rewarded video ads shouldn’t last longer than about 30 seconds, and interstitial ads should be much shorter than that. If an ad is too long (e.g. a few minutes), it will usually harm the UX and increase proximity clicks.As you measure ad duration, make sure to examine your ad escape rate - the number of ads that weren’t closed properly. This might be due to technical problems (e.g., crashes), but can also be intentional, as users choose to leave the ad. Like proximity clicks, the higher the ad escape rate, the clearer the indication that your ad flow has an ad experience issue."The higher the ad escape rate, the clearer the indication that your ad flow has a UX issue"ChurnAny combination of ad experience issues can cause users to leave your app, or churn. Churned users is the number of users that clicked on an ad and left your app, not returning for a certain amount of time (1, 3, 7, or 14 days).By dividing churned users by total users who watched ads (over a set amount of days), you get an ad’s churn rate. This is a critical metric that indicates that ad experience issues are causing users to leave for good, ultimately affecting your engagement and revenue. "Any combination of ad experience issues can cause users to churn"The amount of revenue generated per churned user is churn yield, and it’s key for optimizing your monetization stack. Once you know the extent to which your churn impacts revenue, you can determine whether the revenue you gained outweighs the loss of users.To prevent churn, you need to ensure that your users are getting the best quality ads. With LevelPlay’s Ad Quality tool, you can identify bad ads, and report them - reducing your bounce rate, proximity clicks, early clicks, and more.Ultimately, the better you can determine if your app’s monetization stack is optimized, the more easily you can recognize user trends, and nip problematic trends in the bud - and ad experience issues are no exception. Learn more about how you can utilize these metrics to improve your ad experience and maintain high performance here.]]></description><link>https://unity.com/blog/user-experience-metrics</link><guid isPermaLink="true">https://unity.com/blog/user-experience-metrics</guid><pubDate>Sun, 15 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile game creative trends to supercharge your app’s UA]]></title><description><![CDATA[User acquisition is at the core of app growth, and creatives are one of the best tools UA managers have to reach and engage new users. Knowing how to leverage them in your campaigns can play a big role in tipping the scales in favor of your app’s success.But creatives can also be a resource sink - necessitating time to experiment and the budgets to do so. By analyzing trends in creatives - from ideation to execution - you can hopefully skip the sink and get the most out of your creatives.Here are some of the top creative trends in games to help you drive engagement for your app:Classic game mechanicsMobile game developers make their creatives instantly recognizable and familiar to users by employing mechanics from classic games. Examples include games like pipe (connecting pipe pieces to get a flow of liquid from the entry to the exit), snake (a snake-like character is guided to eat pickups, growing as it does), and aim-and-shoot (hitting a target, while avoiding obstacles that move). While the mechanic in the creative might not be relevant to core gameplay, its familiarity can work to help boost conversions. You too can use classic game mechanics, think Cheetos’ ‘Cheetapult’ or ‘App of Massive Distraction.’ Familiar game mechanics are a great way to get users on your app, and they can also improve user engagement - playables ads have better CTR when compared to video ads.Before and after transformationsEveryone loves a good rags to riches story. Many games use before and after transformations to engage users, highlighting the progress a user’s character makes in their games. For example, they start by showing a low-level character struggling to defeat a mid-level enemy, then show that character leveling up to where they can dominate that same enemy. Visual clues like new, shiny armor and weapons also help show the character's journey.This can also be accomplished by transforming an object or person by direct action (for example, a person or object being washed, going from dirty to clean). This technique taps into the satisfaction of completing a journey or difficult task. Other examples include the compelling genre of DIY and ASMR videos, where you can’t help but watch a carpet being cleaned to completion.You can use these in your creatives to tap into user motivations. For example, use an image of someone hungrily waiting for their meal and then show them becoming full after eating using your QSR app (add in a meter filling for extra effect). Or, you could have a literal rags to riches story featured in a creative for a spend tracking app, showing a transformation from raggedy to well-dressed thanks to the ability to save money through your app.Laughter is the best medicineAnother great way to entice users is through humor. If a creative for a game makes a user laugh, then that user is already emotionally engaged. By entertaining users before they even download an app, publishers show them that their enjoyment has been put front and center.One way games do this is by using gameplay with a funny caption or an ironic twist. Another (and currently popular) technique is using real actors in short live-action skits centered around a game.For your app, the same principles apply. Use comedic skits featuring your app to give users a laugh and make your brand more personable and approachable. It’s a trick advertising agencies have been using for decades, whether for Volkswagen or Nintendo, and one that should be part of your marketing strategy.Follow the TikTok trendsShort-form video is at the top of the food chain when it comes to share of attention, and TikTok is a goldmine for content that’s proven to get and keep users’ attention. Use the same trends that are dominating TikTok as a way to get noticed by users. Just remember, when it comes to TikTok, relevance is everything - make sure you hop on a trend while it’s still timely or you could miss your window (and feel dated rather than relevant).Some of the ways TikTok trends can be leveraged include: using the app’s AI voiceover, adapting your game to fit a popular meme, or featuring your app in the corner of a trending video.Borrow some influenceAnother highly effective way to create convincing creatives is through influencer and user collaborations. Partner with users and popular influencers who fit your app’s target audience to get your creatives in front of the users you actually want.Influencer collaboration comes in various forms but the three most common tiers are micro-influencers (independent niche creators with a smaller following), content creators (social media entertainers or educators with a medium to large following), and celebrities (well known artists/public figures with huge followings). Examples include Calm and Bumble’s partnership with huge stars like Lebron James and Tiffany Haddish for mass appeal, while apps like Whatnot (a collectibles and trading platform) have partnered with smaller Youtubers and streamers for penetration into niche markets.Another option, if your budget is tight, is user generated content - one of the best ways to speak directly to your target demographic without breaking the bank. Offer select users a sample of your product or service with the condition that they post a testimonial on social media. Although you may lose reach by partnering with users with smaller followings, you gain cost-effectiveness and can still spread awareness.All of the reaping, none of the sowingMobile games have often been at the forefront of innovations in the mobile app industry. But sometimes there’s merit to being second. You get the opportunity to see what’s worked, and what hasn’t. Creatives are a perfect example of this. For every trend that’s proved successful, there are thousands of failed attempts (and misspent dollars and hours). Leverage the learnings from these creative trends and reap the UA rewards.]]></description><link>https://unity.com/blog/mobile-game-creative-trends-to-supercharge-your-apps-ua</link><guid isPermaLink="true">https://unity.com/blog/mobile-game-creative-trends-to-supercharge-your-apps-ua</guid><pubDate>Wed, 04 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[BatchRendererGroup sample: Achieve high frame rate even on budget devices ]]></title><description><![CDATA[In this post, we describe a small shooter game sample that animates and renders several interactive objects. Many demos are made for high-end PCs only, but the goal here is to achieve a high frame rate on a budget phone using GLES 3.0. This sample uses BatchRendererGroup, Burst compiler, and the C# Job System. It runs in Unity 2022.3 and doesn't require entities or entities.graphics DOTS packages.Let’s get started.Let’s jump right into what the sample is. This sample is running at a steady 60 fps on a budget 2019 Samsung Galaxy A51 (using a Mali G72-MP3 GPU). The graphics API is set to GLES 3.0.You can study the code and try it on your favorite platform by downloading the project from GitHub. You’ll only need stock Unity 2022.3.In this post we mainly focus on BatchRendererGroup and the sample class BRG_Container.cs. You can also study the animation and physics code in the BRG_Background.cs and BRG_Debris.cs classes.Let’s explore what we see before going deeper into how to make it.The background floor is constructed from many cubes. All boxes are animated to move up and down.The main ship moves horizontally on the screen and shoots missiles at colored spheres. (You can shoot missiles faster by tapping the screen.)When a missile flies over the floor, a magnetic field slightly lifts and highlights the floor cells. It also throws ground debris into the air.When a missile hits a sphere, it explodes into colored debris.When debris hits the floor, the colliding cell on the floor flashes white. The more debris that hits a cell, the more the cell’s color darkens. In addition, the weight of the debris causes indents in the ground.Both the floor cells and debris are made of cubes. Each cube has a different position and color. We want to animate and manage everything using the CPU to make the interactions between floor and debris easier. (Debris isn’t just a cosmetic visual, so it can’t be done with the GPU only.)For rendering, we aren’t creating a GameObject per item to avoid an unnecessary performance hit on a low-end mobile device. Instead, we’re using the newly introduced BatchRendererGroup API.Graphics.DrawMeshInstanced is a convenient and fast way to render many similar meshes at different positions. However, it has the following limitations compared to the BatchRendererGroup API:It requires providing a managed memory array with matrices, so you may get garbage collection. Also, inverted matrices are CPU-computed, even if the shader doesn’t need it (for instance, with URP/unlit).If you want to customize any property other than the obj2world matrix (like having one color per instance), you need to provide your own custom shader either by writing it from scratch or using Shader GraphMatrix or custom data must be uploaded to GPU memory at each draw. You can’t have persistent GPU memory data with Graphics.DrawMeshInstanced. Depending on context, this could be a huge performance hit.BatchRendererGroup (or BRG) is an API that efficiently generates draw commands from C# and produces GPU-instancing draw calls. Since it doesn’t use managed memory, you can also generate commands using the Burst compiler.Tip: The entities.graphics package is made to render entities (ECS package) and is built on top of BRG. entities.package does all GPU memory management and optimal draw commands creation for you. We’re not using ECS in this sample, so we’ll directly drive BRG.BRG uses a specific GPU data layout and dedicated shader variant. The shader variant can fetch data from the standard constant buffer (UnityPerMaterial) or from a custom, large GPU buffer (BRG raw buffer). It’s up to you to manage how you store your data in the raw buffer, which is a Shader Storage Buffer Object (SSBO, or byte address buffer). The default BRG data layout is the structure of arrays (SoA) type.You can instantiate any properties of a material without having to create a custom shader. In the sample, we want to instantiate obj2world matrix (to position cubes), world2obj matrix (for lighting), and BaseColor per box instance (because each floor cell or debris has its own color).All other properties are the same for all cubes (e.g., smoothness value), and you can describe which properties will have custom values per instance using metadata.The BRG metadata is an optional 32-bit value you can set per shader property. It tells the shader code how to load the property value from GPU memory and from where. Bits 0–30 define the offset of the property within the BRG raw buffer, and bit 31 tells whether the property value is the same for all instances or the offset is the beginning of an array, with one value per instance.The exact meaning of BRG metadata also depends on the shader property type. Let’s sum up all possibilities:Unlike Graphics.DrawMeshInstanced, BRG uses a persistent GPU memory buffer. Let’s say you have 10 cube positions and colors in the raw buffer, but only cubes 0, 3, and 7 are visible. You only want to draw three cubes, but you need the shader to properly read the position and color of those cubes. To do that, BRG shader uses a small additional indirection. This visibility buffer is just an array of “int” you fill when generating draw commands.In this example, you need to fill an array of three ints with {0,3,7} and can then generate a BRG draw command of three instances.The shader code to fetch for “baseColor” property looks like this:Go further than the sample: As you can instantiate any property of SRP shaders (unlit, simplelit, lit), all material properties have an “if metadata&(1<<31” branch. Even if you don’t need a custom smoothness value per instance, this has some performance cost. In the sample, we only want to instantiate baseColor. You can create a Shader Graph where only color will be defined as BRG instantiatable. So the generated code has the heavy data fetching indirection only for color property. Shader should run even slightly faster on a low end GPU.In our game sample, the floor is made of 32x100 cells, or 3,200. Each has a position, height, and color, and the cells scroll while the camera remains static. When a row scrolls out of the view, we inject a new row of 32 cells.With 3,200 cells at any point in time, culling is not really necessary (all cells are always within the camera’s view). To position each cell, you need an obj2world matrix per cell, the invert matrix for lighting, and a color. To render the complete floor, we’ll use a single BRG draw command.The sample’s debris is made up of small cubes, each one having a position, color, and rotation on its vertical axis. This is very similar to the floor cells. To do this, we created BRG_Container.cs. The class manages a BRG object to render floor cells or explosion debris. All physics animation and interaction is done with C# code using BRG_Debris.cs.Unlike floor cells, the amount of debris varies across the frame. At initialization, you specify the maximum number of items to BRG_Container. In our sample, it’s 16,384 for debris (each explosion consists of 1,024 debris cubes) and we use async jobs to animate debris in a gravity field. When debris hits a floor cell, it interacts by digging into the ground.To optimize GPU memory storage and bandwidth, BRG uses a float3x4 to store a matrix instead of float4x4. Keep in mind that a BRG matrix in the raw buffer is 48 bytes, not 64.The raw buffer will look like this:Tip: Debris raw buffer data looks similar to floor data as it also uses three custom properties (obj2world, world2obj, and color). The maximum number of items is 16,384 for debris, meaning a raw buffer of 112x16,384 bytes, or 1.75 MiB. Not all debris is rendered most of the time, depending on the number of debris cubes in existence at a given time.We have a GPU GraphicsBuffer of 358,400 bytes. Since animation is done with the CPU, we also allocate a similar buffer in system memory (CPU can process data at full speed in system memory). Let’s call this second buffer a “shadow copy” of the GPU memory. C# code will animate the floor cells, using sin, and debris from the shadow copy. When animation is done, we upload the shadow copy buffer to the GPU using the GraphicsBuffer.SetData API.Go further than the sample: Optimizing GPU rendering often means optimizing the amount of data. In our sample, we use standard and stock SRP shaders. That’s why we employed three float4 for the matrix and one float4 for color. You could go further, writing a custom shader to reduce the data size, or you could use a 32-bit floor cell height value.If you wish to keep going, use the cell index to calculate its world position, then compute the matrix and invert matrix in the shader. Finally, use a 32-bit integer to store the color. At the end, upload 8 bytes per item instead of 112. This leads to a 14x speed-up during GPU data upload. It would imply rewriting the shader fetching code.Any BRG draw command needs a MeshID, MaterialID, and BatchID. The first two are easy to understand, but BatchID is more subtle. Think of BatchID as “kind of a batch.” To render the floor, you need to register one kind of batch, defined as follows:1. “unity_ObjectToWorld” property is an array starting at offset 0 of the BRG raw buffer2. “unity_WorldToObject” property is an array starting at offset 153,6003. “_BaseColor” property is an array, starting at offset 307,200Code to register this kind of batch at creation time will look similar to this:We get the m_batchId at creation time, and can then use it for each BRG draw command (so the shader knows exactly how to fetch data for that kind of batch).Tip: BatchRendererGroup.AddBatch is not a rendering command. It’s used to register a kind of batch, for future rendering commands.So far, we can animate floor cells, upload the shadow copy system memory buffer to the GPU, and render all cells using a single DrawCommand of 3,200 instances.This will work on most platforms: DirectX, Vulkan, Metal, and various game consoles, but not on GLES. The problem is that most GLES 3.0 devices can’t access SSBO during the vertex stage (i.e., the GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS value is 0). So, when the graphics API is set to GLES, BRG will use a constant buffer, or UBO, instead to store the raw data.This adds constraints: A constant buffer can be any size, but only a small part of it (a window) is visible at any given time when the shader is running. The window size depends on the hardware and driver, but a widely accepted value is 16 KiB.Tip: In UBO mode, you should always use the BatchRendererGroup.GetConstantBufferMaxWindowSize() API to get the correct BRG window size.Let’s see how our code changes if we want to run on GLES. For floor cells, the total amount of data is 350 KiB. We can’t do a single DrawInstanced(3,200) because the shader won’t be able to see 350 KiB at once. So, we have to split data within the UBO to maximize the amount of instances per draw, fitting into a 16 KiB block. One floor cell is 112 bytes (two matrices and one color), so you can fit 16,384 divided by 112, or 146 instances in a 16 KiB block. To render 3,200 instances, we will need to issue 21 DrawInstanced(146) and a last DrawInstanced(134).Now, the 350KiB UBO will be split into 22 window blocks of 16KiB each, like this:Tip: In UBO mode, each window offset should be aligned to BatchRendererGroup.GetConstantBufferOffsetAlignment(). Typical alignment values range from 4 to 256 bytes.In GLES, because of the UBO and the 16 KiB windows, you need to register 22 BatchID in order to store the offsets of each window. The initialization code then needs a loop:Tip: To support GLES (UBO) and other Graphics API (SSBO) in the game sample, BRG_Container.cs sets some vars at initialization time. In SSBO mode, m_windowCount is 1 and m_alignedGPUWindowSize is the total buffer size. In UBO mode, m_alignedGPUWindowSize is 16 KiB and m_windowCount contains the number of 16 KiB blocks. (The 16 KiB value is for readability. Use GetConstantBufferMaxWindowSize() API to get the correct value.)Once the CPU updates all matrices and colors in the system memory, you can upload the data to the GPU. This is done with the BRG_Container.UploadGpuData function. Because of the SoA data model, you can’t upload a single block of memory. For debris, the buffer is 16,384 items. In GLES mode, that means 113 windows of 16 KiB each if 16,384 debris are on screen.But what if only 5,300 debris cubes are in a given frame? Because you have 146 items per window, this means the first 36 consecutive 16 KiB windows should be uploaded so you can use a single SetData (36x16 KiB). In the last window, only 44 debris cubes should be displayed. To upload 44 matrices, invert matrices and colors and use three SetData commands. At the very end, four SetData commands should be issued.Tip: Even in SSBO mode, if the number of items is less than the max (for example, 5,300 debris over a max of 16,384), three SetData commands are required. You can take a look at BRG_Container.UploadGpuData(int instanceCount) for implementation details.The main entry point of BRG is the culling callback function you provide at creation time. The prototype looks like:Your code in this callback is responsible for two things:1. To generate all draw commands into the output BatchCullingOut struct2. To use (or not) information provided in the BatchCullingContext read-only struct within your own culling codeNote: The callback returns a JobHandle in case you want to launch an async job to perform these operations. The engine will use this to sync at the point the result is needed, so your command generation code won’t block the main thread.BatchCullingContext contains information like camera matrix, camera frustum plans, etc. Basically, all the data you need to cull and generate fewer draw commands. In the sample, all objects fit in the camera view (floor cells and debris), so there’s no need to use culling code.BatchCullingOutputDrawCommands struct contains various data, including arrays. It’s the user’s responsibility to allocate native memory for those arrays. The engine is responsible for releasing that memory once the data has been consumed (you’re allocating, Unity is responsible for releasing). Memory allocation should be Allocator.TempJob type.The first array you should allocate is the visibility int array. In the sample, as we assume everything is visible, we just fill the visibility int array with incremental values, like {0,1,2,3,4,...}.A BRG draw command is almost a GPU DrawInstanced call. The most important array to allocate and fill is the BatchDrawCommand. Let’s say there are 4,737 debris cubes in the current frame.m_maxInstancePerWindow is 146 in GLES mode. You can compute the amount of draw commands and allocate the buffer using ceiling value of m_instanceCount divided by m_maxInstancePerWindow:To avoid duplicating similar parameters into several draw commands, BatchCullingOutputDrawCommands has an array of BatchDrawRange struct. You can set up various parameters within BatchDrawRange.filterSettings, like renderingLayerMask, receive shadow flags, etc. As all draw commands will share the same rendering settings, you could allocate a single DrawCommandRange struct that will apply from draw command 0 and contains all drawCommandCount commands.
Then, fill the draw commands. Each BatchDrawCommand contains a meshID, batchID (to know how to use metadata), and materialID. It also contains the starting offset in the visibility int array buffer. As we don't need any frustum culling in our context, we fill the visibility array with {0,1,2,3,...}. Then all draw commands will refer to the same {0,1,2,3,..} indirection so each BatchDrawCommand will use 0 as visibility array starting offset.The following code allocates and fills all needed draw commands:Directly driving BatchRendererGroup requires some work. However, it works out-of-the-box without needing custom shaders or additional packages. In some situations, like having to render plenty of CPU simulated objects with custom instantiated properties, BatchRendererGroup is your best friend.You can download the project from this repository.You can also visit the forums to discuss about additional details on how we used C# job system and Burst compiler to handle all animations and interactions at full speed, even on a low-end CPU.]]></description><link>https://unity.com/blog/engine-platform/batchrenderergroup-sample-high-frame-rate-on-budget-devices</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/batchrenderergroup-sample-high-frame-rate-on-budget-devices</guid><pubDate>Tue, 03 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[An open letter to our community]]></title><description><![CDATA[To our community:I’m Marc Whitten, and I lead Unity Create which includes the Unity engine and editor teams.I want to start with this: I am sorry.We should have spoken with more of you and we should have incorporated more of your feedback before announcing our new Runtime Fee policy. Our goal with this policy is to ensure we can continue to support you today and tomorrow, and keep deeply investing in our game engine.You are what makes Unity great, and we know we need to listen, and work hard to earn your trust. We have heard your concerns, and we are making changes in the policy we announced to address them.Our Unity Personal plan will remain free and there will be no Runtime Fee for games built on Unity Personal. We will be increasing the cap from $100,000 to $200,000 and we will remove the requirement to use the Made with Unity splash screen.No game with less than $1 million in trailing 12-month revenue will be subject to the fee.For those creators on Unity Pro and Unity Enterprise, we are also making changes based on your feedback.The Runtime Fee policy will only apply beginning with the next LTS version of Unity shipping in 2024 and beyond. Your games that are currently shipped and the projects you are currently working on will not be included – unless you choose to upgrade them to this new version of Unity.We will make sure that you can stay on the terms applicable for the version of Unity editor you are using – as long as you keep using that version.For games that are subject to the runtime fee, we are giving you a choice of either a 2.5% revenue share or the calculated amount based on the number of new people engaging with your game each month. Both of these numbers are self-reported from data you already have available. You will always be billed the lesser amount.We want to continue to build the best engine for creators. We truly love this industry and you are the reason why.I’d like to invite you to join me for a live fireside chat hosted by Jason Weimann today at 4:00 pm ET/1:00 pm PT, where I will do my best to answer your questions. In the meantime, here are some more details.*Thank you for caring as deeply as you do, and thank you for giving us hard feedback.Marc Whitten*We are working to localize translations of this web page.]]></description><link>https://unity.com/blog/an-open-letter-to-our-community</link><guid isPermaLink="true">https://unity.com/blog/an-open-letter-to-our-community</guid><pubDate>Fri, 22 Sep 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity plan pricing and packaging updates]]></title><description><![CDATA[This blog post is out of date and has been removed.
You can find the latest information about our Runtime Fee policy in our FAQ. To view the original text of this blog, click here.]]></description><link>https://unity.com/archive/blog/news/plan-pricing-and-packaging-updates</link><guid isPermaLink="true">https://unity.com/archive/blog/news/plan-pricing-and-packaging-updates</guid><pubDate>Tue, 12 Sep 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity August 2023 roundup: Sea of Stars skyrockets, Phasmophobia spikes, and awards are in the air]]></title><description><![CDATA[August featured so many memorable moments, including stops at SIGGRAPH 2023 and gamescom 2023. Keep reading to discover what Unity creators accomplished in August, including the latest game releases.Impressively, Phasmophobia experienced a significant spike in peak concurrent users, reaching over 86,000 on August 17, 2023. This is a substantial increase from around 21,000 peak concurrent users on July 31, 2023. The data, captured through Steam’s official Web API, reflects a growth of approximately 300% in less than a month. Congrats to the team at Kinetic Games on this accomplishment.Next up, let’s hear it for the PC game studios who knocked it out of the park in the latest Steam reports. First, Steam’s top 20 new releases in July featured 12 games made with Unity, including Ultimate Epic Battle Simulator 2, Viewfinder, and My Friendly Neighborhood, who each secured a spot in the top five. Additionally, Rust and Unturned continued their reign in the top 20 most played games on Steam.*Also notable, Sabotage Studio’s new RPG Sea of Stars sold 100,000 copies within one day of its August launch thanks to an incredible effort by its team and hype from the gaming community. And the good news hasn’t stopped there, with the game reaching year one projections by the end of release week.As positive reviews rolled in for indie titles like My Friendly Neighborhood and Viewfinder, our team took to the streets of Cologne, Germany to mingle with the gaming community and asked you to help choose the next hit title from those showcased at gamescom 2023. The winner?Bulwark: Falconeer Chronicles. Check out developer Tomas Sala’s reaction below.Moving to the world of video and streaming, the close of August brought more creator resources to the community. On Twitch, we hosted the Heavenly Bodies team for a Creator Spotlight (watch above) that covered physics systems, ropes, and pressure simulations. Then, during gamescom, we played Battle Shapers and GTFO live, rounding things out by playing your games in a third Let’s Play session.On YouTube, there are not one but two new tutorials for devs – one on C# code style and the other on volumetrics. For bite-sized tips, check out our latest YouTube Shorts.There are so many impressive shares on social media using the #MadeWithUnity hashtag. Here are a few August highlights.On Twitter, @SunnyVStudio offered tips for devs, starting with sprites, while @21cDucks gave clean pixels (above) and @Liuweibo163 predicted thunderstorms and lightning.Meanwhile on Instagram, @sabotage.studio announced the release of Sea of Stars as did @mimimigames about Shadow Gambit.Last but not least, here are some Unity Asset Store highlights from August:Alchemist House | BKWinter Tundra | VIVID ArtsJapanese Mountain Shrine | Manu 3dF-35 and Mig 29 Fighter Jet assets | studiolab.devKeep adding the #MadeWithUnity hashtag to your posts to show what you’ve been up to and spread the project love.August was another major release month for games using Unity, including the Sea of Stars success. Read on for a non-exhaustive list.Big Fat Battle, Robot Squid (August 1 – Early access)Ninja or Die: Shadow of the Sun, Nao Games (August 2)Hammer of Virtue, No Pest Productions (August 7)I Am Future: Cozy Apocalypse Survival, Mandragora (August 8)Synthwave Racers, Corrtex Games (August 10)Moving Out 2, SMG Studio and Devm Games (August 15)Waven, Ankama Studio (August 16 – Early access)Stories of Blossom, Soft Leaf Studios (August 16)Shadow Gambit: The Cursed Crew, Mimimi Games (August 17)BOOK OF HOURS, Weather Factory (August 17)Bomb Rush Cyberfunk, Team Reptile (August 18)Towers of Thana, Bishop Games (August 21 – Early access)DepowerBall, Mega Power Games (August 21)Whisker Squadron: Survivor, Flippfly LLC (August 21)WrestleQuest, Mega Cat Studios (August 21)Blasphemous 2, The Game Kitchen(August 24)Rune Gate, Devwind (August 25)Sea of Stars, Sabotage Studio (August 28)Goodbye Volcano High, KO_OP (August 29)Do you see any on the list that have already become favorites or find that we’re missing a title? Share your thoughts in the forums.We post new game releases and milestone spotlights every Monday on the @UnityGames Twitter and @unitytechnologies Instagram. Be sure to give us a follow and support your fellow creators.If you’re creating with Unity and haven’t seen your projects in any of our monthly roundups, submit them for the chance to be featured.That’s a wrap for August. For more community news as it happens, follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.*Ranking as of September 1, 2023 at 8:30 am PT.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-roundup-august-2023</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-roundup-august-2023</guid><pubDate>Fri, 08 Sep 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[It takes a village: The path to a global creative workforce]]></title><description><![CDATA[As I write this, the world is heating up, women are owning summer spending, and predictions about how AI will change the workforce abound. What’s more, the northern hemisphere is heading “back to school” and reminding us all how misaligned our education and workforce systems can be. Continuous upskilling throughout our careers is now the norm, and this is more urgent than ever as we keep hearing predictions about how AI will change the workforce.I’ve shared with you my thoughts on how to prepare future generations for tomorrow’s economy and the talent gaps that continue to grow across industries exploring new technologies. Globally, our customers regularly tell me that their biggest challenge is finding qualified talent.Today, I’d like to dive more deeply into some of the efforts we’re making as a company to try and tackle these challenges.With an aim to fuel more opportunities for more people, this year we established the Unity Workforce Grant, a partnership with Jobs for the Future. The open request for proposals received over 700 submissions from higher education institutions, non-profit organizations, and for-profit companies that are working to support the next generation of real-time 3D creators. Grant recipients are awarded up to $200,000 USD to train learners for the purpose of job readiness and career placement.We are thrilled that so many programs share our enthusiasm for unlocking opportunities for learners to access in-demand careers in immersive technologies. The notable projects selected by the team of over 60 judges include:University of Central Florida’s Nicholson School of Communication & Media (NSCM) Games and Interactive Media (GaIM) program, which offers professional training in AR/VR to undergraduates and adult learnersAfricacomicade Spark Fellowship, which provides learners across sub-Saharan Africa with digital creative skill sets in game developmentDo It Greener Foundation, a Louisiana-based non-profit creating a real-time 3D technology hub designed to recruit, support, and serve young learners from underrepresented populationsXR Bootcamp, a company with the mission of increasing diversity in the XR industryAs Oscar Michael, cofounder of Africacomicade, put it, “The global video games and interactive media industry is rapidly growing, positioning itself as a soft power tool and creating massive opportunities for socioeconomic development. Since [our founding], we have been at the forefront of advocating the potential of the African video game industry, and now, thanks to Unity, will be building a competent talent pipeline within the sector.”One of my biggest takeaways in reviewing the hundreds of submissions is how transferable these skills are to other industries. Teaching real-time 3D is not just about technical skills, but about learning durable skills like communication, collaboration, creative thinking, and cultivating a growth mindset. These are the skills in highest demand among 21st-century employers across all industries.To learn more about 2023 recipients, visit the Unity Workforce Grant page.In 2022, at an event in Indonesia, Google Play announced a joint partnership with Unity and the Indonesian Game Association: the Google Play x Unity Game Developer Training program. This program opened opportunities for game developers and students at 21 Indonesian universities to receive training and certification from Unity.To offer a glimpse at what this means, let’s hear from three participants who passed their exams and are now Unity Certified Associate Game Developers.Since joining the program, Muhammad Ramadhan Rizki Daulay, a 23-year-old from Medan, has become a junior programmer at Digital Breeze Interactive. Of the experience, he shared, “Through this program, I made new friends and connections in the game industry and also opened new collaborations. It’s suitable for anyone who wants to start a career in the game industry or even those that are already in the industry.”For Ahmad Tuflihun, a 23-year-old from Pontianak who now has a career as an augmented reality developer at nuMetagen, becoming a Unity Certified Associate Game Developer motivated him to test his abilities and improve his skills.“Participating in a certification exam is very important, especially for someone who is not confident in their abilities or doesn't have the courage to start a career in their desired field,“ explained Ahmad.Finally, as a person who has been highly interested in game development since high school, the opportunity to become a junior Unity developer at Magnus Digital Indonesia was a dream come true for Gerardo Keandre Lisrianto, a 22-year-old from Bekasi. “Joining this training program helped me learn to create a good ecosystem and workflow for the game developer team, how to plan a project and develop it, and also know the best practices in Unity game development,” said Gerardo.Partnering with Google is more than double the value for future creators as they become upskill in both real-time 3D creation and publishing on Google Play. The most exciting part for us is hearing about the increased confidence and sense of agency that grows from learning opportunities like this.The world is truly a better place with more creators in it. To continue following our journey toward building the next generation of immersive tech innovators and creators, keep an eye out for my next update and subscribe to the Social Impact mailing list.]]></description><link>https://unity.com/blog/news/the-path-to-a-global-creative-workforce</link><guid isPermaLink="true">https://unity.com/blog/news/the-path-to-a-global-creative-workforce</guid><pubDate>Wed, 06 Sep 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 ways to use Muse Chat in your workflow]]></title><description><![CDATA[On June 27, we announced the closed beta of Muse Chat, an essential capability in our Unity Muse platform that allows developers to leverage Large Language Models (LLMs)* to find information across all Unity documentation, manuals, and other resources.With this powerful helper, creators are able to access relevant and well-structured answers for development questions from first-party Unity sources. While Muse Chat’s help can support you during any phase of development – beginner or advanced, we want to share some guidance and learnings from our current closed beta to help inspire ways you might use Muse Chat throughout future workflows.Are you ready to start a new Unity project but unsure how to begin? With Muse Chat, you can instantly get a list of the best resources in order to jump-start your learning journey. Here’s an example:Prompt – “Hi Muse, Give me detailed steps on how to build a 2D mobile game with Unity, including the tools I need and how to get started.”
Answer –“To build a 2D mobile game with Unity, follow these steps:Install Unity: Download and install the latest version of Unity. The 2022 LTS release is recommended for its stability and long-term support.Set up Unity for 2D mobile game development: When creating a new Unity project, select the 2D template to set up the project for 2D game development [1].Understand the Unity interface and workflow: Familiarize yourself with the Unity interface, menu items, using assets, creating scenes, and publishing builds [2].Import and organize assets: Import your 2D assets, such as sprites and sounds, into the project’s Assets folder. Unity will automatically import and display them in the Project window [3].Create and manipulate 2D game objects: Use Sprites to represent 2D graphics in your game. Sprites are standard textures that can be edited with the built-in Sprite Editor and rendered using a Sprite Renderer component [4].Implement 2D physics and collision detection: Use Unity’s 2D physics system and components to create realistic and interactive 2D games [5].Script game mechanics and behaviors: Write scripts to define gameplay mechanics and behaviors for your game. Unity supports scripting using C# [6].Build and test your 2D mobile game: Regularly test your game on your target platform (iOS or Android) to ensure compatibility and performance [7].Optimize your game for mobile devices: Optimize your game’s performance, resolution, and input handling for mobile devices.Publish your game: After completing development and testing, publish your game to the desired app stores [8].For additional learning resources, consider the following:Unity e-book on 2D game art, animation, and lighting for artists [7].Unity Learn course on Beginning 2D game development [7].Remember to consult the Unity Documentation for more information on specific features and functionality. Good luck with your 2D mobile game development!”Tip: Want further detail on one of the mentioned steps? Ask follow-up questions so Muse Chat can explain what to consider when, for example, creating a scene.Building from scratch is hard. Muse Chat was designed to simplify this process. With Muse Chat, you can fast-track development by asking Muse to generate code. Beta users have shared that Muse Chat is helpful in establishing useful code snippets when writing tests.You can generate code in Muse Chat from scratch, use it to alter existing code, or prompt it to help you find a new method – for example, to change a character’s ability to jump and then change from single jumping to double jumping.Let’s explore how to converse with Muse Chat about jump methods.Prompt – “Hi Muse, can you help me change the jump method to allow double jumps instead of single jumps?”
Answer – Muse’s response and code generated to allow double jumps:To determine how best to apply the newly generated code, ask Muse Chat a follow-up question.Prompt – “Great, thank you Muse. Now, can you tell me how to adjust the jumpForce value?”
Answer – Muse’s response, guiding jumpForce value adjustment:Especially for solo devs, hitting a seemingly unfixable bug not only eats up development time, it is a major source of frustration.By adding Muse Chat to your process, you’ll have a teammate for troubleshooting. One popular use case we’ve seen so far is developers sharing code with Muse Chat and asking why it is not working. If you’re not sure what the problem is, you can also describe an issue to Muse Chat and it will do the work of scanning our documentation and other resources to identify what your issue is.Another way Muse Chat can help you in resolving an issue is by replicating buggy environments and setting up tests quickly. One beta participant shared, “I was writing a test for a bug that I know happens only after a domain reload of the Editor, so I asked ‘How can I force a domain reload through scripting?’” They were then able to find the function faster, making it easier to run tests and debug their project.Some praise we’ve heard from more experienced Unity beta users is that Muse Chat helps them find their favorite resources faster, or even rediscover tools that they’ve forgotten about.From one beta user: “I find it very useful for finding APIs that I know exist but don’t remember where… It saves me time that I’d otherwise spend looking in Google, Slack, or asking in other channels.”No need to go hunting for resources when Muse Chat will find them for you faster.As we also teased in June, Unity Muse will be adding more capabilities to our AI beta offering, including the ability to generate textures and sprites. Unlock more potential with Unity AI and sign up for the AI beta program today. You’ll find out first when new features become available and join the Muse community on how to create using AI.*To create Unity Muse Chat, we licensed third-party LLMs and integrated them with first-party Unity technical documentation (including manuals, release notes, tutorials, scripting guides, etc.) so creators can get the most relevant and up-to-date information. Read our guiding principles for ethical AI for more on our approach.]]></description><link>https://unity.com/blog/engine-platform/use-muse-chat-in-your-workflow</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/use-muse-chat-in-your-workflow</guid><pubDate>Thu, 31 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Louisiana is training real-time 3D educators with help from Unity]]></title><description><![CDATA[Real-time 3D (RT3D) skills are in growing demand, which means qualified educators are, too.As RT3D uptake accelerates and use cases continue to expand, so do opportunities for workers to embark on rewarding careers in architecture, engineering, manufacturing, game development, film, and many other fields that are increasingly making this technology a key part of how they operate.In fact, the demand for RT3D-trained professionals is growing so quickly that governments and workforce development organizations are devising novel solutions to bridge the skills gap – and we’re helping them do it.Last spring, Unity teamed up with Louisiana Economic Development (LED) on a new initiative aimed at boosting the availability and quality of RT3D education across the state. This blog post details how this exciting partnership came together and how educators are receiving the training they need to prepare students for success in tomorrow’s economy. Keep reading to learn more.The partnership between Unity and LED addresses the need to prepare Louisiana’s workforce for in-demand tech roles that increasingly require RT3D skills. As the world’s leading platform for creating and operating RT3D content, Unity is well positioned to help higher-education institutions in the state train and certify instructors who can pass their knowledge on to students. In doing so, learners will be set up for careers that have excellent long-term prospects and will foster economic growth across Louisiana.The five-year project, now entering its second year, is supported by a $1.95 million grant from LED. This funding allows for the creation of a self-sustaining, local ecosystem of certified instructors who can share their expertise with learners at their respective institutions. In addition to obtaining their own Unity certifications, these educators also have access to a wealth of educational support resources, including training plans and content for classroom instruction.“The required training and skill set individuals need to participate in the rapidly changing tech economy is constant, and at an all-time high. We are excited about this new workforce development and training opportunity through LED and Unity. Our ability to ensure faculty are equipped with the knowledge to properly train students in this space is critical to student success and the state’s success long-term.” – Monty Sullivan, President of the Louisiana Community and Technical College SystemUnder the terms of the partnership, Unity will train up to 15 instructors in Louisiana per year, and each of those instructors will then train and/or certify up to 40 students per year. The program is expected to reach an estimated 6,000 Louisianians in total over its five-year mandate. All Louisiana two- and four-year colleges, high schools, and training providers are eligible to participate.Educators need a comprehensive understanding of real-time 3D technology and Unity development to be able to teach with confidence. Because each educator has a unique background and pre-existing set of skills, the program focuses on bringing instructors in Louisiana up to speed by providing each with a solid foundation, regardless of their initial skill level.Unity offers four levels of industry-recognized Certifications for individuals looking to build up their skills, enter the job market, and teach. The partnership between Unity and LED focuses on two levels – Associate and Professional – and is helping educators across the state obtain these Certifications through tailored training and hands-on practice.The trainees are being led by Unity Certified Instructors (UCIs) – leaders who demonstrate expertise in Unity as well as exceptional training skills. Leveraging support resources provided by Unity Education, a team of UCIs is spearheading the effort to get future Unity educators ready for certification.For future educators, the benefits of obtaining Unity Certification include:Access to extensive learning materials designed by subject matter experts and testing-design specialists.The ability to demonstrate technical skills and applied knowledge to students and employers in higher education and many other fields.Options for highlighting their achievements on resumes, portfolios, and social media, helping recruiters and hiring managers find them.Once educators in the program have obtained their Unity Certifications, the next step is helping them build Unity into their curricula and begin teaching. The partnership with LED offers comprehensive support to instructors, equipping them with the necessary resources and guidance to create engaging learning experiences. This includes highly scaffolded pathways, projects, and assessments, as well as frameworks for customization and exploration of new tools and domains like virtual reality (VR), augmented reality (AR), and artificial intelligence (AI).“One obvious benefit is that I’m getting free Certification vouchers. That’s really nice. I got the Associate Certification and it’s given me that level of backing, which is really beneficial because I’m able to show students that I have the badge, and communicate to them that certification is important and that they should pursue it. Additionally, we were taught how Unity trains trainers and breaks down lesson plans, which helped me plan my own lessons and steps so I can teach my students effectively.” – Claude Richard, Instructor at Delgado Community CollegeThe partnership between Unity and LED exemplifies how public-private collaboration can have tangible impacts on the health and long-term viability of a regional economy.At the individual level, it ensures that educators are teaching relevant, up-to-date skills, which bolsters their institutions’ reputations and guarantees that students graduate ready for the job market. And, at the macro level, the partnership offers a reliable strategy for preparing Louisiana’s workforce for the economic and technological shifts that are making RT3D skills increasingly essential.We look forward to providing future updates about the impacts of this partnership as it progresses toward completion in 2027.If you’re interested in establishing a similar program in your state or region, get in touch with us. We’re always looking for opportunities to expand RT3D education and support forward-thinking workforce development initiatives.]]></description><link>https://unity.com/blog/news/louisiana-economic-development-training-real-time-3d-educators</link><guid isPermaLink="true">https://unity.com/blog/news/louisiana-economic-development-training-real-time-3d-educators</guid><pubDate>Tue, 29 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How creators launch and scale multiplayer games with Unity]]></title><description><![CDATA[The gaming industry is one of the most challenging yet rewarding industries to be in, especially when it comes to multiplayer games. More than 400 multiplayer games have relied on Unity Game Server Hosting (Multiplay) to make incredible multiplayer experiences, everything from AAA blockbusters like Apex Legends to indie sensations like Among Us.Read how studios of all sizes, using any game engine, have scaled to match their game’s needs.Eleven Puzzles integrated Game Server Hosting for its Unsolved Case players so that scale would never be an issue, no matter how many players joined in on the fun.“I was looking for a hosting service that basically will do everything for us so we [can] almost exclusively focus on building games,” said Adrian Olczyk, CEO and cofounder of Eleven Puzzles. “If we didn’t use Game Server Hosting, I’d say it would maybe have taken 20 to 30% longer in development time.”As well as your development timeframes, one of the biggest concerns when designing a game is likely cost per player. Choosing bare metal to host your game can offer several advantages, like consistent and reliable performance for real-time interactions between players. However, it’s not as flexible as cloud-based machines when it comes to instant scalability.Game Server Hosting combines the performance of bare metal with the flexibility of cloud at a lower cost. Recent comparisons show that Game Server Hosting may reduce hosting cost per player by between 30–40%, depending on your game design, player numbers, and distribution (as of Q2 2023).Similar to Eleven Puzzles, instead of managing its own hosting service or spending time and money setting up a fleet through a third party, Team17 leveraged Unity to deliver multiplatform titles like Overcooked! 2, which are all about crazy addictive fun with friends.Niklas Hansson, head of technology at Team17, explained how the offering made sense and was cost effective, sharing, “We originally sketched out a scenario using Amazon’s matchmaker and server hosting, ignoring development costs. Just looking at server hosting costs, [Unity] was 30% to 50% of the price. Obviously, [Amazon] doesn’t have bare metal [and] could only offer cloud machines, which means you’re paying for the cloud costs all the time. If you massively overestimate the amount of servers you need, it would be a gigantic waste of money.”Maintaining reliable performance fosters player satisfaction, encouraging them to stay invested in your game for the long haul and keep them coming back for more. When player count starts to grow, you need to be able to scale up quickly with demand, meeting players where they are. This case study shows you how Apex Legends scaled up globally at launch.Similarly, as Among Us became a sudden smash hit, Innersloth needed to ensure it could continue to provide an optimal experience for players. By partnering with Unity, they were able to deliver a stable online environment with Game Server Hosting (Multiplay), all while gaining the data they needed to deliver new features to their fanbase using Unity Analytics.“The teams at Unity have honestly been fantastic partners to work with,” said Callum Underwood, founder of Robot Teddy, an agency that partnered with Innersloth on Among Us. “They understand games, they’re really easy to talk to, and, more importantly, they have always put our small dev team’s needs above all else.”Geographical coverage is key for any gaming infrastructure and so is the ability to cope with any surge in demand. Game Server Hosting recently powered over 77 million game sessions globally and enabled studios to deploy to 290+ data centers worldwide, helping games thrive no matter where players are in the world.*“When we’re thinking about how to scale, the fact that the infrastructure is there worldwide, and we’re distributing worldwide, makes it so much easier for us to reach our audience in the end,” said David Smethurst, former head of programming at Team17.The speed at which players can start experiencing your game can have a significant impact on engagement and retention. This initial interaction sets the tone for overall perception: If players have to wait too long, they’ll lose interest even before entering core gameplay. When it comes to matching your players quickly, Unity was intentional in its design and chose a method that reduced time to match by up to 35% of other methods.To manage this at scale, Unity stays one step ahead of the demand curve, maintaining a buffer of servers in a warm state to ensure that they stay ready for a surge in players. This is essential to a game’s successful launch and helps ensure that when the player count blows past even the most ambitious forecasts, there are servers available for everyone.For the Apex launch, the platform supported over 3 million peak concurrent users with an uptime SLA of 99.95%, giving Respawn the confidence that their games’ success won’t be hindered by the infrastructure powering it.Game Server Hosting works great on its own, and since it’s part of Unity Gaming Services (UGS), you can get the increased benefits of the whole portfolio. UGS provides proven solutions to address the top challenges of running live multiplayer games at any scale, all in one place.For example, when Hi-Rez looks for solutions for its multiplayer titles, the team targets live game services that are built to scale. In the case of Rogue Company, Divine Knockout, and other titles, this means multiplayer and live ops solutions with a proven track record in the studio from UGS.“Things like Analytics, Game Server Hosting, all those things like really just fit in and made our platform stronger without us needing to do the work in house,” shared Alex Cantatore, vice president of brand marketing at Hi-Rez Ventures.One way the studio uses UGS is to track character data from each game session played, allowing for thoughtful tweaks to damage numbers and unique abilities that lead to improved gameplay.Unity Analytics can help fine-tune a new user experience and create an informative but concise tutorial that helps new players have the tools to jump right into games. Read how features such as Player Funnels can do this for your game, then take the lead of these incredible creators by implementing UGS solutions in your next project.Here are some resources to get you started:How to manage network latency in multiplayer gamesBeginner’s guide to Unity AnalyticsHow to apply A/B testing to gamesBuilding an in-game economy: Part 1, Part 2, and Part 3Launch and scale your next multiplayer title with Unity solutions. If you have questions about how to get started, connect with our team in the Multiplayer forums.*Data for the time period July 8–August 8, 2023.]]></description><link>https://unity.com/blog/games/how-creators-launch-scale-multiplayer-games-with-unity</link><guid isPermaLink="true">https://unity.com/blog/games/how-creators-launch-scale-multiplayer-games-with-unity</guid><pubDate>Thu, 24 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2023.3 coming April 2024 with updates for graphics and performance]]></title><description><![CDATA[Editor's note (December 1, 2023): At Unite 2023 in November, we revealed the new name of the Unity Editor and Runtime. The third tech stream of the Unity 2023 cycle will be named Unity 6 Preview, with Unity 6 replacing Unity 2023 LTS. Refer to our Unite 2023 keynote and Product Roadmap breakout session (coming soon to YouTube) for updates on what will be in Unity 6 and Unity 6 Preview.We’re adding a third Tech Stream to our Unity 2023 release lifecycle to include production-ready additions for graphics, performance, and productivity.Last September, I kicked off a blog series called Games Focus. It reiterated our commitment to building the best game development tools we can for you, our creators and partners. Our vision has remained unchanged:Unity enables you to create extraordinary games of all kinds and reach your players wherever they are.After releasing the Unity 2022 Long Term Support (LTS) and 2023.1 Tech Stream, we looked at our roadmaps and realized that a tweak to our schedule would give you access to features earlier than planned.So, rather than making you wait until the development cycle AFTER Unity 2023 LTS for some amazing updates that will further deliver on our Games Focus promise, we decided to add an extra Tech Stream release to get them into your hands sooner.Unity 2023.3 Tech Stream will be released in April 2024, meaning that the Unity 2023 LTS will ship later, toward the end of that year. We’re committed to providing you the most rock-solid and productive version of the Editor, so we’ll use the additional time between 2023.3 and LTS to further polish the rest of the experience.Adding this Tech Stream allows us to bring you some critical developments, particularly in the areas of Universal Render Pipeline (URP), artist workflows, platform integrations, DOTS, and cross-play multiplayer. It has given engineering teams an opportunity to accelerate features that were otherwise not planned for 2023 LTS.Before we look at some of the additions coming your way in 2023.3, I’d like to remind you that the 2023.2 releases have already started, and the feature highlights forum post is well worth a read to see what’s included.Here’s a quick snapshot of some of the updates you can expect in the 2023.3 tech release.First up, we announced Unity’s visionOS beta program in July, and we continue to scale it. With a deep integration between Unity’s new PolySpatial technology and visionOS, your apps can sit alongside other apps in the Shared Space on Apple Vision Pro.We’re maintaining our momentum on platform support and have examined opportunities to improve rendering on newer devices. As a result, we’re building on Unity 2022’s Foveated Rendering API for PlayStation VR2 support and extending it to Meta Quest 2 and other devices to offer full integration with the Oculus XR and OpenXR plug-ins. This enables you to create more immersive and high-fidelity XR experiences.The newly introduced Split Graphics Jobs threading mode, initially available for DX12 platforms and PlayStation 4 in previous releases, improves CPU performance for render thread-bound applications. In Unity 2023.3, Split Graphics Jobs support is extended to PlayStation 5, with additional platform coverage planned for the future.In 2023.2, the PS5 graphics backend includes support for the Adaptive Vsync presentation mode. We’ll also make this available for Xbox Series and Vulkan desktop platforms in Unity 2023.3. This feature reduces Vsync-related frame stutter by dynamically adjusting Vsync rates based on rendering performance, providing a smoother viewing experience.Unity 2022 LTS delivered important foundations for the creation of casual co-op and competitive action multiplayer titles. To help get you started, we’ve shipped an ambitious 64+ players competitive gameplay sample, Megacity Multiplayer. We aim to reach the next level by delivering a sample showing how those capabilities can be implemented in a cross-play environment, including mobile devices and with a significantly larger number of concurrent users.With Unity 2023.3, we plan to make significant progress in simplifying the overall creation workflow. Development teams are hard at work on a series of improvements to the Editor, the management of dedicated server targets, code stripping and deployment, tools for Play mode testing, and samples and educational content to help you get started more quickly.With our focus on performance and quality, the integration of Render Graph into URP increases access to URP frame resources, making it easier to customize your rendering and create custom render features. Render Graph enables you to craft more advanced and performant extensions for URP to create your own unique visual style for your game, all without modifying the URP source code.Render Graph seamlessly and automatically optimizes GPU memory, but more importantly, it’s been improved to also optimize GPU bandwidth utilization while automatically applying the NativeRenderPass API. This ensures optimal performance and minimal energy consumption on untethered and tile-based GPU devices.All URP render passes now harness the Render Graph framework, solidifying the foundation and our vision for URP to be the forefront of render pipelines for scalability with performance on untethered devices and diverse supported platforms. In this additional tech release, we’re focusing on optimizing the Graph compilation cost to ensure that Render Graph provides all the additional benefits mentioned above (and more), while minimizing the CPU cost of the system.API access and customizability in URP are being further refined, addressing complexities in creating custom post-processing and improving access to resources like history buffers (color and depth). For High Definition Render Pipeline (HDRP) the primary focus remains performance enhancements along with the integration of NVIDIA DLSS3 support.Taking advantage of these improved graphics features, we’re looking at the workflows you use to integrate them into your games.The artist experience is being enhanced with improvements to Mipmap streaming debug views for SRPs. Shader Graph receives keyboard shortcuts functionality, scope, and visibility setting enhancements, while URP support for VFX Graph is being further improved.Additionally, we’re working on providing better onboarding materials and samples for both Shader Graph and VFX Graph. We’re also continuing our focus on improving the stability and usability of light baking, ensuring a more seamless and reliable lighting experience for users.Unity 2022 LTS introduced a powerful set of packages based on ECS for Unity that enable you to target more ambitious projects and are fully supported for production on all platforms. Based on your early feedback, we’ve already delivered several quality-of-life improvements to the overall workflow.This speeds up general iteration time in the Editor when related to TypeManager, baking process, or source generation. We provided greater clarity in documentation or error messages, delivered additional performance to several APIs, and added a new one to create Entities faster.Those improvements are being delivered for both Unity 2022 LTS and Unity 2023.3.If you’d like more information about our new release cycle, post a question in this forum thread.The future of Unity Editor, Engine, and Runtime development is looking bright. Next year is set to be big, with even more developments we can’t share yet. For our next major update, join us at Unite 2023 and tune into our keynote and Road to 2024 sessions to hear more about what’s in store.]]></description><link>https://unity.com/blog/engine-platform/2023-3-coming-april-2024-with-updates</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/2023-3-coming-april-2024-with-updates</guid><pubDate>Tue, 22 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity July 2023 roundup: Dave the Diver, Football Manager, and other games on top]]></title><description><![CDATA[It's been a busy month at Unity. The 2023.1 Tech Stream and SpeedTree 9.5 are here, support for visionOS was announced, and two new sample games were released for 2D and multiplayer. But enough about us. Read on to discover what Unity creators accomplished in July, including the latest game releases made with Unity.Let’s start by celebrating Made with Unity creators who are making waves in gaming.We’re kicking things off with PC game creators. Games made with Unity that were recognized in Steam’s top 20 new releases in June include BattleBit Remastered, Dave the Diver and more. Additionally, Rust, Unturned, and 7 Days to Die, and more are among the top 20 most played games on Steam.*Congrats to MINTROCKET, the team behind the viral hit, Dave the Diver. The game was recognized as one of the top 20 new Steam releases in June and saw astounding player growth. It has captured the minds and hearts of the gaming community, achieving a Metacritic score of 89 and receiving overwhelmingly positive reviews from over 45,000 players on Steam. Dave the Diver has become a bonafide indie darling – with gamers applauding its humor, simple and charming visuals, addictive gameplay, and overall ability to surprise and delight.We’re also excited about two great games that are moving over to the Unity engine: Poncle’s Vampire Survivors and Sports Interactive’s Football Manager. Poncle is looking to deliver better performance and stability, while Sports Interactive aims to achieve more power graphically.Between Twitch and YouTube, July upped the ante with even more incredible creator stories. On Twitch, we hosted the Cut to Bits team behind Kickstarter sensation Venture to the Vile for a Creator Spotlight stream. Then, we turned to the community for not just one, but two Let’s Play sessions in which we played your games. Finally, we brought Madison Karrh on the channel to hear about her indie game development journey.Taking it to YouTube, we released creator stories from Second Dinner on MARVEL SNAP (watch above) and Monomi Park on Slime Rancher 2.If you haven’t already, subscribe to our YouTube and follow us on Twitch.There’s always something gorgeous happening on social media with the #MadeWithUnity hashtag. Here are a few highlights from July.On Twitter, @CephalopodSalad illuminated the depths of the sea with astral jellyfish VFX, while @minionsart created new bridges via an amazing construction effect. Then, @Sakura_Rabbiter finished the month by introducing us to her rocky friend.Meanwhile on Instagram, @faerieafterlight explored stunning and colorful landscapes, and @_myllys went on a solitary excursion. AnderssonKev’s cute chicken witnessed a cool “unfolding” effect on the bridges around it, and finally, Calepin Studio shared the breathtaking scenery of abandoned Roman temples.Last but not least, here’s a roundup of stunning Unity Asset Store creator showcases from July:Alien Terrain Pack | @DaelonikVarious Environment Islands | Digital Artist JZMountain Lake - Forest Pack | @arts_vividWe’re always happy to share the #MadeWithUnity love. Keep adding the hashtag to your posts to show us what you’ve been up to.There were many exciting updates in July from games using Unity. First, the highly anticipated Viewfinderwas released. Get your best camera ready and reshape reality using your own shots in this game. Venba is also available now, taking players to the kitchen for delicious Indian food.July also brought the sequel to OXENFREE, OXENFREE II: Lost Signals, to the world. This game takes you on a journey to find clues behind mysterious radio signals. Finally, our favorite friends Mickey, Minnie, Donald, and Goofy embarked on their latest adventure: Disney Illusion Island.The team at 2pt Interactive also shared an update to Heavenly Bodies, releasing a new DLC version.Here’s a non-exhaustive list of games made with Unity that were released in July. Do you see any on the list that have already become favorites or find that we’re missing a title? Share your thoughts in the forums.OXENFREE II: Lost Signals, Night School Studio (July 12)Battle Bows, WIMO Games (July 13)Life of Slime, 0-Game Studios (July 13)Rider Worlds, Ketchapp (July 13)Goosey Guess, Gas Lantern Games (July 14)Viewfinder, Sad Owl Studios (July 18)Techtonica, Fire Hose Games (July 18)Let's! Revolution!, BUCK and Antfood (July 19)Frank and Drake, Appnormals Team (July 20)Lakeburg Legacies, Ishtar Games (July 20)Crime O'Clock, Bad Seed (July 21)The Banished Vault, Lunar Division (July 25)Arcadian Atlas, Twin Otter Studios (July 27)Hello Kitty Island Adventure, Sunblink (July 28)Venba, Visai Games (July 31)Premortal VR, Voigon Ltd. (July 31)We share new game releases and milestone spotlights every Monday on the @UnityGames Twitter and @unitytechnologies Instagram. Be sure to give us a follow and support your fellow creators.If you’re creating with Unity and haven’t seen your projects in any of our monthly roundups, submit them for the chance to be featured.That’s a wrap for July. For more community news as it happens, follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.*Ranking as of August 4, 2023 at 8:30 am PT]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-roundup-july-2023</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-roundup-july-2023</guid><pubDate>Wed, 09 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How we maintain quality tech at scale: an inside look into how we build our SDK]]></title><description><![CDATA[At Unity, we continually work to ensure our ironSource SDK is best-in-class. But with a huge amount of scale - more than 1 billion devices - ensuring a top SDK takes a village.Quality is a two part process - we need to (1) build a strong product for our developers, and that product needs to (2) ensure a good experience for users of our developers’ apps. And as we work to keep our developers and their users happy, the market continually pushes toward new and updated features. In this industry, there’s always a delicate balance between progression (e.g., testing for new software) and regression (e.g., confirming our software is still working well). Essentially, we can’t keep manually developing new features without supporting the features - and clients - we already have.Instead of needing to increase our resources, we can balance progression and regression with automation. Normally, you would have to manage a tradeoff between quality and quantity. But with automation, we don’t have to sacrifice one for the other - we can optimize toward progression and regression at the same time.So, how do we manage to scale while meeting and exceeding market demand and carrying the weight of hundreds of millions of daily active users? By ensuring every layer of our SDK delivery process is automated.Here’s how we use automation to ensure every one of our SDK integrations runs smoothly - from our developers and quality engineers, to our integration team.
Layer 1: DevelopersLet’s start with developers because they’re the ones writing the code. From the moment our Unity LevelPlay developers start coding, we always have quality in mind - every part of our SDK is backed up with unit tests. Unit tests are basic, automated tests that ensure the SDK components are working well. Unit tests are constantly running, automatically checking if the API (application programming interface) is triggered with input, then output is as expected. Essentially, the tests confirm that the API is communicating properly. For example, if we want to integrate a new ad format into our new SDK version, the unit test would confirm that each ad format is presenting and working well.In fact, we’re not just ensuring that the API information is being communicated - we’re confirming that the information is consistently accurate. For example, within Unity LevelPlay mediation, there are different ad network requests popping up at all times. As the bidding system triggers an auction for the top ad network, it’s critical that every piece of data in this moving puzzle is up-to-date and accurate. If one piece is not accurate, it can affect the entire funnel, so our automated tests ensure we can keep a close eye on all of the moving pieces.This can be a very tedious task - highlighting why automation is so important. One of the biggest roles of automation infrastructure, particularly unit tests, is testing data all the time. Unit tests certainly cover regression, but not necessarily progression - so that’s where the next level of testing, integration testing, comes in.Layer 2: Quality EngineersThe next layer of progression is covered by the quality engineers, who specialize in a variety of testing - particularly integration tests. Integration tests automatically run on a daily basis, but instead of checking if our SDK component tests are working, integration tests check how these components work together. Continuing with our previous example, if we want to add a new ad format to our newest SDK version, quality engineers would set up an integration test, systematically checking how this ad format might interact with other ad formats. Even for automated tests, this can be a tedious process - with so many SDK components, there are an endless number of ways they could combine and interact. That’s why our SDK quality engineers tend to use the 80/20 rule, or testing the top 20% most common interactions to account for 80% of the combination scenarios. The larger the ground to cover, the higher the possibility of technical issues, so our quality engineers are encouraged to be hyper skeptical - and also assume there’s a technical issue, even if there’s not.Layer 3: Integration teamLet’s say the developers and quality engineers have already given this new SDK version the green light, including the new ad format. Even though this new version is ready for launch, it might not be able to thrive in every scenario - for example, it might not work well in a few countries that only have 3G.Before we release this new SDK update to developers, our integration team uses alpha apps, internal production apps made with in-house tech, to measure how the update will perform in a real scenario - both from the developer’s and user’s perspective. In our example, the integration team would test the SDK on real traffic in these countries, using the same tools that developers use, just in a closed environment. Both integrating the SDK into an alpha app and uploading the app into the store are fully automated processes. In many ways, the integration team works like a production line, with many automated steps along the way.Once the new SDK version is live, we can continually make adjustments to ensure the best quality user experience. As we develop many of our new SDK features, we include a toggle option - so if one feature ever becomes faulty for a certain audience, we can turn it off if needed.Combined, these three layers of testing ensure that we have a fortified automation infrastructure - ensuring that our products are high quality for every one of our many users. The automation process grants us the biggest gift possible - time - which we can use to focus on progression, and developing new and innovative features to keep our SDK best-in-class.
]]></description><link>https://unity.com/blog/building-tech-at-scale-ironsource-sdk</link><guid isPermaLink="true">https://unity.com/blog/building-tech-at-scale-ironsource-sdk</guid><pubDate>Tue, 01 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Crafting the stunning scenarios in Warhammer 40,000: Warpforge]]></title><description><![CDATA[In this guest post, Everguild’s team discusses the studio’s upcoming collectible card game for Steam, iOS, and Android – Warhammer 40,000: Warpforge – and how they leveraged the best elements from past successes, elevating them with the latest development tools.We are Isabel Tallos (co-founder and art director) and Cesar Rios (game director), leading the development of Warhammer 40,000: Warpforge at Everguild. For this ambitious project, the studio’s third and largest to date, we’ve leveraged the best elements from Warhammer The Horus Heresy: Legions, and elevated our work using the latest development tools and a lot of craftsmanship.Warhammer 40,000: Warpforge aims to become a reference for quality, depth, and innovation among digital collectible card games. One of its most striking features is the approach our team has taken to depict the scenarios where battles take place.Most card games use a top-down perspective, but in Warpforge all units become “physical” tokens in battle. They fight in astonishing scenarios that provide an immersive experience of leading a player’s army in battles across the Warhammer 40,000 universe.In this deep dive, we’ll examine the design and technical challenges that led to these battle backgrounds, and the tools and processes we used to create them.Building on a successful foundationThe approach we take in Warpforge draws from the experience of Horus Heresy: Legions, our previous card game in the Warhammer 40,000 universe. Originally a mobile game, the scenarios and game logic were done in 2D, faking the perspective to create the illusion of being 3D. This helped keep the game lightweight and able to run on low-spec devices.However, building the scenario and logic in 2D caused important limitations when trying to create VFX for the different cards and abilities, and even more so when trying to animate or add VFX to the background itself.Benefits and challenges of 3D scenariosTo make the scenarios for Warpforge as stunning and immersive as the team wanted, and to elevate the card’s VFX to the next level, it was essential to create them in 3D. Moving to 3D enabled us to stop faking positions, scales, and rotations and just do things in a more natural way. This led to better quality VFX and faster production times.From the start, we wanted our 3D scenarios to maintain the exact same visual aspect as our amazing 2D concept art. When using the usual 3D asset production workflow for creating 3D assets (concept, modeling, unwrap, and texturing), some deviations were introduced in each step, making the final result different from the original concept art.Since the game will be released on mobile, creating high-fidelity 3D assets on less powerful devices risks introducing performance problems, like frame rate or memory issues, and increased loading times. Add to this increased production time when executing this workflow properly for each of the scenarios, and it was clear that we needed a different approach.Camera projection mappingAfter numerous attempts with different approaches, the main breakthrough was the idea of using camera projection mapping. This technique, also known as spatial augmented reality, consists of “projecting” 2D textures over 3D surfaces or objects, creating a “projected texture.” It makes flat surfaces appear to have depth, creating the illusion of very detailed 3D objects while using extremely simple geometric shapes. It also allows for some limited camera movement to further convey the impression of being immersed in a fully 3D space.With this approach, we managed to get all the benefits of a 3D scenario without most of the drawbacks. It allowed us to faithfully keep the art style and level of detail of the concept art, without having to recreate it through 3D assets. It also requires very little processing power at runtime, allowing the game to run perfectly even on low-spec devices. Plus, the end result requires much less work and cost than creating full 3D environments.Compared to a full 3D environment, a scenario built with camera projection mapping doesn’t allow for a lot of camera movement, so it’s clearly not a valid solution for many types of games. For a card game like Warpforge in which the camera is mostly static, though, it is a fantastic solution.Creation processThe process of generating a scenario has several steps. For Everguild, it starts with the creation of a placeholder scenario directly in Unity using simple primitives. It consists only of a floor plane and some vertical cubes to help find the camera perspective that best matches the desired gameplay.Once everything is set up correctly, we capture an image from the camera perspective to send to the painting software. Using the Unity FBX Exporter, we export the 3D placeholder scenario, including the camera position and lens parameters, so we can import it into Blender.Taking the exported image as perspective reference, the concept artists draw the scenario. They have total creative control without any type of restriction, because whatever they do will be translated 1:1 to the game. Concept artists not only draw the scenario itself, but also the visual effects (VFX). Those will be used later as reference, even as textures, for the VFX artists. In this step, it is essential to properly organize the file in layers, always drawing whatever is behind the objects, so that we can export the different layers separately later.Once the concept art is ready, it is brought into Blender, where each element is projected onto a simple 3D object. This projection technique eliminates the need for the 3D artist to laboriously create custom UVs for every object, since the camera projection mapping automatically calculates them. The 3D models are then exported back to Unity. Here, using custom Editor tools, a final pass takes place where the various texture layers are combined into a cohesive atlas texture.This process not only optimizes memory usage and the game’s size, but also minimizes the batch count. Now, the scenario looks exactly like the concept, but we can take it a bit further.Bringing scenarios to lifeAfter creating the 3D scenario concepts, it’s time to bring them to life with a range of different tools. For example, a camera flyover at the start of the match helps provide a sense of depth and immersion, though the path needs to be carefully chosen to work around the limitations of the projection mapping technique.We use a combination of Shader Graph and Render features to craft an array of captivating effects, including dynamic water, blurred planar reflections, vortex portals, and more. These effects are seamlessly integrated with particle effects using both Shuriken and VFX Graph. VFX Graph is used for implementing more complex effects. However, since it relies on compute shaders, we always ensure the availability of a fallback version for devices that don’t support it.Each effect is meticulously designed to align with the original vision from the concept artist, ensuring a cohesive and immersive experience.Bringing processes to lifeAfter a painstaking research process involving the design, art, and technical teams, we’ve developed an approach to creating 3D scenarios which meets all of our core criteria: Stunning aesthetics, a sense of immersion, efficient development workflow, and strong performance on all devices.We believe there are many games which could benefit from these processes, particularly those with limited camera movement. We hope this post will prove useful to some developers. Most importantly we hope players will enjoy diving into the grim, dark universe of Warhammer 40,000: Warpforge when it’s released.The game is currently in its closed alpha phase and due for release on Steam, iOS, and Android before the end of the year. To learn more about the multiplatform release, check out Everguild’s recent case study. Read more Made with Unity stories straight from the developers here.]]></description><link>https://unity.com/blog/games/stunning-scenarios-in-warhammer-40000-warpforge</link><guid isPermaLink="true">https://unity.com/blog/games/stunning-scenarios-in-warhammer-40000-warpforge</guid><pubDate>Fri, 28 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to make nature shaders with Shader Graph in 2022 LTS]]></title><description><![CDATA[In this blog, we explore how to create two distinct nature shaders using Universal Render Pipeline (URP) in 2022 LTS. We also take a closer look at a stylized water shader and a semi-realistic sand shader. The assets are released with the new URP 3D sample scenes.The visual effects appear complex at first glance, but we’ll dive into the design-based thinking process behind these features and cover step-by-step breakdowns of the techniques that bring them to life. Let’s explore the intricacies of shader development and create stunning nature shaders.The goal, as depicted in the video above, is to create a stylized stream that runs in the middle of a Japanese-style garden scene. Based on the rest of the environment, the atmosphere is quiet and zen-like, and the art style is more animated than photorealistic.From the terrain embedded in the scene, the water is a combination of two parts: a waterfall, and a stream running under the bridge. The water scenes from Studio Ghibli are very inspiring, and frequently have three distinct elements:1. Flow lines which help establish the flow of the water2. Edge highlights to show the water interacting with the surrounding terrain3. Foam effects to help sell cascades or waterfallsThe final water shader will use all of these elements. Now, let’s explore the details of how to achieve the look.The waterfall has two distinct meshes – the primary waterfall mesh and a disc-shaped plane that generates ripples. Using a separate unlit shader for the ripples, you can tile a noise node and use it as the alpha value of the shader. This masks out the remaining areas, ensuring that the ripples appear where intended.The most important part is to ensure that each area of the mesh can perform different behaviors. You can achieve this by pre-painting the meshes with vertex colors in the red (R), green (G), and blue (B) channels. The vertex colors are then used as masks to separate operations in certain areas.In Shader Graph, use the Vertex Color Node to access the pre-painted vertex color data. As seen on the right side of the image below, you can use the red channel in vertex color as your T value to interpolate (lerp) between the vertical and the horizontal part of the waterfall, achieving a smooth transition. To create a water cascading effect, combine two Voronoi Nodes, each with different tiling and offsets. This results in a dynamic visual of water falling.In real-life waterfalls, the areas where water cascades from the upper horizontal level and where it strikes the lower horizontal level often have thicker layers of foam and splashes. In the scene, you can pre-paint the vertex color in the blue channel to make sure the effects only show up in specific areas. Using vertex color masks enables you to combine up to four different effects into a single data piece. This approach is more efficient compared to creating separate grayscale mask textures for each effect.To create the illusion of multiple layers of water falling from the edge, utilize noise nodes with different scales and speeds. By scrolling a noise node with a larger scale at a slower speed, alongside a smaller scale noise node at a faster pace, you achieve the desired effect. To maintain consistency with the horizontal part of the waterfall, reuse the data from the stream water. We will delve into further detail about the stream water shortly.Now that you’ve created a calming waterfall, let’s move on to the stream. There are several key features that animation-style water usually has. Unlike the turbulent shoreline foam found in the real world, a Ghibli-style stream typically has very thin foam near the shore. Additionally, the presence of water tails can bring a dynamic and lively impression to the water. Since the scene is set at night, a convincing reflection effect is also necessary. Let’s take a closer look at how you can achieve these effects in Shader Graph.There are multiple ways to capture a reflection on the water’s surface. The most efficient option is a Custom Function Node that calls the GlossyEnvironmentReflectionfunction built into URP. This function returns the reflection color, which is sampled from a box projection reflection probe in the scene. You just need to pass in the world space position, view direction, normal, and screen position required by the function.If you need higher visual quality and more grounded reflections, URP’s planar reflections can be an excellent option. Planar reflection creates a mirror-like reflection of a flat surface, which is ideal for the water mesh, given its flat plane structure.To achieve planar reflection, you need to set up a separate camera and render texture to store the reflection data. The basic concept is to place a reflection camera below the reflection plane (in this case, the stream in the scene) and update it based on the player camera’s position and orientation. The render texture will also be updated in real-time.One advantage is that you can set the reflection camera’s near plane as the reflection plane itself. This eliminates the need to clip out objects that are located below the reflection plane, which simplifies the implementation process. In Shader Graph, you create a texture property, and in the script, you assign the render texture you previously created to it.In order to link the render texture successfully, make sure that when setting the shader property, the property set matches the reference ID of the texture property you created in the Shader Graph. Make sure that the script calls the exact property ID when updating the render texture. Then, use the screen position as the UV to sample the texture. Now you have successfully achieved planar reflection in our shader.Implementing planar reflection involves several technical considerations and details. For a more in-depth understanding and an example of its implementation, feel free to take a look at this URP sample. One thing worth noting is that planar reflection is more computationally expensive compared to using reflection probes because it renders the objects twice.To achieve the edge foam effect, you need to calculate the depth differences. The Linear01 option in Scene Depth Node returns a linear depth value scaled from 0 to 1 for opaque objects. Multiplying this value with the Camera Far Plane Distance enables you to determine the distance between the camera and the opaque object – the rock, in this case. The z component of the Raw option in the Screen Position Node provides the eye-space depth. You can then calculate the depth difference between the transparent water surface and the opaque rock easily, and pass the depth value into the Emission output to create a foam-like effect.In order to retrieve depth values from the scene, make sure to enable Depth Texture in the project settings. You can find the Depth Texture option in the General section of the render pipeline asset. The current render pipeline asset is accessible via Edit > Project Setting > Graphics > Render Pipeline Asset.Creating the trails, which show the movement of the water along the stream, is straightforward. By tiling and offsetting two Voronoi Nodes and masking out the desired areas using vertex colors, you can create stylized water trails flowing along the water surface. Then, adjust the speed of the noise node to match with the previous falling water. You now have stylized water trails flowing through the water surface. This is very similar to the technique used to create the waterfall’s stream lines.Now, let’s change gears and look at a less stylized, more realistic shader. The sand shader is in a realistic desert scene, which necessitates the terrain to closely resemble real-world sand visually.Sand rendering is an interesting challenge. A plain PBR shader does not capture the look of desert sand under a strong sun. There are two main features to cover in the sand shader: the sand glitter, which is a subtle but noteworthy aspect, and the blowing dust, a dynamic feature that adds liveliness.Since sand is composed of countless tiny grains, it sparkles when exposed to sunlight. How do you achieve that glitter effect? Similar to how you do specular reflection, first calculate the reflection vector using the surface normal. Taking inspiration from Journey, instead of calculating the dot product between the normal vector and the halfway vector, you calculate the dot product between the normal and the view direction instead. This adjustment ensures that the glitter pattern varies based on the viewing angles, enhancing the visual appeal of the shader.You have two noise maps in the shader. One is used for sampling the sparkles, and the other is used to mask out the main noise texture for a more dynamic and captivating result. Use the previously calculated reflection vector to distort the UV used for sampling the noise mask.The blowing dust sand effect is a combination of two elements: moving sand trails and sand waves. The concept is fairly straightforward. You are tiling different normal maps to achieve the desired outcome. One key point for the sand trails is that you need a mask to mask out the normal map and make the effect look more dynamic. Instead of using the default UV, sample two noise maps with absolute world position.One thing worth noting is that the World option in the Position Node changes based on the setting of different render pipelines, so select the Absolute World option to avoid any behavior changes when switching pipelines. Next, tile the two maps in a diagonal direction, which will create a ripple-like effect. Then scroll another noise map along the sand wave direction to add to the feeling of sand shifting away.An important aspect is how to achieve normal blending in the shader. In a sand terrain, where the albedo map may not be as complex compared to other terrains, the normals play a significant role in the visual appearance. Blend multiple normal maps in the shader. Different from blending albedo maps, the normal maps store directions, and different blending methods can yield very different results.Let’s take the Normal Blend Node in Shader Graph as an example. When blending normal maps A and B, the default option in the Normal Blend node adds the x and y channels of the two maps together, while multiplying the z channels to obtain the third element of the blended normal. The reoriented option, as the name suggests, involves a more intricate process. It rotates the normals in map B to align with the direction of map A. This approach retains the most data from both maps, but it is also the most computationally expensive option.In our shader, we have opted for a simple blending method for the normals. The main reason for blending the normals is to create a vivid sensation of sand blowing or moving across the desert surface. Accuracy is not the top priority. Additionally, the shader is applied to a relatively large terrain mesh, so minimizing computational costs is important.Considering these factors, here is a straightforward approach: Add the red and green channels of the normal maps together, and, for the blue channel, pass in a value of 1. Then, scale up the normal strength a little bit, and the result looks great.In addition to the discussed features, there are other controls implemented in the shader. One of these is a general fading control, which determines where the effects appear on the terrain based on the camera distance. This allows for a gradual transition and fading of the effects as the camera moves further away.You can also adjust the smoothness value in the distance, enabling better blending of the sand dunes and the background terrain. As the viewer zooms in, a detailed graininess normal map replaces the terrain normals. This substitution provides a more realistic desert experience, adding finer details and textures to the sand surface.Now that you’ve gone through all the features in each of these two shaders, don’t hesitate to create your own versions. If you are passionate about creating shaders with Shader Graph, join our forum or find us on Discord. Be sure to watch for future technical breakdowns from Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/nature-shaders-with-shader-graph-in-2022-lts</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/nature-shaders-with-shader-graph-in-2022-lts</guid><pubDate>Fri, 28 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Welcome to Megacity: Our competitive-action multiplayer sample]]></title><description><![CDATA[Creating multiplayer games is complex. As the 3D market accelerates its evolution into live games, it is becoming more common for creators to feel overwhelmed by the technology and steps required to build those games. At Unity, we strive to push the boundaries of game development and equip developers with the best tools they need for building great gaming experiences.To that end, we are thrilled to announce the release of Megacity Multiplayer, our new competitive-action multiplayer sample. This release marks a significant milestone for our team, as it showcases how creators can build ambitious multiplayer titles that support more than 64 concurrent players while leveraging Unity Gaming Services (UGS) solutions like Game Server Hosting, Authentication, Voice Chat, and Matchmaker.Players will begin Megacity Multiplayer by hosting or joining a game server, which can either be set up locally on a player’s device or via Game Server Hosting.Once connected, players will join a lobby and be transported into the massive game world of Megacity Multiplayer, which features an immersive environment to play and chat with others. In Megacity Multiplayer, players earn points by shooting other cars while competing for the top spot displayed on the leaderboard.Our Data-Oriented Technology Stack (DOTS) adds much power to the Unity engine so that creators can build more ambitious games. A key feature of DOTS, the Entity Component System (ECS), shipped with Unity 2022 LTS. With this release, the Megacity Multiplayer sample demonstrates built-in features for supporting more than 64 concurrent players.Megacity Multiplayer illustrates how Unity and the Netcode for Entities package can work together to power large-scale multiplayer games without compromising performance. Seasoned creators are able to achieve an unprecedented and extensible level of control and determinism with ECS for Unity.Megacity Multiplayer helps you learn how to structure, network, and operate a competitive-action multiplayer game with solutions from the Unity ecosystem. It also showcases how creators can leverage UGS to develop engaging multiplayer games. For example, Game Server Hosting offers a streamlined approach to maintaining resiliency and scalability in gaming infrastructure, and Matchmaker, Voice Chat, and Authentication are used to connect your players and facilitate in-game communication.We eagerly await your feedback so we can further refine and enhance the multiplayer developer experience. Your insights and suggestions ensure we provide useful samples that inspire and empower our creators.Our current planning includes porting the Megacity Multiplayer sample to the Universal Render Pipeline (URP) to aid in the demonstration of how true, crossplay competitive action can be built with Unity tools. Stay tuned.Get the sample and request features or updates via our public roadmap. Then, keep up with the latest on Megacity by staying in touch with us and sharing your experience (or asking questions) on Discord or in the forums.]]></description><link>https://unity.com/blog/games/megacity-competitive-action-multiplayer-sample-game</link><guid isPermaLink="true">https://unity.com/blog/games/megacity-competitive-action-multiplayer-sample-game</guid><pubDate>Thu, 27 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[More capabilities to make your multiplayer game even better]]></title><description><![CDATA[Making multiplayer games isn’t easy, but the rewards make it well worth it.In September of last year, we launched a new self-serve experience for our Game Server Hosting (Multiplay) and Matchmaker products to make it easier for everyone to get their hands on the tech that supports some of the biggest multiplayer games in the world.Since then, we’ve been hard at work creating more tools and features to help you build and run your live multiplayer game.We want to make it easier for you to launch and run your multiplayer game, and we know that allowing you to integrate our solutions into your standard workflow can save a huge amount of time and effort.With that in mind, we’ve added the ability to upload your game server build directly from AWS S3 buckets. You can now reference cloud storage buckets as a source of your game binaries from within the Game Server Hosting interface. This allows you to adopt Game Server Hosting without disrupting any existing infrastructure, pipelines, or continuous integration and continuous deployment (CI/CD) workflows that rely on an external cloud storage solution, such as Amazon S3 buckets. After linking an external bucket to a Game Server Hosting project, you can view, manage, and sync the build files from the Unity Dashboard.To help you automate your tasks further, we’re also launching our new Command Line Interface (CLI) for Unity Game Server Hosting. The new CLI introduces an efficient and cohesive way to interact directly with Unity Game Server Hosting. You can now use this capability to upload builds and create and manage fleets and servers without having to access the dashboard. This capability not only saves time but also removes the need for manual intervention. It also allows you to automate key processes such as uploading builds as part of CI/CD pipelines and retrieve server information to accelerate testing cycles.You can quickly perform complex tasks, automate workflows, and do it all in line with the process you have become used to in the dashboard.​​A great matchmaking service is essential for the success of a multiplayer game. Matchmaker has a powerful rules-based engine that gives you the control to match the right players, in the right place, in the right amount of time.We’ve taken this a step further and have launched our matchmaking A/B testing capability. This lets you experiment with different matchmaking configurations while retaining complete control and without hurting your live game operations. Using the capability provided by Unity Analytics, you can streamline the workflow to test, evaluate, and optimize matchmaking rules.In a couple of simple steps, you can configure the match rules you want to test, apply them to your game, and get real game data to evaluate which rules have the best impact. You can target specific player groups by selecting audiences like “All Spenders” or “Churned Players” as defined by Unity Analytics and you can choose the goal metrics that are most relevant to your game, including daily active users, retention, and average revenue per user, to compare and assess the impact of your changes.This is available now so you can get started with Matchmaker A/B testing. You can also see it in action by checking out our talk from GDC 2023.To get started with these new capabilities go to the Unity Dashboard, and to discuss them with the team in more detail go to our Multiplayer forums.]]></description><link>https://unity.com/blog/games/more-multiplayer-capabilities-for-games</link><guid isPermaLink="true">https://unity.com/blog/games/more-multiplayer-capabilities-for-games</guid><pubDate>Wed, 26 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unite 2023: How to participate and what to expect]]></title><description><![CDATA[Editor's note: This blog was last updated in October 2023.For the first time in four years, our popular Unite conference is back, live and in person. Whether you’re new to Unity, a seasoned pro, or just curious about our real-time 3D technology, Unite 2023 will celebrate the vibrant Unity community in all its glory.We have an exciting agenda planned that covers everything games, including our renowned Keynote – full of inspiring content, crowd-pleasing announcements, and walk-ons from people behind some of your favorite games. During the day, there’ll be 30+ deep-dive technical sessions organized into four tracks – Ecosystem, AI, Multiplayer, and Growth. Our team will be spotlighting the latest Unity tools and features, demonstrating timesaving workflows, sharing proven strategies for ensuring game success, and giving you a sneak peek of what’s coming soon. Members of the Unity community, including developers from top studios, will be highlighting how they use Unity to achieve amazing games and experiences and run them on multiple platforms.And before, during, and after these sessions, there’ll be parties and plenty of great opportunities to get with your peers and connect with like-minded devs.Here are just some of the tantalizing details about what you can expect at Unite 2023.Unite 2023 will take place in Amsterdam on November 15–16 at two main venues:Welcome Party: November 15, 7:00–10:00 pm: To kick off Unite 2023, we’re all going to the world-famous Heineken Experience. Join us at this historic brewery on November 15 for tasty beverages and bites, multiple DJs, and good times meeting your friends and making new ones.Full Conference: November 16, 8:00 am–11:00 pm: Join us at Taets Art and Event Park located just on the outskirts of Amsterdam – a creative hub stretched over three historic buildings along the waterfront.The Unite 2023 Keynote will take place on November 16 at the Taets Art and Event Park at 10:00 am local time, with Interim CEO and President Jim Whitehurst expected to start the address plus many product experts and top studios taking the stage.Register to attend in person and see the Keynote live. For those not able to join us in person, the Keynote will be available to stream on our YouTube and Twitch channels starting at 1:00 pm ET/10:00 am PT.As well as our Welcome Party at Heineken Experience on November 15, there’s a Happy Hour and an After-Party at the end of the conference. You’ll also have plenty of opportunities to network with your peers.Now for the juicy stuff, let’s get into some of the biggest topics you will hear about during Unite 2023.As with every year, the newest innovations are top of mind for game developers everywhere. When it comes to AI, discover how Unity Sentis and Unity Muse are helping devs push the limits of creativity and build previously unimaginable experiences. Next, hear more about how we worked closely with Apple to provide a deep integration of visionOS with Unity PolySpatial, enabling creators to bring beloved games and apps to a whole new audience and ecosystem, or create something entirely new. Then, in the XR space, find out how Unity is helping developers create and bring their games to platforms like PSVR2 and Meta Quest 3.How do you actually make a living from games or build a successful project? At Unite, get actionable insights to help you apply business-school principles and turn a good game into a great business. Then hear studio success stories about how solutions like Wētā Tools, SyncSketch, Parsec, and Unity Gaming Services helped bring characters and entire games to life.With roadmap deep dives, you will learn the latest ways you can build a better game with Unity. This means announcements about what’s next in graphics technology, Data-Oriented Technology Stack (DOTS), ambitious multiplayer solutions, improved iteration and collaboration tools, and the best options for mobile monetization – all with an added sneak peek at what’s ahead.The fun, however, will have to wait for November. Not to worry, though, because you can catch up with last year’s Unite via our YouTube playlist and watch the most popular sessions (press play below to check one out right now).To keep up with all Unity news, sign up to receive blog posts straight to your inbox.]]></description><link>https://unity.com/blog/news/what-to-expect-at-unite-2023</link><guid isPermaLink="true">https://unity.com/blog/news/what-to-expect-at-unite-2023</guid><pubDate>Tue, 25 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[SpeedTree 9.5: Unleash creative control and realism with procedural detailing]]></title><description><![CDATA[The latest version of SpeedTree is here to help you elevate your projects to new levels of realism.SpeedTree is the industry-standard vegetation asset creation tool, and can be used across projects from blockbuster films to Indie games to bring environments to life with procedural modeling, flexible art tools, a living asset library, and cutting-edge photogrammetry workflows.SpeedTree 9.5 helps you to bring your environments to life with enhancements in several areas.More creative control: With the new frond manipulation feature, you can now randomize and manipulate the fronds of a leaf. By leveraging gravity, wind, and curling features, the fronds come to life, adding a natural touch to your scenes. We have also eliminated the need to jump in and out of other modeling softwares for editing to further streamline the workflow.Greater levels of realism: SpeedTree 9.5 introduces Projector, a groundbreaking technique for placing procedural details such as moss, snow, and twigs, on model surfaces. Using ray casting technology, these details are efficiently and realistically distributed across large-scale environments. By simulating how these elements would naturally accumulate on surfaces, this feature helps you add a new level of authenticity to scenes and landscapes.New techniques for procedural details: The new height map support allows you to identify subsections on a mesh via the paint tool in the cutout editor, eliminating the need for external modeling software. This streamlined workflow centralizes creative control so you can stay focused on your artistic vision.Request a free trial, or get SpeedTree 9.5 now. For more insights on SpeedTree and other Unity tools for artists, join us at SIGGRAPH 2023.]]></description><link>https://unity.com/blog/engine-platform/speedtree-9-5</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/speedtree-9-5</guid><pubDate>Thu, 20 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity support for visionOS: What you need to know]]></title><description><![CDATA[Following the Apple Vision Pro and visionOS announcements at Apple’s Worldwide Developers Conference (WWDC) 2023, we are excited to share that Unity’s beta program for creating spatial experiences on the visionOS platform starts today. We worked closely with Apple to provide a deep integration of visionOS with Unity, enabling creators to bring beloved games and apps to a whole new audience and ecosystem, or create something entirely new.The visionOS platform represents an exciting opportunity for developers to create the next generation of compelling spatial experiences using the Unity Editor they know and love. We’re also thrilled to debut Unity’s PolySpatial technology, which will power Unity content alongside other apps in the Shared Space on Apple Vision Pro.We know developers are excited to get started with this new platform. Beta participants will be added to the program over the next few months, but there are lots of things you can do today to start preparing content. Let’s dive into what you need to know.WWDC 2023 was an exciting moment for Unity and the XR ecosystem as a whole, as Apple announced its collaboration with Unity to help bring creators into the era of spatial computing through Apple Vision Pro.To learn more about Apple Vision Pro, visionOS, SDK, and core concepts around spatial design, check out the Apple Developer website.Two important Unity learning sessions were released as part of the WWDC event. We highly encourage interested developers to watch each session to learn more about Unity development for visionOS:Create immersive Unity apps with Vladimir Vukićević, director of engineeringBring your Unity VR app to a fully immersive space with Peter Kuhn, engineering architectLet’s review the ways apps can run on Apple Vision Pro. There are three main approaches to creating spatial experiences on the visionOS platform with Unity.1. Port an existing virtual reality game or create a new fully immersive experience, replacing the player’s surroundings with your own environments.2. Mix content with passthrough to create immersiveexperiences that blend digital content with the real world.3. Run multiple immersive applications side by side within passthrough while in the Shared Space.Porting an existing application or creating an entirely new one is straightforward with Unity. Here’s a quick overview:Workflow: With full support for the visionOS platform in Unity, you can see your projects running on Vision Pro in just a few steps. To start, select the build target for the platform, enable the XR plug-in, and generate an Xcode project. Then, from within Xcode, you can build and run to either Vision Pro or the device simulator.Graphics: Unity recommends using the Universal Render Pipeline for visionOS projects because it enables a special feature called foveated rendering for higher-fidelity visuals.Input: People will use their hands and eyes to interact with content on Vision Pro. Unity’s XR Interaction Toolkit adds hand tracking to make it easier for you to adapt existing projects. You can also react to built-in system gestures with the Unity Input System, and access raw hand joint data for custom interactions with the XR Hands package.Shared Space: Unity’s new PolySpatial technology enables developers to create apps that can run side by side in the Shared Space.In addition to immersive apps, developers can also run content in a window that the user can resize and reposition in their space. This is the easiest way to bring existing mobile and desktop applications to visionOS, and is the default mode for content targeting the visionOS platform. Beta support for windowed applications is available to try today in Unity 2022 LTS (2022.3.5f1 or newer).While Unity’s beta for visionOS gradually rolls out to participants, there are several important steps you can take to prepare your projects for this new platform:1. Learn more about our support for Apple Vision Pro and our PolySpatial technology in Unity’s WWDC session talks.2. Upgrade your existing projects to the latest version of Unity by installing Unity 2022.3 LTS (2022.3.5f1+) through Unity Hub.3. Familiarize yourself with Unity XR tools:AR Foundation – use to blend digital content with the real worldXR Interaction Toolkit – use to implement input and interactions4. Prepare your project for visionOS:Use (or upgrade to) the Universal Render Pipeline to take advantage of performance optimizations and visionOS platform features like foveated renderingConvert controller-based interactions to hand-based interactionsUse the Unity Input SystemPort shaders to Shader Graph or use standard shaders5. Try porting or creating a windowed app with Unity 2022.3.5f1 or newer.Register your interest in joining Unity’s beta program by signing up today. You’ll be notified by email when participants are selected to join the beta program. We can’t wait to see what you create!]]></description><link>https://unity.com/blog/engine-platform/unity-support-for-visionos</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-support-for-visionos</guid><pubDate>Wed, 19 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Where might AI take gamedev next?]]></title><description><![CDATA[In less than a year, AI has gone from being something most people don’t think much about to the subject of near-daily headlines. Generative AI is already revolutionizing creativity, and it will lead to a giant step forward in video games, too. In fact, our latest closed beta releases are taking steps toward that reality already.AI brings the promise of making real-time creation accessible to more people, simplifying some development tasks to let you focus on being creative while helping you to achieve more with less. And generative AI is just the latest in a long line of technological breakthroughs that have revolutionized video games.In 1952, a research product called OXO became the world’s first video game: tic-tac-toe programmed on a massive mainframe computer the size of a room. Atari engineers used an understanding of transistor-transistor logic (TTL) chips to create Pong in 1972, and its simplicity enabled domestic distribution, making it the first commercially successful video game. Space Invaders integrated a microprocessor and a multi-chip barrel shifter circuit into the first-ever fixed shooter, giving the 1978 classic incredibly smooth animations that set the table for this new genre.The introduction of PCs like Apple II and C64 introduced a broad spectrum of new possibilities – the modular setup with adaptable gravity and physics in games like Pinball Construction Set; the fluid rotoscoped animation of the first Prince of Persia adventure; and the widely ported Lemmings, which saw the game’s simple puzzles released on pretty much every gaming system out there at the time. Consoles really came into their own with 8-bit home systems, which offered unprecedented control, the 16-bit Sega and games like Sonic the Hedgehog, and the console-agnostic sports hits of Electronic Arts, which harnessed that control and realism to bring players inside their favorite sports.DVD consoles increased visual and speed bandwidth again in games like Road Rash and Need for Speed. The advent and broad adoption of the internet made MMOs possible, bringing gamers from around the world together to play things like Ultima and World of Warcraft. The 32-bit Sony GPU opened up new dimensions of creativity – literally – which brought new popularity to FPS shooters like Quake II that made stalking, shooting, and dodging more thrilling in 3D.Each of these technical shifts produced a revolution in creativity that reframed how players game. Generative AI, however, could potentially drive the greatest advancements in video games since transistors made the idea of playing tic-tac-toe on a computer possible.We’re at the hyper-fertile start of a new age with AI. Each week brings a staggering number of fresh ideas, demos, and services that simultaneously spark our imaginations and raise new concerns. And while those concerns are very real and will have to be recognized and addressed ethically throughout the ecosystem, the possibilities for generative AI in video game development are impossible to deny.AI has played a role in game development far longer than ChatGPT has been on the scene. It’s already widely used to accelerate elements of graphics production, train simulations through machine learning, and automate testing and repetitive tasks. The future is limitless, but we can already start to see some applications take shape.Every single aspect of game creation has the potential to be impacted, accelerated, and possibly improved by AI.Asset generation: Generative AI can be used to create game content like characters, terrain, vegetation, lighting, and even audio automatically, rather than being programmed by a developer. These capabilities can not only save development time and resources, but also enable previously unthinkable permutations during game play. Environments, for example, might feel less static or hard-coded to offer more immersive game experiences. The tech for this is already close – learn more about Unity Muse and apply for the closed beta to get started now.Non-player characters (NPCs): Interaction with NPCs during game play has been extremely limited by prescriptive programming behaviors. Generative AI may soon be able to power more lifelike and realistic NPCs that behave with greater adaptability and intelligence, for example by reacting realistically (yet unpredictably) to a player’s actions.Greater safety: A consistent issue with massively multiplayer online games (MMOs) has been unwelcomed toxicity and overall safety, especially for younger players. Coupled with natural language processing (NLP), generative AI can both more effectively manage the detection of harmful language and interactions to power safe yet entertaining interactions. Discover how machine learning is already helping devs to monitor in-game comms and build safer player communities with Safe Voice from Unity Gaming Services.Game design: Imagine if generative AI can be used to create game mechanics, levels, and character play that responds to player behavior and dynamically adjusts the game’s difficulty level accordingly. In short, it could be used to produce bespoke gaming experiences tailored to specific players. Non-deterministic game design can also open the door to entirely new genres of games – imagine, for example, compelling, open-ended detective games that change and adapt with every move.But this potential doesn’t end with creation – every aspect of the interactive runtime can be impacted and solved with a mix of compiled code and ML-trained AI solutions.Runtime inference: With Unity Sentis, designers can build game loops that rely on inference – the process of feeding data through a machine learning model – on devices from mobile to console to web and PC, without cloud compute costs or latency issues. This will be used to run NPC characters like Orb or restylize a game without requiring all-new artwork (for a night scene, for example, very much as Hollywood does it), or it could replace a physics engine by something 1,000 times more efficient. This could be fluid dynamics or particle interactions – the use cases of a performant runtime-based inference engine are endless.Generative AI will change our world in profound ways, known and unknown, but it will certainly empower teams to create entirely new game genres that will surprise and entertain us as never before. I am looking forward to the next few years to see what new genres are going to appear.At Unity, we believe the world is a better place with more creators in it, and AI will be a powerful tool to help creators of all kinds unlock new dimensions of productivity and creativity. We can’t wait to see where you take us next.Stay tuned to the blog for more about Unity and AI, and, if you haven’t already, sign up for our AI mailing list to be the first to hear about new tools and services.]]></description><link>https://unity.com/blog/games/where-might-ai-take-gamedev-next</link><guid isPermaLink="true">https://unity.com/blog/games/where-might-ai-take-gamedev-next</guid><pubDate>Mon, 17 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tackling toxicity with Unity Safe Voice]]></title><description><![CDATA[Toxic behavior can turn a potentially awesome gaming experience into a nightmare. When insults, trolling, and derogatory remarks are thrown around, many gamers choose to peace out, leaving the game behind. This player exodus can hurt a game's community and longevity.Studios dedicate enormous amounts of resources and people to make in-game communities safer, but the tools required to foster healthy, fun, and engaged player communities haven’t been up to the task – until now.The 2023 Unity Gaming Report further identified a need to support healthy community building for games, and we’re delighted to announce that Unity Safe Voice is now available in closed beta.Safe Voice from Unity Gaming Services (UGS) identifies disruptive and toxic behaviors exhibited by players in your game. By harnessing cutting-edge AI techniques such as advanced machine learning and deep learning algorithms, Safe Voice provides analysis of voice communications so you can identify and address toxic behavior effectively and efficiently. It helps you understand which behaviors are negatively impacting your player experience and gives you the insights you need to create communities that are safe by design.Current anti-toxicity solutions lack contextual understanding of interactions between players. They might rely on speech-to-text or transcription-based analysis, which falls short in distinguishing between actual harmful behavior and harmless banter or identify players who use alternate forms of disruption like loud noises. Words alone can be easily misinterpreted, which can further limit the effectiveness of assessing intent.Many solutions also rely solely on player reports to take action on toxicity. This places the burden on players to actively report violations and ignores instances where players might just leave the game, never to return.Safe Voice overcomes these limitations by using context-aware AI technology. It can detect audio disruptions like loud music or toxic behaviors, then classify these into more than a dozen categories including obscenities, threats, insults, identity attacks, problematic speech, and verbal attacks. Safe Voice analyzes unique voice characteristics like tone, loudness, pitch, and emotion to deliver nuanced insights on both session and player-based metrics.You can customize which interactions are monitored, rely on player-initiated or proactive situational triggers, and prioritize reports based on what matters most to your communities.Moderation can be resource-intensive, especially for games with large player bases. This can lead to delays in addressing player reports, slower response times, and constantly overwhelmed moderation teams.Safe Voice’s AI-powered detection and categorization automates formerly manual processes and provides results in near real-time so you can take action faster. You can customize Safe Voice to your team’s specific needs to help your moderation squad be more efficient.Safe Voice kicks in when players flag instances of toxic or disruptive behaviors. You can also proactively monitor activities in your game like player mutes, exits, or when a vulnerable player is in a session. The service categorizes and prioritizes sessions that need attention based on your preferences, so no legitimate player report or serious violation is lost.Some game genres have a higher likelihood of toxic behavior due to their competitive nature, anonymity, or the intensity of player interactions. Perceptions of toxicity can also vary based on individual experiences and community culture.Your toxicity detection tools should align with the norms and culture of the community you want to create. With Safe Voice, you can build keyword lists to target or deprioritize specific words or phrases and customize toxicity threshold scores to make sure your coverage is as unique as your game and community. This contextual analysis is critical to keeping the essence of your game alive while developing a safe environment for your players.Safe Voice’s detailed reporting dashboards give your team a thorough, nuanced understanding of your community. The overview dashboard shows trends over time and surfaces the behaviors that drive the most disruption in your game. You can see a detailed breakdown of player attributes and behaviors and categorize players as toxic or vulnerable. The data is updated in near real-time and reflects your custom priorities.Today’s largest online communities, like those in Valorant and Rainbow Six: Siege, rely on Unity Voice Chat (Vivox) to connect their players through in-game communication across platforms. With Safe Voice, Voice Chat users can now add a layer of safety to their enhanced gaming experience.We invite you to join us in creating the game communities of the future, where safety and inclusivity are top priorities. Whether you’re experiencing toxic behavior in your game or want to be proactive in establishing a safe environment from the start, Safe Voice can help.Chat with us about Safe Voice and how we can further help with any toxicity you’re navigating in your game communities in the forums.]]></description><link>https://unity.com/archive/blog/engine-platform/tackling-toxicity-with-unity-safe-voice</link><guid isPermaLink="true">https://unity.com/archive/blog/engine-platform/tackling-toxicity-with-unity-safe-voice</guid><pubDate>Thu, 13 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Improving Burst Inspector search performance]]></title><description><![CDATA[My name is Jonas Reholt and I’m a student working with the Burst team. I’m taking to the blog to share my journey of optimization that helped make recent performance changes to the Burst Inspector possible. Burst Inspector search is now 13 times faster, enabling developers to more quickly focus on the code they care about when optimizing projects.Continue reading to learn how you can use the Unity Profiler to investigate performance bottlenecks in your program and how to fix them.The Unity Burst compiler transforms your C# code into highly optimized assembly code. The Burst Inspector lets you inspect that assembly code directly in the Unity Editor, so you don’t need to use external tools for simple code inspection.When first opening the Burst Inspector and selecting a target job to display, you’ll see a window similar to the image below.As you can see, the Burst Inspector provides syntax highlighting, branch flow arrows, and much more.The inspector will try to scroll to the assembly that’s implementing the chosen target function, but it’s also useful to search the assembly view for specific instructions, comments, etc. That brings us to the topic of this blog post.To perform the search, the inspector has to search the original assembly output and transform these indices into positions in the inspector view. The original search functionality followed the pattern shown below, and relied heavily on the implementation of System.String.IndexOf(*).Running the above search on 135,582 lines of assembly code for a common search hit (21,769 hits in total) resulted in an execution time of about 12 seconds for the first search, and about 5 seconds for subsequent searches. This isn’t really a desirable waiting time for a GUI event, so we had to do something. Running the search through the Unity Profiler revealed that 37.3% of the execution time was spent in IndexOf(*), as seen below.A sensible optimization has to address the reliance on this function, either by making a custom implementation or changing the algorithm altogether. No matter what algorithm is used, it will involve stepping through the entire string. So, some custom implementation for finding matches is required. Given this, it seemed fitting to start the optimization by keeping the original algorithm, but creating a custom IndexOf function.The 3.34 seconds spent on LongTextArea.GetFragNrFromBlockIdx() stems from retrieving uncolored assembly code. This is used to perform the search. The Burst Inspector currently saves the assembly code twice – once formatted for rendering, and once unformatted.Writing a custom function also has the nice side effect of reducing the number of calls, since there’s currently a call for each search hit, plus one.The source code of IndexOf(*) reveals many safety checks needed for a robust general implementation. However, in our case we can safely assume most of these checks are true. To try and squeeze out every drop of performance, you’ll want to create a C-like function to avoid things like bounds check.You can write the function following the pseudo code below, where IsKeyMatch(*) simply checks whether the key is a match or not.However, because C# is a managed language, this C-like function requires you to pin the managed objects used so that the garbage collector does not relocate the memory address. Here is the boilerplate code:Putting these things together enables you to separate the original while loop into a single call to the indices finder and the logic for handling the search hits:What were the gains? Using the small example from before, this change to the code gives a 6.6x speedup on the initial call, and a 13.2x speedup on subsequent calls (measured as old/new). The lower speedup on the initial search stems from the overhead of loading in the unformatted assembly to avoid finding matches in color strings.With these improvements, heavy-load searches with a little under 22,000 hits will now take about 1.8 seconds for the initial search, and around 0.4 seconds for subsequent searches. This makes the Burst Inspector more usable for large assemblies, since there’s no longer enough time to make a cup of tea during each search.You can take advantage of this performance improvement now with the Burst 1.8.7 package.Looking for more on Burst? Connect with us in the Burst forum. Be sure to watch for more new technical blogs from other Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/improving-burst-inspector-search-performance</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/improving-burst-inspector-search-performance</guid><pubDate>Tue, 11 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Meet Smart Locks, a new way to reduce merge conflicts with Unity Version Control]]></title><description><![CDATA[At Unity, we’re passionate about enabling creators to do their best work. That’s why the Unity DevOps team is excited to introduce Smart Locks, a new feature of Unity Version Control.Smart Locks vastly reduces the painful merge conflicts commonly associated with file locks and branching. Developers have long been branching for faster and safer iteration. Now everyone, including artists, can use branching to scale projects with confidence.Smart Locks automatically checks to confirm you are working from the latest version before allowing you to lock a file, so it greatly minimizes the risk of merge conflicts and empowers teams to branch without worry.If you’re an artist creating a feature branch, a task branch, or a personal branch, Smart Locks provides the flexibility to branch and work in parallel with teammates without worrying about conflicts. You can experiment and iterate faster while your main project history remains safe.Smart Locks helps you explore diverse workflows. Instead of changing your team to follow your version control system (VCS), you can adapt Unity Version Control to what works best for your team.Many users believe that simply locking or checking out a file will automatically prevent merge conflicts. Unfortunately, that isn’t the reality.Traditional file locking mechanisms do provide protection against some conflicts, however, these file locks failed to travel branch by branch, allowing another artist to check out the same file from a different branch. This inability to travel leaves teams vulnerable to merge conflicts by not addressing the underlying workflow incompatibility with branching.To understand how Smart Locks works, let’s first examine how a merge conflict occurs, even when teams are using file locks properly.This scenario illustrates how teams using branching frequently encounter merge conflicts, despite their best efforts to use file locking. The result? Wasted time and lowered team morale. Smart Locks solves this problem by allowing users to define a branch as the source of truth.Whether you are branching or working out of a single thread, the lock will “travel” across branches, following a unique development line, until it reaches the destination branch where the change is checked or merged back in. Smart Locks enforces this single line of development whether you continue working in one branch or move onto creating child branches.All locking requests associated with a given file will now be aware of any new versions existing in different branches. This means you don’t have to wonder if your changes conflict with a teammate’s or if you’re working on an outdated version.This simple and effective process prevents multiple team members from working simultaneously on conflicting versions, so no changes slip through the cracks. This helps ensure everyone’s artistic vision is considered and makes simultaneous collaboration practically painless.Most programmers, likely familiar with Git-based systems, already understand and appreciate the value of branching. The main benefits of branching for artists is the same as those for coders.When you work within branches, you are effectively separated from the main history of your project. This isolation enables you to prototype and experiment safely, without having to worry about potentially breaking your project.Safe experimentation enables you to iterate continuously and build multiple versions, so you can choose your favorite by navigating the repository history. Let the best idea win.Branching inherently reduces the noise of simultaneous collaboration. It makes space for the creation of fresh ideas while maintaining a relationship with the original concept. In simple terms, think of the difference between iterating in a Google Doc by yourself versus working in a single document with two hundred other collaborators.You can generate new concepts without fear of merge conflicts, storing them within your version control system rather than working independently in your local drive or an external source not integrated with your main project.Branching enables teams to break complex workflows into digestible pieces. You can create branches to match how you have organized your project. In game development, it’s natural to partition work for easier project management. For example, you might divide work within a team by features, characters, or even whole levels. Your team can focus on their assigned work within their specific branch.Partitioning work within branches enables different teams and team members to work at their own pace, in their own style, and with their own processes – all while simultaneously contributing to the greater project. This removal of friction not only makes collaboration smoother, but your team is also more likely to update your project history with greater frequency. You can ship faster and keep up with gamer expectations.Branching makes it easier to see the full picture of your project history, while checking changes into main makes it harder to see the full breadth of changes. Branching helps you identify those changes faster.We designed Smart Locks to give all members of your team flexibility in terms of how they like to work. We also recognize that dealing with complex file locks can be a hindrance in certain situations, like the ideation and experimentation phases of the project.That’s why, in addition to traveling locks, we’ve also built a new branch exclusion capability. This enables you to exclude branches from the locking mechanism by setting custom lock rules. When you know you will never need to merge back into the source branch, you can prototype or experiment within your branch, unencumbered by file locking restraints.To ensure you can keep track of complex projects and enable you to clearly visualize your existing lock list, we’ve also improved the graphical user interface (GUI) on both the desktop client and within uDash. By viewing your lock history, you can easily see who created a lock, and when.Additionally, we’ve placed more prominent affordances to indicate how to lock and unlock files, accompanied by helpful messages that will notify you of any existing locks on a specific file.To take advantage of this game-changing feature, simply update your Unity Version Control installation to the latest release. For on-prem customers or former Plastic SCM Enterprise customers, you’ll need to update your servers and clients to fully experience the benefits of Smart Locks.Be sure to read the documentation before you get started.Unity Version Control is an engine-agnostic version control tool with the agility to handle large files and binaries at speed. With optimized workflows for both artists and programmers in game studios of all sizes, you can improve team collaboration and increase productivity to deliver high-quality games faster and more efficiently. To get started for free, enroll in Unity DevOps (terms apply).]]></description><link>https://unity.com/blog/engine-platform/unity-version-control-smart-locks</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-version-control-smart-locks</guid><pubDate>Mon, 10 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity for Humanity supports social impact creators at 2023 Tribeca Festival]]></title><description><![CDATA[Tribeca Games and Immersive, part of the 2023 Tribeca Festival, took place June 7–18 in New York City, and the Unity for Humanity team was fortunate enough to attend and support some of the impressive projects.The festival program included an incredible lineup of impact-driven games and experiences, shedding light on pressing social issues as well as sharing experimental narratives and introducing awe-inspiring 2D and 3D games.Unity for Humanity supported five impact-driven projects with grant funding: Colored, Maya: The Birth (Chapter 1), The Fury, Kinfolk: Black Lands, and Reimagined: Volume II: Mahal. Of the projects Unity supported, two went home with Tribeca honors.Colored, a location-based augmented reality (AR) experience, tells the often untold story of Claudette Colvin, a 15-year-old girl who stood up to segregation laws in Alabama nine months prior to Rosa Parks. The AR storytelling beautifully combines the Magic Leap device and video projection to create a unique, poetic experience that incorporates theatre, history, and immersive entertainment.Adapted from an essay by Tania de Montaigne, Colored transports audiences to 1950s Montgomery, Alabama to experience the Civil Rights Movement through the embodiment of Claudette Colvin. Through Claudette, Colored not only highlights the experience of segregation, but also explores colorism and how it has persisted throughout history to impact who we choose to honor and celebrate.Maya: The Birth (Chapter 1) is a virtual reality (VR) experience created to bring the “taboo” subject of menstruation to the forefront. The audience follows Maya, a young girl in the U.K., as she experiences shame and bullying due to beginning her menstruation. As Maya confronts this shame, she transforms into a powerful superhero deriving her power from the process of menstruation.Directors Poulomi Basu and CJ Clarke were inspired by stories of real women in Nepal, who are forced into exile and often assaulted because of their menstrual blood, to create Maya as a fantastical alternate reality where women are powerful and their strength is celebrated.Maya was awarded a Tribeca New Voices Special Mention. The jury commented that Maya is “an imaginative way to tell an everyday story in a vivid world. Presenting a shift in perspective, the project opens new imaginaries with under-told narratives. This project left us on a hook and the jury is excited to see its next steps and continued development.”The Fury is an examination of the brutal treatment of political prisoners, including the sexual exploitation of female political prisoners in Iran. Acclaimed artist Shirin Neshat combines performance, video art, and immersive storytelling to create a strikingly powerful experience which mirrors the memory of sexual assault to demand change.Kinfolk: Black Lands is an AR exploration of Black self-sovereignty in New York City. It explores the lives of three ancestors who represent free Black communities that existed in New York from the 1600s to the early 1900s. This experience is educational and aspirational, empowering audiences to rethink oppressive systems and imploring the next generation to reimagine and build a more equitable future.In 2021, Unity for Humanity supported the Kinfolk team’s Tribeca Juneteenth exhibition. This year, the team was awarded a Storyscapes Special Jury Mention for being “a profound and authentic representation of the Black experience in America.” Judges were inspired by Kinfolk’s mission to “bring history to contemporary audiences through AR technology as it not only celebrates the richness of Black culture and history, but also serves as a powerful tool for education and understanding, making it a standout contender deserving of recognition.”Reimagined: Volume II: Mahal was inspired by Director Michaela Ternasky-Holland’s early loss of her father. Weaving in her ancestry and Philippine mythology, Mahal tells the story of four immortal children grieving the loss of their father, the creator god Bathala. Each makes sense of their father’s passing in their own way, causing dangerous effects. The gods must learn to honor their father together to save the universe, reflecting themes of community, loss, love, and acceptance to the audience.Also during Tribeca, Unity for Humanity Community Manager Paisley Smith moderated a panel discussion on “The Birth of a Super-Heroine: How Women Shape Stories for the Future Generation.” The panel featured amazing immersive creators Katayoun Dibamehr (producer, Maya: The Birth [Chapter 1]), Ana Ribeiro (creator, Pixel Ripped 1978), Michaela Ternasky-Holland (director, Mahal), and Eloise Singer (director, The Pirate Queen: A Forgotten Legend). It also touched on the strong characters depicted in each of the creators’ projects and how their personal experiences across games and immersive production shaped the creation of their work.Panelist Eloise Singer was awarded the Storyscapes Award for The Pirate Queen. The jury commented that the project received this top award “for its outstanding technical execution, immersive user experience, and unique and untold story of a nearly forgotten woman in history.” Finally, Goodbye Volcano High (also made with Unity) by KO_OP was awarded the Tribeca Games Award for “how much [it] felt of the moment and questions whether you should still care about anything when everything sucks – complete with doom scrolling, dinosaurs, and high school band drama.”Congratulations to all impact-driven artists and creators who exhibited work at the Tribeca Film Festival. Keep creating meaningful change!Unity for Humanity is designed to celebrate and support impact-driven creators. If you are using real-time 3D for social impact, join our Unity for Humanity Community Discord to attend monthly events, learn about upcoming grant opportunities, and more. You can also subscribe to Unity’s Social Impact newsletter.]]></description><link>https://unity.com/blog/industry/social-impact-creators-at-2023-tribeca-festival</link><guid isPermaLink="true">https://unity.com/blog/industry/social-impact-creators-at-2023-tribeca-festival</guid><pubDate>Mon, 10 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Celebrating the recent success of our creators]]></title><description><![CDATA[We’re continually amazed by what you develop, and there’s nothing more rewarding than seeing your games celebrated and enjoyed by players around the world. Recently, we’ve seen BattleBit Remastered rocket to the top of the Steam charts and join the ranks of other Made with Unity games that have experienced phenomenal recent success on Steam like V Rising and Sons of the Forest. Let’s keep this celebration train moving and take a look at some other Made with Unity game highlights from May and June 2023.Players and game enthusiasts around the world have viewed made with Unity game content over 5 million times on Twitch* in the month of June. You’ve probably watched Rust over on Twitch already, but have you also checked out Dave the Diver? And if you haven’t seen our Twitch channel yet, we recently had the team at Double Stallion talk about their multiplatform game Convergence: A League of Legends Story. Tuatara Games joined us to showcase their multiplayer title Bare Butt Boxing, and we hosted Thomas Waterzooi, who discussed the design behind his popular puzzle game Please, Touch the Artwork (stay tuned for upcoming case studies for a behind-the-scenes peek at both of these games).In the mobile gaming space, Unity creators have once again proven their excellence. The top-five most successful mobile games by revenue made with Unity in June 2023 were Honor of Kings, Honkai: Star Rail, Coin Master, Pokémon GO, and Genshin Impact.** These games are captivating audiences worldwide. In June 2023, the top five most successful PC games (by increase in average concurrent users) on Steam that were made with Unity were Gunfire Reborn, Soulstone Survivors, Captain of Industry, 20 Minutes Till Dawn, and Sands of Salzaar.***If you’re working on a game, we want to hear from you! You can submit your project on the Made with Unity page, and we’ll consider promoting it in our channels. And if you haven’t registered to receive the latest information about Unite 2023 in Amsterdam, you can do that now.*As of June 2023. Source: Twitch API
**As of June 2023. Source: Apptopia. Disclaimer: Based on a list of Apptopia's 1,000 most downloaded games for the most recent month, "Successful" is measured here by total revenue, across both ios and android stores (IAP Revenue + Ad Revenue + Download Revenue).
***As of 2023-07-06. Source: SteamSpy API. Disclaimer: Based on Steam’s top 1,000 games (ranked by concurrent user count) and filtered for games with over 500 concurrent users, Measuring “successful” by % increase in average concurrent users for the month.]]></description><link>https://unity.com/blog/news/celebrating-the-recent-success-of-our-creators</link><guid isPermaLink="true">https://unity.com/blog/news/celebrating-the-recent-success-of-our-creators</guid><pubDate>Fri, 07 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity Monthly: June 2023 roundup]]></title><description><![CDATA[From Unity 2022 LTS to a new mixed reality package and AI beta announcements, June was a busy month for teams across all of Unity. We’re here to talk about you, though. Read on to discover what Unity creators have been up to, including the latest game releases made with Unity.June had its fair share of milestones to celebrate for games made with Unity.Muro studios released DOOMBLADE, where you play as a sentient weapon looking for revenge, and Mimimi Games revealed the release date for its swashbuckling stealth adventure game, Shadow Gambit. We also shared snekflat’s Tiny Terry’s Turbo Trip and a thread full of exciting demos from Steam Next Fest, featuring titles like Eternights and Sea of Stars.On Instagram, we celebrated Mooneaters’s release of its incredibly cozy game, Everdream Valley, as well as more8bit’s sharp-looking Bleak Sword DX (you can also check out our case study and blog to learn how the game was made). Last but not least, Studio UN JE NE SAIS QUOI’s absolutely gorgeous Dordogne took us to the French countryside.Congrats are in order for the Unity creator teams that achieved new heights during AWE USA 2023. Seven of 11 finalists for the 2023 XR Prize Challenge used Unity to create their projects and an Auggie Award winner was also made with Unity.Unity’s Jessica Lindl presented the 2023 Auggie Award for Biggest Societal Impact during the ceremonies, saying “This award aligns with our belief that the world is a better place with more creators in it, fostering a more sustainable and inclusive world.” Check out the made with Unity winners below.Auggie Awards – Among Us VR, Schell Games, Innersloth, Robot Teddy (Best Game or Toy)XR Prize Challenge – Between Two Worlds, Under The Skin X Virtualosus (Grand Prize)XR Prize Challenge – Mangrove City, University of Miami (Best Educating About Solutions to Climate Change)We share new game releases and milestone spotlights every Monday on the @UnityGames Twitter and @unitytechnologies Instagram. Be sure to give us a follow and support your fellow creators.We love seeing how your projects evolve every month, and we’re super impressed by all the work being shared with the #MadeWithUnity hashtag. Here are a few June highlights.On Instagram, Makan Gilani’s adventurous robot was on a roll, and Krzysztof Maziarz had an adorable house tour in store. Onirism’s new ledge system also seemed like a lot of fun.Meanwhile on Twitter, Goldborough Studio displayed some serious balance skills, while Jakob Wahlberg’s Mecha Ball animations were amazingly slick. And Filip Coulianos took us on a space ride then MONKE added some adorable pigs to their minimalist city builder.We’re always here to continue the #MadeWithUnity love. Keep adding the hashtag to your posts to show us what you’ve been up to.On June 8, we invited the community to talk to us about content builds, import workflows, the asset database, Addressables, and more as part of a Content Pipeline Dev Blitz Day. The event had 10 experts and several threads, generating great conversations throughout the day. Then, on June 22, we hosted a Multiplatform Dev Blitz Day, covering everything from XR and console to mobile and desktop. Held in both the forums and on the Discord server, the event saw 33 experts answering questions. Thank you to everyone who participated in either or both days.Keep an eye on Discord and our forums for future Dev Blitz Day announcements, and don’t forget to bookmark the archive of past Dev Blitz Days. In case you missed it, we’ve also recently brought back in-person Developer Days with events in Austin and Montreal.June was incredibly busy on Twitch. Team Unity took to the channel to finish out the Scope Check Let’s Dev series, sharing two final streams: part seven on testing and part eight on tips for polishing projects.In addition to wrapping the Scope Check series, we took time for not one but three Creator Spotlights. First, we hosted a sit-down with Tuatara Games to discuss Bare Butt Boxing (watch above). Next, members of the Mooneaters team joined us to chat about their latest project, Everdream Valley. Last but not least, Double Stallion hopped on a live stream to talk CONVERGENCE: A League of Legends Story™.Finally, we hosted Xalavier Nelson Jr. to hear his Unity Tales (watch below) and held a live discussion on the Unity LTS 2022 release.If you don’t already, follow us on Twitch today and hit the notification bell so you never miss a stream.We’ve added a new category to the Asset Store – AI Verified Solutions. We’ve vetted nine solutions under three different classifications: Generative AI, AI/ML integration, and Behavior AI. If you’re ready to try them out, you can find them here for free.Taking things to social media, here’s a roundup of some of our favorite creator showcases from Twitter in June:Alien Planets Vol.4 | Red pandaFood – Breakfast Time | Boxx-Games AssetsZombie Dog | Code This LabLooking to be noticed by the Asset Store team? Tag the @AssetStore Twitter account and use the #AssetStore hashtag when posting your latest creations.Last but not least, here’s a non-exhaustive list of games made with Unity that were released in June. Do you see any on the list that have already become favorites or spy that we’re missing a title? Share your thoughts in the forums.Killer Frequency, Team17 Digital (June 1)We Love Katamari REROLL+ Royal Reverie, MONKEYCRAFT Co. Ltd. (June 1)Battle Talent, CyDream (June 1)Pile Up!, Remoob (June 2 – early access)Mask of the Rose, Failbetter Games (June 8)Bleak Sword DX, more8bit (June 8)Space Reign, Propulsive Games (June 12)Dordogne, UN JE NE SAIS QUOI and UMANIMATION (June 13)Oblivion Override, Humble Mill (June 13)Fall of Porcupine, Critical Rabbit (June 15)Pixel Ripped 1978, ARVORE Immersive Experiences (June 15)BattleBit Remastered, SgtOkiDoki, Vilaskis, and TheLiquidHorse (June 15 – early access)Mars First Logistics, Shape Shop (June 22)The Bookwalker: Thief of Tales, DO MY BEST (June 22)A Long Journey to an Uncertain End, Crispy Creative (June 28)If you’re creating with Unity and haven’t seen your project in a monthly roundup yet, submit it here for the chance to be featured.That’s a wrap for June. For more community news as it happens, follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-june-2023-roundup</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-june-2023-roundup</guid><pubDate>Fri, 07 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ready to create your own games? Here are 7 must-save tutorials]]></title><description><![CDATA[Do you want to create a game? Have you started a game and are struggling to finish it? Have you finished a game but are unsure about what to do next?Below, we’ve curated a collection of resources to help you expand your game development skills, processes, and management, bringing you to professional game creator status in no time. Discover how to use game jams in the development process, and learn about services and analytics for managing your game and understanding how it’s performing.In Unity’s flagship project, Intermediate Scripting, you’ll learn to create with code as you program your own exciting projects from scratch in C#. As you iterate with prototypes, tackle programming challenges, complete quizzes, and develop your own personal project, you’ll transform from a beginner to a capable Unity developer.Start the project.Have you ever wanted to create a mobile game that performs well on almost any device? What about adding downloadable content (DLC) or having holiday-themed content in your game? This is where the Addressables system can help.Take the course.If you’re working on a game (or other real-time simulation) that requires the most efficient CPU usage possible, then Unity’s Data Oriented Technology Stack (DOTS) is a great way to get the performance you need.Learn about DOTS.Lots of people start games, but it’s surprisingly hard to finish one. This course guides you through the process used by professional creators to develop their ideas, keep their projects on track, and deliver complete games.Take the course.Are you a creator in need of a challenge? Developers all over the world participate in game jam events to expand their skills and test their ingenuity. This project will guide you through the basics of game jams, from what you can expect when you join a game jam to developing your game after the jam is complete.Get jamming.Development operations (DevOps) is a key group of tools and workflows that you can use to help you create and manage your game or other real-time experience throughout its lifecycle.Start the course.Learn about the features and campaign types available on Unity's User Acquisition (UA) dashboard, including campaign setup, creative pack addition, targeting options, monitoring tools, and best practices for optimal performance.Get the tutorial.Curious about what other educational tools are available? Check out the full Unity Learn catalog.]]></description><link>https://unity.com/archive/blog/games/7-must-save-game-tutorials</link><guid isPermaLink="true">https://unity.com/archive/blog/games/7-must-save-game-tutorials</guid><pubDate>Thu, 06 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Happy Harvest demo: See the latest 2D techniques]]></title><description><![CDATA[There’s no limit to how innovative today’s 2D games can be. With so many creative possibilities and the evolution of Unity’s 2D rendering and tools, we’ll keep you up to date on best practices for making 2D games in Unity.Happy Harvest, now available on the Unity Asset Store and Unity Samples, shows developers how to harness the latest capabilities for creating 2D lights, shadows, and special effects with the Universal Render Pipeline (URP) in Unity 2022 LTS. It incorporates best practices any 2D creator can use, including not baking shadows into a sprite, keeping sprites flat, moving shadow and volume information to secondary textures, advanced Tilemap features, and much more.Happy Harvest is a top-down demo with cheerful cartoon art. The sample takes you through a day in the life of an industrious farmer. Stepping from his farmhouse, he makes his way along cobblestone paths lit by lanterns. He tends to wheat, carrot, and corn crops, picks apples, and feeds his pigs and cows. His farmstead is dotted with ponds, there’s a barn in the back, and it’s all ringed by verdant pine trees.A top-down perspective comes with challenges like how to project the character, manage overlapping objects, and create shadows in an imaginative way. These were handled by using features included in Unity 2022 LTS for shadows, sprite libraries, and Tilemap 2D.All of these assets are free to use in your personal or commercial projects, and you can also modify the demo with your own ideas. Download it today to start exploring this bucolic scene and its many details.The demo is accompanied by a collection of instructional articles. These technical walkthroughs will help you understand how the lights, shadows, environment, and animations were created, so you can use the same steps in your own 2D project.The following pages are available with the demo:2D light and shadow techniques in URPHow to create art and gameplay with 2D tilemapsHow to animate 2D characters in Unity 2022 LTSCreate 2D special effects in Unity with the VFX Graph and Shader GraphYou can find these articles in the description on the Unity Asset Store page and in the in-Editor tutorial window in the demo. Additionally, you can preview each script in Unity Samples to better understand the recommended guidelines and coding structure for a 2D game.Let’s take a brief look at what you’ll learn from each page.There are plenty of cute details in Happy Harvest, from fields of ripened corn and golden wheat, to gently swaying lanterns and the red-shingled farmhouse. But it’s the lighting and shadows that are the most immersive part of this cozy world, featuring an all-over glow and late afternoon shadows.By moving light and shadow information to separate textures (which does require some extra steps during the art creation process), you can create optimized real-time 2D lights and shadows.Read the article “2D light and shadow techniques with the Universal Render Pipeline” to learn how to:Create and work with normal maps and mask maps (Secondary Textures) to add rich details like rim lighting on the main character, barrels, lamp posts, and other props.Use ambient and spot lighting to set the mood with tinting and effects that mimic the sun’s movement throughout the day.Create the illusion of volume, like the effects used on the bushes, by enabling normal maps on the lights.Create shadows for any shape and time of day using blob shadows and infinite shadows with the Shadow Caster.Control the movement of time and changing of the light with a day-to-night script.Optimize your 2D lights with tips from the Unity team.What do the cobblestone paths, ponds, grass, and background forest have in common? They were all made with Unity’s Tilemap system, which provides a way to create a game world with tiles – small sprites placed on a grid. Instead of designing a level as one big image, you can split it into brick-like pieces that are repeated throughout a whole level.Tilemaps can help save time on art creation as well as memory and CPU power. This is because tiles can be rendered by a dedicated renderer and the tiles that are not visible on the screen can be disabled. A brush tool makes it efficient to paint tiles on a grid, and they can be scripted to use painting rules. They also come with automatic collision generation for more efficient testing and editing. Additionally, you can place GameObjects or use the API for game logic.You can find tips for using the Tilemap system in the article “Create art and gameplay with 2D Tilemaps in Unity,” including how to:Use secondary textures for tilemaps: Every tilemap in the sample has counterparts called normal map and mask map textures that share the same dimensions and layout, but are painted for displaying the lighting.Use the Rule Tile feature, which is part of the 2D Tilemap Extras package. This package contains reusable 2D and Tilemap editor scripts you can use in your own projects and as the basis for custom Brushes and Tiles.Organize tiles in your project hierarchy:In the sample, the tiles are all contained in one GameObject called Grid.We created as few tilemaps as possible inside the Grid toprevent overlapping pixels and help keep overdraw low.Use the Tilemap API based on how it was used in the sample.With his rolled-up sleeves and pompadour hairstyle, the farmer in Happy Harvest is ready to work. To get him moving around the scene, we used techniques like rigging his face to create different expressions, sprite libraries for character variations, and Sprite Swap for switching between sprites attached to the same bone during the animation process.In the article “2D characters and animation in Happy Harvest,” we break down these and other techniques used to create the animations. You’ll get tips on how to:Draw and animate characters from different angles to suit a top-down perspective. In Happy Harvest, good-looking visuals are achieved with four directions.Work with skeletal animation in Unity using the 2D Animation and PSD Importer packages. These enable you to import your character artwork directly from Photoshop into Unity by importing all of the character’s layers as sprites and placing them exactly as they were painted in the app.Rig a character in the Sprite Editor.Connect sprites to bones, geometry, and weights.Use the Sprite Library Editor and Sprite Swap to manage types of animations other than those that can be achieved with bone rotations. This includes facial expressions when the character changes the direction they’re facing.Use the 2D Inverse Kinematics (2D IK) tool, which is a part of the 2D Animation package. It calculates the rotations and allows a chain of bones to move them to target positions.The farmer’s crops need both sunshine and rain. Luckily, the evening brings rainfall, and our hard-working farmer can retire to his little home with a cozy fire in the hearth.There are different options for creating 2D visual effects like these in Unity. You can animate an explosion frame-by-frame or spawn particles and cloud sprites. Use the Built-in Particle System for particle spawning on the CPU. Alternatively, you can leverage the GPU and use the VFX Graph and Shader Graph to spawn millions of particles or apply post-processing effects with URP Volumes.In the article “2D special effects with the VFX Graph and Shader Graph,” you’ll learn about the different techniques used to create the special effects in Happy Harvest, including:Simple particle effects created with the Built-in Particle System, like falling leaves from the bushes, or the farmer’s footprintsFlipbook particles to create moths around the lamps at night using the Built-in Particle System, or water splashes from the rain spawned by the VFX GraphCommon effects like a shader applied to the water tiles to make the waves move, the fire in the fireplace, and the smoke from the chimneyWeather effects like rain and thunder made in the VFX Graph – the rain particles use the 2D Lit shader so they blend nicely with the environment and react to lightsShaders to move the trees and other vegetation to simulate a light breezeTint and bloom post-processing effects applied to the whole scene to set a warm, cheerful moodLearn more about creating visual effects in our e-book The definitive guide to creating advanced visual effects in Unity. The e-book provides a complete overview of how to use visual effects authoring tools in Unity to create advanced effects, including water and liquid, smoke, fire, explosions, weather, impact, magic, electricity, and much more.Happy Harvest is a playground for 2D creators who want to pick up new visual techniques in Unity. Expand on the sample, reuse its elements and scripts in your own projects, and test it on your mobile and desktop devices. This sample and its supporting content is designed to provide useful tips for everyone, from beginners to experienced 2D developers. Happy harvesting!If you haven’t yet, be sure to download these advanced e-books that cover 2D game development as well as rendering and visual effects (3D and 2D) in Unity:2D game art, animation, and lighting for artistsIntroduction to the Universal Render Pipeline for advanced Unity creatorsThe definitive guide to lighting in the High Definition Render Pipeline in UnityThe definitive guide to creating advanced visual effects in UnityPlus, check out our other 2D demos, The Lost Crypt and Dragon Crashers.You’ll find many more resources for advanced programmers, artists, technical artists, and designers in the Unity best practices hub.Got feedback? Please share your thoughts on the demo in the dedicated forum.]]></description><link>https://unity.com/blog/games/happy-harvest-demo-latest-2d-techniques</link><guid isPermaLink="true">https://unity.com/blog/games/happy-harvest-demo-latest-2d-techniques</guid><pubDate>Wed, 05 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to optimize latency in your ad waterfall]]></title><description><![CDATA[When a developer is ready to show an ad but the video isn’t ready, their users’ experience could suffer - and due to missed opportunities to show an ad, so can revenue.By using latency data to pinpoint optimization opportunities, you can increase impressions and improve your user experience, ultimately boosting revenue. Let’s explore how to get started with latency optimization.Does my app have a latency issue?First, you need to confirm if you have a latency issue - you might not even have one at all. Let’s review the key latency terms:Waterfall latency is the time (in seconds) it takes to get an ad ready, from the moment an ad is requested until it’s ready to showInstance latency is the time (in seconds) it takes for an instance to respond to an ad request Latency tolerance is the average duration of time a developer is willing to accept between ad impressionsYou only have a latency issue if your waterfall latency is higher than your latency tolerance - in other words, if it takes longer to get an ad ready than the time you have set between ads.If you don’t know your latency tolerance, you can calculate it using internal BI metrics - or you can estimate it by playing your game and measuring exactly how often you’re seeing ads. Pay attention to the ads carefully - if they’re not appearing at the moments they’re scheduled for, it’s an issue worth investigating and minimizing.How do I fix my latency issue?Reducing latency is a multi-step process and differs depending on the ad unit - let’s start with banners and interstitials.The first step is identifying instances that are taking too long to load - and LevelPlay’s real time pivot can help you do just that. Here’s how to find and delete them.Identify waterfalls with potentialStart by identifying waterfalls that need optimizing, and focus where optimizing could make the most impact on revenue. Look for apps, ad units, and geo groups with relatively high waterfall latency and high revenue.
Then you can generate your own waterfall from the past 7 days using the app, ad units, and geo groups you found as your waterfall filters. To optimize for latency, your waterfall measures should include “revenue,” “revenue SOW (share of wallet),” “instance latency,” and “eCPM” as measures. Make sure to sort it by eCPM.
Identifying problematic instancesNow identify your target: instances that are slowing down your waterfall and not generating enough revenue to justify the slowdown.First, count how many instances you have in your waterfall (on Unity LevelPlay, you can find this by going to the mediation management page, where you can download a CSV of your waterfall).This gives you key information: whether you have a short or long waterfall. A short waterfall just has a few instances causing latency issues - but assuming you have a long waterfall (e.g. 50+ instances), you’ll need to pinpoint many problematic instances.Next, use your revenue filter to find instances that have the least impact on revenue - we suggest anything generating less than 0.3% of your revenue to start.Then, count how many instances are filtered and the sum of their overall share of wallet. It’s important to find a balance between instances contributing to your revenue share of wallet (market share of revenue) and instances causing latency. Generally, it’s best to remove the most instances possible without reducing your revenue share of wallet more than about 6%. It’s too risky to remove more than 6% of your share of wallet, but removing anything less than 3% may not have enough of an impact on your latency.
So, if you’ve counted your instances and the sum of their overall share of wallet is more than 6% or less than 3%, you should adjust your revenue filter as needed. If the share of wallet is too high, then lower the filter to 0.2% - and if it’s too low, try raising it to 0.4%.During this process, make sure you’re focusing on a few things:Only non-bidding instancesInstances towards the top, not the bottom of the waterfall - the instances at the bottom aren’t causing delay like the instances at the top areReducing latency in a short waterfallEven if you’re looking at a short waterfall, you might still find yourself having latency issues. In this case, the latency isn’t caused by having too many instances in your waterfall - rather, it’s a case of specific instances with high latency, so focus on instance latency.Try looking for any high-latency instances at the top of your waterfall. If you can identify a problematic instance, decide how to address it - if it has low revenue share of wallet, then A/B test removing it. If it has significant share of in your waterfall (e.g. more than 5%), then you can still A/B test removing it - but pay attention to how that impacts performance .A/B testing removing instancesNow that you’ve selected the instances you’d like to try removing, you should run an A/B test. Just make your A group the original waterfall, and your B group the new waterfall with instances removed. Make sure the only difference between the groups is the removed instances - otherwise you can’t pinpoint exactly what’s caused your boost (or drop) in revenue. As you analyze your test results, keep an eye on your KPIs - your B group should have decreased waterfall latency, which should lead to increased impressions per DAU, ARPDAU, and ARPU.What about rewarded video ads?With rewarded video ads, optimizing with latency is a slightly different process thanks to progressive loading. It works by setting up the ad loading process in advance - while the user is watching the first ad, the second one is already loading, and so on. Like other ads, rewarded videos can still have latency - but thanks to progressive loading, you should only see latency during the first video of a session (session depth 1).To examine rewarded video latency in your waterfall, just break up your waterfall by “session depth” and keep an eye on waterfall latency. Then, you should confirm two things - first, placements with back-to-back rewarded videos have less than one second of latency (from the second video onward). Second, make sure your first video doesn’t have high latency. Any instances that don’t pass these two tests are worth investigating and even A/B testing their removal.
*If you decide to remove instances, it’s important to see how this might impact later sessions - so make sure to first remove the “session depth” filter from your view*The further you dig into your waterfall’s latency, the further you can optimize it - and it’s never too late to get started. Latency optimization is a win-win: while your users can get a better experience, you can boost impressions and revenue.]]></description><link>https://unity.com/blog/how-to-optimize-latency-in-your-ad-waterfall</link><guid isPermaLink="true">https://unity.com/blog/how-to-optimize-latency-in-your-ad-waterfall</guid><pubDate>Wed, 05 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[An overview of carriers, OEMs, MVNOs, and how they benefit your on-device strategy]]></title><description><![CDATA[With nearly 87% of all mobile users in the United States expected to own a smartphone by 2025 according to Statista, on-device advertising is a sure-fire way to reach the massive, pre-existing audience on smartphones around the world.To better grasp the importance of this channel and how to reach users effectively through it, it’s essential to understand the bones of the smartphone industry, the difference between carriers, original equipment manufacturers (OEMs), and mobile virtual network operators (MVNOs), and how the wireless telecommunications space has evolved over time. Let’s take a look.There are three key players that make up the smartphone industry: carriers, OEMs, and MVNOs. Each plays a role in creating new technologies that innovate the industry, building a larger audience and changing how we interact with our devices. While one can’t operate without the other, it’s worth taking time to understand their unique functions in the industry.Mobile carriers provide the cellular connectivity services that power your phone. In the U.S., mobile carriers must acquire a radio spectrum license – used to carry information wirelessly – from the government. With many of the world’s vital services completely reliant on spectrum, it’s a finite and critical asset that requires careful management by the government. That said, there are only a few large giants: Verizon Wireless, T-Mobile, AT&T, and Boost in the U.S., and Orange, Vodafone, Deutsche Telekom, Hutchinson, and Bouygues in Europe.Including carriers in your on-device strategy means you’re prepared to reach a distinct group of subscribers that is geographically specific based on the best available radio spectrum in the area. Throughout the years, carriers have increased their subscribers by leveraging technologies that improve the quality of services, number of applications, and overall operations.Carriers are also responsible for encouraging OEMs to create devices that can run with their new technology. After all, carriers don’t matter much without a device that supports their operations, and vice versa.In the mobile industry, OEMs are companies that manufacture their own phones in their own factories. Examples of OEMs include Apple, Samsung, LG, and Lenovo. Considering carriers can’t operate without a quality device that supports their technology, OEMs determine how, when, and why mobile devices are used, making them critical to the app economy.As a marketer, including OEMs enables you to reach anyone who owns the device, without worrying about whether they pay a subscription fee. By taking an OEM-first approach to on-device advertising, you can sell to a broad range of users, many of whom are loyal to a specific OEM. For example, whether you’re a Samsung or Apple owner has become a personality trait in recent years.MVNOs purchase their radio spectrum directly from carriers. Essentially, they are streamlined communication providers that rely on more established carriers for network services. Since MVNOs don’t have to build and maintain their own infrastructure, they’re able to offer their services at lower rates. Interestingly, Germany, France, Spain, the U.K., and Denmark have close to 375 active MVNOs, while North America and China have just 130 and 14 active MVNOs respectively, according to Delta Partners.Including MVNO sources in your on-device strategy uncovers a wide range of supply for your app and allows you to reach new users quickly and efficiently. Unlocking these sources also helps you spread the risk between channels.From 1G to 5G, each generation of wireless service has contributed to the growth of the mobile industry. In the 1980s, 1G focused on voice communications, and in 1992, 2G introduced basic data capabilities. In 1994, the first smartphone was released by IBM. Due to cost, the phone ended up in a pile of devices deemed too ahead of their time, but this didn’t mean users weren’t excited about smart features – personal digital assistants (PDAs) were all the rage.Right before the turn of the millennium, OEMs began successfully marrying PDAs and mobile phones. The Ericsson R380, manufactured by Ericsson Mobile Communications and released in 2000, was the first phone marketed as a smartphone. In 2001, Palm, a PDA OEM, released the Kyocera 6035, and Handspring released the Treo 180 in 2002. The Kyocera 6035 was the first smartphone to be paired with a major carrier through Verizon, and the Treo 180 provided services via a GSM line and operating system that integrated telephone, internet, and text messaging services. 3G was also released in 2002 and offered higher transfer rates, improving cellular data performance.Fast forwarding, Apple’s iPhone was released in 2008 by the mobile carrier O2, which represented one of the largest OEM and carrier deals. The first iPhone ran on 3G and offered much faster web services, making the internet accessible on mobile networks. The look, interface, and functionality of the iPhone set the stage for future smartphone design. Later that year, the first phone manufactured by Android was released as the T-Mobile G1. It also ran on 3G and was far less advanced than the phones we see today, like the Galaxy Fold.In 2010, Verizon launched 4G in the United States, offering speeds up to 10 times faster than 3G. 4G was carriers’ crown jewel up until 2019, when 5G began rolling out. 5G once again offers lower latency, higher capacity, and increased bandwidth, and we’re continuing to see advanced devices released like the Galaxy Fold, Nokia G20, and Blackberry KEY2 LE.Today – with more competition, new entrants, and higher consumer expectations – OEMs, carriers, and MVNOs have to figure out how to grow revenue for all parties. Satisfying different niches in the mobile industry, these three key players can’t operate without each other. Understanding their core business models is essential to getting started with on-device campaigns.Promote your app directly on devices with Aura from Unity to create rich experiences that engage and retain customers throughout the device lifecycle.]]></description><link>https://unity.com/blog/games/overview-of-carriers-oems-mvnos-and-how-they-benefit-on-device-strategy</link><guid isPermaLink="true">https://unity.com/blog/games/overview-of-carriers-oems-mvnos-and-how-they-benefit-on-device-strategy</guid><pubDate>Tue, 04 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2023.1 Tech Stream is now available]]></title><description><![CDATA[We’re excited to share that the 2023.1 Tech Stream is available for download.You’ll find improved features and render quality for both the High Definition Render Pipeline (HDRP) and Universal Render Pipeline (URP), along with platform graphic improvements, additional connectivity types for multiplayer solutions, and more.Tech Stream releases allow you to go hands-on with early access to the latest features, and you can share your feedback on how we can build even better tools to power your creativity.Here are a few highlights from this release, but you can always get more details in the official release notes.In Unity 2023.1, we continue to bring additional features to enhance render quality and feature coexistence in both HDRP and URP (for more on our vision, read our Games Focus blog post on scalable rendering).You can now add lens flares generated from all highlights visible on screen (direct, indirect, emissive surfaces, specular highlights) in just a few clicks with a single post-process volume.Compatible with both HDRP and URP, this feature can be used at the same time and complement SRP Lens Flares, which offer more advanced artistic control on light lens flares.With HDRP, we want to offer a coherent out-of-the-box experience for artists to create high-fidelity environments for PC and consoles. In 2022.2, we introduced one of the last missing parts, the first-ever native water system in Unity. In 2023.1, we’re focusing on enabling finer authoring of water to better integrate with the world and gameplay.You can use Water Excluder to dynamically remove water from inside a boat or cave, and Water Deformer deforms water locally for waves, vortex, or deformations around a ship in movement.Foam Generator allows you to simulate white water for a boat trail or around rocks in open oceans, and Current maps creates local currents by both managing surface waves to follow the currents and the water query API to allow for objects to drift. You can also take advantage of great control to customize the Water Line when the camera crosses the water surface.To get started, we created multiple samples available in the HDRP package from the Package Manager, as well as various demo scenes available on GitHub.To learn more about water rendering in HDRP, you can watch our talk “An overview of the new HDRP Water System” from GDC 2023.To improve the visual fidelity of transparent and transmissive objects, you can now add an extra optional pass to compute the thickness of transparent objects. This takes into account the thickness of non-opaque materials traversed by the light, especially important for nonuniform objects or when rendering multiple objects, one behind another.In 2023.1, we are bringing the last pieces of technologies used for digital human and creature rendering, as seen in the Enemies and Lion demos. HDRP’s high-quality line renderer allows you to render lines using advanced voxelization to fix the transparency ordering and aliasing issues typically seen when rendering hair and fur.We also improved high-fidelity skin rendering, optimizing performance of the subsurface scattering pass for high-resolution pass and adding dual lobe and diffuse power on Diffusion Profiles for materials using Subsurface Scattering. When simulating skin, it’s common to use two specular lobes to account for the thin oily layer covering the epidermis.To see it all in action, you can download the Enemies project on the Unity Asset Store.We’ve made stability and performance improvements to DirectX 12 and ray tracing, as well as increased compatibility with the engine’s existing feature set and consoles support. With this, the Ray Tracing API and HDRP’s ray-traced effects such as ray-traced shadows, reflections, AO, Global Illumination, path tracing, and recursive rendering are officially out of preview.We also added VFX Graph ray tracing support, enabling the authoring of complex particle effects that are compatible with HDRP’s ray-traced effects, as well as terrain heightmap support to use ray tracing on large worlds. Instancing support added to the Ray Tracing API allows you to efficiently ray trace large and dense scenes that include high-frequency repeating meshes and details.Start experimenting now with ray tracing by installing the HDRP Sample Scene template in the Hub, which has been updated to provide new ray tracing quality settings.Lastly, this release also introduces Inline Ray Tracing support for DXR1.1-capable platforms. You can now issue hardware-accelerated ray queries from within compute shaders in order to traverse the bound Ray Tracing Acceleration Structure and perform intersection testing.To help celebrate ray tracing coming out of preview, NVIDIA has sponsored the Unity 23.1 beta, providing NVIDIA GeForce RTX™ 3070 graphics cards as prizes for participants.The GeForce RTX™ RTX 3070 graphics card is powered by Ampere – NVIDIA’s second-generation RTX architecture. Built with dedicated second-gen RT Cores and third-gen Tensor Cores, streaming multiprocessors, and high-speed memory, it gives you the power you need to rip through the most demanding games.Winners will be contacted directly with instructions on how to claim their new graphics cards.For Light Probe-lit objects, Probe Volumes enable you to set up and iterate on Light Probe placement more quickly. The visual quality of Light Probe-lit objects is higher and affects Volumetric Fog in HDRP and particles. In some scenarios, Probe Volumes also enable you to indirectly light static objects, for example in an environment. Combined with tools to reduce light leaking, they can decrease the need for lightmaps, reducing baking time with less need to author lightmap UVs.Bake sets enable you to set up and blend between different Light Probe-lit lighting scenarios in HDRP. At runtime, GPU memory footprint is reduced through streaming the probe data from the CPU.With the 2023.1 release, the core functionality and user experience of Adaptive Probe Volumes are improved and officially out of preview.We have also implemented limited support for Adaptive Probe Volumes in URP. Note that this iteration will not support Lighting Scenario Blending or Lighting Normalization for Reflection Probes. It may not yet be optimized for performance, especially when running on lower-end platforms.To learn more, you can watch our talk “Efficient and impactful lighting with Adaptive Probe Volumes” at GDC 2023 and check out the lighting tutorial “4 techniques to light environments in Unity” from Unite 2022.Baked GI now uses the new LightBaker v1.0 architecture for on-demand bakes to provide you with a more predictable and stable light baking experience. When baking with the GPU backend in on-demand mode, you can use the Baking Profile in the Lighting window to select the tradeoff between performance and GPU memory usage.This new output in VFX Graph allows you to inject particles into HDRP’s Volumetric Fog to generate clouds, smoke, mist, fire effects, or to make Volumetric Fog more dynamic and procedural. Different Blend modes (add, multiply, min-max) allow you to use particles to add, remove, or combine with existing fog. For example, you could use smoke to add density to the fog, show wind chasing, mist, or create underwater streams.In keeping with the vision shared in this Games Focus post, advances in platform support and technical integrations continue in 2023.1.We continue to add improvements to performance and functionality for key platforms, including Windows, Android, iOS, Meta Quest, Magic Leap 2, Xbox®, PlayStation®5 and Playstation®VR2.Unity now supports building projects for Arm-based Windows devices while achieving native performance on devices that use the ARM64 processors, such as the Surface Pro 9 and the Lenovo ThinkPad X13s. This opens up new possibilities for you to create high-performance, immersive experiences on a wider range of devices.There are two key features for your mobile development on Android devices – Android GameActivity and Android Project Configuration Manager – that you can use with 2023.1 Tech Stream.Android GameActivity gives you greater control over the essential parts of your application, as well as more freedom and flexibility in your core code. You can find the documentation here.If you use plug-ins or are a plug-in developer yourself, you now have a more flexible and robust way to configure Android Gradle settings (manifest, settings, and build) using the Project Configuration Manager. Learn how to Modify Gradle project files in the Unity Manual.Adaptive Performance 5.0 includes enhancements to control the lifecycle of Adaptive Performance at runtime. Additionally, we are launching an Android provider to extend this package to most Android devices.Unity 2023.1.0a22 extends HDR display support to URP for desktop and console platforms, with mobile and XR platform support to follow in 2023.2. HDR displays are capable of reproducing images with higher peak brightness and wider color gamut in order to achieve better color saturation and contrast in highlights and shadows. The result is a more realistic variation in luminance across scenes, increased surface detail, and improved depth perception.To further improve DirectX 12 performance for Windows platforms, Unity 2023.1 introduces a new graphics jobs threading mode called Split Graphics Jobs. This mode aims to reduce unnecessary beginning- or end-of-frame synchronization between the main and native graphics jobs threads, resulting in significant performance improvements. In our internal testing, we’re observing meaningful CPU render setup performance gains over DX11 when targeting DX12 using Split Graphics Jobs. For more information, see the official forum post.XR Interaction Toolkit v2.3.0 includes several new features and capabilities, including Interaction Groups, Poke and Gaze Interactors, hand interaction integration and samples, and Device Simulator usability improvements. You’ll also find a new Interaction Affordance System, which allows you to build high-performance interaction indicators (visual, audio, haptics, and so on). You can install XRI 2.3 via the Package Manager and find more details in the documentation.We celebrated a major milestone with Netcode for Entities, released alongside Unity 2022 LTS, and we intend to continue adding capabilities to our multiplayer solutions in the Editor. We’re also working to better integrate all of our multiplayer solutions, such as Netcode for GameObjects and Editor-side features, with Unity Gaming Services to provide a single multiplayer solution, as outlined in our Games Focus multiplayer post.EXPERIMENTAL RELEASE The Unity Transport Protocol (UTP) is the lower-level networking infrastructure that handles the transport of game data across networks and connected platforms and devices. In 2023.1, UTP supports both web and TCP connections to improve the capabilities of the technologies that rely on it, including our netcode solutions.EXPERIMENTAL RELEASE Multiplayer Play Mode (MPPM) is a workflow improvement feature from our multiplayer toolset that aims to deliver a user experience that’s single-player-like but with a focus on the development cycle of multiplayer games. Leveraging MPPM allows you to emulate multiple players connected to the one game experience simultaneously, all on one machine. It supports recently released features such as Netcode for GameObjects, so you can be efficient in multiplayer development, even with a low hardware investment.As outlined in our Games Focus kickoff blog post, we are committed to a stable core. This means that we continue to update C# support in different ways, including the under-the-covers compilation process.In previous releases, our implementation of IL2CPP made it challenging at times to track down the specific part of the code that a managed stack trace was referring to because it only provided method names. With 2023.1, developers can now enable the addition of debug symbol processing, which displays the C# source code line number information so it’s far easier to track down specific areas in the code base of a game project. Read more on how to activate and view this additional information in the documentation.We shared our ongoing dedication to bringing new capabilities and functionality to the Editor and continue to ensure that creating your projects feels seamless.We’re improving and standardizing the context menus that pop up when you right-click across items and workflows. Improvements include more consistent interactions, sorting optimizations, and an optional search field.The Terrain Tools package has been migrated to the new Overlays toolbar framework for a more consistent and predictable experience with Unity scene authoring workflows.To read more about the 2023.1 Tech Stream, check out the 2023.1 release notes for a comprehensive list of features and the Unity Manual for documentation. As you dive in, keep in mind that while each Tech Stream release is supported with weekly updates until the next version, there is no guarantee for long-term support for new features. Also, remember to always back up your work prior to upgrading to a new version. Our upgrade guide can also assist with this. For projects in production, we recommend using Unity LTS for greater stability and support.Each Tech Stream is an opportunity to both get early access to new features and to shape the development of future tech through your feedback. We want to hear how we can best support you and your projects. Let us know how we’re doing on the forums, or share your feedback directly with our product team through the Unity Platform Roadmap.]]></description><link>https://unity.com/blog/engine-platform/2023-1-tech-stream-now-available</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/2023-1-tech-stream-now-available</guid><pubDate>Mon, 03 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[9 Verified Solutions on the Unity Asset Store's new AI Marketplace]]></title><description><![CDATA[Explore a wide range of third-party solutions for AI-driven development and gameplay enhancements, now available on the Unity Asset Store’s new AI Marketplace.Whether you’re looking for professional-quality Verified Solutions, community-built solutions, or up-and-coming AI tools, the Unity Asset Store is your destination for an ever-growing selection of AI solutions.Verified Solutions have undergone enhanced vetting, and each provider is committed to offering high-quality solutions, service, and long-term support. No matter how large or ambitious your project is, these solutions can scale to help you meet any creative challenge.Convai gives AI characters in games and virtual worlds the ability to have human-like conversations and more. You can use Convai to add a backstory, knowledge base, voice, and overall intelligence to your character assets, enabling them to converse naturally with players and carry out actions.Inworld AI offers an advanced AI NPC platform that enables you to go beyond dialogue trees and create fully interactive characters. Inworld's low-code integration for Unity makes worlds more believable, drives immersive gameplay, and helps increase player retention.Layer AI’s mission is to give every developer access to high-quality game art using the power of AI. You can use Layer to upload your creations and generate hundreds of additional assets with just a few clicks – all in your custom art style. An increasing number of game studios use Layer for scaling creative asset production, live ops pipelines, and marketing content.Leonardo Ai is a content creation suite that uses generative AI, enabling you to create stunning 2D assets and textures. You can also generate full UV texture maps for 3D models.Unleash your creativity, amplify emotions, and enhance your storytelling with LMNT’s AI speech for characters and voice-over. You can either pre-render as a traditional asset, or generate on the fly for dynamic dialogue.modl:test’s Automatic QA enables you to test more content than a human can. AI bots explore your levels to detect and report errors, events, and crashes on the Modl.ai cloud platform.Polyhive is an AI texturing suite that enables you to texture 3D meshes with text. It uses a mesh-aware texturing process with 360-degree consistency, so you can produce high-quality assets in minutes.The Replica Studios AI Voice Actors Unity plug-in seamlessly integrates with Replica Studios’ desktop app, allowing you to generate AI text-to-speech and transfer voice-overs directly into your active Unity project.Zibra Effects by Zibra AI is a versatile, no-code toolset that simplifies VFX creation, and helps you take virtual worlds to new heights of immersion through real-time simulation and lifelike physics.This is just the beginning of Unity AI. Please keep in touch with us in the Assets and Asset Store forum for the latest updates.]]></description><link>https://unity.com/blog/news/9-verified-solutions-on-new-unity-asset-store-ai-marketplace</link><guid isPermaLink="true">https://unity.com/blog/news/9-verified-solutions-on-new-unity-asset-store-ai-marketplace</guid><pubDate>Fri, 30 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Now available: 12 recipes for popular visual effects using the Universal Render Pipeline]]></title><description><![CDATA[Our new cookbook for Universal Render Pipeline (URP) effects is now available to download for free. This guide provides 12 recipes for popular visual effects that can be applied to a wide range of games, art styles, and platforms. Get ready to cook up Renderer Features, GPU-instantiated meshes, decals, volumetric materials, and more. You can use it alongside the Introduction to the Universal Render Pipeline for advanced Unity creators guide, which offers a wealth of information about how to use URP for creators that have developed projects with the Built-In Render Pipeline.Here’s a handy overview of the recipes you’ll find in the book.Renderer features provide you with ample opportunities to experiment with lighting and effects. This recipe focuses on Stencils, using only the bare minimum of required code. If you work alongside the sample project, open the sample scene via Scenes > Renderer Features > SmallRoom – Stencil in the Editor.The sample project uses the magnifying glass over desk example, and the aim is to convert the lens of the magnifying glass so that it allows you to see through the desk like an x-ray image. The approach uses a combination of Layer Masks, shaders, and Renderer features.Renderer Features are a great way to achieve dramatic custom effects or gameplay possibilities.Exchanging data between CPU and GPU is a major bottleneck in the rendering pipeline. If you have a model that needs to be rendered many times using the same geometry and material, then Unity provides some great tools to do so, which are covered in the cookbook’s instancing chapter.This recipe uses a field full of grass to illustrate the concept of instancing. It uses the SRP Batcher, GPU instancing, RenderMeshPrimitives, and ComputeBuffers.Often used together, toon and outline shaders present two distinct challenges. The toon shader takes the cooler that would be created using a URP-compatible Lit shader, and ramps the output rather than allowing continuous gradients, thereby requiring a custom lighting model.The example in this recipe uses Shader Graph. However, Shader Graph doesn’t support custom lighting, so there’s no node available to directly access the Main and Additional Lights. Instead, you can leverage a custom node to access those.Check out the Toon and outline shading recipe to get the full details.Ambient Occlusion is a post-processing technique available from Unity 2020.2. This effect darkens creases, holes, intersections, and surfaces that are close to one another. In the real world, such areas tend to block out or occlude ambient light, thereby appearing darker.See how you can implement real-time Screen Space Ambient Occlusion (SSAO) effect as a Renderer Feature using URP.Decals are a great way to insert overlays onto a surface. They’re often used to add visuals such as bullet holes or tire treads to the game environment as the player interacts with the scene.If you want to follow along this recipe, you’ll work with URP Decal Projection properties, creating the material, and even adding a decal with code.The water recipe is created in Shader Graph to make the steps more accessible. It’s built in three stages:Creating the water colorMoving tiled normal maps to add wavelets to the surfaceAdding moving displacement to the vertex positions to create a swell effectWhile this recipe forms the basis of a simple water shader, you can enhance it using Caustic Reflections, Refraction, and Foam.Using LUT Textures is an efficient way to create dramatic color grading, and this approach can be useful in many games. It involves using one filter, but the steps employed apply to all of them.Lighting with URP is similar to using the Built-in Render Pipeline. The main difference is where to find the settings.This chapter in the cookbook covers related recipes for real-time lighting and shadows, including baked and mixed lighting using the GPU Progressive Lightmapper, Light Probes, and Reflection Probes. You’ll pick up enough instruction for a five-course meal!A few things to keep in mind about shaders and color space: When using lighting in URP, you have a choice between a Lit Shader and Simple Lit Shader, which is largely an artistic decision. If you want a realistic render, you can use the Lit Shader, but if you want a more stylized render, you can use Simple Lit for stellar results.Shadow settings are set using a Renderer Data object and a URP Asset using URP. You can use these assets to define the fidelity of your shadows.This recipe includes tips for: Main Light and Shadow Resolution, Shadow Cascades, baking lights, and more.Light Probes save the light data at a particular position within an environment when you bake the lighting by clicking Generate Lighting via Window > Rendering > Lighting panel. This ensures that the illumination of a dynamic object moving through an environment reflects the lighting levels used by the baked objects. It will be dark in a dark area, and in a lighter area it will be brighter.Follow this recipe to find out how to position Light Probes with a code-based approach in order to speed up your editing, how to use Reflection Probes in your scene, and how to blend them.Screen Space Refraction uses the current opaque texture created by the render pipeline as the source texture to map pixels to the model being rendered. This method and recipe is about deforming the UV used to sample the image.Learn how to use a normal map to create refraction effects as well as tint a refraction effect.This is a recipe for using ray marching to render a 3D texture. Unity supports 3D textures, which are an array of images placed in a grid on a single texture, rather like a Texture Atlas. The difference is that each image is the same size. Using a 3D UV value, you can source a texel from the grid of images with UV.Z defining the row and column of the individual image to use.You can also use Houdini when creating the 3D texture. Alternatives to a 3D texture include using multilayered Perlin noise, or prebaking a tileable noise texture using Unity.There are many advanced resources available for free from Unity. As mentioned at the beginning of the blog post, the e-book Introduction to the Universal Render Pipeline for advanced Unity creators is a valuable resource for helping experienced Unity developers and technical artists migrate their projects from the Built-in Render Pipeline to the URP.All of the advanced e-books and articles are available from the Unity best practices hub. E-books can also be found on the advanced best practices documentation page.]]></description><link>https://unity.com/blog/engine-platform/12-recipes-for-popular-visual-effects-using-universal-render-pipeline</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/12-recipes-for-popular-visual-effects-using-universal-render-pipeline</guid><pubDate>Thu, 29 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[The new Water System in Unity 2022 LTS and 2023.1]]></title><description><![CDATA[Most high-end environments require an ocean, lake, river, or even just a pool at some point. There are many ways to emulate these with a few shaders, but building an entire physically based, coherently integrated system in the High Definition Render Pipeline (HDRP) has been a complex and time-consuming task.Today, we spotlight the new Unity Water System, introduced for the first time in HDRP as part of the 2022.2 Tech Stream, with a focus on rendering. The upcoming 2023.1 Tech Stream extends the system’s feature set for better integration with worlds and gameplay.It’s now easy for environment artists to create and configure water surfaces – such as oceans, lakes, rivers, and pools – that will be integrated with other world and gameplay elements, like boats or seasides.The first step is to activate water in your project:Activate and configure water for each quality level (render pipeline assets for each quality level)Activate water in the frame settings of your camera(s)Activate water inside your scene with a Water Rendering volume override, which allows you to enable water rendering only when you need it depending on where your camera isOnce water is active, you are only a few clicks away from creating beautiful water bodies from the GameObject menu. HDRP provides three water surface types: pool, river, and ocean.Creating water bodies is fast, but the Water System provides many tools and options to customize and integrate water with your world and gameplay.For a quick overview of all the systems and extensions in action, take a look at our water samples in the HDRP package (open Package Manager > select the High Definition Render Pipeline package in your assets > choose the water samples inside the Samples section).We provide four sample scenes.The Swimming pool scene shows how to set up different “pools” in the same scene at different heights, as well as how to use custom meshes to render the surfaces with custom shapes.The Island scene showcases the ocean body and includes a water mask to remove swells around the island, a water deformer to create waves, decals to place foam on the beach, a foam generator to generate foam behind the waves and around the island, and a water excluder to exclude water from inside a boat. It also focuses on leveraging Burst with the water query API to parallelize the computation of multiple objects (i.e., seagulls) to float on water.The Glacier scene showcases many features, including:River water bodyWater deformer to create a waterfallCurrent simulation to make the water flow through the glacierWater query API to make icebergs float down the riverFoam generator to add foam behind icebergsCustom foam on the borders of the river and for the waterfall swirl using Shader Graph and the Water master nodeDecals to animate water falling in waterfallSample caustics to project outside of waterThe Water Line scene showcases the customization of the water’s surface level and underwater rendering using a custom pass, generating a larger blurry separation and simulating the effect of water on a camera lens.Now that you’re fully briefed, let’s dive into each system.The Water System comes with an off-the-shelf, physically based water shader designed from a recently introduced lighting model in HDRP, also available for Shader Graph for customization. You can adjust the smoothness, refraction, absorption, diffusion, and light-scattering properties of a water surface.The scattering color works like the base color of the water, so you need to start there to set up the general feel. Then you can change the absorption distance and refraction color, to control how transparent your water is and the tint applied to objects you see through water refraction. For a clean Caribbean Sea, you’d have a large absorption distance coupled with a cyan scattering and refraction color, whereas for a dirty river, you’d want a dark brown scattering color and a quasi-opaque river with a small absorption distance.There are limitations to water rendering in 2022.2, some of which have been addressed in 2023.1 (seeing water behind Volumetric Clouds, precise waterline) or will be for 2023.2 (improved performance, support for rendering transparent surfaces overlapping water).If you’re as fan, as we are, of Commandant Cousteau, you will enjoy diving under water with the Water System. It can detect when the camera is under the water plane and simulate underwater rendering according to the water’s physical properties.Caustics can be generated procedurally to simulate the light refraction from the surfaces projected on the ground surface. Note that caustics can be reused as projections outside of water, using a decal, for example, to simulate water caustics reflected inside a cave.When the camera sits between water and exterior, a water line is generated, and underwater rendering is composed on the submerged part of the camera. Water line rendering is improved in 2023.1, allowing you to customize it with a custom pass (see: The Water Line sample scene).What makes water even more visually attractive is how it moves. Note that the provided water simulation system focuses on the water plane deformation and not on fluid or splash simulation.The waves are procedurally generated using a Fast Fourier Transform (FFT) simulation. Simply put, this works by summing a lot of simple waves of different frequencies to form complex waves. By controlling the range of frequencies, you can control the agitation of your water.The system works by adding up varied ranges of frequencies, which we call bands.HDRP supports up to three bands, which simulates three effects of the real world on water and covers most use cases:The swell, representing the waves generated by the effects of the moon and the distant wind. It is solely controlled by the distance wind parameter and allows you to orient the swell's direction.Agitation, representing the chaos generated by the wind.Ripples, representing currents or local wind effects. This is the band with the highest frequencies, or smallest waves and adds fine detail to the water.For example, since pools have small perturbations, they only use the highest frequency band: the ripples. A river, which is a bit more complex, will have ripples and an agitation band. And an ocean has the full frequency range to be able to cover all the various wave sizes we see in real life. The simulation is done on a square patch that is then repeated infinitely.In 2023.1, we are adding support for currents that will make ripples flow according to flowmaps. The simulation is completely deterministic, so you can have consistent results when doing multiplayer games, physics simulations, or recording a short movie or a cinematic.For rendering the water plane deformation, the system uses vertex displacement and can either apply to the provided procedurally generated geometry or to a custom mesh that you provide. The procedural geometry works by instantiating quads next to each other, similar to what terrain does for rendering. This can also be used when creating an infinite ocean or long rivers to make sure the vertex density adapts to where the camera is.On top of that, in order to have finer vertex density to render small ripples, HDRP can rely on GPU Tessellation, which is a way to subdivide triangles using special shaders. With this capability, when the camera is at a certain range from the water surface, you can see that more triangles are generated close to the viewpoint.The system also provides various options to balance between visual quality and rendering performance. Learn more about optimizing performance in our documentation.As we just explained, the simulation runs entirely on the GPU for efficiency, but some of it can be mirrored on the CPU to allow you to sample the water height and currents (for example, to make objects float along a river).This has a high CPU cost since there are a lot of computations required for the simulation, but this is kept reasonable by using burstified jobs to more efficiently parallelize operations.Note that, based on feedback, the scripting API has evolved between 2022.2 and 2023.1 and might require adjustments to your code between the two versions.To get started, you can find two code samples in the water scenes: one in the Island scene, leveraging Burst to parallelize the sampling of many objects, and the other in the Glacier scene, showing how to make icebergs float along the currents of the river and fall down the cascade with simpler, non-parallelized code.Foam simulates the bubbles generated on or under the water by the wind at crests, by waves breaking against the shore or rocks, or by a moving boat or character in the water.The Water System can automatically generate foam based on the water body simulation and the distance wind speed for rivers and oceans. It then allows you to adjust the amount of foam and tweak the look, choosing its smoothness and the tiling of the texture.For 2023.1, a Foam Generator was added to simulate white water for a boat trail, waves, or around rocks in open water, so that foam can be spawned and continue its own course according to the waves. In the sample scene, you will see different examples of usage for the Foam Generator: In the Island scene it’s used to generate foam at the top of the breaking waves and around the island, and in the Glacier scene to generate foam behind the icebergs floating down the river.Using Shader Graph, you can inject custom foam to the Water master node and use it to add custom procedural foam for things like river borders or swirl down a waterfall. For example, in the Glacier sample, the swirl at the bottom of the waterfall is done by simply scrolling and blending a custom foam texture in Shader Graph. The foam on the borders is made by sampling the Depth Buffer to approximate depth.Simulation foam will be injected where the agitation of the waves requires it. But for artistic purposes, you may want to mask out some regions from receiving foam using a foam mask.To look more realistic, the water surfaces and simulations need to be modified locally to better integrate with your world and props. For example, to remove the water geometry inside a boat, add breaking waves near the shore on the seasides exposed to the swell, produce foam around rocks, modify local currents, shape calm areas inside bays, create a waterfall in the middle of a river, or generate small whirlpools in a river or a giant vortex in the middle of the ocean.Multiple components allow you to customize the simulation, foam, and currents to create these local variations or more complex effects:The Water Mask allows you to attenuate or suppress ripples, swell, and foam on a specific portion of a water surface.Decals can be added on the water to create local foam, override the smoothness of the water, or simulate small local deformations such as droplets, impacts, or custom ripples by using a normal map. They can be also used to simulate wetness on the sand or rocks (see: the Island sample scene) or caustics on the walls (see: the Glacier sample scene) independently from the water system. Note that color cannot be changed since decals are only treated as grayscale.Water deformers can locally modify the simulation to create waves, as showcased in the Island sample, or a waterfall, as illustrated in the Glacier sample.We measured the performance of the Glacier scene, where most of the features are activated on various consoles, and have profiled the Water System based on this. Through measuring, we learned that water rendering time takes approximately 4ms on the GPU on the latest generations, whereas previous generations’ consoles took around 7ms. This, of course, is highly dependent upon the quality settings of your water, the complexity of the simulation, and the amount of water pixels displayed on screen. But the system is performant enough to run smoothly on various platforms.Furthermore, the system is using deferred clustered lighting to optimize shading and support a high number of light sources. Most of the rendering time is coming from the GBuffer pass due to the important number of vertices required to get nice waves, even in the distance. When enabling GPU tessellation on the surface, this cost can be controlled by changing the maximum tessellation level and the fade distance when the camera is far away from the water.In the Miscellaneous section of each water surface, you have access to various debug modes to visualize current direction, deformation, foam, and other masks that are applied on the water.To see the Water System running on more complex scenes, we created a demo project showcasing pool, island, and river scenes.The Island scene showcases an infinite ocean with shore waves arriving on the beach. It shows how to use the water masks and make deformers and foam generators using custom render textures. It also uses decals to create complex interactions with the water surface when a wave approaches the beach.The Pool scene showcases an indoor water surface with realistic color, depth, underwater, and caustics.The River scene showcases the use of instanced quads and leverages a current map to simulate the flow, as well as decals, a custom Shader Graph, and VFX Graph to enhance the visuals.You can download the demos on GitHub.To use the water system, you must be working with HDRP and Unity 2022.2 or above.While you can use some of the initial functionalities in 2022.2, we recommend starting with 2023.1 where multiple improvements and features have been added, including some API changes.You can download the water samples in the Package Manager, from which you can start reusing sample code and systems. Also, check out our WaterScenes demo project on GitHub for more complex examples of water systems integrating together.To learn more, watch Rémi and Adrien’s Water System deep dive from GDC 2023 or read our documentation.We have yet to plan for any new features at this stage and are currently concentrating on stability. You can share your feedback with us or ask questions on our dedicated Unity forum thread.To propose new features and vote for upcoming features under consideration, check out our public roadmaps.Please share feedback on the new Water System in the HDRP forum. For future technical blogs from Unity developers, stay tuned to the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/new-hdrp-water-system-in-2022-lts-and-2023-1</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/new-hdrp-water-system-in-2022-lts-and-2023-1</guid><pubDate>Wed, 28 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Unity Muse and Unity Sentis, AI-powered creativity]]></title><description><![CDATA[We believe that every aspect of the creative process, from systems to objects to pixels, will be impacted by AI – and so will all of the resulting runtime characters, worlds, and experiences.AI can help you to be more productive while staying fully in control of your vision. It offers the possibility of in-game features and capabilities that couldn’t be built otherwise, potentially revolutionizing player experiences by embedding AI models in the runtime so content reacts and responds to players and users in new ways.We’re harnessing the power of AI to drive innovation, accelerate content creation, and increase your productivity across games, entertainment, and industrial use cases. We’ve been building a suite of AI tools that promise to accelerate creation time and complement your workflows by finding information and generating draft assets as quickly as typing in a text prompt or scribbling a sketch. From there, you could integrate work with familiar tooling to revise and edit the assets you need at a speed that’s unimaginable with today’s workflows.Today we’re announcing two new AI products: Unity Muse, an expansive platform for AI-driven assistance during creation, and Unity Sentis, which allows you to embed neural networks in your builds to enable previously unimaginable real-time experiences.Whether you’re just getting started or already a Unity expert, Muse and Sentis are here to help you open up new avenues of creativity and innovation. We’re committed to working closely with you to explore, validate, and define our AI offerings, which is why both will be available via closed beta at this time. Your feedback is vital for this work and will be actively solicited, considered, and integrated throughout the process.Unity Muse is an AI platform that accelerates the creation of real-time 3D applications and experiences like video games and digital twins. The eventual goal of Muse is to enable you to create almost anything in the Unity Editor using natural input such as text prompts and sketches.Starting today, we’re beginning a closed beta for Muse Chat, a critical feature of the Muse platform. Using Muse Chat, you can leverage AI-based search across Unity documentation, training resources, and support content to get well-structured, accurate, and up-to-date information from Unity. Muse Chat helps you find relevant information, including working code samples, to speed up development and troubleshoot issues.Over the next few months, you’ll see even more features in our Muse platform, including the ability to create textures and sprites or even fully animate a character, all using natural input.This is just the beginning – Unity Muse will continuously improve to help you in the Editor and on the web.Unity Sentis is a literal gamechanger. At a technical level, it bridges neural networks with the Unity Runtime, but the possibilities that Sentis unlocks are near endless.Unity Sentis enables you to embed an AI model in the Unity Runtime for your game or application, enhancing gameplay and other functionality directly on end-user platforms.Sentis allows AI models to run on any device where Unity runs. It’s the first and only cross-platform solution for embedding AI models into a real-time 3D engine, so you can build once and embed your model so it can run on the edge on multiple platforms, from mobile to PC and web to popular game consoles like Sony PlayStation®. Since you’re running your program on the user’s device, there’s no complexity, latency, or cost associated with model hosting in the cloud.Starting today, we’re also making available AI Verified Solutions – third-party packages that meet Unity’s highest quality and compatibility standards – on the Unity Asset Store. You can now find professional-quality AI solutions from providers such as Convai, Inworld AI, Layer AI, Leonardo Ai, LMNT, Modl.ai, Polyhive, Replica Studios, and Zibra AI. These new solutions enable AI-powered smart NPCs, AI-produced VFX, textures, 2D sprites and 3D models, generative speech, in-game testing with AI, and more, all designed to support and accelerate your creative process.Stay in the loop about current and upcoming AI betas by signing up for the Unity AI Beta Program. Let us know what you think in the forums today.We can’t wait to see how you leverage AI from Unity Muse, Sentis, and our growing ecosystem of AI Verified Solutions on the Unity Asset Store to accelerate your workflows and supercharge your experiences.Editor's Note (June 28, 2023): This announcement has been updated to reflect changes to the Unity Asset Store AI Marketplace following the removal of a provider.]]></description><link>https://unity.com/archive/blog/engine-platform/introducing-unity-muse-and-unity-sentis-ai</link><guid isPermaLink="true">https://unity.com/archive/blog/engine-platform/introducing-unity-muse-and-unity-sentis-ai</guid><pubDate>Tue, 27 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Your guide to reducing your Android ANR rate and improving your users’ experience]]></title><description><![CDATA[ANRs, or “application not responding” errors, are a critical issue facing Android developers, and despite the fact that mobile apps have become more technologically advanced over time, ANR rates have only increased.
In fact, blank and unresponsive screens not only harm the user experience, they can also affect your app’s ranking on the Google Play Store.
So what can developers do to solve ANR issues? Alon Dotan, Integration Engineer Team Leader at Unity, offers best practices for app developers to reduce their ANR rate. Let’s dive in.
How developers can reduce their ANR rateOver the years, I’ve seen first-hand how problematic code integrations can cause ANRs. This includes developers integrating their own code, third party code, and more. But by optimizing your code during integration, you can try to reduce your ANR rate. Here’s how:1) Reduce the workload during the application pause (when the application moves to the background). During a pause period, you would generally store your app’s information in the server - for example, you would report a player’s position in the game so they can return to the same place they stopped. This workload, combined with other third party code creating its own workload, can overload the device’s resources - particularly the main thread. The main thread is the processor that affects an app’s user interface, and is often the main spot where ANRs are located. So any added workload on the main thread increases the potential for an ANR. During the application pause, make sure all the actions you’re taking are necessary - or try saving the user’s state in your local device memory. And, of course, see whether you can also complete these actions outside of the pause period.2) Segment devices that are likely to experience ANRs. Despite mobile devices getting more advanced, there are still devices in use with low processing power which are more likely to have ANRs.As a developer, it’s critical to think about how each code integration could affect each of your devices, and choose carefully which integrations to run on older devices.3) Work with StrictMode to find ways you might be causing ANRs during integration. StrictMode is an Android tool that helps you find ways your actions might cause ANRs, like working on the main thread.4) Confirm that the third party code (e.g. SDKs) you’re working with are the most updated versions. Using some older versions might present ANR issues.5) Add an ANR watchdog, a component that reports ANRs and ensures you can keep track of where they’re coming from.
In the Google Play ConsoleFinally, the Google Play console is a very useful place to find information about managing and reducing ANRs.6) Utilize information from the Google Play Console. Let’s say Google Play Console shows you that most ANRs are coming from a specific device. Even if you’re not sure how to solve the problem, you can always segment and filter out these devices. This should also apply to specific app versions or countries with high ANRs. This, of course, requires a balance - by segmenting out a certain device, for example, you’re also missing out on the benefits of third party code - so it’s always best to double check that you’re segmenting the right device before making any changes. Reducing ANRs is a marathon, not a sprint - but with the right tools, Unity LevelPlay developers have kept their in-app ANRs down, and you can do the same - ultimately giving users a smoother, easier, and more positive experience to make sure they keep coming back to enjoy your app.]]></description><link>https://unity.com/blog/reducing-your-android-anr-rate-and-improving-your-ux</link><guid isPermaLink="true">https://unity.com/blog/reducing-your-android-anr-rate-and-improving-your-ux</guid><pubDate>Thu, 22 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get started developing mixed reality for Meta Quest 3 with Unity]]></title><description><![CDATA[We’re excited to unveil a new way for you to create captivating, cross-platform, immersive experiences for Meta Quest. In this blog, we detail a brand-new preview of mixed reality development tools for Meta Quest 3, Meta Quest 2, and Meta Quest Pro, powered by Open XR and Unity’s AR Foundation. With this release, get ready to revolutionize the way we interact with the world around us.Mixed reality enables you to interact with digital content in the real world, enhancing your surroundings with virtual objects, characters, and experiences. Advanced sensors and tracking technologies allow for precise mapping of the physical environment and accurate placement of virtual content within it. Mixed reality also enhances the way we perceive and engage with our surroundings, offering a truly transformative and immersive user experience. Unity’s new toolset aims to provide you with the resources you need to create compelling cross-platform mixed reality experiences for Quest devices.OpenXR is a royalty-free standard that simplifies AR and VR development by enabling applications to reach a wide range of hardware without the need to rewrite code. Developed by a consortium of industry leaders, OpenXR’s interoperability makes it easier to create content that reaches a wide audience.Unity’s AR Foundation is a cross-platform framework, purpose-built for creating applications across mobile and headworn AR/VR devices. It allows developers to create experiences and deploy them to multiple platforms. By leveraging features from common SDKs, such as ARCore, ARKit, and the OpenXR standard, AR Foundation provides a seamless workflow in Unity so you can focus on unleashing your creativity.We are introducing a preview of AR Foundation support for Quest through a new Meta OpenXR package.This preview release offers Quest support for essential features such as passthrough, plane detection, device tracking, raycasting, and anchors. It also includes Quest-specific updates for samples like Simple AR, which demonstrates basic plane detection and raycasting, and Anchors, which demonstrate how to create an object that specifies the position and orientation of an item in a physical environment.Let’s take a closer look at passthrough and plane detection.With passthrough support, developers can now seamlessly blend the virtual and real worlds, allowing users to see and interact with their physical environment while engaging with virtual content.Imagine creating games where players can navigate their living rooms or offices while battling virtual enemies, or designing applications that overlay virtual objects onto real-world surfaces with unmatched precision. The possibilities are truly limitless.Plane detection in AR Foundation opens up a realm of possibilities for developers seeking to create context-aware experiences for Meta Quest. With plane detection, your applications can analyze and interpret the physical environment, allowing virtual objects to interact intelligently with the real world.Imagine building games where characters navigate obstacles in real time, or designing levels that adapt to different room layouts. AR Foundation’s plane detection for Quest will give you the data you need to understand physical space and push the boundaries of immersion.We know that having robust templates, sample content and pre-defined interactions can save you a lot of time. That's why we’re adding new XR templates and samples to Unity. You'll be able to streamline your project setup, explore complex object interactions and see examples of user interfaces. Stay tuned for the release of these templates in Unity Hub.You can get started building apps for Quest 3 with AR Foundation and OpenXR today by downloading Unity 2022 LTS or later. You will also need to download the experimental Meta OpenXR package. To do this, open the Unity Package Manager from inside the Unity Editor, click the plus (➕) symbol in the top left, then select “Add package by name” and type com.unity.xr.meta-openxr. Once downloaded, it will automatically trigger other required packages, such as the OpenXR Plugin and AR Foundation packages, to download. For sample content, check out Simple AR and Anchors on Github.The Unity XR team is continuously improving AR Foundation. As we carry on with development, we want to hear from you and would love to see what you build with these tools. Feel free to include the hashtag #unityARF when posting about your project on social media.]]></description><link>https://unity.com/blog/engine-platform/get-started-developing-for-quest-3-with-unity</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/get-started-developing-for-quest-3-with-unity</guid><pubDate>Tue, 20 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to add VR support to your Universal Render Pipeline project]]></title><description><![CDATA[One advantage of developing Unity titles built on the Universal Render Pipeline (URP) is that they’re supported on a wide variety of platforms with minimal changes to render settings. Your project can run on any platform from mobile devices to consoles, PCs, and even VR.To those who haven’t developed for VR before, it can be daunting to figure out where to get started. Whether you’re just starting your project or have an existing URP project that you’ve published on other platforms, we’ll go over the steps to add VR support so that it can run on multiple VR platforms with minimal effort.One thing that every VR Unity project needs is the XR Plug-in Management package. This package makes it easy to configure your project for the VR platforms that you’d like to build for, from Meta Quest and Magic Leap to PlayStation®VR2 (PS VR2).Another useful package is the XR Interaction (XRI) Toolkit. This package decreases your setup time by providing prefabs that implement movement options common in most VR titles, such as teleporting, snap turns, and more. Read more about the options the XRI package provides in this blog.To add these packages to your project, open the Window menu and click on Package Manager. In the Package Manager window, click on the “Packages: In project” dropdown to expand the options, then click the “Unity Registry” option to make the Package Manager list all available packages.Unity supports a lot of packages, so type “xr” in the search bar of the Package Manager window to filter the list so that only XR-specific packages are shown. Next, click on the XR Plug-in Management package, then choose the Install button to add it to your project. Follow the same process for the XRI Toolkit package to add it, too.Next, let’s add the Sample Assets provided by the XRI team to help you get started. Click on the XR Interaction Toolkit package in the Package Manager, then the Samples tab in the package details panel. Then, click the Import button next to Starter Assets to add assets that will streamline the setup of VR behaviors and input actions.With these packages installed, you’re more than halfway to developing for VR.Next, you need to specify which VR platforms you want to target. To do that, open your Project Settings and click the XR Plug-in Management tab (which was included when you installed the package) to see the list of available plug-in providers that you can select for your project. Plug-in providers is another name for VR platforms. Select an option, such as Oculus or Open XR, and Unity will install the package(s) specific to that platform.Some XR platforms use the Windows, Mac, and Linux build target in the Build Settings, but others run on different targets. For example, building for PS VR2 requires switching the build target to PlayStation®5 (PS5), while others require switching to Android or iOS. Make sure you switch to the correct build target while you’re developing so that you can catch any important errors and warnings early. Keep in mind that to develop games for PS5, you have to register as a PlayStation developer.Each XR plug-in provides validation checks to make sure that your project is properly configured to build for XR. To find them, go to the Project Settings window, then click the Project Validation tab under the XR Plug-in Management tab to see if there are any warnings or errors to take care of. Most checks include a “Fix” button to resolve the issue for you.With the right plug-in providers selected, you’re now ready to start building for your VR platform(s) of choice. However, you still need to map VR controls to your existing player character. That’s where the Starter Assets provided by the XRI Toolkit come into play.In the Project Window, go into the Samples/XR Interaction Toolkit/2.3.2/Starter Assets/Prefabs folder, then drag the Complete XR Origin Set Up Prefab into your Scene. This Prefab comes preloaded with all the components you need to configure VR input for your player controller.The Prefab has a nested XR Origin Prefab that handles most VR controller setups. It has two game objects that represent the player’s left and right hands, as well as a Main Camera nested in a Camera Offset GameObject that handles moving the camera depending on whether or not a player is in a sitting or standing mode. Since the Complete XR Origin Set Up Prefab includes its own Main Camera, if you already have a Main Camera object in your Scene, then make sure to disable it so that you don’t have multiple cameras trying to render your player’s main view at once.The XRI Toolkit also comes with an Input Map that maps actions to common VR controls. These controls are standard across most VR platforms, so there’s no extra coding required to ensure your input is recognized on a variety of platforms, including Meta Quest, Magic Leap, and PS VR2. Make sure you copy and paste any scripts that were important for game state tracking from your original player controller to the newly added Complete XR Origin Set Up Prefab. Feel free to rename the Prefab to something that’s easier to remember, like VR FPS Controller.The XR Origin GameObject includes a lot of components that can be pretty confusing at first. Think of the XR Origin component of the XR Origin Prefab as the driver of all the other XRI components. Without it, XR locomotion doesn’t work. The rest of the components are providers that allow specific XR locomotion to be possible. These providers correspond to a different type of VR locomotion, from teleporting to snap turns to grabbing surfaces with two hands and pulling yourself along, and so much more.To learn how to tweak the locomotion values of the XR Origin Prefab to your liking, read the documentation. But for just getting started, using default values should work fine.Of course, not all VR platforms are created equal, and it’s critical to keep the hardware specs of your target platform in mind, especially when VR titles need to hit a consistent 60, 90, or 120 frames per second to minimize motion sickness. This can be achieved by reducing your max eye resolution, tweaking the anti-aliasing options for your Main Camera, reducing the number of dynamic lights in favor of baked lights, reducing the amount of alpha transparencies used in your GameObjects, and tweaking GameObjects’s LOD values so that they only render a higher-geometry version when the player is up close to them. For more suggestions, read our guide on optimizing graphics performance.The good news is that it’s very easy to switch between different quality settings depending on the quality level you’ve specified for each platform. In the Quality tab of the Project Settings window, you can create and customize quality levels that set unique renderer, anti-aliasing, LOD, and lighting settings to help you get the most out of each platform. Learn more about adjusting quality settings.Now that your project is configured to target your VR platform(s) of choice, it’s time to test the newly added XR rig in your project. There are two recommended methods for VR testing: use the XR Device Simulator from the XRI Toolkit to test the setup in the Editor or build the player and run it on the device.There is a handy tool available in Unity called the XR Device Simulator, which allows you to simulate XR controls inside of the Game view of the Editor when you’re in Play mode. You can save time by testing your locomotion settings without building your project. To add the XR Device Simulator to your project, open the Package Manager window, go back to the XRI Toolkit package, click on the Samples tab, and, under the Sample Assets, click the Import button next to the XR Device Simulator.After it’s installed, open the Project Settings window and click on the XRI Toolkit tab. In this tab, enable the “Use XR Device Simulator in scenes” checkbox to add the XR Device Simulator at runtime when you enter Play mode. You can also drag and drop the XR Device Simulator Prefab from the Project window straight into your Scene.Now, when you enter Play mode in the Editor, you’ll be able to use WASD and mouse controls to move your XR Rig and press Tab to switch between moving all the controls, just your left hand, or just your right hand. It’s not a 1:1 match to actual VR input, but it will help you test if your locomotion settings are working as expected right away.Just remember that before you build your project, you need to either disable the “Use XR Device Simulator in scenes” checkbox in the XRI Toolkit Project Settings window or disable/delete the XR Device Simulator from your scene. Otherwise your VR controls won’t work properly on the device. This is because the XR Device Simulator simulates VR input from either a mouse and keyboard or a game controller and ignores input from actual VR controllers.The second method for testing your XR Rig is to simply build and run it on your target platform. Each XR device’s setup for running Unity builds is unique, so read the documentation on how to connect them to your dev machine for the most up-to-date information. Once your device is connected, choose Build and Run in the Build Settings window to create the build for your target platform and load it onto the device.After the build is running on-device, you can test the input yourself and see what works and what doesn’t. The only limitation is waiting for the build to finish and having a device available to test on.With just these steps, along with some minor tweaking of foveated rendering settings, I was able to get the Japanese Garden scene of the new URP Template running on the PS VR2, which was showcased at GDC 2023.I hope this quick guide helps you get started adding VR support to your project. If you’re confused about any part of the VR setup, you can review Unity’s guide for configuring your project for XR for more information.The XR and URP teams are both working hard to ensure that developing for multiple platforms is as simple as possible. Please share any Universal Render Pipeline feedback in the URP forum and XR feedback in the XR forum. Watch for future technical blogs from Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/how-to-add-vr-support-to-your-universal-render-pipeline-project</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/how-to-add-vr-support-to-your-universal-render-pipeline-project</guid><pubDate>Wed, 14 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Updating Unity’s guiding principles for ethical AI]]></title><description><![CDATA[We recognize that AI continues to shape the world we live in, and we’re excited and committed to ensuring that our AI solutions are developed and deployed in a way that is transparent, fair, accountable, and in accordance with government regulation around the globe.Today, we’ve updated our guiding principles for ethical AI and invite our community of creators to join us in advancing the responsible use of AI, making it safe, fair, and productive for the Unity community to use.Unity will execute against each of the below principles by continuing to demonstrate our core values: Users First, Best Ideas Win, Go Bold, and In It Together. Throughout our product development process, we engage multiple stakeholders across our organization through established governance programs, and product teams adhere to these principles (and actively participate in their continued evolution). Lastly, we will engage our community for feedback and ask that all uphold our principles while operating in our ecosystem.We strive to use AI solutions that promote inclusion and to make this technology available to everyone. We recognize the importance of considering all types of human experiences and are committed to using AI to expand the ways in which creators can learn to create. To do this, we’re making it easier for creators to express themselves, bringing powerful tools to everyone from the biggest companies to the individual hobbyists, and we review our AI tools to ensure we use appropriate data sets and promote open and healthy expression whenever and wherever they are used.We acknowledge the potential consequences of AI and commit to following a responsible design process. We take proactive measures to anticipate and minimize potential harm to our community, ecosystem, and the planet that may arise from the use of our AI technologies, and we are committed to continuously improving our products to align with responsible and ethical practices, including environmental sustainability, human oversight, and accountability. This includes seeking diverse representation and a wider range of perspectives on design teams, monitoring energy usage and optimizing towards lower environmental impact, using appropriate data sets and testing AI technologies before deployment to ensure such technologies yield the expected results.We are committed to protecting the data and information incorporated into and used by our AI technologies, including from unauthorized disclosure or manipulation. We handle it with care and respect, ensuring that any use is in accordance with the intended purpose and aligned with these principles and Unity’s Privacy Policy. To give effect to this principle, we emphasize transparency in the use of AI, namely how our creators and users contribute to the continuing advancement of AI through their work and feedback, and will work with our community on mechanisms and tagging to enable transparency.Unity will continue to update and refine these guiding principles as needed to ensure that we maintain the proper goals in a quickly evolving field. We look forward to the continued advancement of AI technology and for a positive impact on society while prioritizing responsible and ethical practices.Stay tuned to the blog for more about Unity and AI, and, if you haven’t already, sign up for the AI Beta Program to be the first to hear about new tools and services.]]></description><link>https://unity.com/blog/engine-platform/updating-unitys-guiding-principles-for-ethical-ai</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/updating-unitys-guiding-principles-for-ethical-ai</guid><pubDate>Tue, 13 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[The 2023 Mobile Growth and Monetization Report is here]]></title><description><![CDATA[The mobile monetization and advertising landscape continues to evolve every year, so staying up to date on best practices and trends is important to sustaining success. In years when revenue and resources are strained it’s even more critical to find strategic advantages.In our second edition of the Mobile Growth and Monetization Report, we gathered feedback from across our customer and support teams about opportunities for greater efficiency in monetization and user acquisition strategies.From there, our experts dove into our games and ads data to uncover trends, offer benchmarks, suggest best practices, and give insights that Unity is uniquely able to provide.The end result is a comprehensive report that explores how studios can be more efficient with their game growth strategies. It covers:Getting to first in-app purchase (IAP) conversions fasterImproving in-app advertising (IAA) with better placements and rewardsSupplementing revenue and retention with offerwallsHarnessing the advantages of targeting by genre or country targeting and custom store pagesRead on to learn about these four key report themes that will help your monetization and user acquisition strategies achieve more with less.Creating and managing a game with IAP is often resource intensive. Knowing how best to convert players and when IAP is most effective is critical to building a sustainable strategy that isn’t over-resourced.Getting to first IAP conversion takes a combination of factors around price points, which ad types work best, and when. For example, our analysis found that timing is everything, since 77% of players who have ever converted to IAP will have done so within the first two weeks.Knowing this, players who haven’t made an in-game purchase in their first 14 days should be considered prime candidates for alternative methods of monetization and can be segmented to view ads or offerwall.Getting more out of existing user bases becomes more important when user acquisition is challenging or costly.Our analysis looked at several factors around IAA placements and rewards for guidance on which strategies tend to work best. For example, players are most likely to engage with rewarded ad placements that are found between game levels, followed by in the IAP store and in the lobby/pre-level.And although 18% of games are using rewarded video ads in their IAP store, the audience that visits your IAP store are likely players who are already considering purchases. This means that in-store placement strategies could limit which players encounter these ads since many never visit the store if they have no intention to make in-app purchases.As player behaviors change over time, finding additional ways to monetize them can be a lifeline.Offerwall revenues can be impactful for games with multiple monetization strategies. Our analysis showed that 38% of total ad revenue comes from offerwalls for games that use this feature alongside another monetization strategy.The data also showed a clear retention advantage for players that converted on offerwalls. Their likelihood of continuing to play goes up by as much as 5x when looking across day 7 (D7) to day 120 (D120). This is most notable at later stages, like at day 90 (D90) where retention for offerwall converters is 14%, while other players are below 3%.When resources are tight, paid user acquisition can be one of the more challenging aspects of growing a mobile game. This means that it’s crucial to find even small advantages in campaign optimization to get the most out of every dollar spent.One place that our analysis showed opportunities for efficiency is country targeting. Specifically, the data reveals benefits to targeting tier-2 countries that have more interest in a genre, while avoiding those with less.For this analysis tier-2 countries include Australia, Germany, Denmark, France, Italy, Japan, South Korea, Norway, Sweden and Singapore while tier-1 which included the U.S, Canada, and the United Kingdom.Advertising in tier-2 countries can cost less tier-1 as they are markets with less buying power. Within tier-2 countries some genres are preferred over others where performance will be greater than the average for all tier-2. This means they can be cost effective and impactful markets to advertise in and are worth the effort to localize campaigns for if your genre performs well there.As an example, we found that Japan is a great place to advertise a sports game – CTR performs 13% above the average of all tier-2 countries, while a racing or hypercasual game performs 7% below average in Japan.Taking advantage of insights on IAP, IAA, offerwall, and campaign efficiencies can improve your ROI and growth at a time when every extra dollar earned or saved is critical.Download the full report to dig deeper into how you can make monetization and user acquisition strategies more efficient.]]></description><link>https://unity.com/blog/games/the-2023-mobile-growth-and-monetization-report-is-here</link><guid isPermaLink="true">https://unity.com/blog/games/the-2023-mobile-growth-and-monetization-report-is-here</guid><pubDate>Mon, 12 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[The fundamentals of monetizing with offerwalls]]></title><description><![CDATA[By listing offers users can complete in exchange for in-app rewards, offerwalls don’t just generate revenue; they can also increase retention and engagement rates since users have an incentive to keep coming back to the game to receive their rewards. This trifecta – revenue, engagement, and retention – makes offerwall one of the most lucrative ad units for developers.Below, Anna Poperko, game design consultant lead, covers the benefits and challenges of using offerwalls, the game genres that work best with this ad format, and the most strategic places to place offerwalls in your game. Let’s dive in.If you’re considering monetizing with an offerwall, here’s what you should know before you take the plunge.Increase retention: Players who engage with offerwalls are more motivated to return and continue playing because they’re invested in receiving and using the offered rewards. Essentially, as players become more invested, they become more loyal as well, boosting long-term retention.Monetize more players: Open the door for new revenue by monetizing non-paying players. Some people can’t or don’t want to pay, but they might be more open to paying with their time instead. You can set the same price for offerwall currency as the reward you set in the store (for example, $1 = 100 gems), so you’ll receive the same amount of money from players who complete the offers, such watching revenue-generating ads, as the ones who actually paid with their money.Raise eCPMs: Offerwalls tend to have the highest effective cost per milles (eCPMs) of any ad unit. In fact, they can generate about 10x higher eCPMs than rewarded video ad units because advertisers are more willing to invest in ad units that target highly engaged players. Think about it: Offers set deep in the advertiser’s game (like “reach level 20”) can help the ad unit to acquire a high-quality user, also potentially generating better revenue for the advertiser.To make the most out of offerwalls, a game needs two things: currency that’s worth making an effort for and players who are willing to make that effort.Ensure a gaming fit: Some games are a better fit for offerwall than others. Hypercasual games, for example, usually aren’t the best fit because, by nature of the game, players tend to be less invested in their long-term success. These players want snackable content and aren’t willing to invest their time in another game to receive a reward. On the other hand, midcore or hardcore games attract more committed gamers, so offerwalls provide incentives to progress because they capture an engaged audience willing to invest time to progress through the game.Consider your engagement: Since an offerwall caters to highly engaged gamers, its engagement rate (the percentage of total users who engage with the ad units) tends to be lower compared to other ad units.Factor in OS: Additionally, offerwalls are limited by different operating systems’ capabilities. Due to iOS constraints that limit data from ad clicks, this ad format is significantly more effective on Android, where it’s possible to extend more offers to users.Build a strong hard currency: For offerwalls to be effective, the player needs to feel like the currency is valuable and rare enough to work for. This is called hard currency: currency that has the highest possible value for the player, usually represented by gems, diamonds, and so on. Players determine a currency’s value in different ways: maybe they aren’t able to get it for free, they can only get it in scarce amounts, or they can’t buy it with a different form of game currency. Basically, the more valuable players think the currency is, the more likely they are to complete an offer in the offerwall.Tap into long-term retention players: Generally, offerwalls are aimed at players who found value in the hard currency and want to progress further in the game, but can’t or don’t want to spend money on in-app purchases.The games that combine these two conditions above (long-term retention players and hard currency) will benefit the most from the offerwall. That’s why this ad unit is most profitable in midcore and hardcore genres like shooters, RPGs, and strategies. Check out the eCPMs for each ad unit.When it comes to offerwalls, location is everything – it affects the quantity and quality of gamers that will interact with it, and thus the amount of revenue ads can generate. Here are the top placements for maximizing revenue and engagement from the offerwall.Home page: If you’re looking for the most exposure possible, the home screen is your best bet. The home page is the first thing the player sees when opening the game, so placing the traffic driver there will expose the offerwall to the maximum number of players possible. Adding an offerwall to the home page can also help to increase overall player engagement, because the home screen has the maximum number of users passing through.The in-game store: The next hot spot is the game store – when the player is looking to get some hard currency, the store is the first and natural place to look. By placing the offerwall traffic driver in the store, players can immediately recognize the opportunity to get hard currency without spending anything.Out of currency: You can also show the offerwall traffic driver when players need hard currency the most. This prompt catches players at the right moment, where offerwall is a great and free alternative to get more in-game cash.Promotional pop-up: Additionally, we recommend that developers use pop- ups to promote sales opportunities that increase a reward’s value over a limited period of time, for example: double coins for two days over Christmas weekend. To increase visibility for these promotions, it’s even beneficial to show the player this offerwall pop-up immediately when they open the game. Get more tips for running offerwall promotion campaigns.All in all, offerwalls have a slew of perks that can be utilized to your benefit if you know its recipes for success. Piecing together the right currency and players and knowing where to place the ad unit can make all the difference in your game’s revenue and overall success.Learn more about getting started with offerwalls. Then, put these tips to good use and contact us about growing your app business.]]></description><link>https://unity.com/blog/games/the-fundamentals-of-monetizing-with-offerwalls</link><guid isPermaLink="true">https://unity.com/blog/games/the-fundamentals-of-monetizing-with-offerwalls</guid><pubDate>Thu, 08 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How digital twins are transforming large-scale airports]]></title><description><![CDATA[At a time when air travel is rapidly changing, airports are looking to digital transformation as a way to evolve their operations and services and meet environmental, social, and corporate governance (ESG) goals.Using digital twins – dynamic virtual copies of physical assets, processes, systems, or environments – airports can make more informed decisions and unlock significant operational efficiencies, enabling them to:Accurately predict passenger flow and allocate resources where they are needed the most.Avoid costly errors by testing different scenarios and making changes before implementing them in the real-world environment.Optimize operations by gathering and analyzing data from multiple sources such as flight and baggage information, security wait times, and more.Large-scale airports like Vancouver International Airport (YVR) are taking the lead in embracing digital twin technology to improve operations, meet sustainability and Reconciliation goals, and enable jobs of the future. Read on to learn more about YVR’s first-of-its-kind digital twin.With the vision to reimagine airport operations, the team at the Vancouver Airport Authority partnered with Unity’s professional services group to build and deploy the first-to-market real-time 3D digital twin of an airport in North America.Built as a people-first technology for the airport’s front-line workers, designers, and community, YVR’s digital twin leverages historical and real-time data and can present key information through 2D or 3D visualization, enabling better comprehension of complex operational systems, streamlined processes, and accelerated collaboration across the airport’s key stakeholders.Beyond enhancing operations throughout the airport, YVR’s digital twin of their airfield and terminal is also working to support the airport’s climate and Reconciliation goals.As the largest building in British Columbia and one of the busiest airports in North America, YVR faces a diverse range of process considerations to ensure smooth and efficient operations around the clock. To address these considerations, the airport and Unity worked to develop a situational awareness tool that integrates with its digital twin, enabling airport staff and partners to proactively and rapidly respond to operational issues while prioritizing the safety of passengers, planes, and cargo.“At YVR, we want our people to have the tools they need to succeed in a dynamic environment,” says Lynette DuJohn, CIO of the Vancouver Airport Authority. “The digital twin technology solves many airport-related challenges and provides an incredible layer of situational awareness for our employees.”The situational awareness tool provides a real-time, bird’s-eye view of YVR’s terminal, and consolidates information and alerts to notify users of potential safety issues and data anomalies. This tool also enables YVR staff to make informed decisions and explore hypothetical scenarios around security, weather, and other potential concerns.To advance the industry’s decarbonization goals and as a part of its commitment to becoming the world’s greenest airport, YVR is using its digital twin to build a first-to-market calculation model and baseline measurement to visually track and analyze aircraft carbon emissions from landing to takeoff. Currently, over 95% of emissions on Sea Island, where YVR is located, are from aircraft movements, vehicle traffic, and non-airport authority buildings. By measuring GHG emissions in real-time, YVR can now better support its own climate goals, as well as those of its carrier partners.“We’re going to be net zero by 2030 versus 2050, so we need to move our plan up by 20 years,” says DuJohn. “Being able to model all of those scenarios is going to be very powerful for us to really get our arms around efficiency and climate.”As a part of its path to Reconciliation, YVR is committed to advancing Indigenous participation and leadership in technology and innovation. The airport has partnered with Unity to deliver a Unity training program to Musqueam Indian Band learners, who will receive a foundational 3D skill certificate to support future career placements within the digital twin and gaming industries.YVR’s digital twin development doesn’t end with their airport. Together, Unity and YVR are working to commercialize the airport’s digital twin model for the global aviation industry, enabling other airports to advance their digital transformation.Want to learn more about how Unity and YVR built North America’s first-to-market real-time 3D digital twin of an airport? Read the full case study.Discover how our award-winning Custom Solutions team can create and deploy a custom digital twin to help you manage asset performance, reduce maintenance costs, maximize revenue, and hit your environmental, social, and governance (ESG) targets.Looking for creation tools and enterprise-level support to help you transform your CAD and 3D data into immersive apps and experiences? Check out Unity Industry, our suite of products and services designed specifically for industry creators.]]></description><link>https://unity.com/blog/industry/how-digital-twins-are-transforming-large-scale-airports</link><guid isPermaLink="true">https://unity.com/blog/industry/how-digital-twins-are-transforming-large-scale-airports</guid><pubDate>Thu, 08 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Context is everything: Cross-domain data mapping for augmented reality]]></title><description><![CDATA[AI is enjoying a heyday, although the path has yet to be paved in terms of how it can be leveraged for immersive experiences. AI is not the solution to every problem, but it does provide the missing link needed to create next-generation augmented experiences.Considering this AI boom, I’d like to talk about the concept of “context” as it relates to creating augmented reality (AR) experiences. A context is a collection of parameters describing a domain that can be encoded into machine-processable data. A domain can be literally anything, but in the AR space, three critical domains exist: physical, virtual, and human.The physical domain is the world we live in. The context for a specific location may include world coordinates (that is, a geographical position), environment scan data, object positions, weather, or images of the surroundings – whatever real-world parameters are relevant to support the generation of a solution to a specific need.The virtual domain contains any data that has a useful correlation with a location in the real world. This is a broad definition, but that’s the idea: AR experiences don’t need complex 3D assets or models to provide value. Any kind of location metadata can be the basis for an experience, for example, rainfall data or the location of stock in a store.Finally, the human domain is the body of human requirements, expressed in terms a machine can understand. This is the jumping-off point for AI, where natural language processing (NLP) and generative pre-trained transformer (GPT) models play a key role in converting the human context into machine language. The human domain also encompasses how machine-generated data is communicated.Generating a domain context is a relatively straightforward task. Where it gets tricky is ensuring the relationships between components are usable: physical and virtual coordinate systems must align, digital twins must be up to date with the physical world, human descriptions must be mappable to trainable behaviors, etc.Both software and hardware related to emerging technologies, including AI, robotics, and the Internet of Things, are evolving rapidly. Until standards (for interoperability, for example) and best practices are in place governing their implementation, effective usage and compatibility relies on the skilled design of networked components. But once this system is designed, you have the generalized foundation for creating augmented reality experiences for any application, be it industry, retail, or general productivity improvement.An example of how AI enables cross-domain mapping would be an individual pointing at an object in the distance. This is a physical context that many technologies can provide, but the gesture in itself doesn’t have intrinsic meaning and is not sufficient for defining the problem that needs solving. It could be in reference to a direction of travel, or an inquiry about an object. The context when correlated with language like, “How do I get there?” now forms a complete query. Thus, AI can process the physical data guided by human context data to “understand” the natural interactions we all perform daily without thinking about them and generate an appropriate response. That transparency of request/response is elevating all forms of AR experience, with the ultimate goal of making our lives easier.Let’s explore some examples of how context can be defined for different applications. AI’s primary role is in the human domain, processing user requests, anticipating user needs, drawing on relevant data, and facilitating communication between people and devices.Room painting: A user wants to paint a space and would like to know the quantity of materials needed. Specifics: They have a device that can measure the space and issue a voice command asking how much paint is needed.Physical: Lidar scan of physical spaceVirtual: Digital twin of the space created on the fly based on physical scan that includes windows, doors, and walls to accurately determine the wall surface areaHuman: The correlation between square footage and how much surface area a canful of paint can coverFitness routing: A user requests a run variation from the route usually taken. Specifics: The user has a headset that’s able to determine the user’s location, has a record of previous routes, and can project visual information.Physical: User location, and recordings of previous runsVirtual: Maps of the area that provide information on trails and sidewalksHuman: Understanding of what constitutes a route to allow calculation of a new oneAirport optimization: Situational awareness and automation to improve operations management. A user needs just-in-time prompts for conducting airfield activities safely. Specifics: The user has a wrist wearable that can determine the user’s location, and has a data connection to a central operational digital twin.Physical: Locations of users, aircraft, assets, and physical world objectsVirtual: Digital twin of airport enabling simulation prediction, navigation, locations of points of interest, and geospatial processingHuman: Understanding of the mission, challenges, and key safety objectivesAs one can see in these examples, the value of real-time 3D extends well beyond the generation of impressive visuals. It’s the core engine for processing cross-domain contexts to generate spatial solutions to problems. Given that we live in a 3D world, it’s not surprising that real-time 3D plays a central role.Unity as a core data engine has massive traction in the gaming market, and so its applicability to non-game use cases is often overlooked. As wearables, devices, and AI models advance technologically, capturing more and better data, ever richer contexts will be defined, generating more precise solutions. Unity will be the primary tool for collecting this data for creating the experiences that make our lives better at work and play.We’re excited by what our developers will create, and hopefully this blog post provided some ideas on how to structure your next-generation experiences.For more inspiration on how AI can drive immersive experiences, check out the potential of digital twins. And don’t forget to sign up for Unity AI Beta Program.]]></description><link>https://unity.com/blog/industry/cross-domain-data-mapping-for-augmented-reality</link><guid isPermaLink="true">https://unity.com/blog/industry/cross-domain-data-mapping-for-augmented-reality</guid><pubDate>Tue, 06 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity runtime on Arm-based Windows devices]]></title><description><![CDATA[With the launch of Unity 2023.1, developers using Unity can now target Arm based Windows devices for their titles, and achieve native performance on devices that use the ARM64 processors, such as the Surface Pro 9 and the Lenovo ThinkPad X13s. This opens up new possibilities for developers to create high-performance, immersive experiences on a wider range of devices.This blog will dive into what is required to build games for Windows on Arm, and offer a glimpse into the future of Unity Editor support for the platform.The requirements for building your project for Windows on Arm are the same as for any other architecture Unity supports on Windows. If you’re using the Mono scripting backend, there are no other system requirements, aside from downloading and installing the Unity Editor itself. If you’re using the IL2CPP scripting backend, you will need the Unity Editor, Visual Studio 2019 or newer with the C++ compiler for ARM64 component, and the Windows SDK installed.Setting the build target to be Windows on Arm can be done from the Build Settings window by setting the Architecture to “ARM 64-bit”.Alternatively, if you have set up your own build scripts, you can use the UnityEditor.WindowsStandalone.UserBuildSettings.architecture property to set the targeted architecture to ARM64 and produce an Arm build of your project.In addition to Windows on Arm platform support, Unity 2023.1 includes improved features and render quality for both the High Definition Render Pipeline (HDRP) and Universal Render Pipeline (URP). It also features platform graphic improvements, additional connectivity types for multiplayer solutions, and more. Get started with Unity 2023.1 by visiting our download page or through the Unity Hub.First showcased at GDC 2023, the URP 3D Sample Scene shows Unity’s scalability on a wide range of platforms. The Garden scene in particular shows how you can use Unity’s URP features to create beautiful, immersive environments on any device players choose to run it on.Unity running natively on Arm-based Windows devices can fully utilize the power of the Arm processors to render the Garden scene in gorgeous detail, at a steady frame rate.The garden scene was showcased during Microsoft Build on May 24 during the breakout session, “Learn how to build the best Arm apps for Windows.” In this segment, you can see how native runtime support for ARM64 substantially reduces CPU usage when compared to running via an Arm emulation layer.Announced with the launch of the Windows Dev Kit 2023 Project Volterra, Unity is currently working on making the Unity Editor itself run natively on Windows on Arm devices to take advantage of Arm-based hardware capabilities. We’ll share more information about the Unity Editor for Arm-based Windows devices soon.The Windows Dev Kit 2023 (previously known as Project Volterra) is now available for testing your games on Arm-based Windows devices. You can read about it here.To learn more about the announcements made at Microsoft Build, check out Panos Panay’s blog post that covers highlights from the show.To learn more about the URP 3D sample scene, watch this talk from GDC 2023. In this recorded session, Jonas Mortensen, a technical artist at Unity, walks through how to build beautiful cross-platform games in URP and scale game graphics. You can also see technical rundowns of select graphics features like custom post-processing, custom lighting, and shaders, and find tips on how to apply them in your own projects.Q: How did this partnership come about?
A: In August of 2022, Unity partnered with Microsoft Azure to bring our Create Solutions to the cloud and develop our cloud infrastructure to better meet your needs and to enhance your games and other experiences. Microsoft and Unity are also working together to make it easier to build and distribute your games on Windows and Xbox platforms.Q: How will this help my title?
A: Multiplatform development helps enhance the reach of your title, getting it into the hands of players wherever they are.Q: Where can I access the Windows on Arm platform support?
A: Unity 2023.1 Tech Stream and newer supports the Windows on Arm runtime.Q: Where can I publish my Windows on Arm games?
A: Developers creating games targeting the Windows Store will continue to require either UWP or the Microsoft GDK for publishing. Since GDK at this time does not support ARM64, publishing ARM64 games to the Windows Store is not possible. Check with other third party stores for specific support for ARM64.Q: What is the Microsoft Game Development Kit (GDK)?
A: The Microsoft Game Development Kit (GDK) contains the common tools, libraries, and documentation needed to build games for Xbox Game Pass for PC on Windows 10/11, Xbox consoles (Xbox Series X|S, Xbox One), and cloud gaming with Xbox Game Pass Ultimate.]]></description><link>https://unity.com/blog/engine-platform/unity-runtime-on-arm-based-windows-devices</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-runtime-on-arm-based-windows-devices</guid><pubDate>Mon, 05 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity Monthly: May 2023 roundup]]></title><description><![CDATA[Unite 2023 is coming to Amsterdam, the new LTS is launching, and generative AI continues its buzz. Read on to discover what Unity creators are doing to advance development in the interim, including the latest game releases made with Unity.May saw plenty of exciting games created with Unity share the spotlight.To start, Riot Forge and Double Stallion Games released CONV/RGENCE: A League of Legends Story™, taking us through the streets of Zaun, while tha ltd.’s Humanity put the fate of humankind in our paws. The month also saw Tuatara Games’s hilarious Bare Butt Boxing finally become available in early access, then Plot Twist Games sent us looking for clues in The Last Case of Benedict Fox (below).Rounding out creator milestones for the month were Wishfully’s highly anticipated release of Planet of Lana and Bossa Games’s early look at Lost Skies.We share new game releases and milestone spotlights every Monday on the @UnityGames Twitter and @unitytechnologies Instagram. Be sure to give us a follow and support your fellow creators.Like every month, we were lucky to have another developer take over our Twitter channel to share their best #UnityTips. For May, @samyam_youtube shared a variety of tricks – from pixel art in Unity to simple keyboard shortcuts. Some highlights include:A thread to import your pixel art with the best settingsWhy you should use TryGetComponent instead of GetComponentA guide for the new Unity Input SystemSome quick productivity tipsGreat learning resources and advice for learning UnityOther members of our community also added great tips to the conversation, including @MirzaBeig’s hack for calculating FPS and @kronnect’s useful trick for multiple object positioning.Keep tagging us and using the #UnityTips hashtag to share your expertise with the community.We continue to be stunned by what Unity creators make week to week, and you certainly kept the amazing projects coming in May. If we missed something that you meant to tag us in, be sure to use the #MadeWithUnity hashtag next time.On Twitter, @EvaBalikova was busy creating some beautiful embroidered art (see above), and @DevFatigued’s little caterpillar friend was on a jumping journey.Meanwhile on Instagram, @ShimpleShrimp was in full focus underwater, and Mr. Mustard Games’s (@MrMustardGames on Twitter) robot couldn’t resist smashing some boxes. Finally, @kng_ghidra traveled through different dimensions, and we ended the month with chill skateboarding vibes from @stokedslothinteractive.Finally, for a bit of bonus content, Project Ferocious dev Leo Saalfrank spoke with Shacknews on YouTube about using Unity to the fullest. (For a Ferocious throwback, head to our GDC 2021 showcase for a peek at the WIP.)We’re always here to continue the #MadeWithUnity love. Keep adding the hashtag to your posts to show us what you’ve been up to.On May 25, we hosted a Graphics Dev Blitz Day, covering topics like global illumination, shaders, SRP, URP, HDRP, GfxDevice, texturing, and more. The event was held in both the forums and on the Discord server. Throughout the day, we had more than 150 threads with 49 experts answering questions, and we’d like to thank everyone who participated.Keep an eye on Discord and our forums for future Dev Blitz Day announcements, and don’t forget to bookmark the archive of past Dev Blitz Days.May really took things up a notch on Twitch with the continuation of our Scope Check Let’s Dev series, releasing parts four, five, and six. We also took time to stream a Creator Spotlight showcasing Thomas Waterzooi’s Please, Touch The Artwork (watch above).To close out the month, we hosted Lana Lux on the channel to hear her Unity Tales and held a Nordic Game Jam Let’s Play session.If you don’t already, follow us on Twitch today and hit the notification bell so you never miss a stream.Are you interested in becoming an Asset Store publisher? Maybe you’re a publisher looking to enhance your marketing, community building, or customer support skills? Check out our freshly updated Publisher Resources page for tips on how to turbocharge your publishing journey.Taking things to social media, here’s a roundup of some of our favorite creator showcases from Twitter in May:TOON Farm Pack (coming soon!) | @steve_sicsFast Food Heaven Pack | @NekoboltTeamModern Studio Apartment 3 | NextLevel3DOn YouTube, we shared videos with Renaud Forestié about More Mountains‘s Feel and Freya Holmér about Shapes – two extremely popular assets.Looking to be noticed by the Asset Store team? Tag the @AssetStore Twitter account and use the #AssetStore hashtag when posting your latest creations.For our final update, here’s a non-exhaustive list of games made with Unity that released in May. Do you see any on the list that have already become favorites or think we missed a title? Share your thoughts in the forums.World Turtles, Re: cOg Mission (May 1 – early access)KILLBUG, Samurai Punk and Nicholas McDonnell (May 3)Tape to Tape, Excellent Rectangle (May 3 – early access)Toasterball, Les Crafteurs (May 3)Bare Butt Boxing, Tuatara Games (May 4)Darkest Dungeon® II, Red Hook Studios (May 8)Pan’orama, Chicken Launcher (May 9)Blobi Sprint, ChOuette (May 12)Humanity, tha ltd. (May 15)Tin Hearts, Rogue Sun (May 16)Greedventory, Black Tower Basement (May 17)Inkbound, Shiny Shoe (May 22)Planet of Lana, Wishfully (May 23)CONV/RGENCE: A League of Legends Story™, Double Stallion (May 23)Sunshine Shuffle, Strange Scaffold (May 24)Diluvian Winds, Alambik Studio (May 25 – early access)Evil Wizard, Rubber Duck Games (May 25)Friends vs Friends, Brainwash Gang (May 30)Everdream Valley, Mooneaters (May 30)Doomblade, Muro Studios (May 31)If you’re creating with Unity and haven’t seen your projects in any of our monthly roundups, submit here for the chance to be featured.That’s a wrap for May. For more community news as it happens, follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-may-2023-roundup</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-may-2023-roundup</guid><pubDate>Thu, 01 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Back-to-school shopping trends for your app or brand in 2023]]></title><description><![CDATA[The back-to-school shopping season is around the corner and consumers are writing up their shopping lists of pencils, textbooks, and first-day outfits. This season, 72% of consumers say they’re planning on going back-to-school shopping - making it a key opportunity for your business. To get a clearer picture of school shopping behaviors, spending habits, and consumer preferences, we surveyed 7,315 US shoppers. Here’s what we learned:
1. 54% of consumers use a mobile app for their back-to-school shoppingThe majority of US consumers are likely purchasing their back-to-school supplies from their devices - 54% of those surveyed say they’ll be doing their shopping from their mobile apps.Many consumers already rely on their phones for their shopping needs, from researching deals to finding a store’s location. It makes sense, then, that they’d rather download an app than drive to their nearest store.Takeaway: An easy way to win customers is to make sure they’re aware you have an app they can directly shop from, making their shopping more efficient during this busy period. Feature your app in your advertising campaigns to remind users that your brand has an app touchpoint they can use to browse or even make purchases.2. 60% of consumers plan to do their back-to-school shopping between July and August
The back-to-school shopping season is around the corner and consumers are writing up their shopping lists of pencils, textbooks, and first-day outfits. This season, 72% of consumers say they’re planning on going back-to-school shopping - making it a key opportunity for your business. To get a clearer picture of school shopping behaviors, spending habits, and consumer preferences, we surveyed 7,315 US shoppers. Here’s what we learned:1. 54% of consumers use a mobile app for their back-to-school shoppingThe majority of US consumers are likely purchasing their back-to-school supplies from their devices - 54% of those surveyed say they’ll be doing their shopping from their mobile apps.Many consumers already rely on their phones for their shopping needs, from researching deals to finding a store’s location. It makes sense, then, that they’d rather download an app than drive to their nearest store.Takeaway: An easy way to win customers is to make sure they’re aware you have an app they can directly shop from, making their shopping more efficient during this busy period. Feature your app in your advertising campaigns to remind users that your brand has an app touchpoint they can use to browse or even make purchases.2. 60% of consumers plan to do their back-to-school shopping between July and August29% of consumers surveyed expect to do their back-to-school shopping in July and 31% in August. Since over 60% of consumers plan to get their shopping done in these two critical months, you only have a narrow window to maximize the impact of your back-to-school campaigns.The numbers peak in August and then drop to their lowest in September (3.6%) - so don’t miss the deadline or you could land in the seasonal dip. Though it’s a limited timeframe, it’s a great opportunity to drive significant ROI and create impactful engagements.Takeaway: It’s critical to be intentional about when and how you start to run your campaigns. Start running your back-to-school test campaigns as soon as possible to ensure you have time to analyze and optimize before the July/August window closes.3. 76% of respondents shop at 2-5 retailers for their back-to-school suppliesA majority of consumers surveyed had one thing in common - they would be shopping at multiple retailers for their back-to-school supplies. 50% of those surveyed said they would shop at 2-3 retailers and a further 26% said they would be visiting 4-5 retailers. Only 13% of respondents said they would be shopping at a single retailer.Takeaway: Smaller retailers should feature high-demand products in their campaigns so users know they can find exactly what they need with your brand. For larger retailers, focus messaging and creatives on your wide product range so users know they can get more of their back-to-school shopping done with you - saving them time.4. 78% of consumers plan to spend more than or the same as last yearWhile other retail sectors have seen a drop in spending this year, most consumers plan on spending the same as they did last year on their back-to-school shopping. In fact, 29% of surveyed shoppers plan to spend more.While budgets are tightening in other places, back-to-school shopping is a necessity for most - making it one of the few areas where customers are willing to increase their spending and a prime opportunity for advertisers to drive more business.Takeaway: Turn your browsers into buyers by using the seasonal shopping boost to promote your inventory as a whole. With consumers increasing their spending on back-to-school supplies, it’s a great time to push related school and children products - like sporting goods and toys. 5. 52% of respondents said they are likely to be influenced by rewarded adsOver half of all respondents (52%) said they are likely to be influenced by rewarded ads (in-app ad units that offer users a reward in exchange for opting in to interact with an ad) during the back-to-school shopping season - making them a great way to incentivize users to engage with your brand and choose your products.While rewarded ads are typically associated with games, it’s not only stereotypical ‘gamers’ seeing them: the majority of hypercasual gamers are women - the same group most likely to go back-to-school shopping (59%). Also of note, shoppers report the best predictor of where they’ll be doing their back-to-school shopping is a coupon or deal on their goods - 57% of respondents say they’re more likely to use a brand or retailer if they’re offered a promotion to shop there.Takeaway: Don’t underestimate the value of rewarded ads in your advertising campaigns. Use them to offer users deals on their purchases, giving them a good reason to choose your brand or app for their back-to-school supplies. With students getting ready to return to school, now is the perfect time to tailor your ad experiences for audiences shopping for the classroom. Use these findings to help you optimize your back-to-school strategy and meet customers how and where they’ll be shopping.]]></description><link>https://unity.com/blog/back-to-school-shopping-trends-for-your-app-or-brand-2023</link><guid isPermaLink="true">https://unity.com/blog/back-to-school-shopping-trends-for-your-app-or-brand-2023</guid><pubDate>Thu, 01 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 reasons editors love Parsec for Teams]]></title><description><![CDATA[When 72 Films, a Fremantle company, was choosing a remote desktop solution for its hybrid post-production team, one need was paramount: Keep the editors happy.Editors can’t work with added lag. They need a smooth user experience that mimics on-premises workstations — not COVID-induced stopgap measures. They want the flexibility of working wherever they need to be on a given day while still staying on track with deadlines.To give editors what they want, 72 Films chose Parsec for Teams. Parsec won out over competitors by delivering superior speed and seamless integration, so editorial workflows aren’t interrupted, and IT isn’t fielding frustrated calls about a bad connection or a login that doesn’t work.We wanted to hear from the post-production team themselves what they liked about working with Parsec. Here’s what lead editor Dan Gulley, editor Matt White, senior tech operator Joe Meekel, and machine room manager Frank Webb had to say. Their answers covered a range of subjects, but these are the themes we heard again and again.The consensus is clear: Parsec just performs better.Matt White told us, “I’ve used a variety of systems before, and Parsec is the best system I have used. It’s fast, simple, and it works on your existing kit. With another solution, they had to send me a specific laptop, and I prefer working on my own equipment. Parsec works particularly well with different home monitor setups. The full-screen playback works really well, which is great when you are at home and playing back sequences. Parsec also works extremely smoothly. I didn’t have problems with lag or speed.”Other Parsec benefits the 72 Films team mentioned include working effortlessly across platforms (Mac/PC), Parsec’s intuitive multiple display settings, and how simple adjustments can fine-tune the user experience to compensate for a poor internet connection.Ease of use and responsiveness also separates Parsec from the pack, which makes a real difference in how quickly and efficiently work gets done. “Before Parsec, other remote desktops would do in a pinch, but I was limited as to how I could operate my machine,” said Joe Meekel. “Parsec has drastically improved my workload. I can trust Parsec for speed, accuracy, and a user-friendly experience.”Dan Gulley agreed, saying, “We used to use another solution with a VPN, which we found lengthy to set up and not as responsive. Parsec gave us secure and fast logins and a quick and easy setup with very little lag. The responsiveness is really good – much better than other platforms.”Editors told us that Parsec allows 72 Films teams to work smarter and more collaboratively regardless of location, meaning team members don’t need to be together in one place. Despite going hybrid while facing transport issues and travel restrictions, Parsec enabled them to continue working and meet tight deadlines.They especially like how easy it is to set up, log in, and get going. “Setup time, both for me as a support operator and for our editor clients, has been reduced significantly. Everybody is able to start work faster,” said Frank Webb.Parsec also stands out for enabling a smooth, steady workflow, which improves user experience and saves loads of time. Meekle said, “The first time I used Parsec, I was astonished by how snappy it was. It’s frame responsive, and the playback is incredible. Not even terrible home internet would ruin the experience for me. Also, starting up with only a two-way authenticator and a catalog of machines at the ready is much faster than launching into a VPN with a list of IPs and then having to move in and out of software.”The flexibility to work where you are and when you’re available makes work easier, faster, and more fun. Editors talked about how a better work-life balance allowed them to be more efficient and productive. Doctor appointments, trips to the gym, and kids’ school events become routine to daily life rather than problematic disruptions.Likewise, an unexpected development at work doesn't require dropping everything and heading onsite for evenings and weekends. Being able to jump on remotely from wherever you happen to be means editors can quickly answer a question or resolve a problem, so the production schedule isn’t held up.Webb said, “Hybrid working is all about having a genuine and viable option to work from home if necessary, no matter the nature of the work. Parsec enabled that for 72 Films. It means I have no qualms with logging in from home to do complex NLE work, which would have caused me endless stress previously!”Hybrid work also allows both creatives and organizations to be selective. Editors are free to go where their interests and relationships lead them, and companies like 72 Films can draw from a deeper talent pool to choose the right people for the job.According to Gulley, “Parsec has allowed us to work with the best talent no matter where they are in the world, and this has transformed our business.”We can’t say it any better than Meekel: “Parsec is a testament to how far the remote editing experience has changed. I can’t wait to see more of it!”Discover what you can do with Parsec for Teams.]]></description><link>https://unity.com/blog/industry/3-reasons-editors-love-parsec-for-teams</link><guid isPermaLink="true">https://unity.com/blog/industry/3-reasons-editors-love-parsec-for-teams</guid><pubDate>Tue, 30 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[P&O fundamentals: busting the myths surrounding player ownership]]></title><description><![CDATA[Play and Own (P&O) gives your users ownership over their digital assets, turning those assets into collectibles and enabling them to get even more value through secondary markets. For you, this could mean a new way to unlock revenue streams, acquire the right users, and build a community around your games.Recently, we conducted a survey to find out what gamers think about P&O. The answers we got back were clear - a majority of users we surveyed want player ownership and say they are even willing to pay more to have it in their games. Yet, there remain some sticky myths surrounding P&O that are holding many developers back from mass adoption.To bust these myths and create a more accurate picture of what player ownership is, below are the most common misconceptions we hear, and the truth for each.Myth: the tech requirements needed to enable P&O are too demanding for most developersBehind this myth is the idea that to integrate player ownership into your titles, you need to have a technical team that’s proficient and experienced in blockchain coding (the tech, in part, at the foundation of P&O). In other words, you need to know how to build a decentralized app from scratch.The truth: you can integrate player ownership into your games with no technical blockchain know-howIt may have been true in the past that you needed a highly-skilled technical team to integrate decentralized assets into your games, and support their management. But these days, there are solutions - like Astra - that do the heavy lifting for you. They can take care of the smart contracts - and handle wallet creation, minting your assets, publishing, and balancing the economy of your game. It’s a single, easy-access entry point into P&O without the need for a technical team.Myth: player ownership won’t work on mobileMost users who interact with decentralized apps and player ownership have historically done so through PC - not on mobile. So, the thinking goes, the infrastructure hasn’t been built to accommodate mobile users. On top of that, due to the decentralized nature of the ecosystem, it's harder to regulate - making it difficult to offer titles through mobile app stores.The truth: player ownership isn’t just mobile-friendly, it can be mobile-firstWhile it may be true that in the past decentralized apps were kept mostly to PCs, that’s no longer the case. Thanks to new innovations enabling studios to give users the benefits of decentralization and player ownership on their mobile devices, the P&O experience isn’t only confined to desktops. Going one step further, there are solutions that are able to leave cryptocurrencies out of the equation and pass all transactions through the IAP mechanisms of mobile app stores - meaning your game can easily start and scale with mobile audiences.Myth: P&O solutions and tech have bad UX that causes users to churnA major problem for the ubiquity of player ownership in the past was the complexity of its tech. Just to enter into the world of player ownership meant that users had to have a decent understanding of blockchain technology, access to communities through Discord, and be able to store assets in a third party wallet. And that’s before they even get started playing the games or collecting and selling assets. However, things have changed since then.The truth: player ownership can be user-friendly, familiar, and easy to navigatePlayer ownership has had its UX growing pains - but that’s changed. As the technology matures, many developers have found new and better ways to offer users entry into player ownership.New solutions have made it easy to integrate player ownership, mint assets, and enable trading directly in your games. And these advancements have created a better UX for users: marketplaces, apps, wallets, and platforms are now familiar (they look and feel like apps users already have experience with). Users can now get ownership over their assets, collect, and trade them as easily as browsing Instagram or shopping on Amazon.Myth: users don’t understand the benefits of player ownershipA concern we hear from some developers is that despite the clear value in player ownership, they fear that users are intimidated by and mistrustful of the technology. But, in reality, users (particularly gamers) have been finding ways to create player ownership for a long time.The truth: many users are already finding ways to trade and collect digital assetsWe know how a lot of players feel about player ownership. We asked them. But even without those insights, there’s a tremendous amount of proof that many users not only understand player ownership, but are already actively seeking it out and creating it for themselves. From Diablo, to Counterstrike, Fortnite, and much more, collectible gaming marketplaces persist and have huge followings. It makes sense - gamers are often collectors, and the same drive that compels them to catch every Pokémon translates directly into player ownership in games, too.In this context, player ownership isn’t a leap of faith - it’s the next step. P&O provides the same trading, collecting, and community-building that many users want, but makes it even easier to access and trust.]]></description><link>https://unity.com/blog/po-fundamentals-busting-the-myths-surrounding-player-ownership</link><guid isPermaLink="true">https://unity.com/blog/po-fundamentals-busting-the-myths-surrounding-player-ownership</guid><pubDate>Mon, 29 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Advanced tips for character art production in Unity]]></title><description><![CDATA[In this guest post, Sakura Rabbit (@Sakura_Rabbiter) shares how she approaches art production and provides tips for creating a realistic character in Unity.I finally got some free time as of late and it got me thinking… How about I write something about character creation? I’ve just finished creating several characters in a row, and I’m quite familiar with the entire creation process. I’m not referring to things like the art design of worldviews, character backgrounds, or character implementation techniques. There are already plenty of articles that elaborate on those topics, so I won’t touch on them here.What else, then? After giving it some thought, I’ve decided to prepare an article about producing realistic characters in the Unity Editor.You might be thinking, “What brings Sakura Rabbit to this topic?” Alas, it’s all because I’ve gone through an uphill journey learning the skill from scratch. I’m writing this so you can learn from my mistakes and reduce errors in your work.Now, let’s get started!Generally speaking, the implementation process of a character model involves the following steps:1. Three-view drawing → 2. Prototype model → 3. High-precision model → 4. Low-polygon topology → 5. UV splitting → 6. Baking normal map → 7. Mapping → 8. Skin rigging → 9. Skeletal and vertex animation → 10,. Shader in the engine → 11. Rendering in the engine → 12. Real-time physics in the engine → 13. Animation application and animator → 14. Character controller/AI implementation → 15. Special effects, voice, sound effects, etc.There are 15 steps in total. The process might seem complicated, but from a character design standpoint, all these factors and details will influence how your character will ultimately be displayed in your game engine. Therefore, these numerous steps are necessary for the final product to achieve the desired effect. The entire process takes a long time, and all the steps must be done in a specific sequence – every step is crucial. If one isn’t done properly or if you try to cut corners, the final product will be directly affected.Let’s start by looking at the preliminary preparation work of art production. The 15 steps previously mentioned can be summarized into four main phases:Original drawing → modeling → animation → renderingIsn’t this much simpler? Now, let’s get straight to the point. Through my hands-on experience, I’ve learned some things – hopefully you find them useful in your own project!First of all, you should set up some checkpoints before you start. I’m going to skip the usual ones, such as the vertex counts, the size of the map, the number of bones, etc. Instead, I’m going to focus on the following:I’d like this character to have a human skeleton, since this will affect the subsequent AI implementation. The human skeleton is advantageous because it enables you to use the motion capture device or interval animation library to quickly create a set of high-quality animations that can be used on the controller or AI.In addition, you also need to plan ahead on the material effects you want for your character. To produce the desired effects, preliminary steps such as the UV, edge distribution, and mapping are indispensable. If you only think about them after completing the model and animation, you will most likely end up reworking your design. It’s best to think about effects ahead of time to avoid doing more work later.For some physics effects of the character, physical processing is required for certain components and must be done independently. This is another criterion you need to consider beforehand.With these checkpoints in place, the next step is implementation. Here’s how to get started.To ensure your character creation process runs smoothly, it’s important that the first step, namely the original drawing, is done carefully. Failure to do this properly beforehand may affect the structure or effects in the subsequent steps. Keep the following in mind when drawing to facilitate what you need to do next.Model: You need to make the drawing suitable for modeling. For example, will the structure of what you draw be difficult to implement during modeling? Will it be challenging to distribute the edges for certain structures when making low-polygon topology?Animation: Likewise, you need to make the drawing suitable for animation. For example, will rigging be difficult for certain parts of the animation? Which structure does not conform to the human skeleton?Shader: Next, you need to take into account shader implementation. Ask yourself: Will the shader of the material effect I draw be difficult to implement? How about the performance? How about the classification of materials? Does it come with special effects? Can it be implemented using one pass or multiple passes?Physics: Which structure requires simulated computation? How is the motion executed?By keeping all these in mind when drawing, you can streamline your work in the subsequent steps.Tip: When drawing a human body, you can use a 3D modeling software to assist you with the process. Not only will this improve your efficiency, but also ensure structural and perspectival relationships are correct.For modeling, the same rules apply – that is, take into consideration the steps that follow. Modeling must be done properly, and factors such as UV mapping, edge distribution, and material classifications must also be planned in advance. Modeling is the most critical part of the process since it needs to go through the animation process before it gets to rendering. If there is an issue in rendering, then the modeling and animation processes must be reworked.Mapping: You need to make the model suitable for mapping as well. Which structures can share the UV? Can you maximize the use of pixels of the map? Which components require Alpha?Animation: You need to consider how facial expressions are created in blend shape and how the model should be divided for UV. Also, you need to identify the body structures that require animation and determine how the edges should be distributed to make the rigging of the model more natural.Shader: Now it’s time to think about how the UV should be arranged so that it can deliver special effects for the implementation of shaders, as well as identifying which materials need to be separated when classifying modeling materials.Physics: Similarly, you need to distribute the edges properly to make the simulated effects appear more natural.When creating a model, the best way to avoid reworking is to take into account the subsequent steps and make plans in advance.Tip: When drawing high-polygon models in ZBrush or other software, it isn’t necessary to include minor detailed textures. Due to the resolution limit, the effect of the details will be very poor after being made into a map through direct baking. These details should be separated using Mask ID in the shader and added through Detail Map. Remember not to include them in the main map!Adding details in the shader directly is the way to go.During model rigging, it’s good practice to export files one by one in .obj format and then import them into the animation software to preserve your model’s authenticity. Then, check the normal orientations of the model, the layers of the file, and the allocation of the shader to see if there are any issues. If everything is good, you can proceed with model rigging.Bone positions play a key role in model rigging since they will decide whether the movement at the joints is natural. Let me say this again: it is extremely important! You will find yourself in trouble if the skin weight was fine, but the bone positions were wrong.Tip: Let’s use the hip bone, which is located in the middle of the rear, as an example. If you want the movement to look natural, the positioning of the bone must be accurate. Otherwise, the animation will be deformed when using the motion capture device or when applying it to other animations.At this stage, you’re very close to the final step of your work. Still, you can’t afford to take things lightly. There are several issues you should consider during the creation process:Model: Check the model again to make sure the orientation of the normals are aligned properly, the soft and hard edges are fine, the classification of the model components and materials is done correctly, the components that require blend shape are combined, and the materials and naming are handled.Animation: Determine whether the current bone structure meets the humanoid requirement in the engine.Shader: Check again whether the structures that require the effect are split.Physics: Identify the parts of the simulation that use bones and the ones that use vertices.Now, you have completed all the preliminary work before using the engine. Next, we need to import the entire set of the model map into Unity and merge all our preliminary work.Tip: When working on the skin weight, you can switch between the skinning software and the engine to test the effect. When the character is animated, it’s easier to identify problems. See the image below as an example. When the character is moving, you can see there’s a glitch when her scapula reaches a certain angle. This is due to the vertex weight not being smooth enough.Thanks to the checkpoints you set previously, the implementation process should be a walk in the park.For the shader, all you need to do is set or create the material for the separated components independently, as you will have already classified the materials during the model-making process. For animation adaptation, you can use the humanoid of Unity directly since you will have set the human skeleton standard beforehand. This way, you can save a lot of time on the animation work.In addition, you can also apply motion capture to further reduce our workload. If the blend shape you have made fulfills ARKit naming conventions, you can directly perform a facial motion capture to produce the animation of the facial blend shape.Tip: If you use Advanced Skeleton to do your rigging, the alignment of the character's scapula and shoulder nodes will most likely be incorrect when imported into Unity. To solve this, adjust it manually on the humanoid interface.Well, that’s it! In summary, throughout the character creation process, from original drawing to modeling, animation to rendering, I recommend a results-oriented approach and determining the steps that you should take to achieve the result you want. Furthermore, you should also have a thorough understanding of the entire production process so that you always know what to do next and what to take note of in the current step.Please share my post if you found it helpful!/ / /
(^_^) Sakura Rabbit 樱花兔Sakura Rabbit’s character art was featured on the cover of our e-book, The definitive guide to creating advanced visual effects in Unity, which you can access for free here. See more from Sakura Rabbit on Twitter, Instagram, YouTube, and her FanBox page, where this article was originally published. Check out more blogs from Made with Unity developers here.]]></description><link>https://unity.com/blog/games/advanced-tips-for-character-art-production-in-unity</link><guid isPermaLink="true">https://unity.com/blog/games/advanced-tips-for-character-art-production-in-unity</guid><pubDate>Mon, 29 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Accessing texture data efficiently]]></title><description><![CDATA[Learn about the benefits and trade-offs of different ways to access the underlying texture pixel data in your Unity project.Pixel data describes the color of individual pixels in a texture. Unity provides methods that enable you to read from or write to pixel data with C# scripts.You might use these methods to duplicate or update a texture (for example, adding a detail to a player’s profile picture), or use the texture’s data in a particular way, like reading a texture that represents a world map to determine where to place an object.There are several ways of writing code that reads from or writes to pixel data. The one you choose depends on what you plan to do with the data and the performance needs of your project.This blog and the accompanying sample project are intended to help you navigate the available API and common performance pitfalls. An understanding of both will help you write a performant solution or address performance bottlenecks as they appear.For most types of textures, Unity stores two copies of the pixel data: one in GPU memory, which is required for rendering, and the other in CPU memory. This copy is optional and allows you to read from, write to, and manipulate pixel data on the CPU. A texture with a copy of its pixel data stored in CPU memory is called a readable texture. One detail to note is that RenderTexture exists only in GPU memory.The memory available to the CPU differs from that of the GPU on most hardware. Some devices have a form of partially shared memory, but for this blog we will assume the classic PC configuration where the CPU only has direct access to the RAM plugged into the motherboard and the GPU relies on its own video RAM (VRAM). Any data transferred between these different environments has to pass through the PCI bus, which is slower than transferring data within the same type of memory. Due to these costs, you should try to limit the amount of data transferred each frame.Sampling textures in shaders is the most common GPU pixel data operation. To alter this data, you can copy between textures or render into a texture using a shader. All these operations can be performed quickly by the GPU.In some cases, it may be preferable to manipulate your texture data on the CPU, which offers more flexibility in how data is accessed. CPU pixel data operations act only on the CPU copy of the data, so require readable textures. If you want to sample the updated pixel data in a shader, you must first copy it from the CPU to the GPU by calling Apply. Depending on the texture involved and the complexity of the operations, it may be faster and easier to stick to CPU operations (for example, when copying several 2D textures into a Texture2DArray asset).The Unity API provides several methods to access or process texture data. Some operations act on both the GPU and CPU copy if both are present. As a result, the performance of these methods varies depending on whether the textures are readable. Different methods can be used to achieve the same results, but each method has its own performance and ease-of-use characteristics.Answer the following questions to determine the optimal solution:Can the GPU perform your calculations faster than the CPU?What level of pressure is the process putting on the texture caches? (For example, sampling many high-resolution textures without using mipmaps is likely to slow down the GPU.)Does the process require a random write texture, or can it output to a color or depth attachment? (Writing to random pixels on a texture requires frequent cache flushes that slow down the process.)Is my project already GPU bottlenecked? Even if the GPU is able to execute a process faster than the CPU, can the GPU afford to take on more work without exceeding its frame time budget?If both the GPU and the CPU main thread are near their frame time limit, then perhaps the slow part of a process could be performed by CPU worker threads.How much data needs to be uploaded to or downloaded from the GPU to calculate or process the results?Could a shader or C# job pack the data into a smaller format to reduce the bandwidth required?Could a RenderTexture be downsampled into a smaller resolution version that is downloaded instead?Can the process be performed in chunks? (If a lot of data needs to be processed at once, there’s a risk of the GPU not having enough memory for it.)How quickly are the results required? Can calculations or data transfers be performed asynchronously and handled later? (If too much work is done in a single frame, there is a risk that the GPU won’t have enough time to render the actual graphics for each frame.)By default, texture assets that you import into your project are nonreadable, while textures created from a script are readable.Readable textures use twice as much memory as nonreadable textures because they need to have a copy of their pixel data in CPU RAM. You should only make a texture readable when you need to, and make them nonreadable when you are done working with the data on the CPU.To see if a texture asset in your project is readable and make edits, use the Read/Write Enabled option in Texture Import Settings, or the TextureImporter.isReadable API.To make a texture nonreadable, call its Apply method with the makeNoLongerReadable parameter set to “true” (for example, Texture2D.Apply or Cubemap.Apply). A nonreadable texture can’t be made readable again.All textures are readable to the Editor in Edit and Play modes. Calling Apply to make the texture nonreadable will update the value of isReadable, preventing you from accessing the CPU data. However, some Unity processes will function as if the texture is readable because they see that the internal CPU data is valid.Performance differs greatly across the various ways of accessing texture data, especially on the CPU (although less so at lower resolutions). The Unity Texture Access API examples repository on GitHub contains a number of examples showing performance differences between various APIs that allow access to, or manipulation of, texture data. The UI only shows the main thread CPU timings. In some cases, DOTS features like Burst and the job system are used to maximize performance.Here are the examples included in the GitHub repository:SimpleCopy: Copying all pixels from one texture to anotherPlasmaTexture: A plasma texture updated on the CPU per frameTransferGPUTexture: Transferring (copying to a different size or format) all pixels on the GPU from a texture to a RenderTextureListed below are performance measurements taken from the examples on GitHub. These numbers are used to support the recommendations that follow. The measurements are from a player build on a system with a 3.7 GHz 8-core Xeon® W-2145 CPU and an RTX 2080.These are the median CPU times for SimpleCopy.UpdateTestCase with a texture size of 2,048.Note that the Graphics methods complete nearly instantly on the main thread because they simply push work onto the RenderThread, which is later executed by the GPU. Their results will be ready when the next frame is being rendered.Results1,326 ms – foreach(mip) for(x in width) for(y in height) SetPixel(x, y, GetPixel(x, y, mip), mip)32.14 ms – foreach(mip) SetPixels(source.GetPixels(mip), mip)6.96 ms – foreach(mip) SetPixels32(source.GetPixels32(mip), mip)6.74 ms – LoadRawTextureData(source.GetRawTextureData())3.54 ms – Graphics.CopyTexture(readableSource, readableTarget)2.87 ms – foreach(mip) SetPixelData<byte>(mip, GetPixelData<byte>(mip))2.87 ms – LoadRawTextureData(source.GetRawTextureData<byte>())0.00 ms – Graphics.ConvertTexture(source, target)0.00 ms – Graphics.CopyTexture(nonReadableSource, target)These are the median CPU times for PlasmaTexture.UpdateTestCase with a texture size of 512.You’ll see that SetPixels32 is unexpectedly slower than SetPixels. This is due to having to take the float-based Color result from the plasma pixel calculation and convert it to the byte-based Color32 struct. SetPixels32NoConversion skips this conversion and just assigns a default value to the Color32 output array, resulting in better performance than SetPixels. In order to beat the performance of SetPixels and the underlying color conversion performed by Unity, it is necessary to rework the pixel calculation method itself to directly output a Color32 value. A simple implementation using SetPixelData is almost guaranteed to give better results than careful SetPixels and SetPixels32 approaches.Results126.95 ms – SetPixel113.16 ms – SetPixels3288.96 ms – SetPixels86.30 ms – SetPixels32NoConversion16.91 ms – SetPixelDataBurst4.27 ms – SetPixelDataBurstParallelThese are the Editor GPU times for TransferGPUTexture.UpdateTestCase with a texture size of 8,196:Blit – 1.584 msCopyTexture – 0.882 msYou can access pixel data in various ways. However, not all methods support every format, texture type, or use case, and some take longer to execute than others. This section goes over recommended methods, and the following section covers those to use with caution.CopyTexture is the fastest way to transfer GPU data from one texture into another. It does not perform any format conversion. You can partially copy data by specifying a source and target position, in addition to the width and height of the region. If both textures are readable, the copy operation will also be performed on the CPU data, bringing the total cost of this method closer to that of a CPU-only copy using SetPixelData with the result of GetPixelData from a source texture.Blit is a fast and powerful method of transferring GPU data into a RenderTexture using a shader. In practice, this has to set up the graphics pipeline API state to render to the target RenderTexture. It comes with a small resolution-independent setup cost compared to CopyTexture. The default Blit shader used by the method takes an input texture and renders it into the target RenderTexture. By providing a custom material or shader, you can define complex texture-to-texture rendering processes.GetPixelData and SetPixelData (along with GetRawTextureData) are the fastest methods to use when only touching CPU data. Both methods require you to provide a struct type as a template parameter used to reinterpret the data. The methods themselves only need this struct to derive the correct size, so you can just use byte if you don’t want to define a custom struct to represent the texture’s format.When accessing individual pixels, it’s a good idea to define a custom struct with some utility methods for ease of use. For example, an R5G5B5A1 format struct could be made up out of a ushort data member and a few get/set methods to access the individual channels as bytes.The above code is an example from an implementation of an object representing a pixel in the R5G5B5A5A1 format; the corresponding property setters are omitted for brevity.SetPixelData can be used to copy a full mip level of data into the target texture. GetPixelData will return a NativeArray that actually points to one mip level of Unity’s internal CPU texture data. This allows you to directly read/write that data without the need for any copy operations. The catch is that the NativeArray returned by GetPixelData is only guaranteed to be valid until the user code calling GetPixelData returns control to Unity, such as when MonoBehaviour.Update returns. Instead of storing the result of GetPixelData between frames, you have to get the correct NativeArray from GetPixelData for every frame you want to access this data from.The Apply method returns after the CPU data has been uploaded to the GPU. The makeNoLongerReadable parameter should be set to “true” where possible to free up the memory of the CPU data after the upload.The RequestIntoNativeArray and RequestIntoNativeSlice methods asynchronously download GPU data from the specified Texture into (a slice of) a NativeArray provided by the user.Calling the methods will return a request handle that can indicate if the requested data is done downloading. Support is limited to only a handful of formats, so use SystemInfo.IsFormatSupported with FormatUsage.ReadPixels to check format support. The AsyncGPUReadback class also has a Request method, which allocates a NativeArray for you. If you need to repeat this operation, you will get better performance if you allocate a NativeArray that you reuse instead.There are a number of methods that should be used with caution due to potentially significant performance impacts. Let’s take a look at them in more detail.These methods perform pixel format conversions of varying complexity. The Pixels32 variants are the most performant of the bunch, but even they can still perform format conversions if the underlying format of the texture doesn’t perfectly match the Color32 struct. When using the following methods, it’s best to keep in mind that their performance impact significantly increases by varying degrees as the number of pixels grows:GetPixelGetPixelBilinearSetPixelGetPixelsSetPixelsGetPixels32SetPixels32GetRawTextureData and LoadRawTextureData are Texture2D-only methods that work with arrays containing the raw pixel data of all mip levels, one after another. The layout goes from largest to smallest mip, with each mip being “height” amount of “width” pixel values. These functions are quick to give CPU data access. GetRawTextureData does have a “gotcha” where the non-templated variant returns a copy of the data. This is a bit slower, and does not allow direct manipulation of the underlying buffer managed by Unity. GetPixelData does not have this quirk and can only return a NativeArray pointing to the underlying buffer that remains valid until user code returns control to Unity.ConvertTexture is a way to transfer the GPU data from one texture to another, where the source and destination textures don’t have the same size or format. This conversion process is as efficient as it gets under the circumstances, but it’s not cheap. This is the internal process:Allocate a temporary RenderTexture matching the destination texture.Perform a Blit from the source texture to the temporary RenderTexture.Copy the Blit result from the temporary RenderTexture to the destination texture.Answer the following questions to help determine if this method is suited to your use case:Do I need to perform this conversion?Can I make sure the source texture is created in the desired size/format for the target platform at import time?Can I change my processes to use the same formats, allowing the result of one process to be directly used as an input for another process?Can I create and use a RenderTexture as the destination instead? Doing so would reduce the conversion process to a single Blit to the destination RenderTexture.The ReadPixels method synchronously downloads GPU data from the active RenderTexture (RenderTexture.active) into a Texture2D’s CPU data. This enables you to store or process the output from a rendering operation. Support is limited to only a handful of formats, so use SystemInfo.IsFormatSupported with FormatUsage.ReadPixels to check format support.Downloading data back from the GPU is a slow process. Before it can begin, ReadPixels has to wait for the GPU to complete all preceding work. It’s best to avoid this method as it will not return until the requested data is available, which will slow down performance. Usability is also a concern because you need GPU data to be in a RenderTexture, which has to be configured as the currently active one. Both usability and performance are better when using the AsyncGPUReadback methods discussed earlier.The ImageConversion class has methods to convert between Texture2D and several image file formats. LoadImage is able to load JPG, PNG, or EXR (since 2023.1) data into a Texture2D and upload this to the GPU for you. The loaded pixel data can be compressed on the fly depending on Texture2D’s original format. Other methods can convert a Texture2D or pixel data array to an array of JPG, PNG, TGA, or EXR data.These methods are not particularly fast, but can be useful if your project needs to pass pixel data around through common image file formats. Typical use cases include loading a user’s avatar from disk and sharing it with other players over a network.There are many resources available to learn more about graphics optimization, related topics, and best practices in Unity. The graphics performance and profiling section of the documentation is a good starting point.You can also check out several technical e-books for advanced users, including Ultimate guide to profiling Unity games, Optimize your mobile game performance, and Optimize your console and PC game performance.You’ll find many more advanced best practices on the Unity how-to hub.Here’s a summary of the key points to remember:When manipulating textures, the first step is to assess which operations can be performed on the GPU for optimal performance. The existing CPU/GPU workload and size of the input/output data are key factors to consider.Using low level functions like GetRawTextureData to implement a specific conversion path where necessary can offer improved performance over the more convenient methods that perform (often redundant) copies and conversions.More complex operations, such as large readbacks and pixel calculations, are only viable on the CPU when performed asynchronously or in parallel. The combination of Burst and the job system allows C# to perform certain operations that would otherwise only be performant on a GPU.Profile frequently: There are many pitfalls you can encounter during development, from unexpected and unnecessary conversions to stalls from waiting on another process. Some performance issues will only start surfacing as the game scales up and certain parts of your code see heavier usage. The example project demonstrates how seemingly small increases in texture resolution can cause certain APIs to become a performance issue.Share your feedback on texture data with us in the Scripting or General Graphics forums. Be sure to watch for new technical blogs from other Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/accessing-texture-data-efficiently</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/accessing-texture-data-efficiently</guid><pubDate>Thu, 25 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[AI is changing how we learn and create – here’s why you should lean in]]></title><description><![CDATA[I’m not the first to say it, but the generative AI boom is here – and it’s bringing massive opportunities for creative learning.In fact, we’re entering the age of the AI personal tutor. Of all the learning media available, personal, one-on-one tutoring has the strongest evidence for learning impact. According to educational psychologist Benjamin Bloom’s 2 sigma, this kind of tutoring is actually two standard deviations better than other learning models.Of course, generative AI isn’t a human tutor, and we have yet to see if an AI personal tutor will be able to replicate the learning motivation and efficacy that comes from human connection and empathy. But what is perhaps more promising is the potential for collaboration between AI and human tutors to increase both tutor productivity and learning impacts for students. In any case, it’s clear that we’re on the cusp of AI-boosted teaching and learning, and these advancements are coming much faster than human behavior can adapt.So, how do we change our mindset and behavior to maximize our potential with generative AI? And, what does that mean for creators?I had the opportunity to hear Sam Altman, founder and CEO of OpenAI, speak at the 2023 ASU + GSV Summit in April. Here’s how he said he would approach generative AI if he were just starting his career:“I would get as comfortable with the tech as I could. Really try to develop a native feel for it, prepare myself for a high rate of change in the world […] and a lot of resilience and ability to adapt to new things and try new things quickly.”I think Sam is right about the importance of resilience and adapting rapidly. As I discussed in my last blog post, games are one of the best learning media to teach us “the resilience to keep trying and learning from our failures, the creativity to face a new problem and solve it with no rulebook, and the resourcefulness needed to figure out solutions.” While it may seem like generative AI is poised to make resilience and resourcefulness unnecessary, I’d argue that learners will just need enhanced critical thinking skills to deftly evaluate solutions and make the right choices.I’m not only recommending we play more games that build our resilience and adaptability – I’m also recommending we start adapting our behavior with generative AI by gamifying how we learn to use it.As you do when beginning a new game, get curious and start tinkering with the hundreds of AI tools that have popped up over the last few months. Choose a few of your favorites, commit to embedding them in some key parts of your day to day, and take note of what you discover about your own learning. Learn something new that you never thought you could do – some of my favorite stories are of people who couldn’t build a video game in Unity at first, but are now doing it in a few hours. Play together with your team or community and talk about what’s helping you save time, create higher-quality experiences, and expand your creative possibilities. Measure and track your learning achievements with generative AI: Where are you more productive? How many new things have you learned? How are you changing how you learn?There’s incredible potential here to maximize human creativity. Chris Dede, professor in Learning Technologies at the Harvard Graduate School of Education, describes the ideal state:“As we understand the complementarity between human strengths and the strengths of AI, what is ideally going to happen in the workforce is a partnership between humans and AI called IA, Intelligence Augmentation. In this relationship, the person does what he or she does well, the AI does what it does well, and the whole is more than the sum of the parts. The partnership can accomplish more than either side can on its own.”At Unity, our hypothesis is that generative AI will empower creators to dream bigger than ever before. We believe we should be learning to create and leveraging generative AI at the same time.Hopefully, learning to create becomes more accessible to more people, and the possibilities for innovation continue to grow as we let AI handle the time-consuming tasks it’s best-suited for. Then, over time, we’ll be expanding our collective capacity to truly make the world a better place with more creators in it.]]></description><link>https://unity.com/archive/blog/news/ai-changing-how-we-learn-and-create</link><guid isPermaLink="true">https://unity.com/archive/blog/news/ai-changing-how-we-learn-and-create</guid><pubDate>Wed, 24 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2022 LTS is coming in June]]></title><description><![CDATA[Editor’s note: As of June 1, 2023, the Unity 2022 LTS is now available.When I talk to our partners, customers, and those of you who work day to day with Unity’s Editor and runtime, one thing that keeps popping up is the desire to be more ambitious with your game design. You want tools that enable you to create with fewer constraints, delivering player experiences that wow and cause wonder.Unity 2022 LTS is designed to give you that power. You’ll discover that you can rely on the new LTS release to create sophisticated DOTS-powered games, multiplayer experiences, immersive HD environments, and visuals that perform great on any platform you target. And we remain committed to ensuring you have wide platform support with amazing tools for any device in this release.So, I couldn’t wait any longer to tell you about the Unity 2022 LTS release, which is just around the corner.On June 22, 2023, we’ll host a multi-hour livestream diving into some of our favorite features, so be sure to join us then by signing up to get notified. But if you’re like me and are waiting with bated breath to hear about the new features, I’ve got some inside knowledge for you right here.Let’s dive into some of the highlights from this release that I’m particularly excited about.Yes, DOTS is here! The team, led by Laurent Gibert and Joe Valenzuela, has delivered the first fully supported-for-production version of our Entity Component System (ECS), so you can now build with the full Data-Oriented Technology Stack (DOTS) solution – Burst compiler, C# Jobs System, and now ECS for Unity.Your most challenging projects require a game engine that provides power and flexibility. ECS for Unity offers the ability to gain greater control and determinism over data in memory and better runtime process scheduling. ECS is integrated into the Editor, so you can leverage your existing GameObject-based experience and use the power of Entities-based code when it’s beneficial.We’ll have more information about how you can harness the power of DOTS when Unity 2022 LTS is released, but you can engage with the team who actively participate in our forums here.With Unity 2022 LTS, we’re excited to support multiplayer games with a rapidly growing end-to-end ecosystem of creation workflows and cloud services. This is possible by tight integration between the Unity game engine and multiplayer services provided through Unity Gaming Services (UGS).We’re shipping the Netcode for Entities package with Unity 2022 LTS, fully supported for production. Netcode for Entities is a powerful networking feature to boost a game’s performance and capabilities. You’ll be able to increase the number of players, interactable objects, and backend server-side entities in competitive action games like first-person shooters and massive multiplayer online games.More than any other genre, multiplayer games rely on successful ongoing operations for live titles. That’s why we have a suite of multiplayer-specific services as part of UGS. Matchmaker, Friends, Leaderboards, and User-Generated Content are designed to simplify the implementation of multiplayer capabilities, while services like Relay, Lobby, Game Server Hosting (Multiplay), and Voice and Text Chat (Vivox) round out capabilities for your live game.To see our multiplayer functionality in action, we will also be releasing our new Megacity multiplayer sample in June, which is built on ECS for Unity and features UGS tools for hosting, matchmaking, authentication, and voice chat between players. This demo demonstrates how you can bring our powerful tools together in a fast-paced, competitive, third-person shooter that supports 64+ players.Immerse your players in beautiful, physically based environments with High Definition Render Pipeline (HDRP). Unity LTS 2022 includes numerous features to enhance your game worlds for an even richer player experience.Introduce advanced procedural fog and volumetric effects using Volumetric Materials and Shader Graph to create atmospheric game environments such as haunted forests, desolate landscapes, or misty valleys.The new Water System enables you to add oceans, rivers, and underwater effects to your game environments. You can create realistic waves, ripples, foam, and more, as well as simulate underwater environments with advanced caustics, refraction, and reflection effects.Improvements to Cloud Layers with dynamic lighting and Volumetric clouds allow you to create even more realistic skies with clouds that change and move based on weather conditions, simply blending between different weather effects such as sunny and cloudy skies.A new update to the Spline package helps you procedurally generate paths, roads, or fences in your environments with greater precision for more organic and varied game environments with less manual work.The Universal Render Pipeline (URP) provides a scalable solution for high-quality graphics across platforms. Upgrades in this release allow you to create more realistic lighting in your scenes and achieve higher-quality visuals that scale across devices.Forward+ Rendering eliminates the light limit count so you can use more lights in a scene while maintaining performance. This feature is particularly useful if you want to achieve high-quality real-time lighting in your scenes.LOD crossfade which produces smoother graphic transitions as objects move closer or further away from the camera. Temporal Anti-aliasing (TAA) reduces aliasing problems such as pixelated and flickering edges to improve the overall visual quality of game scenes.Decal Layers allow you to add extra texture details in your scenes with control. You can use Decal Layers to filter and configure how different objects get affected by different Decal Projectors in a Scene.Customize your rendering experience with features like Shader Graph Full Screen Master Node and custom screen space effects. These allow you to create unique visual effects in games such as distortion or other types of post-processing, and they’re available in both URP and HDRP.Shader Variant Prefiltering significantly improves build time and memory optimization, reducing the build time and improving games’ overall performance.Finally, the Built-in Converter helps you to move existing projects from the Built-in Render Pipeline to URP, making it easier for you to take advantage of URP’s performance and scalability benefits.With Unity 2022 LTS, you can optimize your games for the latest platforms across mobile, console, desktop, and XR, with added performance and stability for key features.Maximize platform potential with increased performance and stability using the DirectX 12 graphics API on Windows and Xbox®. You can also experiment with the latest ray tracing support for Xbox® Series X|S and PlayStation®5, which allows for more realistic real-time lighting and reflections in game scenes.Iterate faster with the latest incremental player build process for Xbox®, iOS, PlayStation®5, and Nintendo Switch™*, which improves deployment efficiency, reducing time to market and improving overall game quality.Dig deeper into the performance of Android games with access to low-level data through the System Metrics Mali package from ARM. Games on Samsung devices can now take advantage of Adaptive Performance 4.0 with support for visual scripting. Better manage WebGL memory usage and gain native C++ multithreading along with support for touch controls and texture compression on web builds for mobile devices.Unity 2022 LTS expands your reach in XR with an updated XR Interaction toolkit (XRI) to enhance build times for PlayStation®VR2 and Meta Quest 2. Ensure your VR games run well across a variety of performant devices with late latching and motion vectors and improved graphics performance for games using Vulkan. These updated tools enable you to build immersive, high-fidelity XR experiences that can be deployed across multiple platforms.With a minimum of two years development and testing, Unity 2022 LTS has relied on user feedback and testing. Many of you have joined us on the journey through beta and Tech Stream releases, and I want to personally thank you for partnering with us to deliver the most stable Unity release in the 2022 cycle. And remember, LTS releases are supported for at least two years through biweekly updates, so we have you covered.Learn more about our 2022 LTS and the 2023.1 Tech Stream release in our GDC 2023 roadmap session.Wherever you are in your production process, Unity 2022 LTS offers resources to help you bring your project to the finish line and beyond. Get notified when LTS 2022 is available on release day by signing up for email updates.We hope this overview of the Unity 2022 LTS has given you a good idea of the powerful features and tools available in this release. We’re always eager to hear your feedback, questions, and ideas, so please keep the conversation going.Interact with other Unity creators and experts in our forums or directly through our platform roadmap. Catch our live streams on Twitch, and be sure to follow us on Twitter to stay up to date on the latest news and announcements. We look forward to hearing what you think.*Nintendo Switch is a registered trademark of Nintendo.]]></description><link>https://unity.com/blog/engine-platform/unity-2022-lts-is-coming-in-june</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-2022-lts-is-coming-in-june</guid><pubDate>Tue, 23 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why we’re excited about AI at Unity]]></title><description><![CDATA[We believe that the world is a better place with more creators in it. We make tools and services that help creators succeed, from individuals building their first games to professional studios working on the next great franchise.That’s why we continue to be excited by the promise of AI- and ML-driven techniques to reduce complexity, speed up creation, and, most importantly, unlock new ideas. Simply put, we think that this technology’s accessibility will help more people to become creators.We’ve worked for years, both internally and with partners, to explore how AI can be used in simulation, content creation, and game optimization. We see the present moment’s Cambrian explosion of generative AI as an opportunity to go even further.Unity is uniquely positioned to help you succeed while adopting generative AI because of the Unity Editor, runtime, data, and the Unity Network.More people use the Unity Editor to create games and other real-time 3D (RT3D) experiences than any other workflow in the world. Over the last 18 years, the Unity Editor has helped to democratize game development while contributing to a massive proliferation of new games across countless devices.Today, we strongly believe that the power of generative AI will enable Unity creators to be much more productive while ushering in scores of new creators who will face lower barriers to building RT3D games and experiences. We think that these AI tools will complement rather than replace existing tools and workflows. They offer the promise to help creators do more for and by themselves by filling the gaps in skill sets and resources so they can achieve what scarcely seems possible today.Just as a student might use a generative pre-trained transformer (GPT) tool to jumpstart research or even create a first draft before refining and finalizing a paper in Microsoft Word or Google Docs, Unity creators will be able to use natural-language generative tools together with deterministic, non-AI tools to create code, animations, physical effects, or other real-time content. Creators will move back and forth from rough approximations and text to fine-grained controls and code to iterate and refine the experience they envision.What’s better, we’re building the technology in the Unity Editor to better define what AI draws from. This not only means using appropriate and licensable datasets for generating content but also integrating AI techniques that are customized to their specific content (for example, by using Low-Rank Adaptation, or LoRA, language models during asset builds to deliver new content that’s trained on their existing work).The Unity runtime powers the most real-time applications in the world, with billions of downloads on billions of devices every month, in well over 100 countries. This means that Unity is the predominant way that content created with AI tools will come alive for consumers and users, since the output of any generative AI creation tools made available in the Unity Editor get delivered via the Unity runtime. The Unity runtime makes 3D content interactive and available on almost any device, ensuring that it responds to user input, as well as simulating effects like lighting or physics.But we see an even bigger opportunity. We believe that AI is not just the domain of creation tools, but that it offers the opportunity for new forms of interaction by moving inference – the process of feeding data through a machine learning model – to runtime.We’ve been working on this technology – code-named “Barracuda” – for more than five years. What will it mean when designers can build game loops that rely on inference on devices from mobile to console to web and PC? What happens when that AI capability is fast, efficient, scalable, and does not require expensive cloud compute?We have some ideas – NPCs that come to life, diffusion content as a gameplay mechanism, boundaryless user-generated content – but we know that our creators will do far more with this technology than we could ever even dream.Most of the digital content in the world today is 2D and linear – think sprites, photos, a set of film frames, a rendering of a building floor plan, or source code. AI data models train on this information to learn and, in the case of generative AI, to create content.Unity enables the real-time training of models based on unique datasets produced in the creation and operation of RT3D experiences. Through this training, we can build ever-richer services on top of Unity and provide extraordinary capabilities for our partners to leverage Unity as a data creation, simulation, and training engine for their own needs. Natural-language AI models incorporated into the Unity Editor and runtime train on real code and images. That real-usage training data is abstracted from its initial use (it’s not captured or recorded as-is), however this learning enables Unity’s customers to substantially increase their productivity.The Unity Network, whichconsists of our analytics tools, ad networks, publishing systems, and cloud services, reach a combined total of more than 4B users each month. Each of these service fields yields data that we can use to help our customers massively improve how they attract new users, increase engagement, or drive greater revenue from that base. Unity has been using the power of neural networks to help continuously optimize systems to support user acquisition, engagement and monetization for over three years.Generative AI has been used in some form or another for much of the history of video games, and it has tremendous potential as a tool to help developers achieve more with fewer resources. We’ll be sharing more over the coming months about our vision for AI at Unity, what we’re working on, and how this technology can help you achieve your vision.Stay tuned to the blog for more about Unity and AI, and, if you haven’t already, sign up for the AI Beta Program to be the first to hear about new tools and services.]]></description><link>https://unity.com/blog/news/why-we-are-excited-about-ai</link><guid isPermaLink="true">https://unity.com/blog/news/why-we-are-excited-about-ai</guid><pubDate>Wed, 17 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 ways mixed reality is driving change in car development]]></title><description><![CDATA[“Mixed reality has already changed the way cars are designed with gaming engines like Unity. So it’s already here.” – Jussi Mäkinen, Chief Brand Officer at VarjoVarjo, Volvo Cars, and Unity have a well-established collaborative partnership. This partnership brings together Varjo’s human-eye resolution headsets, Unity’s leading real-time 3D technology, and Volvo’s drive for innovation.Drawing on their joint experiences, Varjo chief brand officer Jussi Mäkinen, Volvo innovation leader Timmy Ghiurau, and Unity director Jeff Hanks participated in a panel discussion at SXSW 2023. Each firmly agrees that mixed reality (MR) is an important technology for the automotive industry.Here, we’ll explore the top three ways that mixed reality is already proving its worth. You can check out the full panel conversation on SXSW.com.The automotive industry has wholeheartedly embraced mixed reality, and it’s changing the way cars are sold, engineered, designed, and repaired. As Ghiurau explains, Volvo Cars was an early adopter of real-time 3D – largely driven by his understanding of the potential of gaming technology to be applied in industry.Their virtual twin of a Volvo car allows design and engineering teams to focus on how the machine interacts with the human, which he argues is essential to build trust between human and machine.By adopting real-time 3D technology, teams at Volvo Cars are able to incorporate the human factor early in the design process, which allows them to consider unique challenges such as driver frustration and address them early on.“With mixed reality, we are putting the human at the center to see how people might react to various scenarios or human factors like entertainment and stress.” – Timmy Ghiurau, Innovation Leader at Volvo CarsVarjo partners with innovative companies across industries to create virtual and mixed reality (VR/MR) products and services for advanced users. As Mäkinen says, their experience clearly shows that the automotive industry is already feeling the benefits of mixed reality tech. These range from a reduced dependence on physical mockups for creating new vehicles, to allowing faster design iteration, greater creativity, and running more efficient testing scenarios.As early adopters of real-time 3D and immersive technology, automotive companies are already reaping the benefits in key use cases like 3D product design and visualization, human machine interface (HMI), and immersive training.Connecting data silos is a fundamental challenge across the automotive industry. Real-time 3D is addressing that challenge by creating paths to interoperability, often through the medium of mixed reality. For example, by overlaying complex engineering data with design options in a mixed reality environment, stakeholders can envision design while retaining accurate engineering specifications. This single, visual source of truth enables design iteration to become a conversation between machine and aesthetics.Take the recently launched Volvo EX90 for example. As Ghiurau explains, Volvo Cars used Varjo mixed reality throughout the design process of this model, and improved efficiency, faster build, and the ability to conduct real-time testing from the back seat were just a few of the benefits.“The tools are already helping us to make design and engineering decisions more efficient and streamlined. With that saved time, we can explore other implications such as circular economy, sustainability, and other aspects.” – Timmy Ghiurau, Innovation Leader at Volvo CarsMäkinen explains how mixed reality delivers further benefits by enabling the interoperability of big data that allows more people from different backgrounds to access the information. Simply put, these solutions help developers, designers, and nontechnical end users to envision, interact with, and collaborate on complex processes more intuitively. The opportunity to better understand end-user challenges results in more inclusive solutions.What does democratization really mean, in the context of the automotive industry?With real-time 3D, Volvo Cars can make simulators and mixed reality functionality available across multiple departments. Crucially, by using Unity, teams are able to adopt the technology for themselves – they’re not dependent on developers to build mixed reality solutions. Because of this democratization, the teams have found that their uses of mixed reality go beyond what was originally anticipated. Ghiurau cites examples of teams using the tech for simulating fluid dynamics and predicting crash test data flows.Future success for automotive companies is dependent on the need to iterate and adapt faster. Many are using Unity’s real-time 3D tech to enable their visions of the future, including testing and simulating for long-term scenarios, or powering next-level infotainment systems. Mixed reality solutions enable teams to go beyond their immediate tasks to anticipate and influence the automotive future.With technology advances like Varjo Reality Cloud and hand-and-eye tracking for menu option selections, the barriers to adopting mixed reality are disappearing everyday. Cross-team collaboration is truly possible in mixed reality.To learn more about what role mixed reality could have for Volvo Cars’ future, check out Timmy Ghiurau’s Unity Creator Day session.Going beyond automotive design teams, there are numerous potential advantages to extending mixed reality to the creation of consumer experiences, such as:Enhancing the driver’s experience: Navigation and infotainment systems could be improved by providing real-time information on the surroundings and road conditions through interactive dashboards or head-up displays (HUDs).Improving driver safety: Automotive companies are working on the development of full-windshield HUDs, as well as sensors that can transmit real-time information about the vehicle conditions and environmental factors.Supporting consumer maintenance: Interactive manuals contain simple step-by-step instructions and video tutorials that allow users to maintain some car functions.Interactive sales experiences: Digital car showrooms give consumers a way to engage with and customize their potential purchases.Contact us to discuss how real-time 3D and mixed reality could work for you, or check out our software suite for Industry.]]></description><link>https://unity.com/blog/industry/3-ways-mixed-reality-is-driving-change-in-car-development</link><guid isPermaLink="true">https://unity.com/blog/industry/3-ways-mixed-reality-is-driving-change-in-car-development</guid><pubDate>Fri, 12 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Start creating for Magic Leap 2 with new Unity Learn course]]></title><description><![CDATA[Ready for a big leap forward in augmented reality (AR) development?We’re excited to announce that the Unity Learn team has partnered with Magic Leap to develop a new, self-guided learning experience to support the release of the Magic Leap 2 headset.Magic Leap develops immersive, enterprise AR technology that seamlessly integrates the digital into the physical world. The Magic Leap 2 is their latest innovation, designed to address barriers preventing the widespread adoption of AR technology. With emphasis on accessibility and ease of use, this new headset is poised to play a key role across sectors including education, health care, manufacturing, and beyond.Unity Development for Magic Leap 2 is a course designed by the Unity Learn team in collaboration with Magic Leap. The course is aimed at intermediate developers interested in learning how to create compelling AR experiences for this new device. Magic Leap has produced user guides and documentation, and Unity already supports the Magic Leap 2 through its plug-in system and XR Interaction Toolkit, so a Unity Learn course for the Magic Leap 2 was the natural next step.Because the course is targeted at intermediate developers, it has been structured differently than beginner-level Unity Learn courses. Instead of showing learners how to write code, the course provides ready-to-use code snippets and example scenes that developers can quickly implement in their projects. The example prototype scenes include a wall-mounted media player, a model viewer with hand tracking, and a sticky note app that takes advantage of the Magic Leap 2’s space localization capabilities.The course uses an in-Editor tutorial to guide developers through the process of configuring their projects and deploying apps to the Magic Leap 2. Then, there’s a series of additional tutorials to complete which cover the device’s various features. Each tutorial includes an overview of the feature, a set-up guide, examples of how it can be implemented, and tips for using it effectively. Through these tutorials, course participants will learn about plane detection, global and segmented dimming, marker tracking, hand and eye tracking, meshing, and more. You can see examples of these features below.This collaboration with Magic Leap will give Unity developers the skills to build AR experiences that make the most of the Magic Leap 2’s many capabilities. If that sounds exciting to you, dive into the Unity Learn course today and start creating.]]></description><link>https://unity.com/archive/blog/news/start-creating-for-magic-leap-2-with-new-unity-learn-course</link><guid isPermaLink="true">https://unity.com/archive/blog/news/start-creating-for-magic-leap-2-with-new-unity-learn-course</guid><pubDate>Mon, 08 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[6 community videos to get you started with multiplayer in Unity]]></title><description><![CDATA[Are you looking to try your hand at multiplayer game development in Unity? For the past year, we’ve been launching new products and features to flesh out our Multiplayer suite of tools to support the creation of multiplayer games spanning all genres and platforms – from dedicated hosting to friends list management to in-game voice chat.However, connecting all the dots into a tech stack that you can use to build the multiplayer game of your dreams can be confusing. That’s why we’re showcasing six recent YouTube video tutorials from community content creators that cover Unity's multiplayer tools. From Code Monkey’s in-depth tutorials to Dapper Dino’s expert insights, each video provides a wealth of knowledge and inspiration for game developers.Let’s dive in.Samyam is a YouTube creator who focuses on game development tutorials for indies. In this video from March 18, Samyam introduces you to Netcode for GameObjects (NGO), one of Unity’s proprietary networking libraries, and shows how to leverage the package alongside Unity Transport to build a simple multiplayer game.Samyam’s video includes a helpful overview of high-level multiplayer terminology before diving into the tech, so this is a great place to get started.Check out the video to see:An introduction to high-level multiplayer terminologyHands-on work with NGO 1.2.0 and Unity TransportA simple game setup to integrate with hosting and matchmaking servicesCode Monkey is a professional indie game developer who creates YouTube content about Unity and C# gamedev.In this recent video, Code Monkey covers how to run dedicated game servers with Game Server Hosting (Multiplay) from Unity Gaming Services (UGS). He walks through:An introduction to Game Server HostingMaking a dedicated server build of your gameUploading your server to the cloud on the Unity DashboardGetting your game servers online for playersUnity’s Matchmaker is a smart, rule-based matchmaking system that plugs easily into the Unity game engine. Dapper Dino walks you through how to integrate Game Server Hosting (Multiplay) and Matchmaker into any game powered by Netcode for GameObjects, using one of his existing projects (which you can access here) to show how to host your game and provide matchmaking for players.Check out Dapper Dino’s full video to learn how to:Access the Unity dashboardSet up your serversSet up MatchmakerTest the servicesIn this follow up to his first video in our roundup, Code Monkey covers how to add matchmaking to multiplayer games and define rules with as much or as little complexity as you want. He addresses how Matchmaker is integrated with Game Server Hosting to get your game online, as well as how to sort players into matches.A major benefit of this tutorial is Code Monkey’s explanation of the different rule sets you can explore within Matchmaker to set up skill-based, geography-based, or platform-based matchmaking (or other combinations) to optimize your player experience.Code Monkey has even made the project files available for viewers. Explore how it all works together to build a live multiplayer game by pressing play below.Tarodev, another popular YouTuber who makes game dev tutorials, walks viewers through getting started with NGO in this video. In the video you’ll learn:How to get started with NetcodeThe difference between server and client authority (and when to use each)How to write performant network codeHow to use NetworkVariable and INetworkSerializableAbout cheap multiplayer interpolationWhat ServerRPC and ClientRPC areTricks to make your multiplayer game feel greatIf you’re looking for an end-to-end video guide to multiplayer development in Unity, this is the tutorial for you. In this six-hour YouTube course, Code Monkey walks through the full experience of building a small multiplayer game in Unity – from networked gameplay to integrating live services.The video builds on Code Monkey’s previous course on making a singleplayer game in Unity and converting that tutorial project into an online-ready multiplayer experience. The video covers:Setting up Netcode for GameObjectsNetworking your gameplayHandling player joins and disconnectsIntegrating LobbyHosting with RelayExploring Game Server Hosting (Multiplay), Matchmaker, and Voice and Text Chat (Vivox)Multiplayer debuggingWhat else do you want to see tutorials on in the future? Let us know in the Unity multiplayer forums or on our multiplayer Discord. Happy creating!]]></description><link>https://unity.com/blog/games/6-community-videos-to-get-you-started-with-multiplayer</link><guid isPermaLink="true">https://unity.com/blog/games/6-community-videos-to-get-you-started-with-multiplayer</guid><pubDate>Fri, 05 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity Monthly: April 2023 roundup]]></title><description><![CDATA[The world is a better place with more creators in it, and this roundup is proof. Keep reading to discover the latest news about games made with Unity and find out how the community is using Unity.April saw no short of activity from games created with Unity.To start, Free Lives brought some fresh air with Terra Nil’s release, and Endnight Games’s terrifying Sons of the Forestearly access launch has us hungry for the full release. Next, Riot Forge launched the highly anticipated The Mageseeker: A League of Legends Story, and Sankari Studios released KATOA, a game leading to real-world ocean conservation efforts, for Earth Day.Rounding out creator milestones for the month were RavazSydney, who put out the official announcement for The Explorator, and Black Salt Games’s fishing horror DREDGE, which was released to rave reviews. Finally, a whole new batch of mystery cases came to players’ doors with ColePowered Games’s early access launch of Shadows of Doubt.On our end, we were thrilled to announce the 2023 Unity for Humanity Grant winners this month. We were also honored to have been chosen as “best” in three categories at this year’s PocketGamer awards.We share new game releases and milestone spotlights every Monday on the @UnityGames Twitter account. Be sure to give us a follow and support your fellow creators.Keeping the fun going, April showers bring… #UnityTips! Tuesdays are always dedicated to tips on Twitter, and last month was no exception. One great resource that was shared was @alexandermeye’s huge water shader tutorial (see below).Some additional highlights included @SunnyVStudio’s super useful tip to convert Screen space to World space, and @NickyBoccuzzi’s takeover of the @UnityGames Twitter to share some animation tips.Keep tagging us and using the #UnityTips hashtag to share your expertise with the community.We continue to be stunned by what Unity creators make week to week, and you certainly kept the amazing projects coming in April. If we missed something that you shared, be sure to use the #MadeWithUnity hashtag next time.On Twitter, @TinyDodoGames had a nice technique to keep the monsters at bay (see above), and @pointnsheep got us in the mood for a sword fight. We also took a peaceful vacation on @OneiraGames’s colorful coral island.On Instagram, @MajorMcDoom displayed some adorable penguin VR, and @Cyanilux showed us how to add milk to our tea. We also got to practice our mid-air combos with @DivineStudi0s and @DevFatigued had us jumping around.We’re so excited to continue the #MadeWithUnity love, so keep adding the hashtag to your posts to show us what you’ve been up to.Coming out of GDC, April was all about playing and making games on Twitch. To start, we kicked off a Scope Check Let’s Dev series – catch parts one, two, and three in the archives now. Next came a Let’s Play session with ColePowered Games’s just-released Shadows of Doubt (see above).Don’t forget to follow us on Twitch and hit the notification bell so you never miss a stream.Did you know that the Unity Asset Store has an Affiliate program? If you’re a content creator and love talking about assets, you might be a great fit. Check out this video from YouTube’s @samyam and learn how you can make income from the Asset Store without creating assets.Taking things to social media, here’s a roundup of some of our favorite creator showcases from Twitter in April:Sim-Cade Vehicle Physics | Ash DevSuper Chick | SURIYUNDon’t forget to tag the @AssetStore Twitter account and use the #AssetStore hashtag when posting your latest creations. And keep your eyes peeled for upcoming sales (hint: this month).Last but not least, here’s a non-exhaustive list of Made with Unity titles released in April. If you see any on the list that have already become favorites or think we’ve missed a title, share your thoughts in the forums.Wall World, Alawar Premium (April 5)MINDHACK, VODKAdemo? (April 5 – early access)Curse of the Sea Rats, Petoons Studio (April 6)The Voidness – Lidar Horror Survival Game, Steelkrill Studio (April 6 – early access)Blocky Dungeon, SquareAnon (April 6)Cynthia: Hidden in the Moonshadow, Catthia Games (April 10)Soundodger 2, Studio Bean (April 10)TRON: Identity, Bithell Games (April 11)Fabledom, Grenaa Games (April 13 – early access)Hunt the Night, Moonlight Games (April 13)MEATGRINDER, Vampire Squid (April 13)Trinity Fusion, Angry Mob Games (April 13 – early access)Beyond the Long Night, Noisy Head Games (April 17)Disney Speedstorm, Gameloft (April 18 – early access)The Mageseeker: A League of Legends Story™, Digital Sun (April 18)KATOA, Sankari Studios (April 22)Shadows of Doubt, ColePowered Games (April 24 – early access)Re:Fresh, Merge Conflict (April 24)The Last Case of Benedict Fox, Plot Twist (April 27)Unboxing the Cryptic Killer, Eleven Puzzles (April 27)If you’re creating with Unity and don’t see your project on the list, submit it here for the chance to be featured.That’s a wrap for April! Want more community news as it happens? Don’t forget to follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-april-2023-roundup</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-april-2023-roundup</guid><pubDate>Wed, 03 May 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[The top 5 rewarded video placements to boost your puzzle game’s revenue]]></title><description><![CDATA[According to data.ai, puzzle games have now racked up over 3 billion mobile game downloads and are the 5th largest genre in the mobile gaming space. Not to mention, they grow at a rate of 15% every year.This is for good reason - puzzle games appeal to a wide range of gamers because they’re relatively simple. Puzzle gamers get to test their problem-solving skills with short challenges they can easily play over and over again (think: solitaire, sudoku, hex puzzles, and more).Puzzle games are so straightforward that they tend to have a single currency. If a player wants to purchase anything in the game, they can’t rely on harder currency like rubies or gems - they just need soft currency like coins, and a lot of it. And that’s why ad placements offering extra currency are so valuable. In fact, according to Google, 73% of mobile puzzle players believe that ads have no effect, or even a positive effect, on their gameplay experience.To make sure you’re setting up your puzzle game’s placement strategy for success, Anna Popereko, Game Design Consultant at ironSource, walks through the most useful rewarded video placements and what makes them so effective. Let’s get started.1. Reward multipliersThe most popular rewarded video placement in puzzle games is a reward multiplier. It works like this: once players receive a reward (e.g. after completing a level), the next screen offers the chance to multiply the reward they just got - simply by watching a rewarded video. The amount may depend on the game, but you can offer anything from 2x to 20x the reward.This placement works for a few reasons. First, it allows players to easily capitalize on and exponentially increase the currency they just won. Second, these placements also create a sense of urgency - they have only one chance to engage, so if the user chooses to skip this page, they miss out on a major opportunity to boost their currency.Playsimple, for example, used this approach in their game Word Trip. Once users receive a reward, they simultaneously get the option to multiply it - all they need to do is watch a rewarded video.2. Extra currencyExtra currency is another strategic placement, and it has a similar purpose to reward multipliers: increasing currency. But instead of popping up, these placements sit on the home page or the shop, waiting to be engaged with. Unlike reward multipliers, you don’t need to be actively playing the game to access extra currency placement - in fact, many players just stumble upon them.These placements don’t offer unlimited currency - they’re paced and capped so players can usually only engage with them once or twice a day. Extra currency placements also use timing to their advantage - they’re usually accompanied by a countdown clock, letting the player know how much time is left until they can watch a new video and access another reward.For example, Lihuhu worked this placement into their hit Match Triple 3D: while players explore currency bundles in the shop, they can watch a rewarded video to get 10 coins free of charge. Players in the shop are already motivated to get more currency, so this kind of placement works well.3. RevivalPuzzle games tend to have pretty long levels, often several minutes - so revival is another critical placement. Usually, if a player fails in the middle of the level, they’d have to give up all the time they’ve invested in the level and start over. But with revival placements, they just watch a rewarded video and continue from the moment they left off.Players are naturally motivated to engage with revival placements - especially when the other option is losing their hard work and time spent progressing in the level. Generally, the longer the level, the more players are open to engaging with this placement.Lihuhu successfully uses this placement in Match Triple 3D - when players run out of lives, there are only two ways to continue playing: spend their currency, or watching a rewarded video. This placement is very effective because it catches players in a critical spot, where the rewarded video is literally life-saving.4. BoosterPuzzle games attract players who are motivated by mental challenges, and being able to solve any problem that comes their way. That’s why booster placements are popular. When a player gets stuck at any point in the level, they can just watch a rewarded video, get some assistance in solving the current challenge, then confidently move on to their next challenge.The booster shouldn’t solve the entire puzzle for players - doing that would take away from the sense of achievement players get from solving challenges themselves. Rather, the booster should offer just the right push to keep the player engaged in the game, and hopefully able to solve the puzzle themselves.In Pixel by Number, Wido Games’ color by numbers game, when players get tired of tapping on a group of numbers, they can just click on the paint can icon, watch a rewarded video, and get that area colored in for them. It’s a win-win - with the booster, the player gets the extra help and motivation they need to complete the puzzle.5. Extra life and mystery rewardsTwo other common and worthwhile placements to use are extra life and chests. In games with a life-based system, once gamers run out of lives, they have to wait to get a refill - so this can be an ideal spot for a rewarded video placement. By engaging with the extra life placement, players gain another lifeline and the boost of energy they need, simply by watching a rewarded video. These placements are an ideal way to motivate players to keep going, especially if they're burning through multiple lives in one sitting - not to mention, they increase session length.Mystery rewards, on the other hand, offer a nice and exciting alternative to extra currency placements. Once the player opens the mystery placement (e.g. a chest), they’ll get to spin a wheel with a mystery prize. Like extra currency placements, these are time-limited with a countdown clock, and pacing depends on the game.In Word Trip by Playsimple, for example, onceplayers engage with the mystery reward, they can watch a rewarded video to spin for their prize - but they only get a certain amount per day.Puzzle games continue to be a dominant genre in the mobile gaming sphere - and using placements like these only improves the puzzle game experience and keeps the genre booming. By understanding your players’ goals and motivations, and using ad placements to enrich and extend their playtime, you can boost their experience and, as a result, your revenue.]]></description><link>https://unity.com/blog/top-5-rewarded-video-placements-to-boost-puzzle-game-revenue</link><guid isPermaLink="true">https://unity.com/blog/top-5-rewarded-video-placements-to-boost-puzzle-game-revenue</guid><pubDate>Sun, 30 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Extended Q&A: Optimizing memory and build size with Addressables]]></title><description><![CDATA[In February, as part of my role as a senior software development consultant for Unity Accelerate Solutions, I led a technical webinar about the Addressables Asset System. During the live session, I demonstrated various profiling tools that you can use to optimize a project’s runtime memory and build size. The webinar ended with a Q&A, and our team received more questions than we had time to answer.The following is an extension of that closing Q&A, so we can answer more of your questions.Q: Is the Addressables system needed for light games – like casual, arcade, or puzzle games – if I don’t have memory issues?
A: Maybe not, but it’s good to keep in mind that the Addressables system doesn’t only improve memory performance. Having the ability to choose when you load content can improve loading times. Building content in Addressables enables you to have iterative builds that don’t take as long. For example, if you make a small script change, you may not have to rebuild all of your bundles.Q: Are loaded assets released when the scene switches?
A: Potentially. Loaded assets from Addressables that are ready to be released because they have a ref count of zero might be unloaded from memory during a scene transition. When transitioning from scenes non-additively, call Resources.UnloadUnusedAssets(). This is expensive on the CPU, but allows you to partially unload AssetBundles.Q: Do object pooling and Addressables work well together?
A: Yes. You can load your object once from Addressables and then instantiate multiple copies of it to create your pool. When you are done with the pool, destroy all the objects and release the AsyncOperationHandle that was used to load the asset.Q: Are groups and bundles loaded into memory all at once?
A: Addressables groups are an Editor-only concept. At runtime, you only deal with bundles. Bundles are loaded into memory only when they are needed and only the desired content is loaded.Example: You have one bundle with 10 characters in it. You ask Addressables to load three characters. The bundle’s metadata and the three characters will be loaded.Q: If I want to release an asset, do I need to keep the AsyncOperationHandle or the AssetReference?
A: We recommend keeping the handle and using it, since you’re responsible for releasing content when you are done using it.As an example, members of our team will often go the handle route in order to avoid calling Instantiate/Release directly on the AssetReference.Q: What are the disadvantages of many small bundles?
A: This documentation lists several disadvantages of too many bundles.Q: When an asset in a bundle is needed, what overhead do the other assets in the same bundle have? If it’s a remote bundle it must be downloaded, but is there really no memory overhead from unused assets in the bundle?
A: Correct, a remote bundle will be fully downloaded before you can use it.Unloaded assets in a loaded asset bundle have minimal overhead at runtime. Whenever you load assets from a bundle, you need to load the bundle’s metadata. Part of this metadata includes a table of contents that lists all the assets in the bundle. More assets in a bundle equates to larger metadata.You can view this memory overhead by taking a capture with the Unity Memory Profiler. In the “All Of Memory” tab, there’s a list of all the “SerializedFile” objects in memory, one for each bundle. These objects are your bundles’ metadata.Learn more about this metadata in our documentation.Q: When working in an open-world setting, what bundling strategies can I use to unload individual assets without half unloading a bundle and relying on Resources.UnloadUnusedAssets() to clean it up, without the overhead of having every asset in its own bundle?
A: The key thing to remember is that content should be bundled together if you expect to unload it at the same time. If your game world has “static” content, like trees and rocks for a certain biome that will not be moved by the player, that content should be bundled together. Any “dynamic” content, like items the player can pick up, should be bundled separately.This blog post and linked GitHub repo covers splitting bundles for an open-world game. It also features a way to deduplicate bundles to reduce the memory overhead of each bundle. Stages 4 and 5 are particularly relevant to open worlds.Q: When should I leave “AssetBundle CRC” enabled?
A: The recommended practice is to have this enabled, excluding cached AssetBundles for Remote groups, and disabled for Local groups. The check is only meant to make sure the data wasn’t corrupted on download. There’s almost no reason to do the check for local AssetBundles.Q: When is it not worth it to use Addressables due to CPU performance concerns when loading and unloading assets?
A: The Addressables system has a positive impact on CPU loading performance due to not needing to load all content up front.If you don’t use Addressables when loading a scene, you’d have to load all content and references. If you move the content to Addressables, you can choose when to load which content.For example, say you have an Inventory Manager in a scene that has a reference to 1,000 inventory items. If you don’t use Addressables, you’ll have to load every mesh, texture, audio clip, etc., for all these inventory items. If you wait to load this content, loading the scene will be faster.Q: Do all dependencies of an addressable asset also need to be Addressables, or is that only necessary if they are shared?
A: Dependencies do not need to be marked addressable. Dependencies will be pulled into Addressables during the build process if necessary.As an example, if you make a player prefab an addressable, you don’t have to manually mark the player’s mesh, textures, or audio as addressable, too. When the bundle is built, all the dependencies that don’t yet exist in Addressables will be automatically included in the player prefab bundle.Q: If I forgot to release an asset and change scenes, what happens to this asset?
A: Changing scenes does not inherently interact poorly with handles. But if you load an asset and forget to release its handle, the asset will persist in memory.Addressables has an internal reference-counting system. Handles are how we interact with this system. Loading an asset increments the reference count, and releasing decrements the reference count.Creators are responsible for keeping this reference count up to date. The asset will be in memory as long as the reference count is greater than one.Q: Related to the webinar example, suppose I’m making an open-world game. The boss is present somewhere in the open world. When the player heads to the boss, how do I use Addressables here? Do I send the command to load the sword async, via a trigger, at a certain distance from the enemy, or something else?
A: It can be a fine line to choose when to load and unload content. You want to be sure the boss is ready when the player needs to see it, but might not want to load it too early when the player is still able to turn around and avoid the boss.The good thing is that you can iterate on when to load and unload content – you don’t have to get it perfectly optimized on the first try.To get started, we suggest loading all content for a particular “zone” when the player gets near (e.g., the player approaches a dungeon entrance which causes everything inside the dungeon to load). If this causes unnecessary memory pressure, you can add more fine-grained loading and unloading.If the sword is not loading soon enough, consider moving the loading trigger to start earlier, improving the load time of the sword assets by using Unity Profiler’s CPU module to see what is being loaded, or using Addressables synchronously to ensure the load is finished.This documentation includes more details and a code snippet for synchronous Addressables.Q: If I load an addressable when a scene starts, do I need to have a loading screen for it?
A: Loading from Addressables is typically done in an asynchronous way, like with Addressables.LoadAssetAsync().There may be some content you don’t want to load before leaving a loading screen. You can collect these AsyncOperationHandles and wait for the necessary ones to complete before leaving.Q: What is the memory footprint of the addressables metadata at runtime (before loading any of its data)?
A: During Addressables initialization, the catalog file is loaded so that Addressables knows how to map labels and addresses to assets on disk or in remote locations. A larger catalog equates to a larger memory overhead at runtime.Catalog size can be reduced by stripping unnecessary data, like not including labels or GUIDs in groups that don’t need them, or by reducing the size of existing data. For example, by setting a group’s Internal Asset Naming Mode to GUID instead of filename or full path (which can be longer). You can view the runtime memory size of the catalog in Unity Memory Profiler.Q: What is the Unity Editor doing in the time it spends building Addressables?
A: A build report log is output in the /Library folder. This log shows each step of the build process. To add additional details to the log, follow this path to select “Use Detailed Build Log”: Enabling Edit > Preferences > Scriptable Build Pipeline > Use Detailed Build Log.Check out visuals and documentation on how to view the log.Q: Does Resources.Load() also have a duplication problem?
A: Yes. It can be useful to think of Addressables content and Resources content as different “worlds.” If you have a texture in /Resources, one copy of that texture is included in the Resources file. If bundles in Addressables depend on that texture, each bundle includes an implicit copy of it. You end up with multiple copies of the texture on disk and potentially multiple copies in memory.To avoid this duplication, move the texture out of /Resources and add it to an Addressables group.Q: Do you get similar size on disk issues that are resolved by removing duplicate bundles when you don’t use Addressables?
A: Yes. In the webinar and slides we show how deduplicating the two water racing scenes significantly reduced build size.Q: How can I prevent shader variant duplicates?
A: Shaders can be deduplicated in the same process as any other asset – explicitly declare them in a group.If an asset is explicitly declared in an Addressables group that is going into your build, that asset will not be duplicated across multiple bundles.For shaders specifically, it is common practice for projects to use a “Shared shaders” group to contain shaders that you expect to need in memory for the lifespan of your app, and that are shared across many assets.Q: Do two Unity scenes sharing the same prefab duplicate build size?
A: This depends on if the prefab the scenes depend on has been explicitly included in Addressables, and if the scenes are in the same or different bundles.See the visual explanation of how duplication occurs in the webinar slides and in this blog post under Stage 4.The key to remember is that all content going into a bundle needs to be able to access all of its dependencies. If you put a scene into a bundle, all of its dependencies need to either be:Explicitly included somewhere in AddressablesImplicitly included in the same bundleQ: Is it possible to compare duplicates in given groups to prevent having all the game assets packed together into an isolated group?
A: Yes. You can run the built-in deduplication rule and then sort the assets in the Addressables Groups window into better groupings.Or, a more scalable approach is to write your own Addressables AnalyzeRules, which will appear in the Analyze window. The built-in rules are delivered as C# in the Addressables package and can serve as a baseline.For example, you may want to find every duplicate across all of your groups that start with “Character-”. Any implicit duplicates can be placed in a “Shared-Character” group.Q: Are you going to cover remote builds and local paths?
A: We did not cover remote and local paths, which are called “Addressables Profiles” in the webinar. However, we do describe what Addressables Profiles are and how to use them in this documentation.Q: How does Addressables work with Cloud Content Delivery (CCD)?
A: CCD integration is discussed in this documentation.Q: Can you please give pointers on best practices to implement low- and high-resolution Addressables variations?
A: You can find an example in the Addressables Sample on GitHub.Q: What if bundle content is encrypted? Does the UnityDataTool also decrypt the content?
A: No. The data will need to be decrypted before UnityDataTool can analyze the content.Q: Is it a supported use case to build bundles from one Unity project and load the bundles at runtime from an app built from a different project?
A: Yes. This is covered by using multiple catalogs at the same time.Q: Are there drawbacks to using InstantiateAsync, or situations where it is better to use LoadAsync + manual Instantiate?
A: It is recommended to use Addressables.LoadAssetAsync() and call Object.Instantiate(). Addressables.InstantiateAsync() has a larger performance cost.Q: I have a lot of ScriptableObjects with at least 1–2 sprites referenced as variables. If I want to change the sprites to Addressables, do I have to change the references to Addressables one by one, or is there any trick to do this?
A: An Editor script is probably the way to go to convert these references.You can add the AssetReference fields to your ScriptableObject (and temporarily keep the Sprite fields). Then, you can write an Editor script that iterates through your ScriptableObjects, looks up the Sprite asset in Addressables to find the associated AddressableAssetEntry, and stores the address or creates an AssetReference to be stored on the ScriptableObject.Lastly, you can remove the direct Sprite references and swap any related code to use the AssetReference.Q: Can I use addressables for WebGL games? If yes, are there any specific things to look for?
A: Yes, and yes. Two things to note: First, WebGL does not support threading, so don’t use Tasks. Second, caching works differently on WebGL – we’ve seen issues with caching remote AssetBundles before.Q: If I use Shader.Find(“ShaderName”), is this coming from the build or Addressables?
A: These are coming from the build of the Unity Player, not Addressables. Shader.Find() does not return results from AssetBundles.Q: How can I organize the Addressables Groups window when I have many similarly-named groups?
A: For organizing the Addressables Groups UI, you can enable Group Hierarchy with Dashes. This will group similarly-named groups together. For example, “Character-person” and “Character-person2” will appear in the UI under the “Character” grouping.This does not affect how bundles are created. This is only a UI organizational change.Share your feedback with us in the Addressables forum. Be sure to watch for new technical blogs from other Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/extended-q-a-optimizing-memory-and-build-size-with-addressables</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/extended-q-a-optimizing-memory-and-build-size-with-addressables</guid><pubDate>Fri, 28 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[6 ways ScriptableObjects can benefit your team and your code]]></title><description><![CDATA[We’re happy to announce that we’ve launched a new technical e-book, Create modular game architecture in Unity with ScriptableObjects, which provides best practices from professional developers for deploying ScriptableObjects in production.Along with the e-book, you can download a demo project from GitHub inspired by classic ball and paddle arcade game mechanics. The demo shows how ScriptableObjects can help you create components that are testable and scalable, while also being designer-friendly. Although a game like this could be built with far fewer lines of code, this demo shows ScriptableObjects in action.This post explains the benefits of ScriptableObjects, but doesn’t cover the basics or general coding in Unity. If you’re new to programming in Unity, head over to Unity Learn, which offers helpful introductory tutorials. The first chapter in the e-book also offers a solid primer.Let’s look at six ways you can benefit from using ScriptableObjects in your projects. Want to know more? All of these examples are explored further in the e-book and demo project.Although many of the techniques shared here can also be achieved using C# classes, one of the main benefits of ScriptableObjects is the accessibility to artists and designers. They can use ScriptableObjects to configure and apply game logic in a project without having to edit the code.The Editor makes it convenient to view and edit ScriptableObjects, enabling designers to set up gameplay data without heavy support from the developer team. This also applies to game logic, such as applying behavior to an NPC by adding a ScriptableObject (explained in the patterns below).Storing data and logic on a single MonoBehaviour can result in time-consuming merge conflicts if two people change different parts of the same Prefab or scene. By breaking up shared data into smaller files and assets with ScriptableObjects, designers can build gameplay in parallel with developers, instead of having to wait for the latter to finish setting up the gameplay in code before testing it.Issues can arise when colleagues with different roles access the game code and assets at the same time. With ScriptableObjects, the programmer can control what part of the project is editable in the Editor. Additionally, using ScriptableObjects to organize your code leads naturally to a codebase that’s more modular and efficient to test.Christo Nobbs, a senior technical game designer who specializes in systems game design and Unity (C#), contributed to The Unity game designer playbook, and is the main author of a blog post series on designing game systems in Unity. His posts, “Systems that create ecosystems: Emergent game design” and “Unpredictably fun: The value of randomization in game design” provide interesting examples of how designers can use ScriptableObjects.Modularity is a general software principle which can be implemented in C# without using ScriptableObjects. But, as mentioned above, ScriptableObjects help promote clean coding practices by separating data from logic, which is a first step toward modular game code. This separation means it’s easier to make changes without causing unintended side effects, and improves testability.ScriptableObjects excel at storing static data, making them handy for configuring static gameplay values like items or NPC stats, character dialogue, and much more. Because ScriptableObjects are saved as an asset, they persist outside of game mode, making it possible to use them for loading in a static configuration that dynamically changes at runtime.While changes to ScriptableObject data do persist in the Editor, it’s important to note that they are not designed for saving game data. In that case, it’s better to use a serialization system, such as JSON, XML, or a binary solution if performance is critical.MonoBehaviours carry extra overhead since they require a GameObject – and by default a Transform – to act as a host. This means you need to create a lot of unused data before storing a single value. A ScriptableObject slims down this memory footprint and drops the GameObject and Transform. It also stores data at the project level, which is helpful if you need to access the same data from multiple scenes.It’s common to have many GameObjects which rely on duplicate data that does not need to change at runtime. Rather than having this duplicate local data on each GameObject, you can funnel it into a ScriptableObject. Each of the objects stores a reference to the shared data asset, rather than copying the data itself. This can provide significant performance improvements in projects with thousands of objects.In software design, this is an optimization known as the flyweight pattern. Restructuring your code in this way using ScriptableObjects avoids copying values and reduces your memory footprint. Check out our e-book, Level up your code with game programming patterns to learn more about using design patterns in Unity.A good example of how ScriptableObjects can simplify your code is to use them as enums for comparison operations. The ScriptableObject can represent a category or item type, such as a special damage effect – cold, heat, electrical, magic, etc.If your application requires an inventory system to equip gameplay items, ScriptableObjects can represent item types or weapon slots. The fields in the Inspector then function as a drag-and-drop interface for setting them up.Using ScriptableObjects as enums becomes more interesting when you want to extend them and add more data. Unlike normal enums, ScriptableObjects can have extra fields and methods. There’s no need to have a separate lookup table or correlate with a new array of data.While traditional enums have a fixed set of values, ScriptableObject enums can be created and modified at runtime, allowing you to add or remove values as needed.If you have a long list of enum values without explicit numbering, inserting or removing an enum can change their order. This reordering can introduce subtle bugs or unintended behavior. ScriptableObject-based enums don’t have these issues. You can delete or add to your project without having to change the code every time.Suppose you want to make an item equippable in an RPG. You could append an extra boolean field to the ScriptableObject to do that. Are certain characters not allowed to hold certain items? Are some items magical or do they have special abilities? ScriptableObject-based enums can do that.Because you can create methods on a ScriptableObject, they are as useful for containing logic or actions as they are for holding data. Moving logic from your MonoBehaviour into a ScriptableObject enables you to use the latter as a delegate object, making the behavior more modular.If you need to perform specific tasks, you can encapsulate their algorithms into their own objects. The original Gang of Four refers to this general design as the strategy pattern. The example below shows how to make the strategy pattern more useful by using an abstract class to implement EnemyAI. The result is several derived ScriptableObjects with different behavior, which then becomes a pluggable behavior since each asset is interchangeable. You just drag and drop the ScriptableObject of choice into the MonoBehaviour.For a detailed example showing how to use ScriptableObjects to drive behavior, watch the video series Pluggable AI with ScriptableObjects. These sessions demonstrate a finite state machine-based AI system that can be configured using ScriptableObjects for states, actions, and transitions between those states.A common challenge in larger projects is when multiple GameObjects need to share data or states by avoiding direct references between these objects. Managing these dependencies at scale can require significant effort and is often a source of bugs. Many developers use singletons – one global instance of a class that survives scene loading. However, singletons introduce global states and make unit testing difficult. If you’re working with a Prefab that references a singleton, you’ll end up importing all of its dependencies just to test an isolated function. This makes your code less modular and efficient to debug.One solution is to use ScriptableObject-based events to help your GameObjects communicate. In this case, you are using ScriptableObjects to implement a form of the observer design pattern, where a subject broadcasts a message to one or more loosely decoupled observers. Each observing object can react independently from the subject but is unaware of the other observers. The subject can also be referred to as the “publisher” or “broadcaster” and the observers as “subscribers” or “listeners.”You can implement the observer pattern with MonoBehaviours or C# objects. While this is already common practice in Unity development, a script-only approach means your designers will rely on the programming team for every event needed during gameplay.At first glance, it appears that you’ve added a layer of overhead to the observer pattern, but this structure offers some advantages. Since ScriptableObjects are assets, they are accessible to all objects in your hierarchy and don’t disappear on scene loading.Easy, persistent access to certain resources is why many developers use singletons. ScriptableObjects can often provide the same benefits without introducing as many unnecessary dependencies.In ScriptableObject-based events, any object can serve as publisher (which broadcasts the event), and any object can serve as a subscriber (which listens for the event). The ScriptableObject sits in the middle and helps relay the signal, acting like a centralized intermediary between the two.One way to think about this is as an “event channel.” Imagine the ScriptableObject as a radio tower that has any number of objects listening for its signals. An interested MonoBehaviour can subscribe to the event channel and respond when something happens.The demo shows how the observer pattern helps you set up game events for UI, sounds, and scoring.At runtime, you’ll often need to track a list of GameObjects or components in your scene. For example, a list of enemies is something you’d need to frequently access, but it’s also a dynamic list that changes as more enemies are spawned or defeated. The singleton offers easy global access, but it has several drawbacks. Instead of using a singleton, consider storing data on a ScriptableObject as a “Runtime Set.” The ScriptableObject instance appears at the project level, which means it can store data that’s available to any object from any scene, offering similar global access. Since the data is located on an asset, its public list of items is accessible at any time.In this use case, you get a specialized data container that maintains a public collection of elements but also provides basic methods to add to and remove from the collection. This can reduce the need for singletons and improve testability and modularity.Reading data directly from a ScriptableObject is also more optimal than searching the Scene Hierarchy with a find operation like Object.FindObjectOfType or GameObject.FindWithTag. Depending on your use case and the size of your hierarchy, these are relatively expensive methods that can be inefficient for per-frame updates.There are several ScriptableObjects frameworks which offer more use cases than these six scenarios. Some teams decide to use ScriptableObjects extensively, while others limit their use to loading in static data and separating logic from data. Ultimately, the needs of your project will determine how you use them.Create modular game architecture in Unity with ScriptableObjects is the third guide in our series for intermediate to advanced Unity programmers. Each guide, authored by experienced programmers, provides best practices for topics that are important to development teams.Create a C# style guide: Write cleaner code that scales assists you with developing a style guide to help unify your approach to creating a more cohesive codebase.Level up your code with game programming patternshighlights best practices for using the SOLID principles and common programming patterns to create scalable game code architecture in your Unity project.We created this series to provide actionable tips and inspiration to our experienced creators, but they aren’t rule books. There are many ways to structure your Unity project and what might seem like a natural fit for one application may not be for another. Evaluate the advantages and disadvantages of each recommendation, tip, and pattern with your colleagues before deploying it.Find more advanced guides and articles on the Unity best practices hub.]]></description><link>https://unity.com/blog/engine-platform/6-ways-scriptableobjects-can-benefit-your-team-and-your-code</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/6-ways-scriptableobjects-can-benefit-your-team-and-your-code</guid><pubDate>Thu, 20 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[more8bit’s Bleak Sword showcases a minimalist approach to mobile game design]]></title><description><![CDATA[Bleak Sword takes the challenging combat of games like Dark Souls and distills it down to the essentials for a compelling adventure on iOS, macOS, and Apple TV. Learn how Unity developer more8bit kept streamlined the project with a clear vision and smart prototyping to launch this Apple Arcade hit.Mobile developer Luis Moreno Jimenez (more8bit) has worked in the games industry for more than 20 years. “I started pretty early doing little 3D models and crude animations, and fantasizing about the games I would like to make,” he says.At 17 years old, he joined Enigma Software, where he spent three years working on different prototypes and the RTS-RPG hybrid Excalibug. His next role was at MercurySteam, first as an animator on games like Scrapland and Clive Barker’s Jericho, and then as lead in-game animator on Castlevania: Lords of Shadow and its sequel, Castlevania: Lords of Shadow 2.“Years working closely with gameplay programmers and gameplay designers has been very beneficial for me in the long run,” he says. “I got to see how they tackle gameplay specific problems from different points of view, understand what works and what doesn’t, and pick up little gameplay tricks here and there. I’ve also learned how to finish and close projects, which is something very important if you’re working solo.”Inspired by the growing number of indie innovators finding success outside large studios, Luis decided to pursue the dream of making his own game. He experimented with a couple of different engines before choosing Unity. “I felt that if I was going to learn a programming language, it would be better to learn a more established and general one like C#.”From the outset, Luis knew he wanted to make a mobile game, and he had a clear idea of what Bleak Sword would look like. The game features 2D sprites rendered in a 3D environment. All game assets use minimalistic pixel art, brought to life in a lo-fi, monochrome style.“The first thing I came up with was this aesthetic,” he explains. “From the very beginning, the main character was as you see in the final game. I thought this minimalistic style would look cool on a handheld or mobile screen, so I chose mobile as my first target platform.”Gameplay took several rounds of prototyping. “The first version of Bleak Sword was 2D,” says Luis. “Another was open world, like a mini-Witcher 3, but that idea soon proved to be too big for one person to do in reasonable time, even with minimalist graphics.”Eventually, Luis landed on the concept of “diorama-based arenas,” where each level is confined to a small square. “This was the structure I was looking for – the two ideas matched perfectly as both have a minimalistic design approach,” he says. “The great thing about Unity is how quickly you can put together a few assets and try out different ideas. It definitely saved me months of work in the experimental phase.”Bleak Sword’s base game contains nine different chapters, each containing 10 diorama-based arenas. Every chapter has new enemies to conquer and culminates in a unique boss encounter.“I knew from the start that I wanted to have very different settings. Because the game loop in the original game was designed specifically for short, quick, intense sessions, if the settings were too similar, it could bore the player,” says Luis.To keep the experience fresh, Luis created different types of terrain, obstacles, enemy types, and gameplay elements. “You have chapters with water, environmental traps, weather conditions that can affect gameplay, and so on,” says Luis. “Players can also hide behind trees or other objects when enemies throw projectiles at them. I tried to balance each arena together with the enemies, so each level is a little different and has the potential to create memorable moments.”One of the game’s most memorable chapters is the Northern Passage, where combat happens on horseback in a perpetually scrolling environment. Luis used Shader Graph to prevent enemies and objects from coming into view beyond the bounds of the scrolling diorama.“Enemies on that level have a script that changes their material. When they spawn, they are created outside the arena using the shader that hides pixels. When they enter the arena, the script changes the material and uses a normal shader, making them visible.”Going mobile gave Luis the opportunity to experiment with control schemes and create a uniquely challenging Soulslike, a genre not often seen on handheld devices. “I wanted to make an action game playable with one hand – no onscreen joysticks or buttons,” he says. “When people play mobile games on their commute, they’re usually holding onto the bar with one hand and playing with the other.”The controls are simple but effective: Players swipe to roll in a direction for movement, tap once to attack, and tap and hold to charge an attack or counter a blow from an enemy.In early prototypes, Luis used Unity’s built-in Input System because it was easy to set up and implement, but switched to Rewired from the Unity Asset Store later in production. “I was very happy in general with the plug-in – it helped a lot with the original Bleak Sword’s development, especially with the Apple TV controls.”more8bit’s publisher, Devolver Digital, pitched Bleak Sword to Apple, who added it to their library of Apple Arcade exclusives in 2019. The game was a hit, receiving praise for its fluid and responsive gameplay.“I’m very happy with how things went,” says Luis. “It definitely allowed me to continue on this indie adventure.”So, what’s next for Bleak Sword? This year, Devolver Digital announced Bleak Sword DX, an expanded and improved version of Bleak Sword for PC and Nintendo Switch™ with updated controls, visuals, and a brand-new campaign.“I can’t wait for players to try the new DX campaign mode, which I think is a lot of fun and pretty challenging, especially with the addition of two more difficult modes,” says Luis. “I’m also excited for players to try their hand at the new Boss Rush mode or see if anyone can get a crazy high number of rounds in Endless Arena. I put a lot of work into this game, and I hope players enjoy their time with it!”Check out the Bleak Sword DX case study to learn how more8bit brought his debut game as a solo developer to more platforms.*Nintendo Switch is a registered trademark of Nintendo.]]></description><link>https://unity.com/blog/games/more8bit-bleak-sword-minimalist-mobile-game-design</link><guid isPermaLink="true">https://unity.com/blog/games/more8bit-bleak-sword-minimalist-mobile-game-design</guid><pubDate>Wed, 19 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Rapid design iteration in Breachers using AssetPostprocessor and Blender]]></title><description><![CDATA[Triangle Factory is a fast-growing Belgian gaming company that uses Unity to create high-quality multiplayer VR titles like Hyper Dash and their latest game, Breachers. Triangle Factory leverages tools like Cinemachine, Unity Profiler, Game Server Hosting, Matchmaker, Voice Chat (Vivox), and Friends in creating an immersive experience for players.



In this blog, Jel Sadones, lead level design/tech art, and lead developer Pieter Vantorre walk us through their Blender-to-Unity pipeline and how they brought their VR tactical FPS title Breachers to life.Unity has been our go-to engine and development environment for over a decade, and we have gone through many workflows over the years for environment modeling and design. That includes using in-engine modeling tools like ProBuilder (which we still use and love for rapid prototyping) and assembling scenes from Prefabs created in other modeling packages. For our current projects though, we’ve landed on a workflow where we model and organize our levels in Blender, and rely on Unity’s AssetPostprocessor to integrate them into our Unity project.In this article, we’ll share with you how we ended up with this workflow and how it supports the kind of rapid design iteration we need for our games.In 2021, we released our first big VR title, Hyper Dash, a fast-paced 5v5 arena shooter. When we started development on the game in 2019, we had a basic Blender-to-Unity workflow that probably looks familiar to many: We simply modeled geometry in Blender, exported our assets as FBX files and manually integrated them into Unity. The manual integration involved several steps:Setting up dynamic objects in the scene such as weapon pickups, spawn doors, capture pointsPlacing colliders to prevent players from walking or teleporting in certain areasSetting up invisible guides to allow bots to behave properlyEtc.This process can work well for smaller projects, but quickly becomes cumbersome as a project scales and evolves. When we started planning the development of our next title, we knew we were going to need a drastically improved workflow.Breachers is a competitive shooter with complex level layouts, subtler gameplay mechanics, more technical systems at play, and a higher level of graphical polish targeting the newest generation of standalone VR hardware. In terms of complexity, it goes several steps further than Hyper Dash, and we quickly felt the effects of this on our workflow.In the prototyping phase, we still relied heavily on Prefabs for dynamic objects, like window barricades for example. These are objects that we place inside window frames to block line of sight between interiors and the outside to prevent teams from seeing each other during the warm-up phase of the game.While testing our prototype, we were constantly moving around windows to improve gameplay, which meant changing geometry in Blender and re-exporting to Unity and then manually moving the barricade objects to match our changes. Many hours were spent flying around Unity’s Scene view, manually checking and fixing these kinds of things. Still, we had more than one playtest where we only noticed during gameplay that something had been overlooked.Obviously, this workflow was not going to give us the ability to quickly iterate on our map designs as we playtested, both internally and as part of our open alpha, where we planned to make one map available for free to get feedback from the community. We were looking forward to all that feedback, but not looking forward at all to the manual effort involved in applying it to our maps.Another potential downside to a Prefab-based design workflow is performance. We mainly target mobile, standalone VR headsets for our games. We want to push the visuals as far as we can, so we need to squeeze every last drop of performance out of our workflow.Assembling levels from Prefabs can be less efficient than creating a watertight mesh in a modeling program. If you snap two modular wall pieces together, you always have an unmerged loop of geometry in between them. With Prefabs, it’s also easy to end up placing a lot of geometry in your scene that isn’t visible (because it’s on the underside of an object, or placed against a wall) but still taking up valuable lightmap space. Over an entire level, those small inefficiencies can add up to wasted performance and diminished visuals.The final issue with Prefabs we want to mention is that it can be easy to break things by applying seemingly innocent changes to the source model in Blender, like renaming an object. As a game or level evolves, you often want to reorganize your assets and give them improved or more consistent names. But renaming an object in Blender and re-exporting it can easily (and without warning) break the overrides and additions made to the object in Unity, leading to regressions.In this simplified example, we have a ventilation grate Prefab and want smoke coming out of it. After importing the mesh into Unity, our artist has added the smoke particle system as a child object and added a surface type component to the Prefab to mark it as being a metal object.Here you can see what happens if we rename our mesh in Blender:When reimporting the mesh with the updated name, Unity can no longer find the old mesh by name, so it removes the object from the model Prefab. Children of this removed object are moved to the root of the Prefab and existing scripts are removed, again leading to manual cleanup work we’d rather avoid.As the prototyping phase for Breachers wrapped up and we prepared to go into full production mode in early 2022, our art and dev teams sat down together and investigated what we could do to remedy these problems. We defined clear goals for our ideal asset pipeline, one that would support the rapid and flexible iteration required for Breachers:All creation and modification of level geometry should happen in Blender.WYSIWYG: What a designer creates in Blender should match the result in Unity as closely as possible.When something is updated in Blender, importing the changes into Unity should happen automatically and not require any manual effort.As mentioned above, our main goal was to have an accurate visualization of the game in Blender – not only properly reflecting how the end result will look in Unity but also how the gameplay mechanics are set up. Gameplay in Breachers not only depends on a level’s layout, but also on dynamic objects (like breachable walls) and invisible elements (like sound volumes and colliders). We want to have all this information visible at the design stage and carried over precisely to Unity.Custom properties are critical to our workflow, and we assign these to objects in Blender. These are then carried over in Unity by the FBX format, so we can read them and run custom logic when our assets are imported into Unity.This gives us a great amount of flexibility, as well as stability. These properties stay connected to objects throughout the pipeline, so we can reorganize and rename things in our levels as much as we want without worrying about things breaking or getting out of sync.Unity has a powerful class called AssetPostprocessor, which allows modifications of assets while they are being imported. This is what we use at import time to parse those custom properties and act on them.Prefab linksWe have a custom property named PrefabLink, which tells Unity the object imported from Blender should be replaced by a Prefab already in the Unity project, while preserving the imported model’s transform. This allows us to place these dynamic objects in Blender while retaining the advantages of Prefabs once they are imported into Unity. The window barricades in the Blender scene above are a good example of this.Surface typesSurface definition is extremely important in Breachers. Walking on a metal staircase sounds different from walking on a concrete floor. Bullet penetration through wood is a lot different than through steel. And each surface type has its own impact effects. Going over each prop in Unity and tagging it as the correct surface type would be extremely time consuming, so we also tackle this at the design stage in Blender by setting custom properties on our geometry colliders.Static flagsAnother important setting for optimization are Unity’s static flags. Setting these correctly can have a profound impact on things like visibility culling, light baking, and batching. Using custom properties in Blender, we can set these on any part of the level, including reusable props, and have that information carry over into Unity across our levels.CollidersLastly, we’d like to share how we set up colliders. Unity has a simple but effective system that automatically detects level-of-detail variants for models when you postfix a model asset name with _LOD0, _LOD1, etc. We were inspired by this and created a similar system for colliders: By simply having geometry with _BoxCollider or _NoCollision in the name, we replace the meshes from Blender with colliders in Unity.As a concrete example, here is a snippet of our LevelSetupPostprocessor that reads custom properties and assigns the right static flags on each imported object:For all of this to work smoothly, we did have to do some work on the Blender side as well.Custom properties are a bit hidden in Blender’s UI and would require artists to manually type out the custom properties each time, which is not a great user experience. Relying on manual text entry would also be very error-prone, undoing much of the advantage of setting things up in Blender in the first place. Moving from a Prefab-based workflow into Blender also made us miss some of the advantages of Prefabs, like having a nice library of objects to browse through and pick from. Luckily, Blender, like Unity, is very flexible and easily extensible.The answer to the Prefab organization problem came in Blender 3.2 with Asset Libraries. This system acts a bit like the Prefab system in Unity: It allows you to create assets in a separate file and then import those into your Blender scene, while changes in the asset file reflect automatically in the Blender scene. Additionally, it ensures that any custom properties or colliders are correctly applied to each instance of this asset in Blender.For Blender, we wrote an in-house add-on to help set up the custom properties in a more clear user interface. This simplifies setting custom properties by just selecting the relevant Blender objects and hitting a button, instead of typing out each property manually.The Bundle Exporter add-on is an open source add-on that we’re using to export all of our FBX files in one click. We modified it to also work with custom properties and updated the UI to have faster exports for our specific needs.Setting up our level design workflow for Breachers took a large time investment initially, but we believe it was the right choice for the project. Also, it was kind of fun!As we’ve built out the game from initial blockouts through alpha testing and the months leading up to the final release, iterating on our levels has been quick and painless. We’ve been able to eliminate overhead and busywork for our designers and artists, while also transferring responsibilities to them that they previously would have needed a developer for.We have been impressed at both Unity and Blender for their ability to integrate with each other this smoothly, and we strongly believe this integration was critical to making Breachers a game we’re happy with and proud to share with the world.Thanks for reading, and enjoy the game!Triangle Factory’s Breachers is now available. Check out more blogs from Made with Unity developers here.]]></description><link>https://unity.com/blog/games/rapid-design-iteration-in-breachers-using-assetpostprocessor-and-blender</link><guid isPermaLink="true">https://unity.com/blog/games/rapid-design-iteration-in-breachers-using-assetpostprocessor-and-blender</guid><pubDate>Tue, 18 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Prepare future creators for in-demand careers with the Unity Workforce Grant]]></title><description><![CDATA[Real-time 3D (RT3D) technology is transforming the way we work, learn, and socialize. Amid this transformation, the real-time 3D job market is growing rapidly, driven largely by increasing demand for immersive technologies in areas such as health care, gaming, architecture, and education.The growth of the real-time 3D industry has created a demand for talent, leading to a challenge for institutions and training providers to adequately prepare learners for future careers in this field. For example, there are still gaps in access and equity, particularly for those in underrepresented and low socioeconomic backgrounds. Factors such as training costs can make it difficult for learners to gain the skills needed for real-time 3D jobs, creating a demand for programs that can address these challenges.To support this, Unity Social Impact has partnered with Jobs for the Future (JFF), a leading nonprofit organization that works to create economic opportunities for underserved populations through innovative education and workforce development initiatives.Unity Social Impact and JFF are excited to announce the Unity Workforce Grant: Preparing future creators for in-demand careers. This open call for proposals will award funding to a limited number of higher education institutions, nonprofit organizations, and companies running workforce development programs to support the next generation of real-time 3D creators in accordance with the terms, conditions, and eligibility requirements described.If your organization does one or more of the following, then we encourage you to apply:Runs programs, courses, and offerings to equip learners with the skills needed to enter the real-time 3D job marketDiversifies and increases the global talent pool for real-time 3D jobsDrives training programs or designs educational content serving underrepresented, low-income, and/or underserved learner populations“3D artist. Avatar designer. Extended reality (XR) simulation developer. Technologies like virtual and augmented reality are opening exciting new pathways to quality jobs and careers – and effective workforce training will be essential for learners and workers to seize opportunities that lead to economic advancement,” says Kristina Francis, executive director of JFFLabs. “We’re delighted to partner with Unity to support innovative organizations, ensuring that the potential of training in XR/real-time development skills is truly accessible to all.”“We’re delighted to partner with Unity to support innovative organizations, ensuring that the potential of training in XR/real-time development skills is truly accessible to all.”The Unity Workforce Grant will reward up to US$200,000 to organizations training learners for the purpose of job readiness and career placement in the realm of immersive technologies and real-time 3D.“Rapidly upskilling into high-demand jobs, like real-time 3D, is crucial to building a thriving economy and society,” adds Jessica Lindl, vice president of Unity Social Impact. “It’s our responsibility to ensure that everyone, regardless of their background, has access to economic opportunities. The Unity Workforce Grant, in partnership with Jobs for the Future, is an important step in making this happen.”Grant applications will be accepted from April 17 to June 2, 2023 at 11:59 PM Pacific Time. Learn more about the grant and eligibility requirements.This grant initiative is part of the Unity Charitable Fund, which previously funded efforts such as the Higher Ed XR Innovation Open Call and EdTech Creator Challenge.Still have questions that you’d like answered live? Register to join us for a one-hour webinar on Monday, April 24 or one of two live Q&A sessions on either May 15 or May 22.]]></description><link>https://unity.com/blog/news/prepare-future-creators-for-in-demand-careers-with-the-unity-workforce-grant</link><guid isPermaLink="true">https://unity.com/blog/news/prepare-future-creators-for-in-demand-careers-with-the-unity-workforce-grant</guid><pubDate>Mon, 17 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Changing the world with RT3D: Meet the 2023 Unity for Humanity Grant winners]]></title><description><![CDATA[After reviewing almost 500 projects, we’re excited to share the winners of the 2023 Unity for Humanity Grant. All of the social impact creators receiving funding this year are using real-time 3D to drive change in truly innovative ways.Projects were judged based on vision, impact, inclusion, and viability. Winners will receive a bespoke grant from a pool of $500,000 USD, plus mentorship and technical support to help bring their projects to life. If you have a project you’d like to submit in the future, sign up to the Social Impact mailing list for updates about when next year’s grant will open.What’s the project?X-Ray Fashion is a VR documentary by Denmark-based XR studio MANND that uses immersive storytelling to educate audiences about issues within the fashion industry. The project combines virtual reality with corresponding physical elements (for example, when walking through water in the documentary, you walk through shallow water in the real world) to create a truly sensory experience that takes viewers through the various stages of a typical garment’s production process, from the sweat shop all the way to the catwalk.What’s the purpose?The fashion industry is the second-largest polluter in the world. It accounts for 10% of all global carbon emissions, and a huge 60% of textiles are thrown away within one year of being made. On top of that, a single pair of denim jeans requires 10,000 liters of water to make.The creators of X-Ray Fashion recognize that our habit of constantly changing our wardrobes and disposing of clothes we no longer like is having a big impact. Their goal is to use this immersive experience to change consumer behavior by helping viewers understand the impact that their wardrobes have on the environment and people working in the industry. Ultimately, the project encourages lifestyle changes such as buying second-hand garments, taking better care of what we already own, and minimizing our overall fashion consumption.What’s the project?Trying to put how you’re feeling into words when experiencing complex emotions and mental health issues can often be difficult. Sarah Ticho encountered this challenge when trying to describe her grief and mental state to a doctor during a time when she needed help. The experience led her to collaborate with experience designer Niki Smit to develop SoulPaint, a VR project in which participants create artwork on an avatar that expresses their inner world using color, shapes, movement, and imagery.What’s the purpose?According to Harvard Medical School, miscommunication is at the heart of most medical errors. SoulPaint is a unique experience that aims to transform the way we communicate our emotions with others, remove the stigma around mental health, and trigger impactful conversations by creating a shared exhibition experience in public spaces worldwide. It will also ultimately provide a tool that allows patients to improve communication with health care professionals.What’s the project?Quantum’s Pursuit is a game by Limbitless Solutions that lets children with bionic limbs play the limb-different grandchildren of Dr. Quantum, a tech genius and wizard who has developed renewable energy. Dr. Quantum has been kidnapped by evil Galacdorks trying to steal his invention, and it’s the player’s goal to journey through the levels, defeat the boss, and save Dr. Quantum.The game allows hospitals to teach children how to use their new bionic limbs in a fun, engaging, and stress-free way, while also gaining insight into the needs of each child based on their muscle strength – information that is usually difficult to ascertain.What’s the purpose?Limbitless Solutions provides free bionic arms, training, and even covers travel costs for patients and their families. This incredible project can vastly improve the quality of life of children with limb differences and ease the transition to a bionic limb during an otherwise difficult time.What’s the project?Using VR, Follow the Investigation: Inside the ICC shows International Criminal Court (ICC) cases at various stages of the judicial process. The experience provides valuable insight into how the ICC system works to bring those responsible for crimes against humanity – including war crimes and genocide – to justice.Viewers witness testimonies from survivors of past ICC cases, visit field investigation sites, process evidence in ICC forensic labs, and sit in on courtroom proceedings drawn from a variety of infamous global cases.What’s the purpose?This project serves as a somber reminder of and education about the work of the ICC and the process of seeking justice, helping to raise awareness of atrocities and the experiences of survivors to ensure continued global support for their recovery and the work of the ICC. The project also offers an impactful way for victims of horrific crimes to better understand the legal processes that relate to their own cases.What’s the project?In World Reborn, the world’s first activism adventure game, your goal is to save the world after a cataclysmic event fractures it into multiple realities. The mobile game uses AR to combine actions in the real world with choices in the virtual world, encouraging players to make a difference in both. Real-world actions that help you progress through the game include donating money, picking up trash, completing breathing exercises, and more.What’s the purpose?90% of the 72 million teenagers in the U.S. play video games. Having grown up with an awareness of pressing global issues – including climate change, mental health, and racial injustice – they want to make a difference, but often feel powerless to do so. The founders of Wicked Saints, creators of World Reborn, worked for the world’s largest peacebuilding organization and trained young movement leaders all over the world. They saw how many lives were transformed using an approach called Common Ground Activism – attacking the problem, not the person. Now, they’re building World Reborn to empower young people with CGA skills and drive change through incremental steps in the real world. Join their Discord community to get special access and be part of building the game.What’s the project?“What would the children of the future think about the mistakes of our past?” is the question that Team Gramps sought to answer with A Week at Belisamas Lake. This narrative-based mobile fishing game follows young Lotus and their grandmother Pearl as they recover 21st-century trash from a local lake in a future where humanity has overcome the climate crisis – and profoundly changed in the process. Using gyroscopic controls, you fish for items, inspect them, and listen as Pearl sheds light on relics of the past.What’s the purpose?Through a wholesome, optimistic narrative, A Week at Belisamas Lake shines a light on the possibility of a future society in a post-climate change world. Weaving together intergenerational relationships and items of the present day, the story examines just how drastically things might change if we don’t take action now, and how meaningful climate action will ultimately change us.Trigger warning: griefWhat’s the project?Drawing on the 17-year life cycle and symbolism of the Brood X cicadas, this virtual reality experience follows a mother’s journey to find meaning after the loss of her son. Using personal audio files, music, and images, the player is taken on a journey through the mother’s narrative, interacting with the experiences of passing time and grief.What’s the purpose?Year of the Cicadas is a mother’s reflection on the power of finding meaning in the most tragic of stories, and how that meaning transforms over time. The goal of this experience is to provide a window into the life-long journey of meaning-making after child loss for those who may know or work with bereaved parents and family members.Trigger warning: sexual assault, child abuseWhat’s the project?This mobile game is designed for parents who suspect their child may be the victim of sexual abuse or who want to talk to their children about topics like consent. Patito uses minigames to show a young character realizing he is a victim, providing a sensitive approach to educating children and parents on these difficult topics.What’s the purpose?According to the Organization for Economic Co-operation and Development (OECD), over 4.5 million children are victims of sexual abuse every year in Mexico. Pink Bear Games have created Patito to raise awareness of this issue and help give parents an effective way to communicate about sexual abuse and consent with their children. Their goal is to provide the app for free in an effort to help prevent future cases.Congratulations to all of this year’s winners – we can’t wait to share more of their projects with you. If you’re a social impact creator, join the Unity for Humanity Community Discord to meet like-minded creators.]]></description><link>https://unity.com/blog/news/meet-the-2023-unity-for-humanity-grant-winners</link><guid isPermaLink="true">https://unity.com/blog/news/meet-the-2023-unity-for-humanity-grant-winners</guid><pubDate>Mon, 10 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Build a production-ready multiplayer game with Netcode for GameObjects]]></title><description><![CDATA[Are you building a cooperative multiplayer game with Unity? We’ve got the perfect on-demand resource for you: A four-part webinar series from the Multiplayer team – now available on YouTube. This series dives into the Boss Room sample game to explore how you can build a production-ready multiplayer game with Unity and Netcode for GameObjects.Creating multiplayer games isn’t just about using the right APIs. The first episode in the series covers best practices and provides advice when introducing a chaotic tech like the internet between your players when developing a multiplayer game.In the first episode, we cover:What is Netcode for GameObjects (NGO) and Unity Gaming Services (UGS)?NetworkVariables vs RPCs and reasons to choose which for each featureAuthority and why we chose server authority for most of our gameplayMovements and alternative models like Client Authority for dealing with lag, and optimization tricks for pathfinding-based movementsBasic game implementation and how we used State (netvar, network list) and RPCsEpisode two covers the implementation of character abilities in Boss Room and how to approach ability implementation in your game.We dive into:The general flow of implementing server-driven abilitiesReliability and what it means for RPCs to be unreliableMelee attacks and the anticipation of animation issuesTank shield functionality and interaction with the environmentArcher powershots and Area of Effect (AOE), which require tracking inputs over time on the client side onlyMage firebolt and bandwidth useThe general architecture of our ability systemWe also look at:Dynamically spawned objectsSpawning static in-scene placed objectsSpawning destroyable in-scene placed objectsLessons learned around zombie imps when late joiningCustom spawning logic like pools and how to integrate them with NGOIn the third session, we cover a few more game implementation details before diving into making your multiplayer game resilient to players.We explore:Physics interactions, objects and parenting, scenes and scene managementUsing Relay and Lobby to take your game online and why you can’t use NGO for joining playersCharacter selection screen syncing between players using NGO and custom serializationMaking your game resilient to players coming and going, and reconnection flows, late join support, disconnection, and timeoutsHandling race conditions and various tests to performIn the fourth and final session of the series, we explore game development best practices for multiplayer games.This episode covers:Bandwidth optimizations and tools to profile, optimizing NetworkTransforms, and other tipsDebugging tools like network condition simulators, stats monitoring, and custom debug flowsProject architecture (action system, player architecture, etc.)The future of Boss RoomWatch the series? Share your feedback so we can plan even better sessions in the future.If you’re ready to dive into your next multiplayer project with Unity and Netcode for GameObjects, here are some helpful resources to get you started:Learn more about Netcode for GameObjectsExplore our samples: 3D Boss Room, 2D Galactic Kittens, Bitesize SamplesRead the documentationGot questions or feedback about multiplayer game development in Unity? Feel free to join the discussion on Discord or in the forums.]]></description><link>https://unity.com/blog/games/build-a-production-ready-multiplayer-game-with-netcode-for-gameobjects</link><guid isPermaLink="true">https://unity.com/blog/games/build-a-production-ready-multiplayer-game-with-netcode-for-gameobjects</guid><pubDate>Wed, 05 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity Monthly: March 2023 roundup]]></title><description><![CDATA[Interested in seeing how fellow creators are using Unity? Look no further than this roundup of the latest made with Unity news and discover what the Unity community has been up to – including even more highlights out of GDC 2023.Games created in Unity reached some extra exciting milestones in March.To start, Sabotage Studio revealed that Sea of Starswould release in August this year, getting us pretty excited. Looking to fight for the title of mightiest of them all? Mighty DOOM by Bethesda Softworks may be the action-packed game you need.Awards season kept the milestones coming throughout the month, with congratulations in order for a handful of Unity-made projects:Academy Awards (winners list)Avatar: The Way of Water, Best Visual EffectsBAFTA Games Awards (winners list) IMMORTALITY, NarrativeRollerdrome, British GameTUNIC, Artistic Achievement and Debut GameGame Developers Choice Awards (winners list) Citizen Sleeper, Social Impact AwardIMMORTALITY, Innovation AwardPentiment, Best NarrativeIGF Awards (winners list)  Betrayal at Club Low, Nuovo Award and Seumas McNally Grand PrizeThe Forest Quartet, Excellence in AudioIMMORTALITY, Excellence in NarrativeRPG Time: The Legend of Wright, Excellence in Visual ArtsSlider, Best Student GameWe share new game releases and milestone spotlights every Monday on the @UnityGames Twitter account. Be sure to give us a follow and support your fellow creators.Tuesdays are dedicated to #UnityTips on Twitter. We especially loved this one from @TheMirzaBeig featuring a quick tutorial for a great 2D outline effect:At the very end of March, we also had our friends from @BinaryImpactG take over the channel to share some of the best tips they’ve used over the years. A few notable ones include:Having an AudioSource play backwardsA convenience feature to make your components easy to useHow to randomize sprite animations so they’re not too uniformYou can find their other tips on our Twitter channel, or all of them on Binary Impact’s website. Keep tagging us and using the #UnityTips hashtag to share your expertise with the community.We’re stunned by what you all create every week, and you certainly kept the amazing projects coming in March. If we missed something from you, be sure to use the #MadeWithUnity hashtag next time you share.Twitter’s @AnderssonKev inspired us with a progress update on his adorable game (pictured above), and @JuhanaMyllys shared one of the best spots to catch a nice view in their gameworld. Then, @_josueor had some cool rug animations to show, while @AlexKentDixon took us to admire some breathtaking scenery. Last but not least, @DonXugloGames’s enemy was feeling quite sleepy and in need of a good nap.On Instagram, even more happened: @canopy_design was fighting alongside ruins, and @tails_of_fate’s fox explored dungeons. We also highlighted plenty of #MadeWithUnity creators who joined us for GDC. Find an inspiring reel of them on our YouTube channel.We’re so excited to continue the #MadeWithUnity love, so keep adding the hashtag to your posts to show us what you’ve been up to.At GDC and on Twitch this month, it was all about the creators. To start, we sat down with Fika Productions to discuss Ship of Fools for March’s first Creator Spotlight stream. (Catch a clip from the stream above.) Next came two additional Creator Spotlight streams, covering Schell Games’s Among Us VRand Team Miaozi’s Cygnus Enterprises. Finally, we continued posting throwbacks with part two of the Let’s Dev 101 sessions on VFX Graph – from July 2022 – on YouTube.Don’t forget to follow us on Twitch and hit the notification bell so you never miss a stream.On March 30, we hosted the third Dev Blitz Day of 2023 and covered all things performance profiling. The event was held in both the forums and on the Discord server. Throughout the day, we had more than 36 threads and would like to thank everyone who participated.Keep an eye on our forum announcements and Discord for updates about future Dev Blitz Days, and don’t forget to bookmark the archive of past Dev Blitz Days.For GDC 2023, in order to bring the event to those who were unable to attend in person, the team set up a hub for the event on Discord. We created specific channels to share pictures and videos from the week, a place to discuss the event itself, and our first-ever use of Discord Stage, which brought 30 speakers online to provide overviews of in-booth sessions.We created over 40 posts, featuring 75 pictures and 22 videos, to help our community feel like they were at the event. Unity speakers also received more than 200 questions during the 14 hours we were live from the Discord Stage.Members of the Unity Insiders program were active during March, talking about the latest news on our Unity Gaming Services solutions and out of GDC. Check out some highlights:Did you know that studios that use the Unity Asset Store ship games approximately 20% faster? Don’t take it from us, hear it directly from the creators surveyed as part of the 2023 Unity Gaming Report.Taking to social media, here’s a roundup of some of our favorite creator showcases from Twitter in March:Low-Poly Big Environment Pack | Philipp SchmidtLightning Wall effect | Archanor VFXGlobal Snow 2 | KronnectDon’t forget to tag the @AssetStore Twitter account and use the #AssetStore hashtag when posting your latest creations.Last but not least, here’s a non-exhaustive list of Made with Unity titles released in March. If you see any on the list that have already become favorites or notice that something’s missing, share your thoughts in the forums. Creating with Unity and not seeing your project on the list? Submit it here for a chance to be featured.One Military Camp, Abylight Barcelona(March 2)Star Survivor, SpaceOwl Games (March 2)Figment 2: Creed Valley, Bedtime Digital Games (March 9)MiLE HiGH TAXi, Cassius John-Adams (March 13)The Wreck, The Pixel Hunt (March 14)Storyteller, Daniel Benmergui (March 23)Monster Racing League, Flightless (March 23)Resident Evil 4, CAPCOM Co., Ltd. (March 23)Innchanted, DragonBear Studios (March 28)Terra Nil, Free Lives (March 28)The Last Worker, Oiffy, Wolf & Wood Interactive Ltd (March 30)DREDGE, Black Salt Games (March 30)That’s a wrap for March! Want more community news as it happens? Don’t forget to follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-march-2023-roundup</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-march-2023-roundup</guid><pubDate>Tue, 04 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Unity Industry: Create and scale your real-time 3D vision]]></title><description><![CDATA[As the demand for real-time 3D continues to surge across industries like automotive, manufacturing, government, architecture, energy, retail, and more, we’ve been listening closely to what our industry customers need. We heard loud and clear that this world is different from that of game developers and requires tailored solutions. Industry creators need more support to onboard growing teams, face time-to-market pressure to deliver differentiated experiences, and need to integrate cutting edge technologies, standards, sensors, and other real-world data into experiences to stay ahead of the competition.We’re excited to announce the release of Unity Industry, a suite of products and services designed just for industry creators.Unity Industry enables developers, artists, and engineers across industries to build and deliver custom real-time 3D experiences for augmented reality (AR), virtual reality (VR), mobile, desktop, and web. Unity Industry includes:Unity Enterprise: Manage complex real-time 3D projects across teams using built-in support and creation tools that scale. Includes three-year Long Term Support (LTS) and read-only source code access.Industry Success: Exclusive to Unity Industry, Industry Success helps you overcome challenges faster with dedicated advisors, professional training and onboarding, and rapid response support.Pixyz Plugin: Import more than 40 3D, CAD, and BIM file types to bring source data into Unity’s real-time 3D platform.Unity Mars: Efficiently create AR apps with better workflows and purpose-built authoring tools.Unity Build Server: Utilize on-premises solutions for faster project build testing as you scale, on dedicated network hardware.Unity Industry addresses developers’ needs from the early stages of discovery to building and scaling complex industry applications. From product visualization, marketing content, and sales configurators to smart factories, digital twins, and simulations, Unity Industry enables customers to turn every touchpoint into an immersive and interactive real-time 3D experience anywhere, on a wide range of devices.Building complex solutions requires a dedicated team at your side. Industry Success – an exclusive support offering for Unity Industry – helps teams solve critical onboarding challenges, accelerate time-to-market, optimize resources, and achieve business goals. Industry Success includes:Mitigate risk and get your project off the ground with access to Unity’s ticketing system which provides a 48-hour guaranteed response time.For each Unity Industry seat purchased, customers get access to more than 300 hours of On-Demand Training, covering topics from Unity basics to lighting, optimization, and deploying projects. The extensive self-serve training catalog is designed to help your team members develop their skills further.Every account is assigned a dedicated Partner Relations Manager to act as an internal advocate and strategic advisor, handling issues from submission to resolution. Partner Relations Managers act as the bridge between customer teams and Unity to help onboard new products, perform regular check-ins to ensure teams are meeting their goals, and guide customers to resources for new projects.Get one month of product activation support through documentation, training videos, and a technical point of contact to ensure you’re set up to start your Unity journey.Get access to 90 days of customer onboarding engagement. Dedicated advisors provide guidance on how best to leverage support and resources, so you can get started quickly and access help faster.With the release of Unity Industry, there are some upcoming changes to the Unity Industrial Collection (UIC) and Unity’s Terms of Service.UIC is being deprecated, which means that Unity Industry will now be the default path for industry customers to access the Unity Editor. To ease the transition, existing UIC customers have until October 3, 2023 to renew their UIC subscription or purchase additional seats for one extra year at the current price. You can also choose to upgrade to Unity Industry.For details and migration paths, visit the FAQ or contact your Unity sales representative.Starting April 3, 2023, new industry customers who make more than $1 million per year in total finances will be required to purchase Unity Industry. This requirement also applies to renewals done after October 3, 2023. If an industry customer makes less than $1 million per year, they can use Unity Pro, Unity Enterprise, or Unity Industry.Industry is identified as a non-games, non-entertainment customer. Users of Educational Versions are also excluded. Industry customers include, but are not limited to, automotive, aerospace, manufacturing, government, architecture, engineering, construction, energy, and retail sectors.To learn more, visit the FAQ.Talk to our team to learn how Unity Industry can help your business build without constraints.]]></description><link>https://unity.com/blog/industry/introducing-unity-industry</link><guid isPermaLink="true">https://unity.com/blog/industry/introducing-unity-industry</guid><pubDate>Mon, 03 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Analyzing your application’s physical memory footprint using Memory Profiler]]></title><description><![CDATA[When it comes to efficiently detecting memory issues and optimizing performance, the information shown on the Memory Profiler, as well as the information’s precision, is key. We’re investing significant effort in this area. In two recent blogs, members of my team introduced Memory Profiler 1.0.0 and shared five key workflows to diagnose and examine memory-related issues in your game.Soon, we will be releasing Memory Profiler 1.1 (an experimental version is available now), which includes updated labels and descriptions to explain how memory works and how application memory footprint is calculated.Since memory footprint continues to be a hot topic in our conversations with developers, I’m here to answer your frequently asked questions – specifically, to cover these three topics:What resident memory isHow application memory footprint is calculatedHow to analyze memory footprintLet’s drill into memory allocation in Unity. When the engine allocates memory, it first reserves multiple memory pages in the virtual address space that can fit the requested allocation. Pages are the smallest units of memory management. Virtual address space and physical storage are each organized into pages, and the page size depends on the platform used. For example, on x86 computers a page size is 4 KB.After the engine has reserved enough pages, it asks the operating system (OS) to “commit” physical storage to memory. This is why allocated memory is often referred to as “committed.” Next, the OS registers that the pages now have physical storage assigned and they can be accessed. Your application-reported “total committed memory” will then increase. However, the physical memory footprint of your application stays the same.The footprint stays the same because, even though you’ve committed your region to physical storage, most OSs are lazy and thrifty, so there’s no assignment of a specific physical storage location. As an example, let’s say you decide to write something in the committed region. There is not yet any physical memory underneath the region, so accessing it will incur a page fault. In response, the OS’s memory manager will allocate a previously available physical page in order to complete your operation. Because all operations are performed with page-size granularity, unaccessed pages of the region will remain empty and without physical memory assigned. Similarly, your application’s resident memory size will increase by the total size of all physical memory pages allocated to complete your operation.If a page has not been accessed for a while or demand for physical memory is high, an OS might offload some pages from your allocated region either to compressed memory or a page swap file, depending on what is supported on your platform.In this case, your application’s reported allocated memory will stay the same but resident memory size will decrease.As you might have already realized, if you only look at allocated memory you may be misled by which allocation consumes your physical memory, which can trick you into optimizing something that isn’t a problem. Not only does this waste your valuable time, you don’t see any difference in your application performance and stability.Overall, your application memory state can be described by this diagram:In summary, here’s how the memory footprint is calculated:Physical memory footprint = Application resident memory + Application compressed memory pagesIn Memory Profiler 1.1, the Summary, Unity Objects, and All Of Memory views will not only show Allocated memory size but also provide information about Resident memory. However, this information will only be shown if the Memory Profiler snapshot is made with Unity 2023.1 or newer. With older snapshots, you’ll still see updated UI and breakdown views, but without information on Resident memory.TheSummary view provides a general overview and an essential metric: Total Resident on Device. If your application needs to run on a platform with limited memory, Total Resident on Device is critical for reviewing low memory warnings and out-of-memory evictions. As a rule of thumb, you shouldn’t go over 70% of the total physical memory available on a device.For detailed analysis, you can use Unity Objects andAll of Memory views. You’ll need to select Resident on Device or Allocated and Resident on Device from the dropdown menu and sort by Resident size to see objects that contribute most to the total physical memory used.When analyzing resident memory usage, remember:Managed memory will be dominantly resident. Mono Heap and Boehm Garbage Collector regularly access objects and make them resident.Graphics memory (estimated) is shown as estimated. On most platforms, we don’t have access to information on the exact whereabouts of the graphics resources, so we estimate size based on available information like width, height, depth, pixel format, and so on. This also means we don’t have information about graphics resources’ residency status. For usability reasons, all graphics objects are shown only in the Allocated view mode.Untracked is all memory reported by the OS as allocated by the application, but which lacks solid information on the source of the allocation. It could be native plugins, OS libraries, thread stacks, etc. On some platforms, we provide additional insights into who might have allocated that memory in the group breakdown.When analyzing Native memory, which contains all Unity non-managed allocations used by objects, you’ll see the Reserved memory item. This is memory allocated by Unity Memory Manager but not used by any Unity object during capture. Here’s some helpful information:Reserved memory can be resident, which means that there might have been an object that was recently deleted.You can access additional information about Reserved breakdown by going to the Memory Profiler settings and enabling the “Show reserved memory breakdown” checkbox. By default, this is disabled, as Reserved breakdown doesn’t always contain enough actionable information and requires a deep understanding of how Unity Memory Manager works.You can learn more about Unity Memory Manager and allocation strategies in the allocators setup documentation.On some platforms, we show additional platform-specific groups if they’re of significant size, like Android Runtime on Android. Here are some notes on Android Runtime:On some versions, Android Runtime tends to preallocate a significant amount of memory but never use it. In that case, allocated memory doesn’t add to the application memory footprint and only the resident part of it needs to be considered.If the Android Runtime resident part is taking up a significant amount of the application memory footprint, use the Android Studio profiler to analyze allocations done in Java.Although Android doesn’t have a page file or memory compression by default, the Linux kernel allows applications to overcommit and allocate more memory than is physically available.When capturing, make sure you understand the device you’re using. Some vendors supply the Android Linux kernel with memory compression (zRAM) or vendor-custom page swap file tools.We hope this overview of what to expect in Memory Profiler 1.1 (experimental version available now) and exploration of various topics around memory footprint have been helpful.My team and I plan to continue improving the Memory Profiler to provide more precise and targeted information, as well as warn you about potential out-of-memory situations and how close they might be. Follow the progress on our product roadmap and tell us what you think.Share your feedback with us in the forums. Be sure to watch for new technical blogs from other Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/analyzing-physical-memory-footprint-using-memory-profiler</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/analyzing-physical-memory-footprint-using-memory-profiler</guid><pubDate>Tue, 28 Mar 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Developing for blindness and low vision in VR with Cosmonious High]]></title><description><![CDATA[In this guest post, Owlchemy Labs Accessibility Product Manager II Jazmin Cano dives deep into how the team used Unity to develop an all-new vision accessibility update for Cosmonious High in virtual reality (VR).At Owlchemy Labs, we have made a dedication in our Accessibility Statement to the pursuit of creating VR games for everyone. Historically, our team has prioritized making significant strides in unsolved areas of accessibility in VR including subtitles, physical accessibility, and height accessibility. We encourage every developer to create with accessibility in mind, and actively incorporate accessibility into our games at launch and through post-launch updates.For our last accessibility update to Cosmonious High, we added a range of gameplay options, including one-handed controller mode, seated player mode, subtitling, and more. If a game can only be played by an audience with no disabilities, it is a sign of an unfinished product. We take pride in forging new paths through research, testing, and partnerships to ensure gaming is available to the widest possible audience.When we started our research in developing for blind and low-vision players, we found that the main issue was the inability to follow a storyline or in-game directions.Oftentimes, there is no subtext available for all of the scenes in a game, and different scenes are used to advance the story. A storyline could be complex and challenging to follow without context or subtext. Other aspects of a game, like completing a puzzle or a task, become difficult when not all pieces are clearly visible for players or when vital clues are given without any text or visual queues.From our research, we found it was important to create a way for players to receive game information through audio descriptions using Text To Speech (TTS). Most people who are blind or have low vision use assistive technology called screen readers, which allows them to navigate screens with a keyboard, and their computer or phone will read out the text. Our game features are similar in the sense that they allow players to navigate virtual spaces using their hands or a joystick as methods for reading out objects and descriptions. Each feature is built to follow expectations regarding screen-reader standards, such as ducking non-TTS audio and allowing the user to cancel TTS mid-description.We haven’t seen narration or TTS in other released VR games before, so we knew launching our approach for accessibility in this area – after researching best practices and playtesting with those who are legally blind or have low vision – would benefit the industry.Developing for blind and low-vision players isn’t just adding audio cues and options. Blindness is a spectrum, and creating gameplay in a way that is fully inclusive of blind and low-vision players also includes feeling and seeing.To accomplish this, we developed more haptic feedback as a method to identify an object when a player highlights it. This is particularly important when a player is completing a puzzle. Players can identify an object and feel it when they have selected it.We’ve also added high-contrast object highlighting, which outlines key objects in the environment, making it easier for players to see the object and understand their selection with haptic feedback.To bring this all together, we incorporated a Grab-and-Release confirmation. Using this, players will receive haptic feedback when highlighting an object that is shown through high-contrast object highlighting, and audio will play to inform them when an object has been grabbed and released.When we started developing this update, we anticipated a few challenges, ranging from design decisions to playtesting. Thankfully, we had a great start to the project after meeting with Steve Saylor, a video game accessibility consultant who is blind. Consulting with Steve, we were able to identify the features we would need and what expectations someone with low vision would have. We did a lot of research, experimentation, and testing to determine what worked best and what we could execute successfully.For the vision accessibility update, we knew we needed to branch out when finding playtesters with low vision to help provide valuable feedback and help with our design. We teamed up with VROxygen to find a group of playtesters with blindness and low vision to provide feedback on our iterations and help us prioritize improvements we needed to make, which worked out well. Opening testing to remote players from anywhere in the world allowed us to get a wide range of perspectives on the project, with feedback coming from people with varying levels of vision.The path to creating this update offered some challenges to consider. Sometimes, what seems like the most obvious answer is not always the best one, especially when developing for accessibility. We took the time to work through each aspect of this update to make sure the features we were adding worked well for those who needed it most.When we enabled TTS early in the project, we started with automatic narration. This meant that any object a player’s hands waved over would be described, even if that meant speaking on top of a previous description that may still be going. For audio descriptions to be valuable, they need to be heard without other audio fighting for priority.This resulted in a few changes that worked well in playtesting. For example, we decided to add a button press to activate descriptions instead of having them read automatically, which led to a more comfortable experience. This gives players agency when deciding if a description is read to them when their hand is placed over an object or pointing at something in the distance. It also prevents accidental TTS from happening if a player moves their hand over objects they didn’t mean to have read.While TTS describes the name of the object and a visual description, it doesn’t take very long. Even with short descriptions, though, we know people would want behavior similar to a screen reader (i.e., the ability to cancel audio while it’s being read).Another thing we learned with regards to audio is the importance of lowering it so that the lower volume allows the TTS audio descriptions to have priority. We ran into a problem where TTS can be triggered during an interaction with an NPC, making the NPC’s dialog quieter and easy to miss. At this time, players are not able to “rewind” or “retrigger” the same audio to play; however, players can wave their hands and NPCs will respond back to help.But one of the hardest parts about building features like these is making sure they will actually help users who need them. The best way of determining usefulness for new accessibility features is through testing. Of course, being able to quickly make new builds for all of our platforms after each round of feedback and development was essential to making this update the best it could be. One unlikely tool we found useful for fast iteration on our designs was Unity's Post-Processing Stack.Before sending builds to playtesters, our developers wanted to test the effectiveness of features internally. Since many of our developers are sighted, we used the Post-Processing Stack and created entries in our debug menu that allowed us modify the visual clarity of what we were seeing in the headset. This helped our developers simulate roughly what it is like to have different levels of reduced vision while playing the game. Since we could now rapidly identify and tackle the most obvious issues, we were able to iterate on designs more quickly and make sure we were getting the most out of the external playtest sessions with blind and low-vision testers.In developing this update, we learned good design practices for blind and low-vision accessibility that we’ll use in future games. One of those learnings comes from an approach that started long before this update.Our developers create with accessibility in mind, and we’ve learned from each accessibility update that starting a project with this approach makes developing future accessible features much easier. For example, making sure objects have proper names and descriptions that are useful as alt text on images requires less effort and saves time.Having large objects and large text with good contrast makes a lot of a VR game’s world easier to see and read. Many players who described their vision as highly blurry could lean in and read much of the game’s text. Players who couldn’t fully make out text would then use the assist button to hear the words as needed.The text in Cosmonious High is stationary, so players don’t need to worry about it being at a fixed distance from their face, moving away from them as they continue to lean forward. One player commented that we made the game accessible before even thinking about vision accessibility as he described the size and colors in the world not specific to this update. While we appreciate the compliment, the design practice of making things larger and easier to distinguish is part of our development process – it’s in our developer documentation.Specific to this update, allowing players to decide when to get audio descriptions, allowing players to cancel audio, and keeping descriptions short with valuable information is key to giving players agency.Developing for blind and low-vision players has added to our arsenal of development tools. We hope to build upon our learnings in all areas of accessibility and plan to launch future titles with more accessibility included. We’re excited to share this update of Cosmonious High as a continuation of our mission to make VR for everyone.Owlchemy Labs’ Cosmonious High is available on multiple platforms. Check out more blogs from Made with Unity developers here.]]></description><link>https://unity.com/blog/games/developing-for-blindness-low-vision-in-vr-with-cosmonious-high</link><guid isPermaLink="true">https://unity.com/blog/games/developing-for-blindness-low-vision-in-vr-with-cosmonious-high</guid><pubDate>Thu, 16 Mar 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Improving job system performance scaling in 2022.2 – part 2: Overhead]]></title><description><![CDATA[The 2022.2 and 2021.3.14f1 releases have improved the scheduling cost and performance scaling of the Unity job system. In part one of this two-part article on what’s new with job systems, I offered some background information on parallel programming and why you might use a job system. For part two, let’s dive deeper into what job system overhead is and Unity’s approach to mitigating it.Overhead means any time the CPU spends not running your job, from the moment you begin to schedule it until the moment it finishes, unblocking any waiting jobs. Broadly, there are two areas where time is spent:1. The C# Job API layer2. The native job scheduler (which manages and runs all scheduled C# and, internally, C++ jobs)The C# Job API’s purpose is to provide a safe means to access the native job system. While this is a binding layer for the C# to C++ transition, it’s also a layer that allows you to prevent accidental scheduling of C# jobs that will run into race conditions or deadlocks when accessing NativeContainers from within a job.In addition, this separation provides a richer way of creating jobs themselves. At the C++ layer, jobs are just a pointer to some data and a function pointer. But with the C# API on top, you can customize the types of jobs you schedule, allowing for better control over how job data should be split up and parallelized to fit user-specific use cases.When scheduling a job, the C# job binding layer copies the job struct into an unmanaged memory allocation. This allows the lifetime of the C# job struct to be disconnected from the job lifetime in the job system, since this is affected by the job’s dependencies and overall load on the platform. The job system then conditionally performs safety checks in Editor playmode builds to ensure a job is safe to run.These steps are important, but they are not free and contribute to job system overhead. Since job size can vary, as well as the number of NativeContainers and dependencies a job might have, the cost to copy jobs and validate their safety is not fixed. Because of this, it’s important Unity keeps costs small and constrained to linear computational complexity.In the 2021.2 Tech Stream, the engineering team made significant improvements to the job safety system by caching the safety check result for individual job handles. This is particularly important, since the safety system needs to understand entire chains of job dependencies and each native memory reference all jobs contain to understand which may be missing dependency information and to which job a dependency should be added to. This can result in a non-linear amount of items to iterate over when scheduling (i.e., for each job and its dependencies, check the read/write access for each NativeContainer the job refers to and any job referring to the NativeContainers).However, Unity can take advantage of the fact that C# jobs are only scheduled one at a time, and check safety during this scheduling. Instead of rescanning all jobs each schedule, we can quickly determine if revalidating job dependency chains is necessary or not, allowing large amounts of work to be skipped. For even small job dependency chains, this dramatically reduces the cost of job safety checks. Ideally there should be no reason to turn job safety checks off when developing (job safety checks are not on in player/shipping builds).Whenever a C# or C++ job is scheduled for execution, it goes through the job scheduler. The scheduler’s role is to:Track jobs via job handlesManage job dependencies, ensuring jobs only start executing once all dependencies have completedManage “worker threads,” which are the threads that will execute jobsEnsure jobs are executed as quickly as possible – usually meaning they should run in parallel when dependencies allowAdditionally, while the C# Job API only allows jobs to be scheduled from the main thread, the job scheduler needs to support multiple threads scheduling jobs at the same time. This is because the underlying Unity engine uses many threads which schedule jobs and can even schedule jobs from within jobs. This functionality has pros and cons, but requires much more scrutiny for correctness and adds the requirement that the job scheduler must be thread safe.In the 2017.3 release, the basic look of the job scheduler was:Queue for jobsStack for jobsSemaphoreArray of worker threadsThe typical usage follows this pattern: As jobs are scheduled, they are enqueued into a global, lock-free, multiple-producer, multiple-consumer queue, which represents jobs that are ready for handling by a worker thread. The main thread then signals using a semaphore to wake up worker threads.The number of workers told to wake up depends on the job type being scheduled – single jobs such as IJob only wake a single worker, since that job type doesn’t spread work across multiple worker threads. IJobParallelFor jobs, however, represent multiple pieces of work that can be run in parallel. While one job is scheduled, there might be many pieces for some or all workers to help with at the same time. As such, the scheduler figures out how many workers can potentially help and wakes that number up.Once awake, worker threads are where the actual job work happens. In 2017.3, they were responsible for dequeuing a job from the job queue, ensuring all relevant job dependencies were complete. If they weren’t complete yet, the job and incomplete dependencies would be added to a lock-free stack as a way to jump to the front of the queue to try and run again. Worker threads do this in a loop until either the engine signals that it wants to shut down, or there are no more jobs in the stack and queue. At which point, the worker threads go to sleep by waiting on a signal from the main thread semaphore.The job scheduler creates as many worker threads as there are virtual cores on the CPU, minus one by default. The intention here is for each worker thread to run on its own CPU core, while leaving one CPU core free for the main thread to continue running. In practice, on platforms where a core isn’t reserved for non-game processes, it can be better to reduce the amount of worker threads so computation done by the operating system or driver threads doesn’t compete with the game’s main or job worker threads.Since the main thread is the primary place where jobs are scheduled from, it’s very important to not delay the main thread. Doing so directly affects how many jobs enter the job system and thus how much parallelism can occur within a frame.With the main thread theoretically scheduling lots of jobs and the rest of the CPU cores executing those jobs, we should be able to maximize how much parallel work can be done on the CPU and allow performance to scale as the hardware changes. If we had more worker threads than cores, the operating system could context switch the main thread, and switch to a worker thread. Having an additional worker thread running might help empty your job queue faster, but it would certainly prevent new work from entering the queue, which ultimately has a larger negative effect on performance.There are a couple of potential problems with the above job scheduler approach that can lead to job system overhead. Let’s look at some examples.Main thread schedules an IJob (non-parallel job) with no dependencies:A job is added to the queue, and a worker thread is signaled to wake upA worker thread wakes upThe worker executes the jobThe worker checks for any more jobs to executeThe worker goes to sleep since there are no more jobsOnce the main thread signals using the job scheduler’s semaphore, one of the sleeping worker threads (not necessarily worker 0) will wake up. Waking up and context switching takes some time on the worker core. This is because, while the worker thread is asleep, the CPU core that the worker thread will end up running on was likely doing something – maybe running another thread spawned by the game or some other process on the machine that was using the thread.To enable threads to be paused and resumed later, a thread’s register state needs to be saved, instruction pipelines need to be flushed, and the switched-to thread’s state needs to be restored. Even signaling the thread takes time on the main thread’s core, since notifying which thread to wake up is handled by the operating system. Ultimately, this all means that work is being done on the main thread core and the worker thread core that is not our job, and thus is overhead we want to reduce.How quickly workers can be notified and how much time an individual job takes to run can also have an impact on the system. For instance, if you take the above use case but schedule two jobs instead of one:A job is added to the queue, and a worker thread is signaled to wake upThe second job is added to the queue, and a worker thread is signaled to wake upIn some order, but twice: A worker thread wakes upA worker executes the jobThe worker checks for any more jobs to executeThe worker goes to sleep since there are no more jobsIf the timing works out, you have two workers working in parallel on the job.However, if one of the jobs is too small and/or it takes too long to signal and wake up both workers, one worker might steal all the work in the queue, and as a result we’ve signaled a worker for no reason.This type of job starvation and wake <-> sleep cycle can end up being quite expensive and limit the amount of parallelism the job system offers.You might be thinking, “Isn’t overhead from signaling threads and context switching a cost of doing business when dealing with threads in the first place?” You certainly aren’t wrong. But, while you don’t have direct control over how expensive signaling or waking up threads is, you can control how often those operations occur.One solution to avoid waking up workers for no reason is to only wake them when you suspect there are lots of work items in the queue for workers to take justifying the wake-up cost. This can be done by batching: Instead of signaling workers as soon as you schedule a job, add the job to a list and, at specific times, flush that batch of jobs into the job system, waking up an appropriate amount of workers at the same time.There is still a risk that the actual wake-up takes too long, the batched jobs are very small, or the number of jobs in a batch is just not very high. In general, the more jobs you include in the batch, the more likely it is to avoid overhead from waking up threads for no reason. Unity maintains a global batch which is flushed whenever a call to JobHandle.Complete() is called. So if you need to explicitly wait for a job to complete, try to do so as late and infrequently as possible, and generally prefer scheduling jobs with job dependencies to best control safe access to data.You might also be asking yourself, “If signaling threads and waiting for them to wake up/go to sleep is purely overhead, why don’t we keep our threads awake all the time looking for work?” When there are plenty of jobs in the queue, this can actually occur naturally. Unless the operating system deems the worker thread to be lower priority than some other work (or is explicitly time sliced and should be swapped to give other threads their fair share of CPU time – it depends on your platform), worker threads will happily keep working.However, as with the PartialUpdateA and PartialUpdateB functions we saw in part one, not all jobs are parallelizable and free of data dependencies. As such, you usually need to wait for some subset of jobs to complete before you can run others. As a result, we see bottlenecks in a job graph’s parallelism when there becomes fewer runnable jobs (jobs with no outstanding dependencies) than there are worker threads, resulting in some workers having nothing productive left to do.If you don’t everlet worker threads sleep, you can run into a handful of issues. When worker threads constantly check for new jobs and fail to find any, this is considered “busy waiting,” or work that’s wasteful and doesn’t progress the program. Keeping all cores running with maximum parallelism, but without progressing the game, is a drain on battery life. Not only that, if a core doesn’t have idle time, without sufficient cooling the CPU’s temperature will rise, leading to downclocking – running slower to avoid damage from overheating. In fact, on mobile platforms, it’s not uncommon for entire CPU cores to become temporarily disabled if they get too hot. For a job system, being able to use cores efficiently is very important, so there is a balance between putting workers asleep, and having them constantly loop looking for new jobs, hoping they get lucky.Another area that can generate overhead in the design above is the lock-free queue and stack. We won’t go into all the nuance of implementing these data structures, but one common trait of lock-free implementations is the use of a compare-and-swap (CAS) loop. Lock-free algorithms don’t use locking synchronization primitives to provide safe access to shared state, but instead use atomic instructions to carefully create higher-order atomic operations such as inserting an item into a queue in a thread-safe manner. However, perhaps unintuitively, lock-free algorithms can still prevent one thread from progressing until another is complete. They can also have secondary effects on the CPU instruction and memory pipelines, hurting performance scaling. (“wait-free” algorithms would allow all threads to always progress, but that doesn’t always provide the best overall performance in practice.)Here is a contrived example of adding a number to a member variable, m_Sum, with a CAS loop:CAS loops rely on the compare-and-swap instruction (here we use the C# Interlocked library abstracting platform specifics away), which “compares two values for equality and, if they are equal, replaces the first value.” Since we want Add() function users to not worry about this function potentially failing, a loop is used to retry if it fails because some other thread beat us to updating m_Sum.This retry loop is, in essence, a “busy-wait” loop. This has a nasty implication for performance scaling: If multiple threads enter the CAS loop at the same time, only one will ever leave at a time, serializing the operations each thread is performing. Fortunately, CAS loops generally do an intentionally small amount of work, but it can still have large negative impacts on performance. As more cores execute the loop in parallel, it will take each thread longer to complete the loop while the threads are in contention.Further, because CAS loops rely on atomic read-and-writes to shared memory, each thread generally requires its cache lines to be invalidated on each iteration, causing additional overhead. This overhead can be very expensive in comparison to the cost of redoing the calculations inside the CAS loop (in the case above, redoing the work of adding two numbers together). So, how high the cost is can be non-obvious at first glance.Under the 2017.3 job scheduler, when worker threads were not running jobs, they were looking for work in either a shared, lock-free stack or queue. Both of these data structures used at least one CAS loop to remove work from the data structure. So, as more cores became available, the cost of taking work from the stack or queue increased when the data structures had contention. In particular, when jobs were small, worker threads proportionally spent more time looking for work in the queue or stack.In a small project, I’ve generated deterministic job graphs that a typical game may have for its frame update. The graph below is composed of single jobs and parallel jobs (each parallelizing into 1–100 parallel jobs), where each job may have 0–10 job dependencies and the main thread has occasional explicit sync points where it must wait for certain jobs to finish before scheduling more. If I generate 500 jobs in the job graph, and make each take a fixed amount of time to execute (each portion of a parallel job takes this time as well), you can see that, as more cores are used, overhead in the job system increases.For jobs that take 0.5μs, once there are 20 workers, the frame updates as fast as not using the job system at all, and runs nearly twice as slow when using all cores on my machine. By default, all cores are used in Unity, so with 1μs jobs, there is almost no improvement in performance despite using 31 worker threads. This is a direct result of high contention on the lock-free queue and stack. Luckily, user jobs tend to be larger in size and can hide this overhead. However, the scaling issue is there, and small jobs are still common enough (especially for parallel jobs). Even when using larger jobs, your scheduling patterns and worker timing can cause large amounts of overhead due to contention with the global, lock-free stack and queue in the job scheduler.By now, you can see that there are a few areas our team needed to address to reduce overhead in the job system, both on Unity’s side and on the game creator’s side:Avoiding stalls on the main thread: Signaling to wake worker threads is expensive – keep this to a minimum.Modifying state on the main thread shared with worker threads is likely to lead to cache invalidations and potential busy-waiting.The main thread should schedule jobs frequently – avoid explicitly waiting on jobs to .Complete(). Prefer submitting jobs with dependencies instead.Avoiding stalls on worker threads:Worker thread efficiency directly impacts parallelism. Avoid contending on shared resources where possible.Busy-waits on worker threads will drain battery life and can result in downclocking due to increases in temperature.While Unity can’t change how many jobs users submit in their games, there are a decent number of issues that our engineers can tackle with a different job scheduler approach. In the 2022.2 release, the job scheduler, at a high level, breaks down into a few basic components:Array of worker threadsArray of queues for jobsArray of semaphoresThis is very similar to the previous job scheduler. However, the main difference is the removal of the shared state between the main thread and worker threads. Instead, we make the queues and semaphores (or futex on platforms that support it) local to each worker thread. Now, when the main thread schedules a job, it’s enqueued into the main thread’s queue rather than a global queue.Similarly, if a worker thread needs to schedule a job (e.g., a job schedules a job in its Execute), that job is scheduled in the worker’s own queue rather than in the main thread queue. This reduces memory traffic, since workers reduce the frequency of invalidating cache lines when they write to a queue. As such, workers don’t read/write to all the different queues at the same frequency.The worker loop has also changed, now that there are more queues to work with:Workers look in their own queue for work and only look at other worker queues when theirs is empty. Since workers prefer their own queues for dequeuing and enqueuing work, the amount of contention on any one queue is reduced.Another difference is how threads are signaled to wake up. Worker threads are now responsible for waking up other worker threads, and the main thread is responsible for ensuring that at least one worker thread is awake when it schedules a job.This change in responsibility allows the main thread to remove excessive overhead since it no longer needs to be solely responsible for waking threads when parallel jobs are submitted. Instead, the job system performs tracking to know if it needs to wake any workers at all. The main thread can ensure a worker is always awake to make progress on jobs and when workers wake and find a job in its own queue or another’s, workers can signal other workers to wake up and help empty the queue if needed.The queue separation for workers also provides some interesting leeway for configuration and optimizations, which our team is continuing to add to and improve on. In 2022.2, users should see reduced cost on the main thread to wake up worker threads and improved throughput of jobs on worker threads, regardless of how many cores their platform has. Additionally, while Unity has not backported the queue separation to 2021.3 LTS, we have brought back the design change to make worker threads responsible for signaling each other rather than the main thread solely. High job system overhead on the main thread due to signaling the global semaphore should no longer be an issue as of 2021.3.14f1.If you have questions or want to learn more, visit us in the C# Job System forum. You can also connect with me directly through the Unity Discord at username @Antifreeze#2763. Be sure to watch for new technical blogs from other Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/improving-job-system-performance-2022-2-part-2</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/improving-job-system-performance-2022-2-part-2</guid><pubDate>Tue, 14 Mar 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Eyes, hands, simulation, and samples: What’s new in Unity XR Interaction Toolkit 2.3]]></title><description><![CDATA[The XR Interaction Toolkit (XRI) is a high-level, component-based interaction system for creating VR and AR experiences. It provides a common framework for interactions and streamlines cross-platform creation. This update adds three key features: eye gaze and hand tracking for more natural interactions, audiovisual affordances to bring interactions to life, and an improved device simulator to test in-Editor. To help you get started, let’s explore each addition in more detail.For a more in-depth breakdown of the update, check out what’s new in XRI 2.3, or explore the sample project.XR developer and founder of LearnXR.io, Dilmer Valecillos, has put together an awesome video tutorial on XRI 2.3:Along with XRI 2.3, we’re shipping the Unity XR Hands package in prerelease. XR Hands is a new XR subsystem which adds APIs to enable hand tracking in Unity. It includes built-in support at release for OpenXR, with support for Meta platforms soon to follow. In addition, external hardware providers can pipe in hand-tracking data from their existing XR SDK by following the provided API documentation.This release of XRI includes the Hands Interaction Demo, a sample package showcasing a hand interaction setup where you can switch between hands and controllers without changing anything in your scene on-device. Using this functionality, your content may start with a standard controller setup, but transition seamlessly to hands for specific tasks or natural interactions in gameplay.XRI 2.3 also supports natural poking interactions through the XR Poke Interactor. This allows you to poke using hands or controllers on 3D UI or XRI-enabled UGUI Canvas elements.New headsets like the HoloLens 2, Meta Quest Pro, and PlayStation® VR2 include sensors to track where users are looking. Gaze-based interactions can help you build XR apps that feel more natural and provide an additional way to engage with content. To support this type of interaction, we have introduced the XR Gaze Interactor, driven by eye-gaze or head-gaze poses. You can use this interactor for direct manipulation, like hovering or selecting by dwelling on interactables.Since we generally don’t recommend that apps be controlled entirely with eyes, we have introduced an additional form of controller and hand-based interaction assistance to help users select specific objects: the XR Interactable Snap Volume. This component complements the gaze interactor, as it allows for snapping interactions to a nearby interactable when aiming at a defined area around an object. Snap volumes can also be used without the gaze interactor to enable easier object selection for users.Tobii, a global leader in eye-tracking technology, assisted with the concepts and research. If you’re interested in learning more, you can browse their knowledge base of eye-tracking concepts.Using hands for interaction is different from using controllers in that there’s no haptic or tactile feedback to confirm when an interaction takes place. The affordance system, a set of performant components that animates objects or triggers sound effects in reaction to an object’s interaction state, helps mitigate this feedback gap. This system is built to work with any combination of interactor and interactable in both new and existing projects.The new XR General Grab Transformer reduces the complexity of the hierarchy and allows one general-purpose transformer to support both single and two-handed interactions on an interactable, rather than multiple grab transformers. It also enables two-handed scaling, letting you scale objects up and down by moving your hands apart or together, similar to zooming in and out on a mobile phone.We’ve also added an Interaction Group component. This behavior allows a developer to group interactors together and sort them by priority, which allows only a single interactor per group to interact at a given time. For example, when a Poke, Direct, and Ray Interactor are grouped together, poking a button will temporarily block the other interactors from interacting with the scene. This can keep you from accidentally grabbing something nearby when you’re working in the distance, and prevents rays from shooting into the scene while you’re grabbing or poking an object up close.Testing XR apps on a headset is important, but testing in-Editor helps reduce iteration time. In this release, the XR Device Simulator received a major usability update with a new onscreen UI widget that makes it easier to see what inputs drive the simulator, and which ones are currently active.New simulation modes have also been added so you can toggle between commonly used control modes. At startup, the device simulator activates the new first-person shooter (FPS) mode, which manipulates the headset and controllers as if the whole player was turning their torso. You can then cycle through the other modes to manipulate individual devices: the headset, the left controller, and the right controller. To use the XR Device Simulator, import the sample from the Package Manager.It’s been a long time coming, and our updated sample project is finally here. It showcases the array of XR experience building blocks you can use in XRI 2.3. The project is divided into stations that help you understand how each major feature of XRI works, and includes both simple and advanced examples for each. You can access the sample project on GitHub and use it to kick-start your next XR app.Though it’s still early days for eyes and hands in the XR Interaction Toolkit, we’re always working to make building expressive XR experiences easier. As we head towards XRI 2.4 and beyond, we would appreciate your feedback. We’d also love to see what you build with these tools, so feel free to include the hashtag #unityXRI when posting on social media.]]></description><link>https://unity.com/blog/engine-platform/whats-new-in-xr-interaction-toolkit-2-3</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/whats-new-in-xr-interaction-toolkit-2-3</guid><pubDate>Mon, 13 Mar 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[The water technology behind Avatar: The Way of Water]]></title><description><![CDATA[Wētā Digital – now part of Unity – developed many of the tools and solutions used to bring the world of Avatar: The Way of Water to life. Here, we take a look at the CGI technology behind the water. If you’re interested in being among the first to access some of the tools used in the film, you can register for the Unity Wētā Tools beta through our website.James Cameron is no stranger to working with water. Titanic aside, in 2012 he made a record-breaking solo dive, piloting a submarine to the bottom of the Mariana Trench in the Pacific Ocean: Earth’s lowest point at nearly 11 kilometers deep. As he said in the resulting 2014 documentary, Deepsea Challenge, “Down here you feel the power of nature’s imagination, which is so much greater than our own.”It must have been truly remarkable, then, seeing as the world of Pandora and its stunning visuals ultimately came from Cameron’s own imagination.Translating Cameron’s vision, which for the sequel included the new reef village of the aquatic Metkayina clan, required extensive use of visual effects – especially for the dominant water setting.The tools and solutions used to create the film’s VFX – including the award-winning water effects – were developed by Wētā Digital, now a division of Unity.To ensure that the interactions between the characters and water elements were as realistic as possible, a team of experts, including Unity and Wētā’s water simulation VFX specialists Alexey Stomakhin, Steve Lesser, Joel Wretborn, and Sean Flynn, were brought together to form the “Water Taskforce”. This team’s water toolset was recently recognized with a win at the Visual Effects Society (VES) Awards, with the Emerging Technology Award.Extreme attention to detail saw the taskforce conduct extensive research and experimentation in collaboration with New Zealand’s National Institute of Water and Atmospheric Research (NIWA) to find the best approach to creating CGI water. This included taking into account the effects of tides, wind, and the sea floor on aquatic environments.Avatar: The Way of Water required water effects for 2,225 shots, some taking up to eight days of simulation to achieve the high resolution needed.There were also numerous scenes where water interacted with over 50 creatures in a single shot. This presented the challenge of needing simulations to be accurate at scale, from large domains for bigger creatures, to submillimeter resolution for thin film on skin.As it was not computationally feasible to create a single-representation water system, the toolset was developed with a number of distinct solvers to keep compute times to a minimum.“The Loki water state machine was crucial for delivering the sheer volume of large-scale water shots in this movie. In a typical VFX-heavy movie, water shots of this complexity are few and far between and require many iterations and passes from very experienced artists. In contrast, our state machine approach was able to deliver great results after just a single pass, even by artists who had just entered the industry.” – Sean Flynn, simulation lead, Unity x Wētā DigitalA majority of the water tools developed by the team sit within Wētā’s proprietary simulation framework, Loki. This piece of tech includes solvers for multiple water states, including procedural water waves, bulk water, spray, mist, hero bubbles, diffuse bubbles, foam, capillary surface waves, thin film, and residual wetness.State machineMany of these solvers sit within the Loki state machine – an airborne spray system. The water states are coupled with the surrounding air, with transitions between states handled in a mass- and momentum-conserving way.Rather than a one-size-fits-all approach, the Loki state machine allows multiple solvers to run in tandem. Each solver is optimized for the level of detail required by its respective state, such as bulk water, spray, and mist. This helps keep large-scale water simulations efficient while still capturing the very fine droplet interactions required by spray and mist.All of the states including the surrounding air are completed in a single simulation pass. As all solvers are computed with proper physical interactions between them, this is what helped to create such natural and realistic water interaction throughout the film.During SIGGRAPH 2019, a practical approach for modeling close-up water interaction with characters was presented, with a focus on high-fidelity surface tension and adhesion effects as water moves over and drips from skin. Using a scene from Alita: Battle Angel (a screenplay also written by Cameron), the team showed how this method allowed for a resolution of effects that was performant enough – on the scale of a fraction of a millimeter – to cover a whole character with a layer of water.The approach was to adapt an existing particle-in-cell (FLIP/APIC) solver to capture small-scale water-solid interaction dynamics. This technique was then advanced during the production of Avatar: The Way of Water to handle any sequence that involved characters emerging from water.“This was not a cheap solution, as we had to simulate water dynamics at sub-millimeter scales. The results would often take days to compute. We had to ensure our solver was scalable, robust and reliable enough to produce physically plausible visuals out of the box, with minimal tuning required from artists.” – Alexey Stomakhin, principal research engineer, Unity x Wētā DigitalTo achieve believable dynamics in underwater scenarios – for example, when characters breathe underwater in Avatar: The Way of Water – the approach to underwater bubbles was to simulate them together with a narrow band of water around the region of interest. The bubbles themselves would be represented in two parts: a hero and diffuse counterpart.The hero counterpart captures bigger bubbles with more explosive and turbulent behaviors. It utilizes an incompressible two-phase Navier-Stokes solve on a Eulerian grid, with the air phase represented by FLIP/APIC particles to facilitate volume conservation and accurate interface tracking.The diffuse counterpart captures the motion of smaller bubbles below the resolution of the Eulerian grid. The team has developed a novel scheme for coupling diffuse bubble particles with bulk fluid that could also be applied to other submerged, porous objects such as sand, hair, and cloth.To enhance the visual detail of a water surface simulation, the team from Wētā Digital and IST Austria developed a method of post-processing that took a simulation as an input, and increased its apparent resolution by simulating detailed Lagrangian water waves on top of it.Linear water wave theory was extended to work in non-planar domains with Lagrangian wave packets attached to spline curves that would evolve over the bulk fluid surface. This method produces high-frequency ripples with dispersive wave-live behaviors, customized to the underlying fluid simulation.A technique was developed for the realistic movement of underwater bubbles – created by movement in the water – reaching the water surface and converting into foam. This was important for nearly all of the water scenes in Avatar: The Way of Water.Grid-based Navier-Stokes simulators – usually reserved for capturing large-scale motion such as bulk fluid – are inherently limited by their grid resolution, making this method impractical for small-scale phenomena like spray and mist from breaking waves. These whitewater effects are usually simulated as independent Lagrangian particles.“One key aspect of our whitewater method is the interaction of two solvers: a grid-based fluid solver coupled with bubbles, and a SPH solver for foam constrained to the water surface. The declarative solver framework in Loki is what makes building and supporting these complex systems possible in production without having to develop new solvers from scratch.” – Joel Wretborn, senior research engineer, Unity x Wētā DigitalThe key aspect most of the existing solvers neglect are the collective effects: groups of bubbles rise faster than single bubbles due to their combined buoyancy, and the collection of many bubbles can have a significant impact on the motion of the water.The new technique addresses this limitation by simulating bubbles two-way coupled with the surrounding fluid. This effectively captures collective bubble effects, and creates a more connected look between bubbles and the motion of the fluid. As bubbles reach the surface they transition into "wet" foam particles constrained to the water surface, discretized with smoothed particle hydrodynamics (SPH). In the end this created believable whitewater dynamics in both close-up and large ocean shots.The simulation technology used by the Water Taskforce was created by present and former colleagues at Wētā Digital, as well as friends from Wētā FX and academic institutions, including: Alexey Stomakhin, Joel Wretborn, Kevin Blom, Gilles Daviet, Steve Lesser, John Edholm, Noh-Hoon Lee, Eston Schweickart, Xiao Zhai, Sean Flynn, Andrew Moffat, Gary Boyle, Tomas Skrivan, Andreas Soderstron, John Johansson, Christoph Sprenger, Ken Museth, and Chris Wojtan. Learn more about Unity Wētā Tools beta.]]></description><link>https://unity.com/blog/industry/technology-behind-avatar-the-way-of-water</link><guid isPermaLink="true">https://unity.com/blog/industry/technology-behind-avatar-the-way-of-water</guid><pubDate>Fri, 10 Mar 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[AAA vets share advice on setting up a scalable DevOps toolchain]]></title><description><![CDATA[Monster Closet Games is a small studio with big ambitions – and the experience to match. Most of the core team has been in the industry for 20-plus years, and they’ve worked on a number of gaming’s biggest franchises, from Assassin’s Creed and Prince of Persia to Far Cry and Halo. They’re currently developing an online multiplayer title codenamed Project Shrine, with plans to launch on PC and current-gen consoles.“High-level, it’s a third-person co-op dungeon raider,” says Monster Closet CEO Graeme Jennings. “You and your group get together, build synergies between your characters, and raid dungeons for treasure. It’s about working together as a team.”Teamwork is at the heart of Monster Closet’s approach to game development, and the studio plans to stay tight-knit and focused. “I’d rather have 40–50 developers who love working together, who love the way we work, and who build great games because of that,” says Jennings. “I have a genuine belief that great teams, with the right tools, can build great games.”Monster Closet’s artists and developers are used to working with a powerful tech stack of proprietary solutions. Starting over from scratch meant this wasn’t an option, so in the first few months, the team carefully curated a toolchain that would scale with their ambitions.For Project Shrine, Monster Closet is accelerating production with Unity’s engine-agnostic DevOps solutions and automations, including Unity Version Control for source control and Backtrace for error tracking. We interviewed Monster Closet’s lead online programmer, Patrice Beauvais, and CTO, Thomas Félix, to learn about what they’ve been creating and how they built a tech stack designed to scale.What did you consider when you started building your tech stack?Thomas Félix: A few of us have had different experiences with live games, and we wanted to have a solid DevOps foundation that could support that in the long term. Even though GAAS [games as a service] is not at the core of our game, we wanted to make sure we had a powerful tech stack that would help us release and iterate quickly.We all had experience with Perforce, but we’re not necessarily big fans – it works well enough, but we had been doing things that weren’t really meant to be done with it. We were also looking at Git as a solution, but then we found Unity Version Control.On paper, Unity Version Control mixed the great approach you get with something like Git, but also something much more powerful like Perforce to manage data. We were seduced by Unity Version Control’s task branch workflows; after about six months of evaluations, we decided to give it a try. At that time, we were around six or seven people. Because the team was growing slowly, it was a nice, smooth ramp-up. We’re now at around 43 team members, and so far, so good.What was your process for testing this version control system?Patrice Beauvais: For us on the tech side, we didn’t want to have half our project on Git and half on Perforce. We know how much of a burden it is to have to use and maintain two different source code management tools – it’s common with live service games where the online systems and game data aren’t necessarily fully integrated.And a team of your size just couldn’t support that type of approach – the fact that Unity Version Control can facilitate both of those workflows is helpful?Patrice Beauvais: Totally.What kinds of problems have you encountered previously using two different version control systems?Thomas Félix: In game development, you always need to build customizations for the tools you use, no matter how good they are. Unity Version Control is a great example – even though it works well, we still found ways we wanted to tailor it to our workflows. If you have to support two source control systems, you double that work, which is always painful. Someone who’s good with Git might not be as familiar with Perforce, and vice versa. Training people takes twice as long.Patrice Beauvais: For me, the worst part is integrating data between two different version control systems. If you’re using Perforce but your data library is stored in Git, that data will need to go back into Perforce, so the two need a way to interface. Even though there are many solutions, these interactions aren’t really meant to happen, and sometimes you lose the project history. A bigger team can make it work, but I’m not going to spend six months building a solution to migrate data from Git to Perforce.It sounds like your team has used many different version control systems over the years. What are the benefits and challenges of some of the solutions you’ve explored?Thomas Félix: Let’s start with Perforce – it’s super resilient, it manages data very well, and it’s not that complex for nontechnical team members. You don’t find that anywhere else, really, except with Unity Version Control. On the other hand, the big monorepos you see in Perforce aren’t really suitable for game development – fast integration, multiple branches, that kind of thing. You can manage with Perforce, but it’s far from ideal, especially if you want to build a robust CI/CD pipeline.Patrice Beauvais: Git’s UI is great for programmers, but I probably wouldn’t ask an artist to work with it. It’s not ideal for managing large files and data, and it doesn’t support locks natively very well, yet.Thomas Félix: Unity Version Control is a better solution in many regards – the UI is tailored for content creators, so it’s great for usability. We see Unity Version Control as the perfect marriage of Git and Perforce.Programmers usually want to be in Git, and you can get pretty much the same workflows in Unity Version Control. For nontechnical content creators, it’s easy to submit their data, which solves one of the biggest problems teams run into with source control.Data loss is the worst thing that can happen to us. Code is easy to handle in every source control solution, but data is always tricky. We cannot afford to lose work, and each mistake made on the data side means paying for it a thousand times later on. We try to be very, very careful with that. With Unity Version Control, it’s a win for both our programmers and content creators.Do you have any best practices you can recommend for maintaining build integrity?Thomas Félix: For a small company like ours starting out, we knew we couldn’t afford to have broken builds because we submitted bad data or code to the main branch.With Unity Version Control, we never work in the main branch. We’re always in control of it, it’s always stable, and the mergebot actually does most of that work for us. That really resonated with us when we were trying it out, and it’s one of the first things we put in place, even when we were just five people working on the main build. It’s worked really well: The main branch is almost never down, and it’s been like that for almost two years now.How does Unity Version Control handle speed when working with large files and switching between branches and workspaces?Thomas Félix: In terms of task branches and switching back and forth, that works well, too. It takes a bit of time for people to get used to this workflow – task branches are a new concept to many people, and it’s maybe not as fluent immediately for artists as it is for programmers.That being said, every week – not every day – we do catch small problems through mergebots and our CI/CD processes, but they never enter the main branch or break the build. It takes a bit of time to get used to, but working in one branch will always be quicker than working across two – not by much, but if you step back and look at your pipeline as a whole, you start to realize it’s a much, much better way of working. At least for us, as a small-to-medium-sized company, it’s perfect.So there’s a culture and learning change you have to make to move to continuous deployment, but it seems like you’re saying you’ve already caught a lot of bugs or other potential issues before they even hit main.Thomas Félix: Totally. I would never go back to one-branch development. A team like us just can’t afford to spend days debugging or fixing problems that hit main.When we interviewed Apocalypse Studios, they discussed the “culture shift” that task branch workflows can require. They were using Perforce before Unity Version Control and talked a lot about branches versus streams. What’s your take on that?Thomas Félix: Branches and streams are quite different to me. If Unity Version Control didn’t exist, we could probably build something around streams and try to get the same thing going, but it would be complex and error-prone. In Unity Version Control, it’s much easier and much safer, because branching is what it’s built for.In Perforce, streams are the equivalent of tasks. If you’re super technical, you can make it work, but I would never put that in the hands of artists. With Unity Version Control, currently we have more than 1,000 branches – most of them are archived, and we have about 10–15 open at any given time. I’m not sure I’d like to have 1,000 project branches in Perforce.What challenges do you anticipate as you move further along in development? What challenges have you faced already?Patrice Beauvais: As we mentioned, people aren’t immediately used to the task branch way of working. For artists, it’s really new to them, so we’re careful to explain how it works and why we’re doing it.Thomas Félix: That’s true. People weren’t resistant to it or anything, but it’s definitely a cultural switch. Anyone looking to switch to Unity Version Control, like we did, needs to take that into account. It’s a better way of working, but you have to be willing to think outside the box. We started fresh, from pretty much nothing – no office, no infrastructure, and a very small team – so it was a little easier for us than it might be for other studios. Building your infrastructure in the cloud sounds cool, but it comes with challenges in terms of iteration time, costs, setup, security…. In the end it’s a win, but it took us some time to get a reliable workflow up and running.You’re also using another of Unity’s engine-agnostic solutions: our verified solutions partner, Backtrace. Can you tell us what your error tracking pipeline looks like?Thomas Félix: We use Backtrace to track every single bug in most of our applications – the first ones, obviously, being the game and the Editor. We mentioned before that we built some tools around Unity Version Control – Backtrace is integrated there, too.It didn’t take long to set it up, and it gave us access to some top-class tools, dashboards, and workflows. We were able to get a lot of the things we had in place at previous companies up and running pretty easily. After being operational for around six months, we already had visibility on all the crashes in the game, the Editor, and our tools. It wasn’t something I expected to get so early when starting a new studio, to be honest.Patrice Beauvais: It’s a super good tool. At Ubisoft, I worked on a proprietary solution like Backtrace for two or three years. Backtrace is really feature-forward – it’s even faster than what I was working on, and was easy to implement. Again, we did add our own customizations for custom data, and worked to integrate it with our server, which is on Linux.Thomas Félix: We were quite impressed by the time it took to set up Backtrace. Two or three days and we were already receiving crashes, so we decided to move forward.What did you do to ensure the process of implementing Unity Version Control went smoothly?We’ve shipped a lot of big games, and we try to use that experience to think about how we can apply it in new contexts. That’s why we ended up going with Unity Version Control, and with Backtrace as well. The tricky part is making sure we don’t invent problems we don’t have – we’re not a 1,000-person studio anymore!We’re always trying to find a balance between how we leverage our experience while reminding ourselves that we’re not trying to build the next big AAA game. We still want to make something great, and to do that, we need the best workflows – and Unity Version Control fits perfectly.What was your process for testing this version control system?Thomas Félix: The tricky part was making sure we could put it in the hands of artists, both in terms of the UX and data integrity. We worked with several artists on the team to make sure they understood how to use it. It was really important to us to nail data management for our project. The more people we added to the team, the better the feedback we got – people were happy, and we knew we were onto something.How are you using Unity Version Control’s Gluon workflow for artists?Thomas Félix: We do use Gluon, but for something else, what we call the raw data – data that’s not tied to the engine. Let’s say you’re an artist and you’re modeling a mesh: You’re using the raw data, the source file, in something like Blender. This doesn’t have to reach the engine; only the data you export from it does. This data is managed in a task branch, but we manage the source files in Gluon.These files can be really heavy – character artists using tools like Zbrush can generate files that are 2, 3, 4 GB per asset, if not more. You don’t want programmers having to sync 1 TB worth of original character meshes, so we manage those in Gluon using partial workspaces. Character artists only synchronize character files, modelers will only synchronize model files, and it’s the same for audio, textures, and so on. It’s all stored in a separate repository, away from the task branch workflow.So, to recap, you’re using Gluon for scenarios where you’re working with huge files so someone doesn’t have to download the whole repo – they can just use a partial workspace.Thomas Félix: Exactly. It’s an archived version of the original data, so we don’t use task branches for that. We don’t need to have a task branch for those materials, as long as creators submit their latest work every once in a while.What advice do you have for smaller studios looking to scale up and tackle ambitious projects, like you’re doing?Thomas Félix: That’s a good question. From day one, you need to know where you want to go. For us, we started with a small team, and we knew we wanted to grow, but we didn’t want to scale to 1,000 employees – even 200 isn’t our goal. We made many decisions – decisions that we’re really happy with! – that we might not have made if we had different ambitions.Building your infra in the cloud does make it easy to scale – just be careful, because it can cost you an arm and a leg. Always try to be in control of your workflow. If something doesn’t work, do the work to understand why. Make sure you have strong foundations, basically.Looking to optimize your game development pipeline? Get started with Unity DevOps, built to work with any engine.]]></description><link>https://unity.com/blog/games/setting-up-scalable-devops-toolchain</link><guid isPermaLink="true">https://unity.com/blog/games/setting-up-scalable-devops-toolchain</guid><pubDate>Thu, 09 Mar 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile gaming at all hours: 7 facts about how users engage with their phones]]></title><description><![CDATA[People spend more time on their phones than ever before, 5 hours per day according to data.ai. The more interesting question for advertisers is, where and how are those 5 hours spent? We ran a survey using our proprietary market research solution to discover how users spend time on their mobile phones in 2023.It’s clear that users spend a lot of their time on their phones in games. In fact, 70% of users enjoy playing games the most compared to other mobile activities, 73% of users are playing games while watching TV, and the most amount of users (30%) check their games last before going to bed.Here are insights into how users are mobile gaming and more key findings about how users spend time on their phones:
1. Out of all the activities they can do on their phones, the majority of users (70%) enjoy playing games the most70% of users like playing games on their phones, 55% like scrolling through social media, 46% like texting and calling friends and family, 28% like reading the news, and 25% like answering emails. Despite the nearly endless list of activities today, the majority of users still place mobile gaming at the top every time - it's a timeless activity.2. Users spend the most phone time on the weekends (56%), with Gen Z the most likely to do so (64%)Naturally, users are likely to spend more time on their phones when they have free time, such as the weekends. That said, 44% of users say they spend more time on their phones on the weekday, which isn’t that much less. Schools often don’t allow phone usage, which is a key reason why Gen Z is likely to be more active on the weekends.3. Users spend the most time on their phones in the evening (37%)The evening is often a time for users to wind down from the work day and catch up with what’s been happening on their phones - checking the news, responding to texts, scrolling through feeds. Users spend the least amount of time on their phones in the morning, with only 14% indicating such.While this trend is consistent across Millennials, Gen X and females, Gen Z and males are the most active on their phones during the afternoon (35% and 34%) and evening (35% and 35%). For Gen Z, this is likely because they turn to their devices as soon as school gets out.4. Most users spend time on their phones while watching TV (71%)The average attention span of a human is 8.25 seconds, .75 seconds lower than a gold fish’s, which is why users are beginning to engage with two devices at once. This presents a strong opportunity for performance based CTV advertising - when users see an ad on their TV, they can immediately download your app or look up your product from their phones, without having to remember to do it later.5. Users are most likely to be gaming while watching TV (73%)Across all demographics, users who spend time on their phones while watching TV are most likely playing games (73%), followed by scrolling through social apps (59%). Users are gaming from their phones at all times, even when they’re engaging with other devices, further reaffirming the opportunity for advertising on these channels.6. The first apps users check in the morning are text messaging apps (32%)In total, users check their texts, followed by social apps (26%) and email (22%). Gen Z and Millennials follow this trend closely. Gen X, however, checks email first (31%), followed by texts (25%), social (21%) and games (21%). Priorities in the morning often differ based on responsibilities for the day and how much time users have to get ready.7. Games are the last apps users check before going to bed (30%)30% of users check their games last, 28% of users check social media last and 22% check their texts last. This means that users go to sleep with mobile gaming on their mind above anything else, indicating the value mobile gaming holds to those who play.We use our phones a lot, but, until now, did we really understand how? The above stats give you a clearer picture of how and where our time on our phones is spent.]]></description><link>https://unity.com/blog/mobile-gaming-at-all-hours-7-facts-about-how-users-engage-with-their-phones</link><guid isPermaLink="true">https://unity.com/blog/mobile-gaming-at-all-hours-7-facts-about-how-users-engage-with-their-phones</guid><pubDate>Tue, 07 Mar 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 reasons why Unity at GDC is all about you]]></title><description><![CDATA[Wherever you are in the game development lifecycle, Unity is here to help you do more. This month at GDC 2023, we’ll be demonstrating all the ways our solutions work together to make Unity the leading real-time platform for creating, running, and growing games.Connect with us and find what you need at any stage – from making and publishing your game to expanding your player base and building a successful business.Read on to learn why our presence at GDC 2023 is all about helping you make truly great games.Get the scoop on the latest tech and discover how Unity creators are succeeding. These are just a few of the sessions you won’t want to miss.Seasoned gamedev Will Armstrong is ready to share how you can boost your productivity developing games in Unity. Join him on Tuesday, March 21 to learn about best practices for coding standards, profiling performance, debugging and testing, applying design patterns, and more.This session gives you the chance to ask Unity your burning questions about game creation, tools, services, and functionality. Senior program managers, engineers, and other staff host this Ask Me Anything as a cap to the week’s Unity Developer Summit. No question is too big or too small.See what’s new in Unity’s 2022 LTS and 2023 Tech Stream, including the latest on graphics, multiplayer, and the Entity Component System (ECS).Visit the Unity booth on the show floor (S327) to meet fellow developers at our creator stations and check out hands-on demos of their projects (see who you can expect to find there below). You’ll also be able to chat with Unity specialists to learn more about Unity tools and services. Whether you’re looking for answers, feedback, or want to connect with the team one-to-one, we can’t wait to see you there.Breachers is an upcoming 5v5 tactical VR FPS by Triangle Factory. Climb, shoot, and strategize your way to victory.From Steel City Interactive, Undisputed is an authentic boxing game that features true-to-life visuals, bone-jarring action, and licensed boxers.Death Carnival is a fast-paced arcade shooter from Furyion Games with adrenaline-fueled combat in single-player, online co-op, or PvP.A handful of Unity’s GDC 2023 sessions will lift the hood on popular Made with Unity releases to show you how they came together. Here are just a few highlights from the schedule.Join us for a guided panel discussion with developers from Intercept Games, who will talk through the process and challenges of creating fully spherical planets in Kerbal Space Program 2.Key members of the Second Dinner team discuss how they started out as a two-person studio and grew to launch MARVEL SNAP, one of the biggest mobile games of 2022. In this hands-on session, Nifty Games’ vice president of engineering will share learnings from shipping NFL Clash and NBA Clash to global audiences using Cloud Build, Remote Config, and Cloud Content Delivery. You’ll also hear insights on sustaining and growing a mobile player base.Bookmark this page to keep up with the latest on Unity at GDC 2023, and stay tuned for updates about the event. If you haven’t yet bought your pass, use code “UNITY10” for 10% off GDC All Access, Core, or Summits registrations.]]></description><link>https://unity.com/blog/news/3-reasons-why-unity-at-gdc-is-all-about-you</link><guid isPermaLink="true">https://unity.com/blog/news/3-reasons-why-unity-at-gdc-is-all-about-you</guid><pubDate>Mon, 06 Mar 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity Monthly: February 2023 roundup]]></title><description><![CDATA[Curious how others are creating with Unity? Check out this roundup of the latest Made with Unity news and discover what the Unity community has been up to.#MadeWithUnity games reached some exciting milestones in February.To start, Intercept Games’ Kerbal Space Program 2 has been released in Early Access on Steam, if you’re looking for something out of this world. Ready to get your puzzle on? NAHUAL by Thirdworld Productions may be the quirky brainteaser you’ve been waiting for.Congratulations to all of the games that won an Academy of Interactive Arts & Sciences’ D.I.C.E. Award! As a follow up to last month’s finalists list, you can find the full list of winners in this IGN article. Esteemed Made with Unity winners include:TUNIC, Outstanding Achievement for an Independent GameMarvel SNAP, Mobile Game of the YearOlliOlli World, Sports Game of the YearWe share new releases or milestone spotlights every Monday on the @UnityGames Twitter account. Be sure to give us a follow and support your fellow creators.Tuesdays are dedicated to #UnityTips on Twitter. Here are a couple we found particularly helpful in February:@SunnyVStudio dropped some major grout for your tiles if you start to see screen tearing.@jamesebrill is on a roll with getting stones rolling – learn how to breathe life into 2D rolling stones.Keep tagging us using the #UnityTips hashtag.We're stunned by what you all create every week, and you certainly kept the amazing projects coming in February. If we missed something from you, be sure to use the #MadeWithUnity hashtag next time you share.Twitter’s @cptnsigh gave us all virtual whiplash with a strikingly smooth fast-paced FPS, and @canopy_studio healed our whiplash with a relaxing waterfall. Then, we snuck around with a bow and arrow and completed puzzles in @CatthiaGames’ Cynthia: Hidden in the Moonshadow. Finally, @PhillipWitz's adorable frog showed off its new skating skills.On Instagram, @papetura warmed our cups with a dose of fiery cuteness, and now we’re certainly ready for Spring thanks to @Studio_unjenesaisquoi, @umanimation1, and @focus_entmt. @Cornf_blue went super speed with some insane parkour and @JfvmYt was busy expanding their castle!We’re so excited for the #MadeWithUnity year ahead (and GDC 2023 later this month), so keep adding the hashtag to your posts to show us what you’ve been up to.Following the wrap of Global Game Jam 2023, we took to Twitch for a Let’s Play stream that saw members of our team play a selection of 10 games created during the event and solicited from the community.Later in the month, we sat down with Whales and Games to discuss Townseek in an all-new Creator Spotlight stream. Then, we released another Creator Spotlight clip (above) on the use of timeline in As Dusk Falls. And finally, as a callback to the 2022 Let’s Dev 101 session on animation, we posted the full stream to YouTube.Don’t forget to follow us on Twitch and hit the notification bell so you never miss a stream.On February 23, we hosted our second Dev Blitz Day of the year, focusing on scripting. The event was held in both the forums and on the Discord server. Throughout the day, we had more than 100 threads and would like to thank everyone who participated.Keep an eye on our forum announcements and Discord for updates about future Dev Blitz Days.Just because you're a “one-person team” doesn’t mean you can’t call in extra help! Check out how Thomas Sala, creator of The Falconeer, was able to fill in skill gaps using assets from the Unity Asset Store. Assets were able to take the game to another level – from adding realism to gameplay to localizing in 13 different languages. Similarly, here are three more stories from studios that were able to save time and money by using assets.Taking to social media, here's a roundup of some of our favorite creator showcases from Twitter in February:Clay Outdoors Pack | Unicorn OneVolcano | NatureManufactureMegabook 2 | Chris WestLove/Hate | PixelcrushersDon’t forget to tag the @AssetStore Twitter account and use the #AssetStore hashtag when posting your latest creations.Last but not least, here’s a non-exhaustive list of Made with Unity titles released in February. Do you see any on the list that have already become favorites or notice that something is missing? Tell us about it in the forums.Birth, Madison Karrh (February 17)The end is nahual: If I may say so, Third World Productions (February 17)PlayStation® VR2 (PS VR2) releases (February 22):     Cities: VR – Enhanced Edition, Fast Travel GamesCosmonious High, Owlchemy LabsDemeo, Resolution GamesThe Last Clockwinder, PontocoThe Last Worker, Oiffy, Wolf & Wood Interactive LtdThe Light Brigade, Funktronic LabsSynth Riders, Kluge InteractiveThe Tale of Onogoro, Amata K.K.Tentacular, Firepunchd Games UGWHAT THE BAT?, TribandZenith: The Last City, Ramen VRSons Of The Forest, Endnight Games Ltd (February 23)Clive ‘N’ Wrench, Dinosaur Bytes Studio (February 23)Kerbal Space Program 2, Intercept Games (February 24)Phantom Brigade, Brace Yourself Games (February 28)Rytmos, Floppy Club (February 28)That’s a wrap for February! Want more community news as it happens? Don’t forget to follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-february-2023-roundup</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-february-2023-roundup</guid><pubDate>Wed, 01 Mar 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Inspecting memory with the new Memory Profiler package]]></title><description><![CDATA[In this blog, we will cover five key workflows in the new Memory Profiler package that you can use to diagnose and examine memory-related issues in your game. These are:Monitoring your application’s memory pressureSeeing the distribution of Unity ObjectsDetecting poorly configured assetsLocating unintentional duplicate objectsComparing memory captures to validate optimizationsFor an introduction to the Memory Profiler, please see the recent blog, Everything you need to know about Memory Profiler 1.0.0.This first workflow monitors how demanding your application is on a device’s memory resources. This process is critical to determining whether or not your application is at risk of performance problems, or even being evicted and terminated by the operating system, due to consuming too much memory.To begin, we have a build of an example game running on the target device. Naturally, it is essential that we take a memory capture of the game, running on the actual hardware, to see how it uses the devices' available memory resources. Furthermore, memory does not behave in the same way in the Unity Editor as it does in the Unity runtime, so taking a memory capture of the Editor in Play Mode is not a good representation of how a game’s memory will look on a device. (Taking a memory capture of the Editor is appropriate when developing tools for the Editor, such as custom Editor windows.)After navigating to the stage in our game where we want to analyze the memory usage, we attach the Memory Profiler to our device using the dropdown in the Memory Profiler. We can then take a memory capture, as shown below.After opening this capture, the Memory Profiler displays our application’s memory footprint at the top of the Summary page as “Memory Usage On Device”.Here we can see that our application’s memory footprint is 492.5 MB, out of an available 3.50 GB. We need to use our best judgment next as to whether we believe that is a sensible proportion of the device’s physical memory (RAM) to be using at the time of capture. Remember that a device’s physical memory is shared by all running processes.You’ll notice that this visual indicator is showing you total resident memory. Total resident memory refers to how much of your application’s memory resides in the device’s physical memory hardware (RAM). This is the clearest indicator of how demanding your application’s current memory usage is on the target device for two reasons. First, this is because as your application’s total resident memory usage increases, so does the likelihood of incurring frequent page faults, where the operating system has to page virtual memory in and out of the device’s physical memory. Frequent page faults will cause significant performance degradation of your application. And second, this is because many operating systems use your application’s resident memory usage to determine its current memory footprint. If your application’s memory footprint gets too high, the operating system will evict your application and terminate it, causing a crash for your players.Therefore, you can use the Memory Usage On Device visual indicator in the Memory Profiler to infer if an application might be at risk of performance issues or being terminated by the operating system, due to an overuse of memory at the time of capture.This contrasts with Allocated Memory, sometimes referred to as Committed Memory, which you might notice is displayed in various graphics below this indicator, and is currently the default option shown by all other views, such as Unity Objects. Allocated Memory refers to all memory that your application currently has allocated, regardless of whether it has been made resident in physical memory or not, and therefore it matches your application’s view of memory more closely. As such, this can be useful for exploring all of your application’s currently allocated memory, whilst resident memory usage is key to understanding the memory pressure your application is placing on the hardware at any moment in time.The Memory Profiler’s Unity Objects tab provides you with an overview of your application’s memory from the perspective of Unity Objects; that’s your application’s textures, shaders, meshes, materials, and so on. This is a great place to begin exploration in the Memory Profiler because Unity Objects will be inherently familiar to so many Unity users, as it is what the majority of us work with directly in the Unity Editor. Not only does this provide a familiar entry point to understanding our application’s memory, but it can also help to diagnose and fix a range of potential issues by providing this Unity-specific context.To see the Unity Objects view, simply select the Unity Objects tab at the top of the Memory Profiler after opening a memory capture, as shown above.You can see how the Unity Objects view quickly gives us an understanding of the distribution of Unity Object types in our application. This allows us to both gain a high-level understanding of what types were consuming the most memory at the time of capture, as well as to reason about this, such as whether it is expected that a particular scene is heavy on AudioClip objects, for example. Expanding each type also enables us to view every Unity Object that is currently allocated, individually, as shown below.It’s important to remember that Unity Objects make up a proportion of our application’s total allocated memory. You can see exactly how much in the indicator above the table, highlighted below.Here, you can see that our total allocated memory size, “Total Memory In Snapshot”, is 4.64GB and that our Unity Objects account for 2.37GB of that. Furthermore, if we filter the table – for example, by using the search feature – you’ll notice that this bar updates to reflect our search results. In other words, it displays the size of all the memory currently shown in the table. This helps you to maintain perspective of exactly how much memory you are inspecting as a proportion of the whole capture and can help to inform where to invest optimization efforts.In version 1.0 of Memory Profiler, the Unity Objects table shows you Allocated Memory, or, put another way, it shows you all Unity Objects that are alive in your application. We are exploring adding Resident Memory visibility to these views in an upcoming release, which would enable you to see exactly which of your Unity Objects are currently resident in physical memory, and therefore see exactly which are directly contributing to your application’s current memory footprint.



You can use the All Of Memory tab to inspect the remainder of your application’s memory at the time of capture, which will include memory outside of Unity Objects, such as various Unity subsystems, managed-only (C#) memory, and DLLs and executables.The Unity Objects view can help us to diagnose a range of potential issues. One such issue is detecting assets that have been badly configured, causing them to consume more memory than is necessary.In the capture below, you can see that a substantial portion of our Unity Objects are textures. The capture is from a project with high graphical fidelity that uses the High Definition Render Pipeline and makes heavy use of visual effects. So, with this context in mind, we expect to see heavy use of textures, which we do.However, upon expanding our second large category, Texture2D, we can notice that two textures appear much bigger than the others. Using our understanding of our project, we are surprised that these textures are bigger than comparable textures, like HoloTable_Normal or HoloTable_Mask, as we expected them to be similar in size.So, we select one of these textures in the table to learn more details about it, and to begin investigating what might be the cause for this. Here, in the Details view we find our explanation – our texture is writable, or “Read/Write Enabled.”This is a common problem that we see across many user projects: accidentally making a texture writable when it’s not needed by checking the “Read/Write” setting on the texture’s import settings. When a texture has this flag enabled, it will double its size in memory. This is because a second copy of the texture data is required so that it can be accessed on the CPU. A tell-tale sign of this is that the Total Size of a texture is twice the size of what you expected, or twice the size of similar textures.After disabling the “Read/Write” flag on both of these textures and taking a second capture, we can see both of these textures have halved in size.We are exploring adding a column for graphics (GPU) memory to the Unity Objects table in a future release to make locating cases where a Unity Object has allocated graphics memory, such as in this example, easier.A common mistake that we see in Unity projects is unintentionally creating duplicate Unity Objects. For example, it is very easy to accidentally create a duplicate Material by accessing a MeshRenderer’s material property. Not only does this add up quickly in this case – if, for example, it is done on every instance of a particular MeshRenderer – but, furthermore, these dynamically created materials must be explicitly destroyed.To help with locating this type of issue, the Unity Objects table provides a quick filter to show you potential duplicate Unity Objects only. This view will filter the table to show only Unity Objects that have multiple instances with both an identical name and size. It is important to note that many potential duplicates will be expected and not a cause for concern at all. For example, multiple instances of a prefab might have identically named and sized Transform components, and these would be expected duplicates. It is only discovering unintentional duplicates that we are interested in, which we will illustrate in this workflow following example.The capture below was taken in a simple scene with two instances of a Door prefab, and we have enabled the Show Potential Duplicates Only filter located underneath the Unity Objects table. This has filtered the table to show us only Unity Objects that have multiple instances with the same name and size.Because we have two instances of a Door prefab in our scene, we also have, as expected, two instances of all the relevant objects: MeshRenderer, Transform, GameObject, and so on. However, we also have two instances of the “Door” Material in our capture above. These Door instances look the same in our scene, so it is expected that they would share a Material. This is, therefore, an unintentional duplicate, and in this particular example was caused by accessing the MeshRenderer’s material property in the prefab. Removing this property access and taking a second capture shows the duplicate material is no longer present in the Unity Objects table.It’s important to remember that this filter is simply showing you all Unity Objects that have multiple instances with the same name and size. It requires your knowledge of your project to interpret whether the potential duplicates you see are expected, or are, in fact, unintentional and cause for investigation. We recommend paying attention to the Total Memory In Table bar at the top, which gives you a visual indication of what proportion of your application’s allocated memory you are seeing in the table. This can help you to maintain perspective of where to invest your optimization efforts.The Memory Profiler also provides functionality to compare two memory captures. This allows us to make changes to our project, for example to address an issue we might have found, and subsequently test if our changes have indeed had the desired outcome. It is important to always test that your hypothesis is correct and your changes have had the desired outcome on the actual hardware. Here, let’s explore an example of this comparison workflow.Below is a capture of our mobile game taken during the first level. We can see that the biggest category of Unity Objects is Texture2D. After opening this category to check what our biggest textures are, we can see there are a few UI textures that are quite large in relation to the rest of our game – megabytes each. This raises a suspicion for us: Why are these textures so much larger than the others and do they need to be? To discover why, we can first locate the source texture asset in our project by selecting the texture in the Memory Profiler and using the “Select In Editor” button, which will highlight the source texture asset in our Project window.Using the Inspector window, we can see that all of our offending large UI textures are not being compressed due to their dimensions not being a power-of-two, as shown by the “NPOT” (non-power-of-two) text.This explains these large texture sizes. We can now use our knowledge of our project to reduce this memory usage. We know that three of these textures (the help controls) are always displayed together in the UI, as well as the other three textures (the creatures). Therefore, we can hypothesize with high confidence that creating two Sprite Atlases for each set of three textures will reduce our allocated memory usage, because it will enable them to be compressed without increasing the number of textures in memory.To compare two snapshots, begin by opening the first snapshot. This is the “base” against which we want to compare. Now above the open snapshot, select the “Compare Snapshots” tab and choose the second snapshot. The Memory Profiler will now present a summary comparing the two snapshots, as shown below.To see the effect of our change and verify that it did, in fact, reduce the size of our application’s allocated memory for the Texture2D category, we can select the Unity Objects tab. Here, we are presented with a comparison table that shows the Unity Object types that have changed, as well as how they have changed between the captures (shown below).We can see our Texture2D type as a whole has reduced in size by 3.6MB and has four less textures than before. Expanding this category, we can see the removal of our individual, uncompressed Sprite textures, and the addition of our two Sprite Atlas textures, resulting in a net reduction of 3.6MB and 4 Texture2D objects.So this was a success – we have confirmed that our hypothesis was correct using the comparison functionality, and we have reduced the size of these textures in allocated memory.From reading this blog, you should now have a better understanding of five key workflows in the new Memory Profiler package. These workflows are designed for diagnosing and examining memory-related issues in ayour game. We hope the Memory Profiler package released in Unity 2022.2 helps you to better monitor, examine, and understand your game’s memory footprint. Please feel free to reach out to the team to share your feedback on how we can improve performance profiling tools via our forum page –, or share your suggestions through our roadmap page, where you can also see some of the features that are being worked on.If you’re interested in more details on this topic, we will be publishing another blog in the coming weeks that will dive deeper into how an application’s memory footprint is calculated, covering topics such as resident and allocated memory in more detail.]]></description><link>https://unity.com/blog/engine-platform/inspecting-memory-with-the-new-memory-profiler-package</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/inspecting-memory-with-the-new-memory-profiler-package</guid><pubDate>Tue, 28 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to run effective UA campaigns for your subscription app by measuring long term goals]]></title><description><![CDATA[According to Databox, around 80% of marketers prefer looking at short term goals, like eCPI, because it's easy to measure, all the competitors are doing it, and it saves money. However, as a subscription app, planning for the long term is critical, especially for campaigns on ad networks.Let’s say you pay $0.60 for an install, a relatively low cost in the US. If the user who installed your app churns on day 1 - 25% of users will likely do so according to Business of Apps - that $0.60 is a sunk cost.Elina Dakhis, Senior Strategic Partnership Manager at ironSource, with a focus on Apps Beyond Games, shares her insights on why LTV is important for your subscription-based app and tips to master it.Why you shouldn’t spend all of your resources optimizing towards short term goalsBefore diving into how to measure success in the long term, let’s first dive into why you shouldn’t devote all of your attention to short term goals and achieving low CPIs.Higher bids bring in revenue generating usersIt’s possible to have great install rates but flat revenue - there isn’t always a clear correlation. Often, the problem lies in optimizing towards driving cheap installs, or low quality installs that drive very little value. Meanwhile, more expensive installs lead to users that will spend time in your app, engaging with your premium content, generating more revenue, and eventually converting to subscribers.Diversity of bids means diversity of usersLocation, device platform, and network all have an impact on the price of the cost per install. For example, CPI differs by country depending on how big the audience is, how much they spend inside apps, etc. To reach a diverse set of users across different geos, devices, and networks, it’s important to remain open to a range of costs. Just because a bid is low, doesn’t mean those users aren't valuable, and vice versa.So, you shouldn’t be narrowing in on achieving low CPIs - high CPIs are actually quite valuable. That said, to determine what’s best for your strategy, it’s crucial to look at long term goals. We suggest calculating your LTV.Longer term goals help you determine user acquisition costsBlindly paying for low CPIs without looking at long term metrics, such as LTV, means you could be missing out on an opportunity to spend more to acquire high-quality users and increase profit. If you know how your users behave in your app in the long term, you can predict how much revenue you'll generate from your users, and you can make more calculated decisions for your UA budget.How to build the LTV model for campaigns on networksTo get a clearer picture into the effectiveness of your campaigns, it’s important to look at user behavior after they install the app and into the long term. Note that you should build dedicated LTV models for the different channels you’re running with - social, ad network, etc. Here’s how to measure LTV for your ad network campaigns taking into account multiple revenue streams:1. Plot the ARPU curve taking into account all revenue generatorsARPU, or the average revenue per user, is determined by calculating the accumulated revenue generated by a segment of users on a specific day after install. To determine ARPU, first, sum all of the revenue generators - the amount subscribers pay, the revenue from in-app purchases, and the revenue from ads. Then, divide that by the number of installs. For example, if a segment of 1,000 users generates $6,000 over 6 months, the Month 6 ARPU would be $6. If those 1,000 users generate $12,000 over 12 months, the Month 12 ARPU is $12.When building the ARPU curve for subscription apps, it’s important to take into account all of your revenue generators - subscriptions, in-app purchases and ads. For some apps, you can stop at choosing a relevant ARPU goal, 12 months for example, to determine the value of your users. For most, however, you’ll need to construct an LTV model from the right trendline.2. Choose the right trendline for each revenue generator to build your LTV modelPlace a trendline over the average revenue per user (ARPU) curve to build the LTV model. Doing so automatically fills in the revenue predictions from the last day of calculated data to the end of the users’ lifetime in your app.When building the LTV curve for a hybrid model with subscriptions, ads, and/or in-app purchases, keep the behavior of these components in mind. A logarithmic trendline usually works better for the LTV curve for apps that don’t monetize with subscriptions. We’ve found that a power curve fits over the ARPU the most accurately for subscription apps. This is because subscription apps tend to offer some kind of utility that stands the test of time. Once you’ve built the ARPU curve for each revenue stream, stack them on top of each other to get a more accurate prediction. Below is a more detailed example.The graph above is the LTV model for the first 180 days of a Social Utility App - their monetization model is based on subscriptions and ads. As you can see, we plotted the ARPU curves (solid lines) based on data we already had for subscriptions and ads separately. From there, we placed power curves (dotted line) to predict the future revenue - keep in mind that the end of the LTV curve does not indicate a user’s last day in the app. Based on the graph, we can assume that the LTV for the average user will be $0.80 for weekly subscribers, $0.25 for monthly subscribers, and $0.15 for ads.Now’s the time to start measuring the granular metrics to optimize the precision of your LTV model. There’s more to creating a winning LTV model than just choosing the right trendline.3. Enrich the model with more dataThere’s a lot of uncertainty behind building an accurate revenue prediction, and it’s important to be comfortable with this. Typically, apps have many more non-subscribers than subscribers and subscription rates are constantly changing. IAPs offer a glimpse into the level of user engagement, but often don’t paint the whole picture of how users behave in your app.It’s important to look at other engagement events outside of just how much a user is paying each week, month, or year or their engagement with IAPs and ads when building the LTV model. In fact, you should be tracking as many metrics as possible, as early as possible. You can include any type of in-app engagement, such as opening the app a certain number of times, editing a few photos, etc. This granular understanding of your app’s overall performance will help you determine exactly where you stand, allowing you to streamline your strategy towards investing in the right users.If you start including other metrics into your LTV model and you see different behaviors for different user groups, you should consider building different models to reflect different revenue streams - subscription, IAP, ads - rather than combining them into one.4. Build a different model for each subscription time frameMany apps offer weekly, monthly, and annual subscriptions, and these users are going to behave differently and bring in revenue at different rates - it’s not one size fits all.Rather than converting annual subscriptions to the monthly equivalent, it’s best to build an LTV model for weekly vs. monthly vs. yearly subscriptions. From there, if you’re including an engagement metric outside of revenue, you can apply a different rate to each model (since, for example, churn will be different for monthly users compared to weekly users). This way you’ll improve the accuracy of your LTV model and have a better idea of how specific users are interacting with your app according to different subscription models.What now?Once your LTV model is ready, the next step is adjusting your KPIs based on the information to ensure you’re making the best decisions for your UA strategy. Choose a reasonable margin you’d like to maintain and determine the shortest KPI possible where you can still accurately predict long-term user behavior in your app. Often, it’s the average time it takes a user to subscribe. Your work doesn’t end here - continue to adjust the data so the LTV model remains as updated as possible and takes into account fluctuations in user behavior, such as during holiday seasons, unexpected pandemics, political unrest, etc.Measuring short term goals are important, but long term goals are just as, if not more, important to calculating overall success and the effectiveness of your campaigns. Start measuring your LTV model using the above steps and be sure to take into account multiple revenue streams.]]></description><link>https://unity.com/blog/how-to-run-effective-ua-campaigns-for-your-subscription-app-by-measuring-long-term-goals</link><guid isPermaLink="true">https://unity.com/blog/how-to-run-effective-ua-campaigns-for-your-subscription-app-by-measuring-long-term-goals</guid><pubDate>Mon, 27 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Improving job system performance scaling in 2022.2 – part 1: Background and API]]></title><description><![CDATA[In 2022.2 and 2021.3.14f1, we’ve improved the scheduling cost and performance scaling of the Unity job system. In this two-part article, I’ll offer a brief recap of parallel programming and job systems, discuss job system overhead, and share Unity’s approach to mitigating it.In part one, we cover background information on parallel programming and the job system API. If you’re already familiar with parallelism, feel free to skim and skip to part two.In the 2017.3 release, a public C# API was added for the internal C++ Unity job system, allowing users to write small functions called “jobs” which are executed asynchronously. The intention behind using jobs instead of plain old functions is to provide an API that makes it easy, safe, and efficient to allow code that would otherwise run on the main thread to instead run on job “worker” threads, ideally in parallel. This helps to reduce the overall amount of wall time the main thread needs to complete a game’s simulation. Using the job system for your CPU work can provide significant performance improvements and allow your game’s performance to scale naturally as the hardware your game runs on improves.If you think of computation as a finite resource, a single CPU core can only do so much computational “work” in a given period of time. For example, if a single threaded game needs its simulation Update() to take no more than 16ms, but it currently takes 24ms, then the CPU has too much work to do – more time is needed. In order to hit a target of 16ms, there are only two options: make the CPU go faster (e.g., raise the minimum specs for your game – normally not a great option), or do less work.Ultimately, you need to eliminate 8ms of computational work.That typically means improving algorithms, spreading subsystem work across multiple frames, removing redundant work that can accumulate during development, etc. If this still doesn’t get you to your performance target, you may need to reduce game simulation complexity by cutting content and gameplay, for example, by reducing the number of enemies allowed to be spawned at once – which is certainly not ideal.What if, instead of eliminating work, we give the work to another CPU core to run on? Nowadays, most CPUs are multi-core, which means the available single-threaded computational power can be multiplied by the number of cores the CPU has. If we could magically and safely divide all the work currently in the Update() function between two CPU cores, the 24ms Update() work could be run in two simultaneous 12ms chunks. This would get us well below the target of 16ms. Further, if we could divide the work into four parallel chunks and run them on four cores, then the Update() would take only 6ms!This type of work division and running on all available cores is known as performance scaling. If you add more cores, you can ideally run more work in parallel, reducing the wall time of the Update() without code changes.Alas, this is fantasy. Nothing is going to divide the Update() function into pieces and run them on separate cores without some help. Even if we switched to a CPU with 128 cores, the 24ms Update() above will still take 24ms, provided both CPUs have the same clock rate. What a waste of potential! How, then, can we write applications to take advantage of all available CPU cores and increase parallelism?One approach is multithreading. That is, your program creates threads to run a function which the operating system will schedule to run for you. If your CPU has multiple cores, then multiple threads can run at the same time, each on their own core. If there are more threads than available cores, the operating system is responsible for determining which thread gets to run on a core – and for how long – before it switches to another thread, a process called context switching.Multithreaded programming comes with a bunch of complications, however. In the magical scenario above, the Update() function was evenly divided into four partial updates. But in reality, you likely wouldn’t be able to do something so simple. Since the threads will run simultaneously, you need to be careful when they read and write to the same data at the same time, in order to keep them from corrupting each other’s calculations.This usually involves using locking synchronization primitives, like a mutex or semaphore, to control access to shared state between threads. These primitives usually limit how much parallelism specific sections of code can have (usually opting for none at all) by “locking” other threads, preventing them from running the section until the lock holder is done and “unlocks” the section for any waiting threads. This reduces how much performance you get by using multiple threads since you aren’t running in parallel all the time, but it does ensure programs remain correct.It also likely doesn’t make sense to run some parts of your update in parallel due to data dependencies. For example, almost all games need to read input from a controller, store that input in an input buffer, and then read the input buffer and react based on the values.It wouldn’t make sense to have code reading the input buffer to decide if a character should jump executing at the same time as the code writing to the input buffer for that frame’s update. Even if you used a mutex to make sure reading and writing to m_InputBuffer was safe, you always want m_InputBuffer to be written to first and then the m_InputBuffer reading code to run second, so you know whether the jump button was pressed for the current frame (and not one in the past). Such data dependencies are common and normal, but will decrease the amount of parallelism possible.There are many approaches to writing a multithreaded program. You can use platform-specific APIs for creating and managing threads directly, or use various APIs that provide an abstraction to help manage some of the complications of multithreaded programming.A job system is one such abstraction. It provides the means to break up parts of your single-threaded code into logical blocks, isolate what data is needed by that code, control who accesses that data simultaneously, and run as many blocks of code in parallel as possible to try and utilize all computational power available on the CPU as needed.Today, we cannot divide arbitrary functions into pieces automatically, so Unity provides a job API that enables users to convert functions into small logical blocks. From there, the job system takes care of making those pieces run in parallel.The job system is made up of a few core components:JobsJob handlesJob schedulerAs mentioned before, a job is just a function and some data, but this encapsulation is useful, as it reduces the scope of which specific data the job will read from or write to.Once a job instance is created, it needs to be scheduled with the job system. This is done with the .Schedule() method added to all job types via C#’s extension mechanism. To identify and keep track of the scheduled job, a JobHandle is provided.Since job handles identify scheduled jobs, they can be used to set up job dependencies. Job dependencies guarantee that a scheduled job won’t start executing until its dependencies have completed. As a direct result, they also tell us when different jobs are allowed to run in parallel by creating a directed acyclic job graph.Finally, as jobs are scheduled, the job scheduler is responsible for keeping track of scheduled jobs (mapping JobHandles to the job instances scheduled) and ensuring jobs start running as quickly as possible. How this is done is important, as the design and usage patterns of the job system can potentially conflict in non-obvious ways, leading to overhead costs that eat into the performance gains of multithreaded programming. As users started adopting the C# job system, we began to see scenarios where job system overhead was higher than we’d like, which led to the improvements to Unity’s internal job system implementation in the 2022.2 Tech Stream.Stay tuned for part two, which will explore where overhead in the C# job system comes from and how it has been reduced in Unity 2022.2.If you have questions or want to learn more, visit us in the C# Job System forum. You can also connect with me directly through the Unity Discord at username @Antifreeze#2763. Be sure to watch for new technical blogs from other Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/improving-job-system-performance-2022-2-part-1</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/improving-job-system-performance-2022-2-part-1</guid><pubDate>Fri, 24 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[The next generation of VR gaming on PS5]]></title><description><![CDATA[Sony Interactive Entertainment’s next-gen VR headset, the PlayStation® VR2 (PS VR2), launches today, and we’re excited to share the latest tools you can use to build for this innovative platform. In this post, we’ll cover two aspects of developing for PS VR2: graphics and inputs.PS VR2 leverages PS5’s next-gen computing and graphics power to help you create stunning, high-performing VR games. You can target a 4k resolution equivalent, running titles at 60Hz, 90Hz, or 120Hz, which should be achievable with the PS5 using some of the techniques discussed below.First, let’s start off with render pipelines. We recommend the Universal Render Pipeline (URP) for most VR developers because URP will be our first render pipeline to support some of PS VR2’s unique features, such as foveated rendering and gaze tracking. You can also use the Scriptable Render Pipeline (SRP), Built-in Render Pipeline, and High Definition Render Pipeline (HDRP), but be aware that some features, like foveated rendering, are only available on URP for the time being.Overall, URP is a great match for VR games. It’s flexible, straightforward to use, and customizable. It also works well if you’re building for multiple platforms, including all-in-one VR devices. You can make your own custom render pipeline using SRP, and we provide an extensive C# API that allows you to implement any renderer your games require.The PS5 also provides advances on the GPU side through its new NGGC Graphics API. With NGGC, we’ve taken advantage of the optimization technologies available on PS5 in ways that were previously unavailable. We’ve also rearchitected our rendering backend to allow efficient utilization across multiple cores while improving GPU state transitions. This adds up to more efficient rendering in terms of CPU, GPU, and memory usage while offering the same visual results, without any reauthoring of assets or game code.PS VR2 will be able to use a technique known as foveated rendering. This technique helps you make VR games with better visual fidelity by decreasing the GPU rendering workload required for a given scene. Foveated rendering is used to improve GPU performance by reducing image quality in peripheral vision.PS VR2’s hardware can go a step further by using eye tracking to optimize GPU rendering. By projecting the eye-gaze information into screen space, you’re able to render at high quality in the precise screen area where a player is looking.The intent of foveated rendering and eye tracking is to keep the image quality high in those parts of the image deemed important, while smoothly fading to lower resolutions in areas of the image considered to be less important. This means that you can reduce the size of some render targets while still keeping quality where you want it.We’ve removed all of the complexity of setting this up in Unity, allowing you enough control over the degree of foveation to be able to balance image quality versus GPU performance for your specific requirements.With this capability, foveated rendering on PS VR2 can be up to 2.5x faster, without any perceptual loss compared to equivalent image quality through standard stereo rendering. We’ve also seen gains up to 3.6x faster when foveated rendering is combined with eye tracking. (Note that these tests represent ideal increases in performance, tested on a Unity demo, and numbers will vary based on your game.)Foveated rendering on PS VR2 can bring a massive reduction in GPU usage while producing the same perceptual quality – and, combined with eye tracking technology, the performance gains are even better.Outside of graphics performance, eye tracking also unlocks a new input method. You can use eye tracking to allow users to select items from menus, start interactions with NPCs, use in-world tools, and more. Eye tracking could even be a focal point of the gameplay mechanics.Leveraging eye tracking works in much the same way as other XR input devices. You have access to the components for eye gaze, which is a combination of position and rotation across both eyes that defines a place in the virtual world. You can use this to tell where the user is currently looking.In addition to basic pose information, you will also have access to pupil diameter and blinking states for both of the player’s eyes. Combining these with the pose, you can start to form your own ideas around gameplay and interaction to more deeply engage with players.Here is an example of a simple gaze-based reticle:You’ll see a gaze tracker object that drives the movement of the reticle in this script, using the same TrackedPoseDriver that we might use to track any other XR controller in Unity. This one just happens to be tied to the eyeGazePosition and eyeGazeRotation set up in our Input System Action Map. There is also a TrackedPoseProvider specifically made to handle eye tracking if you are planning to use the more traditional Unity input methods.The new Sense Controllers are available for Unity developers and include interesting unique features only found on PS VR2.Finger touch detection uses capacitive touch to detect when a player’s fingers are resting on the buttons without actually pressing them. These controls are available on all the primary buttons and thumbsticks, so you can use them to drive more natural gestures with players’ hands during gameplay. You could also, in a more basic approach, drive a hand model to enable players to “see” where their fingers are when they look at the controller. This can really help players stay focused and immersed in an experience without having to lift the headset up or feel around for a specific button.PS VR2 uses inside-out tracking technology for the new system, giving you six-degree of freedom tracking for both the headset and controllers. You can now use most, if not all, of the standard Unity XR stack, making it easier to develop your games for broader platform reach. To set up the controllers themselves, we have exposed these input controls through both traditional Unity Input Manager and the newer Input System package.In addition to eye tracking and controller input, PS VR2’s SDK also allows full control over PS VR2 Sense technology haptics. This includes audio-based haptic feedback to provide a deeper experience for players, as well as a more traditional vibration support. The new controllers also include the same Adaptive Triggers available with PS5 DualSense controllers, meaning you can program the triggers with different styles of feedback based on game context. In addition to controller-based haptics, PS VR2 has added headset feedback, allowing you to give players adjustable vibration in the headset. This could be used to alert players of an event, or combined with audio to add more realistic sensation to experiences.We have worked hard to give you flexibility when it comes to integrating PS VR2 input and haptics into your games. With a combination of tracking improvements and a standard Unity XR SDK for PS VR2, you can leverage the full Unity XR stack, including things like the XR Interaction Toolkit, other XR SDK-dependent assets, Unity Asset Store packages, and other packages available through the Unity Package Manager.These features allow you to explore new forms of gameplay and worldbuilding.PS VR2 is available today, and you can build for it with Unity 2021 LTS and later. Foveated rendering requires Unity 2022.2 and later. We’re excited to see what this headset means for the VR industry as it unlocks a new level of performance and input controls for you to build even more immersive and exciting experiences.You’ll need an active Unity Pro subscription (or a Preferred Platform license key provided by the respective platform holder) to access these specific build modules via developer platform forums. Register here to become a PlayStation developer.Share your PS VR2 and PS5 games with us using the #MadewithUnity hashtag on social media. Have questions? Registered PlayStation developers can connect with us in the Unity forum on the PlayStation developer site.]]></description><link>https://unity.com/blog/games/the-next-generation-of-vr-gaming-on-ps5</link><guid isPermaLink="true">https://unity.com/blog/games/the-next-generation-of-vr-gaming-on-ps5</guid><pubDate>Wed, 22 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to overcome the in-app purchase revenue gap]]></title><description><![CDATA[Now that players’ budgets are tightening, it’s becoming more important for midcore and hardcore games to diversify their monetization strategy beyond in-app purchases. According to data.ai, consumer mobile gaming is on a downward trend - it dropped 5% in 2022, and will drop another 3% in 2023 to $107 billion.How do developers fill that gap in monetization? They can do it in a way that won’t require players to spend a penny: carefully placed ads.In fact, based on Unity LevelPlay data, ad revenue for in-app purchase based genres (RPG, casino, puzzle, simulation, lucky rewards) has been steadily on the rise since 2020. As consumer spending continues to decelerate, we’ll likely see a major uptick in 2023.As you explore an ad-based monetization model for your mid-core or hardcore game, it’s worth determining which ad units get you the most bang for your buck. Based on our data, the answer is clear: rewarded videos and offerwalls. Here are four best practices to get started.Make your offerwall stand outIt’s likely easiest to start with the ad unit most similar to the in-app purchase model: the offerwall. Like in-app purchases, this mini-store offers valuable hard currency to users. But unlike in-app purchases, no cash is required - just the user’s time.The more accessible you make the offerwall to users, the bigger your revenue potential - so make sure your traffic drivers get users’ attention by putting them in the right spots. Here are the most effective traffic driver locations that maximize your offerwall engagement:Home screen: The best traffic drivers are the most visible ones - so your game’s home screen is an ideal spot to promote your offerwall, and increase impressions as a result. Store: The store is filled with users already looking to increase their hard currency, making it a great place to tell users they can get this currency for free.Breaks in gameplay: Placing traffic drivers during natural breaks in the gameplay (out of currency, end of level) can improve the user experience by giving players currency when they need it most. Start small with new placementsThe other critical ad unit to include in your ad monetization strategy is rewarded video - they’re completely optional, and offer players an enticing reward for a short amount of their time. They work well with every type of game - including traditionally in-app placement-based games, because their soft currency doesn’t interfere with paid hard currency. And the best part is - because offerwalls and rewarded videos work with different currencies - you can implement them both at the same time.During implementation, we’ve seen one common mistake: adding too many ads right away. If you build a complex placement system and add it to a game, it will be extremely hard to analyze its performance. This is especially true in in-app purchase-based games - since the deeper a game economy is, the harder it will be to attribute certain successes to certain placements. That’s why we recommend starting with one or two placements.As you set your ad placement strategy, make sure your ads are checking all the boxes:Optimizing exposure (e.g. placed in busy areas like the main screen)Helping players reach their goals (e.g. offering extra soft currency to upgrade a weapon). Once you see your placement is performing well, you can double-down on your strategy and start adding more rewarded videos.Balance your game economyAs you’re adding new soft currency placements to your game, like rewarded videos, there’s a chance they can impact your in-game economy - so you need to adjust it accordingly.Let’s say you’ve added a new rewarded video placement - even though they’re optional for users, you should always assume that every player is watching them, so you can balance your economy accordingly.The chart below, for example, shows how you can always incorporate ads into your economy without impacting the total amount a player receives per level. With each amount of currency your ad is offering, you can simply reduce that amount from your end-level winnings - keeping everything balanced. For example, in Level 4, users can win 20 coins through in-app purchases. If you incorporate ads, you’ll need to split that 20 into 10 for in-app purchases and 10 for ads.It’s important to remember that your new placements should only offer soft currency, not hard currency. This way, you can avoid cannibalizing your in-app purchases and the hard currency they offer.A/B test your placements as you goOnce you’ve added a new placement (rewarded video and/or offerwall) and adjusted your economy accordingly, it’s time to test how your new ad system is working and make adjustments as needed.Let’s say you added a new offerwall traffic driver and rewarded video placement to the home screen. Now you optimize. How’s your engagement rate? For the rewarded video placement, is the amount of currency affecting people’s interest in making in-app purchases?By understanding how players are engaging with your ads, you can adjust accordingly - and eventually apply your insights to any new placements you add.Once you’ve found a baseline placement (rewarded video and/or offerwall) that meets your KPI goals and you’re ready to A/B test, start with the basics:The ad’s location in the game (e.g. home screen vs. store) The placement’s design and messagingAnd, for rewarded video placements, go even deeper by testing:Currency type and amountCapping and pacing the ad’s frequencyTo accurately measure A/B test results, make sure to only perform one test at a time on any given placement. Your best measuring tools are retention and ad revenue per user (ARPU). If you’re making changes that boost ARPU while retaining high retention, you’re on the right path.Ultimately, as the industry adapts and changes, developers - particularly those who make traditionally IAP-based games - can adapt accordingly. Offerwalls and rewarded videos are key for increasing monetization, and with the right implementation strategy and A/B tests to optimize performance, there’s only room to improve.]]></description><link>https://unity.com/blog/how-to-overcome-the-in-app-purchase-revenue-gap-in-2023</link><guid isPermaLink="true">https://unity.com/blog/how-to-overcome-the-in-app-purchase-revenue-gap-in-2023</guid><pubDate>Wed, 22 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Inclusion starts here: Why a year spent supporting representation was the best of my career (so far)]]></title><description><![CDATA[In 2021, Unity funded a multi-year, $300,000 grant partnership with Spelman College to build a gaming degree program and support Spelman’s Innovation Lab. Then, in 2022, with support from Unity, I became the first Expert in Residence (EIR) in Atlanta to launch a pilot program aimed at underrepresented creators.The goal of the newly established program is to continue to build on Unity’s partnerships with Historically Black Colleges and Universities (HBCUs) and Minority Serving Institutions (MSIs).During my residency, I formed an internal council of stakeholders across the company who invested time in helping to create new opportunities for participants. I also had the chance to meet with faculty from various HBCU and MSI departments, demonstrate tools, provide guidance and resources to students, and give workshops on topics ranging from real-time 3D (RT3D) use cases for research to career paths for students.Through my work with HBCUs, I continue to be blown away by student and faculty dedication to making the world better and creating more opportunities and pathways to careers that will directly impact how diversity is approached globally.It is one of the biggest highlights of my career to be able to create a program that expands inclusion in gaming and immersive experiences. As I reflect on the past year – especially during Black History Month – here are just a few things I’ve learned that were critical to the successful execution of this pilot program.This work requires investment from leaders within the community, as well as from the industry, so that the two can come together at one table to meet the needs of students and faculty. During the program, I built relationships and established partnerships with nonprofit organizations, government officials, and entrepreneurs, all of whom were dedicated to using emerging technology for economic development. This was helpful in developing success metrics focused on career pathways for students.As a result of this work, I was honored as an inaugural Champion of the Metaverse by the US Black Engineer (USBE) Information Technology magazine. The Black Engineer of the Year Awards honor leaders in various engineering disciplines for their technical contributions and advocacy for STEM education in the community.Only 2% of game professionals are Black, and it was critical to understand the systemic issues that contribute to the underrepresentation of people of color in the games industry. Part of that research included looking at the history of STEM education and where opportunities to break into the industry lie. Understanding game engine technology and its use cases is also essential to the future of work, particularly in entertainment.Sharing that message with the technology community at large is important, and the AFROTECH Conference was a perfect place to continue highlighting the intersection of real-time technology and cultural creativity.It was exciting to have Black technologists from around the world attend our Real-Time 3D is the Future panel at AFROTECH. During the panel, we discussed the power of computer graphics and creative tools like SpeedTree and Ziva. We also talked about the significance of technology history by acknowledging the contributions of Black scientists and inventors in the video game industry who have helped make technologies like game engines possible. Being able to connect the dots between STEM education – particularly in art and engineering – to the software that we develop helps demystify the myriad ways you can build a career in the games industry.Creating a strategy to do work like this has to include multi-threaded efforts across teams internally at Unity, including Education, Employee Resource Groups (ERGs), Social Impact, Inclusion and Diversity, Marketing, Recruiting, and Product Advocacy. Through building this village, we can establish programs that leverage Unity products for future creator success and open the door to new opportunities for our creative communities around the world.I can’t stress enough how important it is to check in often with both your industry and community collaborators. There is no one-size-fits-all approach to this kind of work. By listening to your users and actively sharing their feedback, you can create a custom program that meets the needs of students and faculty while helping shape inclusive product design and software development.Although the pilot program is complete, many colleagues within Unity and the broader games industry have reached out to learn how to keep the momentum going. We hope that this EIR model can be replicated with future initiatives; however, whether you’re a Unity employee or not, you can keep up with everything Spelman is doing with our grant by following the Spelman Innovation Lab online.An exciting event coming up soon is Spelman’s HBCU Game Jam, which is being held in Atlanta from February 24–26.If you’re in the Atlanta area and would like to volunteer in person for the Spelman College event this month, email us to learn about opportunities. To keep up with Unity’s own inclusion and diversity efforts, visit our site.]]></description><link>https://unity.com/blog/news/inclusion-starts-here-hbcu-msi-pilot-program</link><guid isPermaLink="true">https://unity.com/blog/news/inclusion-starts-here-hbcu-msi-pilot-program</guid><pubDate>Fri, 17 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[9 statistics about how users engage with streaming apps]]></title><description><![CDATA[The video streaming industry is booming - but do we really understand how consumers feel about streaming apps and their logic behind engaging with these services?To offer you deeper insight into how to position your streaming app in such a competitive market, we ran a survey using our proprietary market research solution to discover how people use streaming apps on their mobile phones and why they download new ones. Here are some key findings:Streaming apps are a critical vertical for users1. 68% of respondents rank a streaming app among the Top 10 apps on their phones and over 60% consider two or more streaming apps among their Top 10.Streaming apps are an important vertical when it comes to users' app priorities, not just an afterthought.Takeaway: You’re competing for space. It’s important that you speak to users with a high level of confidence, communicating why your app should be in users' Top 10 above competitors’ apps and other app categories.2. 66% have a streaming app on their home screen for quick access.According to Comscore, 61% of smartphone users move an app to the home screen because of frequent usage, 54% because of easier access when ready to use, and 18% because of its looks.Takeaway: Aesthetics are key. Even before you highlight your app’s value, make sure your app icon stands out and grabs user attention among the many apps on the home screen.3. 59% of respondents admitted that if they woke up to find no apps on their phone, they'd download their favorite streaming app among the first five apps they restored...reaffirming the claim that streaming apps are an app category users can’t live without. Interestingly, Gen X are the least likely generation to keep a streaming app on their phone’s home screen, yet if they woke up to find no apps on their phone, they are the most likely to download their favorite streaming app as the first app they restored.Takeaway: Work with a channel that puts your app front and center when users are looking for new apps. After all, you want to be the app of choice from the very beginning in order to increase your likelihood of being an app users can’t live without.Streaming fatigue? It’s just a myth.4. Despite headlines that users are decreasing their number of streaming apps, only 7% said they would not download another streaming app.This means that 93% of people would be ready and willing to download your app if they haven’t already.Takeaway: While it's important to be the first app of your kind on users’ devices, there's also room to get downloaded later on if your app matches a user's need. Ensure you differentiate your offering and continue to reach users throughout the device lifecycle through your advertising.5. Of the 93% who would consider a new streaming app, 52% said it would be for a specific show/movie they want to watch.60% of women would download a new streaming service for a specific show/content, as opposed to only 48% of men.Takeaway: Your content is key.Price is make or break for many users6. Over 40% of users who cancel their subscriptions do so because of cost.Demographics play a major role here. Women are more price sensitive: 45% have canceled a streaming service because of a price increase, as opposed to 36% of men.Takeaway: It’s important to communicate why your app is more valuable than competitors. It may be best to address your cost head-on and explain why your app is worth its price.7. 49% of users say they would download a new streaming app if it was free or discounted.50% of women said they would download another streaming app if it was discounted or free, as opposed to 43% of men.Takeaway: Free ad-supported (FAST) apps are a growing niche in the streaming industry, and offer room for growth especially to the female audience.Growth in offering an ad-supported subscription option8. Nearly half of all streamers pay to remove ads from at least one streaming app.This trend is consistent across all age groups, with Gen X leading the charge at over 60%, likely because they have higher spending power and can afford the cost.Takeaway: There’s a huge growth opportunity in incorporating different monetization models into your streaming app’s strategy, such as a free ad-supported plan alongside a more expensive ad-free plan. When communicating the ad free plan in your advertising, it’s best to appeal to those paying the bills in the house.9. 37% of users don’t have free ad-supported television (FAST) apps on their phones.Of those that do, 54% have between 1-4 apps. This means there are tons of users out there who haven’t started using FAST apps just yet, and they may use more than one app when they do. Takeaway: There’s a big opportunity for FAST apps to further grow their audience, which makes it that much more important to reach the right audience. Based on contextual triggers, on-device advertising is in a unique position to place your app directly in front of users that are likely to download and engage with your app into the future.Streaming apps continue to see growth and engagement, which means you want to set yourself up to reach users in the most effective way possible. Aura from Unity is an on-device advertising channel that recommends your app during critical moments of a device’s lifecycle, such as during device setup, as a native part of the device experience.]]></description><link>https://unity.com/blog/9-statistics-about-how-users-engage-with-streaming-apps</link><guid isPermaLink="true">https://unity.com/blog/9-statistics-about-how-users-engage-with-streaming-apps</guid><pubDate>Thu, 16 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Celebrating RT3D creators and social change in 2022]]></title><description><![CDATA[Fighting the stigma against mental illness. Advancing social justice. Protecting forests, oceans, and wildlife. 2022 was an incredible year for real-time 3D (RT3D) creators driving change, and we can’t wait to see what our creator community will produce in 2023. In this post, the Unity Social Impact team reflects on highlights from the past year across the industry.The Game Awards is an annual ceremony that recognizes “creative and technical excellence in the video game industry.” The Games for Impact category highlights games with a “pro-social meaning or message.” In 2022, five of the six games in this category were made with Unity. We're thrilled to see creators who are using games to drive change be recognized for their creativity and vision.And, of course, congrats to the winner: As Dusk Falls by Interior/Night.Last November, creators from around the world joined us to celebrate groundbreaking projects that aim to make the world a more sustainable, inclusive, and better place for all. During the Summit sessions, we heard about the power of digital twins for sustainability, art, activism, and RT3D for social justice, XR for marine conservation, and more.Actor and activist Rosario Dawson also joined us to discuss her vision for the future of tech-led creation. “We used to be all around the fire – the medicine woman, the warrior, the mother, the father, the child, the person who worked with the animals, and the food. Everyone had an equal space around that fire where they came together as a community. And, as industry built up, we started going into that pyramid shape where it was just the few people at the top and all the workers at the bottom,” she shared. “What’s remarkable now, with this technology, is we get to open up that portal, and get that light in our face and be back around the fire again through our watches and our tablets and our phones.”Watch the full keynote below.Throughout the year, we chatted with a number of intrepid creators to learn how they’re using real-time 3D to make the world a better place.SYBO and Subway SurfersTechnical Director Murari Vasudevan explained how the SYBO team wove its social impact mission into Subway Surfers by partnering with Lady Gaga’s Born this Way Foundation to promote daily acts of kindness and hosting a Play 2 Plant in-game event which helped plant over 500,000 trees.Soft Not Weak, Kitfox Games, and Tribe GamesEach of these three studios – Soft Not Weak, Kitfox Games, and Tribe Games – took the stage at GDC to discuss their approach to diversity, interactivity, and accessibility in game design.Changemakers Showcase with Cat Ross and Felix BohatschWe kicked off the Changemakers Showcase interview series with Cat Ross, designer and researcher of Gone to Water / Ido al Agua, an immersive documentary sharing first-hand accounts of environmental injustice in Los Angeles, Tongva Land. In the blog, she shared her vision for the future of real-time 3D as a tool for social justice.“We are hoping to employ VR as both a tool for inciting empathy as well as furthering digital inclusion within virtual spaces.” – Cat Ross, Love Death DesignWe also spoke with Felix Bohatsch, game director of Gibbon: Beyond the Trees, and heard about his motivation for creating a game that raises awareness of the plight of gibbons in Southeast Asia. Read more about Felix and Gibbon: Beyond the Trees.“The power of games is that you can show your players the world, and its problems, from a different viewpoint.” – Felix Bohatsch, Broken RulesIn March, we announced the winners of the 2022 Unity for Humanity Grant and the Imagine Grant. These remarkable creators received funding to support their projects that use real-time 3D to address social issues around the world.Darkening – an immersive virtual reality (VR) film based on creator Ondřej Moravec’s personal experiences with depression – was one of these winners. The creators aim to raise awareness of mental illness and fight the stigma associated with depression.“I imagine a world where people understand that if you have depression, it's not just a sad day. Depression is an illness. Everybody wants to be seen as the one who is simply ‘okay,’ but sometimes we’re not, and that’s not a bad thing.” – Ondřej MoravecThe Unity for Humanity Grant is designed to support and empower social impact creators using real-time 3D to make our world a better place. Judging for the Unity for Humanity Grant 2023 is now underway. If you’re working on a changemaking project and would like to apply next year, pre-register for the Unity for Humanity Grant 2024 to be notified when it’s announced.Virtual reality is changing the future of gaming, social networking, engineering, fashion, and more. As demand for VR development skills increases, we’re on a mission to make VR education more accessible to all.Last year, we released our VR Development Pathway. This six-week online course is completely free, making it easier for anyone to learn how to create effective VR experiences. Throughout the Pathway, you’ll create eight unique projects and learn all of the fundamentals you need to prepare for a job in VR.Start the VR Pathway or learn more about what it takes to get a job in VR.We’re also committed to helping academic institutions train the next generation of VR developers. In 2022, we partnered with Meta to donate $1M in funding and 5,000 Meta Quest 2 VR headsets to schools across the U.S. in an effort to propel immersive learning and diversify the mixed reality (XR) creator workforce.2022 also saw us partner with the Yale Program on Climate Change Communication to investigate global warming knowledge, attitudes, policy preferences, and behavior among video game players in the United States. The study gave us a deeper understanding of gamers’ beliefs about climate change and how we can work toward a more sustainable industry. One key takeaway was that 22% of respondents said they’ve seen global warming content in a game or gaming stream in the last year. As more developers realize the potential of real-time 3D as a tool for driving awareness and change, we’re excited to see even more climate change-themed games in the future.These are just some of our highlights from 2022. Want to hear more about the work Unity creators are doing to make the world a better place? Sign up for our Social Impact mailing list for regular news and updates about this incredible work.]]></description><link>https://unity.com/blog/news/rt3d-creators-and-social-change-in-2022</link><guid isPermaLink="true">https://unity.com/blog/news/rt3d-creators-and-social-change-in-2022</guid><pubDate>Thu, 09 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Addressables: Planning and best practices]]></title><description><![CDATA[Games today are bigger than ever. As they continue to explore the limits of modern device hardware, it becomes increasingly critical for developers to manage content efficiently at runtime. And, as publishers look to optimize their games’ retention and monetization metrics, a small game client and dynamic over-the-air content updates have become baseline requirements for many successful games.Unity provides an end-to-end pipeline to help developers and publishers succeed in today’s gaming marketplace. That pipeline starts and ends with Addressables, a Unity package that launched in 2019 and now powers thousands of successful live games and tens of thousands more in development.The Addressables package provides a user interface (UI) and API for organizing Unity assets to be built into AssetBundles and loaded and unloaded dynamically at runtime. Whether AssetBundles are shipped with your base game or hosted and delivered from a remote content delivery network (CDN) like Cloud Content Delivery, Addressables helps you load the assets you need, only when you need them.While the Addressables system can simplify many aspects of content management, it’s not a “set it and forget it” feature. The choices you make about how to organize, build, load, and unload addressable assets have significant implications for your game’s size and performance.This guide explores some of the most important factors to consider so that you can get the most out of the Addressables system. At the end of this blog, you’ll find helpful “cheat sheets” that provide general settings and strategy recommendations based on common Addressables use cases.Of course, the best strategy will depend on the game you’re building and your goals. Treat this guide as a reference to be used together with Unity Learn materials, Unity Manual documentation, and the community-driven forum for Addressables.At its core, Addressables is a tool for building and working with AssetBundles. Before diving into the Addressables UI and API, it’s important to get familiar with the AssetBundles archive file format and some of the runtime implications.You can think of AssetBundles as containers – they are archive files built for your target platforms that can contain assets like models, textures, prefabs, ScriptableObjects, audio clips, and even entire scenes that Unity can load at runtime.A key feature of AssetBundles is that they can express dependencies between one another. For example, AssetBundle 1 might contain a prefab that depends on a texture in AssetBundle 2. When you use Addressables to load the prefab at runtime, the Addressables system will automatically load AssetBundle 2 and the dependent texture into memory. And, if AssetBundle 1 has another asset that depends on an asset in AssetBundle 3, AssetBundle 3 will also be loaded into memory, and so on.When your game is running, the Addressables system tracks active references for all assets – including dependent assets like the texture discussed above – to determine which ones need to be in memory. An asset loaded from an AssetBundle cannot be released from memory until both its reference count and all other asset reference counts in the same AssetBundle are at 0. The AssetBundle itself can be released from memory only when all asset reference counts in the AssetBundle are at 0.Keeping in mind this tight relationship between Addressables and AssetBundles, the most important rule when organizing your Addressables content is to create AssetBundles that contain discrete sets of assets that you expect to be loaded and unloaded together.The most important decision you’ll likely make while using Addressables is how to organize your assets into Addressables groups. Here are a few questions to consider:Should you create many small groups or a smaller number of large groups?For each group, how many AssetBundles should you aim to generate (i.e., should you pack the assets in that group together, separately, or by label)?Should you use labels?Should you give your groups local or remote load paths?While we would love to give a single answer, the best Addressables grouping strategy will depend on several factors that are specific to your game.Remember: Addressables groups provide the organizational structure for your addressable assets that determines how those assets will be built into AssetBundles. So the best organizational strategy will be the one that packs, loads, and unloads your AssetBundles most effectively based on your game’s unique structure, goals, and limitations.Before you start organizing your Addressables content, make sure you have a solid grasp on the following:1. Your game’s structure and roadmap2. Your game’s platform strengths and limitations3. Your primary goal(s) in using Addressables to optimize your game’s performanceWe’ll tackle each of these factors below.The first factor to consider is your game’s structure and roadmap.By “structure,” we mean the actual architecture of your game. Is your game a linear, single-player journey where the player will progress through a predictable set of levels or environments? Is it a multiplatform PvP game with thousands of vanity items that could be instantiated at unpredictable times? Your game’s structure will determine when you will need to have assets loaded and ready to use, and when you’ll be able to unload assets and AssetBundles from memory.Remember, try to create AssetBundles that contain only the assets that need to be loaded together and can be unloaded together. If your game is a linear journey with distinct break points, consider organizing Addressables groups into larger subsets of content associated with each section of your game. That way, those assets can be loaded and unloaded together.If your game is non-linear and more unpredictable, opt for smaller groups that will generate smaller AssetBundles, allowing you to load and unload more dynamically. Always aim to use logical and meaningful names for your groups to help you quickly locate assets and optimize your layout.“Roadmap” refers to how your game will evolve over time. Once your game ships to players, will it remain mostly unchanged aside from occasional bug fixes or game balance patches? Or do you expect to add new content on a regular basis without requiring your players to install a large client update?Your content roadmap helps inform your grouping strategy. If your game’s content will be self-contained and not updated after launch, focus your grouping strategy around the structural considerations discussed above. If your game will require frequent content updates, group your content in a way that will allow players to download exactly what they need, when they need it.Consider using labels to help identify content from distinct bundles that will be needed together at runtime, such as a set of cosmetic items that will grow over time as your game matures. You can also use the “Pack Together By Label” Bundle Mode in your Groups Settings to subdivide content you’ve logically grouped together.For example, perhaps you plan to launch a new “Halloween 2023” event with some cosmetic items for players to collect. Your “Halloween 2023 Outfits” group might contain assets with the labels “Hats,” “Shoes,” and “Masks.” You could then add a “Halloween 2023” label to all the assets in this group. Using the “Pack Together By Label” Bundle Mode for this group will create three AssetBundles at build time.At runtime, you could then load all addressable assets with the Label “Hats” in your character customization screen to ensure all assets with that label are downloaded, loaded into memory, and ready for players to view. Or you could load all addressable assets with the label “Halloween 2023” on your promotional page for your event, ensuring they are ready to be displayed to your players.Having a deep understanding of your game’s structure and roadmap will help you make informed decisions about your content organization that will be beneficial throughout your game’s lifecycle.Next, we’ll tackle your platforms’ specific strengths and limitations and what they mean for your content strategy.The next factor to consider is the strengths and limitations of the platforms you’re targeting for distribution. In this section, we’ve outlined common platform targets for Addressables users, as well as some key considerations for each.Mobile and VRFor mobile and VR platforms, the most important considerations to keep in mind are app size, bundled content size, and download speeds.For your groups, consider the sets of content that your players will need immediately after install (e.g., to be able to complete your tutorial). Ensure this content is organized into groups with local load paths so that it will be included with your base game. Organize all other content into groups with remote load paths so that you can deliver this content over the air to your players.Opt for a group strategy that will build relatively small AssetBundles. The exact balance will depend on your game. Avoid extremely large bundles that will consume a substantial amount of memory and will be difficult to release once loaded. Similarly, avoid a huge number of tiny bundles that may create a very large Addressables catalog file that will be downloaded for every content update. Many tiny bundles can also have an impact on the speed at which your players can download the content they need, so be mindful of these pros and cons when determining the right balance for your game.Desktop and ConsolesFor desktop and consoles, the most important consideration is performance. Compared to mobile devices and wireless VR hardware, desktop and console hardware typically has fewer constraints around memory and disk storage. With this in mind, consider a group setting that will build uncompressed AssetBundles. This will provide the fastest possible loading time and can even provide for efficient patching on certain platforms.When developing for consoles specifically, pay close attention to any platform-specific caching restrictions that may apply. While mobile platforms allow you to take advantage of Unity’s AssetBundle Cache for downloaded content, this functionality is disabled by default at the Unity engine level for certain consoles and WebGL. Consider updating your base game with the new content on those platforms rather than attempting to deliver remote content over the air. Otherwise, you will need to create your own custom AssetBundle caching system and determine whether your solution complies with those platforms’ terms of service.After evaluating the strengths and limitations of your target platforms, identify one or two primary goals you’re trying to achieve by using the Addressables system. For example: Are you mainly aiming to reduce your base game’s size, or are you planning to deliver over-the-air content updates to players? To demonstrate, let’s discuss these options, and more, in detail below.Minimizing base game sizeIf your primary goal is to minimize your base game’s size, and you aren’t as concerned about memory limitations or large downloads after install, then your primary focus should be migrating as many assets as possible from scenes and Resources into one or more Addressables groups with remote load paths.Consider making the scenes in your project addressable and determine which, if any, must be included with the main player build. For those that can be delivered to players after install, include those scenes in groups with remote load paths. You can even build a player with one almost-empty scene, and load the rest of your game dynamically from there, as explained in this Open Projects Devlog video.If you make any scenes addressable, it’s best to make all of them addressable to reduce the chance and volume of unnecessary asset duplication.For groups that will generate AssetBundles to be hosted remotely, be sure to enable the AssetBundle Cache. This setting will ensure that downloaded AssetBundles will be cached on your players’ devices, preventing them from having to redownload each session.While it’s always good to keep in mind the runtime implications of many small bundles versus few large bundles, these considerations become more relevant when considering other goals you may have.Efficiently delivering remote content to playersIf your primary goal is the efficient delivery of remote content, your group structure should reflect how you aim to split content between “local” (i.e., assets included with your player build) and “remote” content (i.e., assets hosted on an external content delivery network). Again, be sure to enable the AssetBundle Cache to cache downloaded content on players’ devices.The size, number, and Bundle Mode of these groups will depend on when you expect to deliver remote content to your players and how long you’re willing to let them wait for downloads to complete. For example, if your game’s structure will allow for delivery of all remote content shortly after they install the base game, you can opt for larger groups with Pack Together or Pack Together By Label, which will result in a small number of large downloads.If you expect to deliver smaller sets of remote content to players throughout their sessions that will be less disruptive to the experience, you can opt for smaller groups and/or a Bundle Mode setting that will generate smaller AssetBundles that will download much more quickly.In most cases, for groups containing remote content, consider Enabled, Excluding Cached for your AssetBundle Cyclic Redundancy Check (CRC) option. This will provide additional assurances of your remote content’s integrity as it’s being cached to players’ devices, while avoiding the additional overhead of performing a CRC for loading content that’s already on player devices.Optimizing runtime memory usage and performanceIf your primary goal is optimizing the game’s runtime performance and memory usage, remember the most important rule of Addressables groups organization: Assets that you plan to load and unload at the same time should be grouped together.Generally speaking, this will mean creating smaller AssetBundles. You can achieve this in several ways, including creating smaller groups and/or avoiding the “Pack Together” Bundle Mode in your Group Settings for large groups that contain assets that won’t always be needed at the same time in your game.You should also keep an eye on runtime performance to help you spot potential issues or areas of optimization. Take advantage of official Unity tools like the Unity Profiler, the Memory Profiler package, or the Addressables Event Viewer, which can all help optimize your game’s performance.Be on the lookout for the upcoming Addressables Profiler Module, which will replace the Addressables Event Viewer. This new tool will provide even more in-depth information about how your code is loading and unloading addressable assets and AssetBundles, including detailed information about dependencies among your assets and AssetBundles.Multiple goalsOf course, most projects will have a number of goals associated with Addressables. In this case, there is truly no one-size-fits-all approach. You will need to evaluate the tradeoffs outlined above and find the group structure and settings that will best achieve the success you’ve defined.We recommend that you take advantage of the Addressables Build Report and the Addressables Profiler Module, available soon in Addressables 1.21.3. The Addressables Build Report will provide you with detailed information about the AssetBundles that were generated from your Addressables builds, including file size, potential duplicates, and in-depth dependency information. The Addressables Profiler Module is a new runtime analysis tool that takes advantage of this new dependency data, providing precise information about what was loaded by your Addressables code and why it was loaded.Below we’ve provided some handy “cheat sheets” for our recommended Addressables settings and strategies based on some of the most common use cases. Of course, these are just suggestions – it’s up to you to determine whether a suggestion aligns with your project’s unique structure and your specific goals.A mobile game with frequent content updatesA standalone, self-contained desktop or console gameA VR game built for Meta Quest 2If you have questions or want to learn more about the Addressables package, visit us in the Addressables forum. You can also connect with me directly on Twitter at @Unity_Jeff. Be sure to watch for new technical blogs from other Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/addressables-planning-and-best-practices</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/addressables-planning-and-best-practices</guid><pubDate>Wed, 08 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Reflections on my first year leading inclusion and diversity at Unity]]></title><description><![CDATA[As I look back on my first year as global inclusion lead at Unity, I’m proud of the progress we, as a company, have made. I am a firm believer that inclusion and diversity are not “nice to have” programs for companies, or something to put on the backburner during challenging times. Rather, it’s during challenging times that businesses should double down on inclusion and diversity initiatives, because these are key enablers of continued success.I shared a little bit about myself on our company blog when I first joined Unity. I was attracted to Unity’s approach to inclusion, which grounds everything in empathy. Empathy is an important starting point for everyone as they advance on their inclusion and diversity journeys. Rooting my professional life and work in inclusion is personal for me, and I’m committed to ensuring that as many people as possible are given equitable opportunities to succeed.Though I have only been around for the last year, Unity has been on its inclusion journey for quite some time. Along the way, the company has made mistakes, but there have also been some wins, like the implementation of the Empathy, Respect, and Opportunity (ERO) inclusion framework and the creation of Employee Resource Groups (ERGs).2022 was a year focused on understanding our current state, where we have gaps, and putting strong foundations in place from which to build and drive long-term, meaningful change. So, what are we working toward?Our “north star” is to embed inclusion and diversity into every aspect of our business – from how we recruit, treat, and empower our employees to the ways we design and share tools for the creators and communities we serve.To achieve that vision, we’re focused on four key pillars: workplace (culture), workforce, customers, and community. A diverse, inclusive, and equitable workforce and workplace are the foundations for effective marketplace inclusion and strong business outcomes.In my first year, we:Pinpointed our largest demographic gaps and pain points across levels and designed targeted interventions and programs to address those gaps.Invested heavily in our ERGs as drivers of inclusion by adding new groups (we now have nine), assigning executive sponsors to each group, creating charters, and sharing data to inform strategies, all of which included designing a continued investment plan.Implemented a robust methodology for setting inclusion and diversity goals and created inclusion data dashboards for more consistent tracking and advancement of those goals, while also assessing areas to strengthen data collection.Created opportunities to drive employee awareness of and engagement in inclusion efforts by hosting an internal Inclusion Summit and launching company-wide inclusion training modules.]]></description><link>https://unity.com/blog/news/reflections-on-my-first-year-leading-inclusion-and-diversity-at-unity</link><guid isPermaLink="true">https://unity.com/blog/news/reflections-on-my-first-year-leading-inclusion-and-diversity-at-unity</guid><pubDate>Mon, 06 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity Monthly: January 2023 roundup]]></title><description><![CDATA[The year’s just getting started, but there’s already a lot happening. Peruse our latest monthly roundup of Made with Unity highlights to learn what’s up in the Unity community.#MadeWithUnity games reached some exciting milestones in January.To start, we celebrated the return of a classic as Colossal Cave was released in VR. Death in the Water 2 by Lighthouse Games also launched, and it’s proving to be quite a terrifying experience.Finally, it’s great to see so many Made with Unity games nominated for the upcoming Academy of Interactive Arts & Sciences’ D.I.C.E. Awards. The nominees include:Gibbon: Beyond the Trees, IMMORTALITY, and MARVEL SNAP for Mobile Game of the YearTUNIC and NORCO for Adventure Game of the YearCosmonious High, Tentacular, and The Last Clockwinder for Immersive Reality Game of the YearMARVEL SNAP for Online Game of the YearSpiderHeck for Fighting Game of the YearDisney Dreamlight Valley, Lost in Play, and Trombone Champ for Family Game of the YearCitizen Sleeper for Role-Playing Game of the YearIXION, Potion Craft: Alchemist Simulator, and Warhammer 40,000: Chaos Gate – Daemonhunters for Strategy/Simulation Game of the YearOlliOlli World for Sports Game of the YearNeon White for Action Game of the YearIMMORTALITY, Neon White, and TUNIC for Outstanding Achievement for an Independent GameAmong Us VR, Cosmonious High, and The Last Clockwinder for Immersive Reality Technical AchievementMARVEL SNAP and TUNIC for Outstanding Achievement in Game DesignSomerville for Outstanding Achievement in Audio DesignCuphead: The Delicious Last Course for Outstanding Achievement in AnimationIMMORTALITY and TUNIC for Outstanding Achievement in Game DirectionIMMORTALITY, NORCO, and I Was a Teenage Exocolonist for Outstanding Achievement in StoryWe share new releases or milestone spotlights every Monday through @UnityGames on Twitter.Tuesdays are dedicated to #UnityTips on Twitter. Here are two we found helpful in January:@elvismdd shared a classic tip to highlight the GameObject causing trouble@SunnyVStudio offered some nice interactive bow strings to show off in VRWe also published a recap of highlights from our 2022 developer Twitter takeovers right here on the blog. Stay tuned for plenty more throughout the year, and keep tagging us using the #UnityTips hashtag.We love all the incredible-looking projects we see using the #MadeWithUnity hashtag.Twitter’s @Vhalenn_ showcased a breathtaking world that’s worth exploring and @HakanssonAugust demonstrated some on-point camera work. Then, @inresin’s lizard friend took us on all sorts of adventures.On Instagram, @Throwdrow’s floating sword (above) looked straight out of a fantasy world, while @chibig.studio’s witch had some errands to run.We’re so excited for a new year of #MadeWithUnity, so keep adding the hashtag to your posts to show us what you’ve been up to.There were no new Creator Spotlight streams on Twitch in January, but that doesn’t mean we weren’t busy. To close out the month, we sat down with three Unity Insiders – Samyam, Andy Touch, and Code Monkey – ahead of Global Game Jam 2023 for a kickoff panel (also on YouTube) and joined the Global Game Jam team for its Day 2 Prep Week stream.In addition, we continued the revitalizing clips on YouTube with not one but four videos highlighting snippets from recent Creator Spotlight streams, including insight on layered explosions and stylized graphics in Rollerdrome, tips on building your email list from Thomas Brush (above), and the power of command buffers with JellyCar Worlds.Don’t forget to follow us on Twitch and hit the notification bell so you never miss a stream. If you miss a future Creator Spotlight live broadcast, don’t worry: We upload all streams to this YouTube playlist.On January 26, we had our first Dev Blitz Day of the year, focusing on authoring. The event was held in both the forums and the Discord server. Throughout the day, we answered more than 200 developer questions and would like to thank everyone who participated.Our next Dev Blitz Day will be held this month (February), but the date is still TBD. Keep an eye on the forums and our Discord for future announcements.Just in case you’re prioritizing vibes this season, we’ve got you covered with cozy assets for cozy games. What are “cozy games” you might ask? Read up on the emerging genre, and maybe it’ll spark some creative ideas for your next project.Plus, catch up with some of our favorite creator showcases on Twitter last month:Nordic Landscape | John Leonard FrenchWaterCausticsEffect for URP v2 | Masataka HakozakiTerraWorld SRP (Coming Soon) | ShadercrewPoly HP – Wildman | Downrain DCIf you’re using any Unity #AssetStore assets or have published assets to show off, be sure to tag us on Twitter with your latest creations. We’re excited to see what everyone creates throughout the year.Last but not least, here’s a non-exhaustive list of Made with Unity titles released in January. Do you see any on the list that have already become favorites or notice that something is missing? Tell us about it in the forums.Gorilla Tag, Another Axiom (January 1)We Are The Caretakers, Heart Shaped Games LLC (January 6)Children of Silentown, Elf Games, Luna2 Studio (January 11)LONE RUIN, Cuddle Monster Games (January 12)Surviving the Abyss, Rocket Flair Studios (January 17)Osiris: New Dawn, Fenix Fire Entertainment (January 18)A Space for the Unbound, Mojiken (January 19)Colossal Cave, Cygnus Entertainment (January 19)The Pioneers: Surviving Desolation, Supercube (January 20)Fire Emblem™ Engage, Nintendo (January 20)Catch Me!, ByteRockers' Games (January 24)NBA All-World, Niantic (January 24)Death in the Water 2, Lighthouse Games Studio (January 26)Power Chord, Big Blue Bubble (January 26)Roller Drama, Open Lab Games (January 26)That’s a wrap for January! Want more community news as it happens? Don’t forget to follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-january-2023-roundup</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-january-2023-roundup</guid><pubDate>Thu, 02 Feb 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How I achieved my dream career with Unity Learn Pathways]]></title><description><![CDATA[Unity is on a mission to empower more learners to become real-time 3D creators. We made our online learning platform, Unity Learn, free for all in 2020 to give everyone the opportunity to access high-quality education and achieve their dream careers.Unity Learn Pathways are intensive online courses designed to take you from complete beginner to career-ready. To demonstrate this better than we ever could, we recently sat down with Pathways graduate Robbie Coey to chat about his experience with starting his own studio and working toward releasing his first game after finishing the Junior Programmer Pathway.Robbie Coey (he/him) is a founder and director of HoloMoon Games, an indie game studio based in Belfast, Northern Ireland. Robbie, K Andrews, and Michael McArdle founded Holomoon in September 2021 to create weird and wonderful narrative experiences. They’re currently working on Guitar Zeros, a narrative deck-builder about bringing a band from humble beginnings to the world stage.Keep reading to learn more about Robbie and the integral role Unity Learn has played in getting his career and studio off the ground.How did it feel when you completed the Junior Programmer Pathway?In a word, brilliant. It felt as though I finally had something that I was passionate about and could focus on. I could spend hours on various tutorials and building my own projects and it would feel as if no time had passed at all. The only other time I have that feeling is when playing games.How long did it take you to complete the course?It took around a month, and I completed it alongside part-time work. I advise anyone embarking on it to work little and often – you'll burn out if you try to do too much in a short time. It's easier to build the habit if you're able to work consistently over a long period, and if that means only doing half an hour every other day, that's what you do. Find a schedule that works for you and avoid burnout at all costs.What was your career before you started learning Unity?I had worked briefly in film and television in a range of roles on documentaries, dramas, and animations. I’d explored film and television a lot, and while there were things I enjoyed about working in that industry, I always felt a little out of place.What career challenges did you face?I felt as though I lacked hard skills. I was good at communicating and being a team player, but whether it was due to lack of confidence or something else, I always felt uncomfortable putting myself forward to do more technical work.What made you want to switch careers?The COVID-19 pandemic had dried up all opportunities in the industry I worked in previously. It was a move almost out of desperation. To even my older siblings, games were an idle pastime at most. Unity Pathways and the support from Unity really showed me how much of an opportunity there was in the games industry. I have met people and done things that I would never have dreamed of prior, as well as found a huge passion that continues to drive me to push myself further.“Unity Pathways and the support from Unity really showed me how much of an opportunity there was in the games industry.”Has the career change had an impact on your salary?It's a lot more stable, for one. I came from a work-for-hire industry, and immediately before learning Unity I was unemployed due to the pandemic. Having mostly done short contract work in the past, learning Unity has allowed me a lot more financial freedom and opportunities to increase my salary.“Learning Unity has allowed me a lot more financial freedom and opportunities to increase my salary.”Can you tell us about your new career?I’m now a director in my own studio. I was very lucky to receive funding from Northern Ireland Screen after completing my Unity Pathways course. With that initial investment I, along with two others, were able to start our own studio, HoloMoon Games. We want to make games that reflect our culture and make people laugh. We're currently working towards our first official release, Guitar Zeros, which will hopefully be on Steam sometime next year. And, I’ve recently become a BAFTA Connect member, which I never thought I could achieve. I keep wondering when they're going to realize and kick me out.“We're currently working towards our first official release.”Can you tell us how you secured funding for your project?We applied for an incubator scheme with Northern Ireland Screen called MiniGame, which involved written and in-person pitching. My advice for anyone looking to do the same would be to get comfortable talking about your game idea in front of others. One thing that helps is to ask three questions: Can I make this? Should I make this? And, do I want to make this? If I answer yes to all three, then I know I can comfortably pitch that idea. In general, I'd recommend keeping an eye out for funding opportunities, especially those provided by local organizations in your area. Without the support from Northern Ireland Screen, I wouldn't be in the position I am now.Why do you think learning real-time 3D and Unity is so important?For me, it unlocked so many ways in which I could express myself, and also allowed me to understand the digital world we live in. After I started learning Unity, I began to see it and real-time 3D technologies everywhere, from film and TV to the automotive industry. Real-time 3D is really becoming ubiquitous, and understanding how it works means you won't get left behind.“After I started learning Unity, I began to see it and real-time 3D technologies everywhere.”Has learning Unity had an impact on your life and career?It has completely changed the trajectory of my life and career, given me skills I never thought I had, and ignited a passion for games and programming that I didn't know was there. It made it possible for me to access a new industry which, to even my parents’ generation, seemed esoteric and mysterious. My life and career are infinitely more interesting since I completed the Unity Pathway.“My life and career are infinitely more interesting since I completed the Unity Pathway.”What are your plans for the future?I would like to continue running my own company, improve my craft, make interesting games that I can be proud of, and really try to push the storytelling of the medium forward. Games are unique in the way that they tell stories, and I feel there is still a lot to learn about what kind of experiences they are able to create.“Games are unique in the way that they tell stories, and I feel there is still a lot to learn about what kind of experiences they are able to create.”What advice would you give to anyone learning Unity?Rome wasn't built in a day. You won't learn everything about Unity overnight, but you also don't need to learn everything about Unity to get creative. In fact, I find setting yourself limitations can oftentimes make you more creative. You will get the knowledge you want with hard work and dedication, and there's no point rushing it. Also, network – find peers that are at your level and find others that are where you want to be in the future. There's a great community of people out there and they all want to lift each other up.You mentioned finding your peers. How did you go about doing this? Do you have any advice for anyone trying to find a community?The best source for me to find other game developers was through the Northern Ireland Game Developer Network. I would keep an eye out for local developer networks or more specific communities related to what you would like to do. Discord is a great meeting point for many of these groups, including Unity's own Discord server. Partaking in game jams is also a great way of meeting people. Itch.io has a terrific list of upcoming jams that suit all sorts of game developers, most of which will have some kind of forum to meet others who are participating.With Pathways, you can build all of the skills you need to master Unity and join the real-time 3D industry, just like Robbie. These free online courses cover everything from downloading and installing the Unity Editor to coding, VR development, lighting and shading, and more.Junior Programmer is designed for anyone interested in learning to code or obtaining an entry-level Unity role. In this free, fully virtual, self-guided course, you will learn about fundamental programming concepts such as variables, functions, and basic logic through two practical projects. You’ll also join a community of Unity learners enrolled in your Pathway where you can share your progress, get help, and interact with Unity's learning team.Follow HoloMoon Games’ progress on Twitter and don’t forget to wishlist Guitar Zeros on Steam. Did learning Unity help you achieve your dream career? If you’d be interested in sharing your story, please complete the following form for the chance to be featured: Share your Unity journey.]]></description><link>https://unity.com/blog/games/how-i-achieved-my-dream-career-with-unity-learn-pathways</link><guid isPermaLink="true">https://unity.com/blog/games/how-i-achieved-my-dream-career-with-unity-learn-pathways</guid><pubDate>Mon, 30 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 monetization mistakes your strategy game is making and 5 must-have rewarded video placements]]></title><description><![CDATA[Because strategy games tend to be so intricately designed, we often see developers try to create equally intricate ad monetization strategies. However, overcomplicating ad placements can actually harm potential revenue. Meanwhile, keeping placements simple makes them feel like a natural part of the user experience - enabling you to engage players without disrupting your game economy.In this article, we’ll get into our recommendations for rewarded video ad placements that work best in strategy games and tips on how to integrate them. But first, let’s talk about some common mistakes we see strategy game developers make when they first start monetizing.Top 3 rewarded video mistakes for strategy gamesMistake #1: “I’ll just place a rewarded video anywhere I want”Your first instinct may be to place rewarded video traffic drivers in many - sometimes random - places throughout the game, like inside the mini games. But more isn’t always better, and can even hurt the game economy. Instead, you want to start simply and turn to your core game loop. That’s because by adjusting your rewarded video placements to meet the basic needs of your players, you’re encouraging more engagement with your ads - ultimately increasing revenue.For example, to progress through a game, strategy players constantly need basic resources like coins, wood, or mana - but this currency comes and goes quickly throughout levels. By offering users to watch a rewarded video in exchange for these basic resources, they’re more likely to engage because they’ll get what they need. When you offer them outside the core loop, they have no need for the reward - so there’s less of a reason for them to engage.Another example? If the core loop dictates that users need to buy a new weapon for soft currency, then you can make coins a reward users receive.Mistake #2: “I’ll offer rare currency to all my players”It’s true that rewarded video placements should be available to all players, but the rewards should differ depending on the players’ level - are they beginner or advanced? For beginners, currency should mostly be easy to get. For advanced players, offer rare currency at higher levels in the game. Why? If you offer rare currency to all your players in the first few levels of the game, beginners may not know what to do with it - so they won’t engage with the rewarded video. That’s why saving rare currency for advanced players, and offering basic currency early in the game helps you capture a wider audience and increase engagement.Mistake #3: “I want to make additional rewarded video currency to reward players because it’s easier to develop”The easier it is for strategy players to reach the resource they need, the more they’ll continue engaging with rewarded videos. Often we see strategy games create an additional currency just for rewarded video, which players then need to cash in later to receive the game’s actual core currency. But this puts an extra step in between the users and what they really want: immediate rewards. Not only is a third currency an additional step for players, they’ll often forget about spending it, delaying their reward.In fact, one of our developer partners originally created movie tickets as an additional currency for rewarded video but then ended up switching their strategy. They kept the movie ticket placement but also added a new placement without movie tickets, so that the players could have the option to receive a direct reward of gold coins.The developer saw a huge spike in all KPIs with no harm to the game economy and IAP. The placement worked well because it eliminated the in-between currency (movie tickets) while giving direct access to the currency (gold coins) players wanted.Top 5 rewarded video placements for strategy gamesAs a general rule of thumb, rewarded video works best when it’s shown as often as possible. Start monetizing users starting on D0, but also focus monetization efforts on D7 and D30. The players who stay beyond these days are the ones that rewarded video can be most useful for. That’s because the more players progress in a strategy game, the more valuable the rewards will be for them to stay and succeed.With that in mind, let’s dive deeper into how to boost ad engagement with rewarded video placements.1. Home screenStrategy players spend most of their time on the home screen, toggling between different actions to take - so rewarded video here is potentially your top placement. Because this placement will be your most exposed, users have more opportunities to engage with it.Turn to your core loop to decide what rewards users will be looking for the most, but always A/B test so you know which rewards drive the most revenue and engagement. The most common rewards to offer on the home screen are basic resources, soft currency, and gachas, since players constantly need these to progress through the game.To increase engagement rates, you can also add a time limit to the home screen placement. This will give your players a sense of urgency - encouraging them to engage immediately. They’re more likely to tap the button to watch an ad because they’re afraid of missing out on the opportunity.2. In-game storeStrategy players who need hard currency are most likely to head to the in-game store. Since the majority of players don’t spend real money to earn rewards, offering a rewarded video here in return for valuable resources is a great opportunity. Generally, rewards in the store aren't specific items but still give value - like treasure chests or other gachas.To get users to keep coming back to the store, set the pace for rewarded videos to be between 4 to 6 hours. Use this as a starting point and then keep A/B testing to find the ideal pace for your game. Not only does this promote more traffic to the store, but done right, users might also make an in-app purchase down the line - a double win for you.3. Pre and post level boostersLevel-based games like match-3 often show rewarded videos before and after levels to engage users at critical moments - giving users the resources they need to progress. Though strategy games aren’t centered around levels in the same way, the ones that do have level-based gameplay, can also leverage this placement.For example, your pre-level booster can offer users to upgrade their characters or get additional resources they need to complete that level - essentially giving them a leg up before they start. Your post-level booster can extend play sessions when players fail (think: earning an additional life).Be sure to carefully limit this placement, as it can be risky if players are given too much help. If players can too easily boost their performance and pass levels a lot faster, they’ll get bored and leave the game. It’s about finding the right balance.4. Time boostFor strategy games where wait time for tasks increase depending on progress, a time boost placement will help them progress faster.When using this placement, make sure that it’s aligned with a player’s progression and level. For example, if a player needs to wait 20 minutes, cutting their time by 10 minutes would be substantial. But if a player needs to wait 3 hours, you’d want to adapt the time you’re taking off for them and cut their time by an hour or so. Again, make sure to A/B test the amount of time you’re reducing for players - since it’ll depend on the game.5. Daily reward multiplierFor games that have a daily reward, you can add a placement that multiplies it - giving users an extra reason to engage. During the first week and month of a player’s life in the game, daily rewards are really valuable. You’re essentially giving players a taste of what your game is like and are drawing them in. From the start, if players need 100 coins in a game, giving them 80 coins for free in the daily check-in and 20 through rewarded video is an easy way to motivate players to continue. It’ll help to A/B test these rewards to find the right ratio whether that’s 50/50, 80/20, or so on.Make sure this isn’t your only placement. Strategy players only get one shot per day to use it - meaning you can’t monetize players more than once per day.Learn more about ironSource’s game design consultancy. Get in touch.]]></description><link>https://unity.com/blog/3-monetization-mistakes-your-strategy-game-is-making-and-5-must-have-rewarded-video-placements</link><guid isPermaLink="true">https://unity.com/blog/3-monetization-mistakes-your-strategy-game-is-making-and-5-must-have-rewarded-video-placements</guid><pubDate>Mon, 30 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Everything you need to know about Memory Profiler 1.0.0]]></title><description><![CDATA[The new Memory Profiler – version 1.0.0 – delivers improvements to the profiling suite that offer a more complete view of memory usage and make it easier and faster to optimize performance or detect memory issues.We in the profiler team are very happy to announce that, as of September 2022, the Memory Profiler package moved from Experimental to Verified and is now accessible for everyone using the Unity 2022.2 Tech Stream.Optimizing memory is crucial for applications that run on devices with limited capabilities in order to prevent them from crashing out of memory. Moreover, if you’re planning to ship on multiple devices, your memory footprint might be in need of fine tuning to make sure you get the best out of each platform.The Memory Profiler is a tool that helps you with these challenges by allowing you to take a snapshot of your game and review its memory usage at a specific moment in time.By taking a “snapshot” of your game, you can see what is occupying most of its memory or identify problems that might cause applications to crash.Note: While Memory Profiler’s complete features and memory tracking are only available for 2022.2 onwards, you can take advantage of the new user interface (UI) to inspect older captures by opening Memory Profiler in an empty 2022+ project and importing older snapshots.Memory Profiler was originally released as an experimental package a couple of years ago, but this release includes a major overhaul of the UI and user experience (UX) to make it faster and easier to use.The original experimental package was used by some early adopters, and helped in many cases to identify memory issues. However, it was unwieldy, slow, and required expert knowledge in its first iteration.When we set up to work on a new version of the package, we had the following intentions in mind:Simplify the most common and important workflows, so that you would be able to identify and fix issues fasterProvide more complete and reliable information to make it easier to compare memory usage across devices (also using platform-specific profilers)Showcase information in a more accessible way, so that users without in-depth knowledge of memory can still effectively optimize applicationsTo achieve this, we’ve been working closely with the early adopters of the experimental package in order to understand their needs and pain points, and we have iterated several times on the design to make sure it provides the best UX possible.Thanks to their input, our team was able to greatly streamline and simplify the tool, reducing jargon and making it easier to inspect objects, details, and dependencies directly in the tool.Memory Profiler consists of three main sections that showcase its new and improved UI, which we’ll break down here:Snapshot listA Main section, which is itself divided into three workflow views (Summary, Unity Objects, and All of Memory)Selection DetailsThe Snapshot list is the area where you can capture and see snapshots that you have taken in your game, as well as high-level information about memory usage and date of capture. Here, you can capture snapshots either with the “Capture” button in the toolbar or – if no snapshot is available – through the snapshot button in the Main section.You can also see whether memory usage is changing across snapshots and can get a sense of whether project performance is improving or not.Finally, you can also use Snapshot list to select whether you want to look at single snapshots or compared snapshots (more information about this below).This is the core area of Memory Profiler, divided into three workflow views: Summary, Unity Objects, and All of Memory. Each of these views is accessible from the tabs in the top of the Main section.The Summary view is the default view that opens as you load or capture a snapshot. It provides information on how much memory you are using, how much is “resident” on the device, and how much is committed but not currently on device. It also provides information about how memory is distributed across categories, to simplify choosing where to start your investigation.Finally, Summary view provides entry points for more detailed analysis, such as the “Top Unity Objects in Memory” or the “Managed memory breakdown.”The Unity Objects view is where you will likely spend the most time. It lists all the main types of objects loaded in memory, such as textures, shaders, fonts, and so on. Usually, this is where you can identify objects that are too big, don’t need to be there because they have been loaded mistakenly, or were kept in memory by some hanging reference.The All of Memory view enables you to see all memory, divided by category – Native, Managed, Graphics, or Executables. You can see the data captured by the Memory Profiler and investigate more specific aspects to see what is composing your project’s memory.Selection details offers more information about items selected in the Main section, including descriptions of different categories of memory and potential references or details of selected objects.This section offers more information to help you understand what you are looking at, and makes it easier to determine why it is in memory. Moreover, if you have the project open in the Editor, you will have the possibility to “ping” objects and inspect assets directly in the Scene or Project window.Each of the views described above is available for inspecting single snapshots or for comparing them.If you want to compare a snapshot, you can select “Compare” in the snapshot list, then select a second snapshot from your list. Being in the compare tab of the snapshot list will automatically turn all views into Compare mode.In Compare mode, the Summary view provides the two captures’ memory breakdown, side by side, so you can see the main differences in memory usage between the snapshots (which will be named “A” and “B”).In the Unity Objects and All of Memory views, there is a new, dedicated UI that allows you to see how different memory categories have changed in size or the amount of objects contained in them.If you select a category in the top table, you will be able to inspect individual differences for snapshot A and B in the tables below.If you want to go back to inspecting a single snapshot, you can select “Single” again in the snapshot list. The second snapshot will stay latently loaded so you can quickly switch between the two, as needed.In the coming months, we hope to provide you with further resources and information on how you can effectively optimize memory. Stay tuned for more blog posts covering how to identify common problems in memory, as well as a deep dive into how memory works in Unity.For more general resources on how to optimize application performance, we recommend the following:Memory in Unity manualThe Ultimate guide to profiling Unity gamese-bookOptimize your console and PC game performancee-bookOptimize your mobile game performance e-bookThis redesign of the Memory Profiler integrates input from many early adopters of the experimental version of this package. While this version brings major improvements in both the reliability and usability of this tool, our work is far from done.We are also currently working on better understanding workflows related to reducing fragmentation, so that we might be able to help you with this aspect in the future. At the same time, we are gathering feedback on usability and UX issues that are still open and need improvement.If you have any feedback or suggestions, we invite you to share your thoughts through our roadmap page, where you can vote for existing features in progress or suggest new ones. You can also reach out to ask questions in the forums.We’re constantly monitoring both channels and look forward to working together to further improve Unity’s performance and tooling.Install or learn more about the Memory Profiler 1.0.0 package.]]></description><link>https://unity.com/blog/engine-platform/everything-you-need-to-know-about-memory-profiler</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/everything-you-need-to-know-about-memory-profiler</guid><pubDate>Mon, 30 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity and Google expand partnership to help creators accelerate the development and growth of their games]]></title><description><![CDATA[I’m excited to announce today that we are renewing and expanding our partnership with Google to support studios in the development and growth of live games. To start, we’re giving developers more ways to access foundational multiplayer services by making solutions from Unity Gaming Services (UGS) available on Google Cloud Marketplace. Additionally, we’re also working to improve monetization opportunities for mobile game developers as Google demand (Google Ads, Display & Video 360) will soon bid into Unity LevelPlay via Google’s partner bidding program.Unity’s Game Server Hosting (Multiplay) and Unity’s Voice and Text Chat (Vivox) are the first products from Unity Gaming Services to be available on Google Cloud Marketplace. These are essential tools for building robust multiplayer experiences. Game Server Hosting is a dedicated game server hosting service that helps creators effectively scale their game as it grows. This service is trusted by studios of all sizes from AAA to indie developers. Unity’s Voice and Text Chat enables in-game player communications and has been the premiere comms solution for over a decade.With 77% of gamers around the world playing multiplayer games, we know the demand for connected player experiences is massive. Through Google Cloud Marketplace, we’re expanding access to our solutions and giving creators more choice in where they can find what they need to build multiplayer games.In addition to helping developers build great multiplayer experiences, Unity and Google are also committed to helping mobile studios monetize and scale their games. Making Google demand available for in-app bidding within Unity LevelPlay will give developers streamlined integration to a premium source of advertisers, providing better opportunities to monetize inventory. This also reduces ad operations overhead and decreases transaction latency. Through this expanding ad partnership, Unity and Google are empowering mobile creators to attain efficiencies and better achieve overall business success.We are excited to work with Google to provide developers with the most robust tools and infrastructure to build, launch and grow games seamlessly at a global scale. The expansion of our UGS solutions to Google Cloud Marketplace and the integration of Google demand into Unity LevelPlay serve as important milestones in this deepening partnership. We’re looking forward to the opportunities ahead as we further our goal of helping developers address some of their biggest challenges with making and growing live games.To learn more about the availability of Unity Game Server Hosting and Unity Voice and Text Chat on Google Cloud Marketplace, visit cloud.google.com/marketplace. More information about Unity LevelPlay is available here.]]></description><link>https://unity.com/blog/news/google-partnership-expanded-to-help-creators-accelerate-game-development-and-growth</link><guid isPermaLink="true">https://unity.com/blog/news/google-partnership-expanded-to-help-creators-accelerate-game-development-and-growth</guid><pubDate>Thu, 26 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[From core to meta gameplay: 8 ad placements to boost your hyper-casual game’s LTV]]></title><description><![CDATA[The hyper-causal genre thrives on its famously low CPIs and LTVs, which enable developers to affordably buy users at scale. But with today’s market conditions pushing up CPIs across the board, hyper-causal developers need to increase their LTV to stay competitive.The best way to do that is by optimizing the ad placement strategy and adding layers beyond the core gameplay, like metagames. Let’s explore the top 8 hyper-casual ad placements - core gaming and beyond.Core gameplayBefore you start adapting your placement strategy for higher LTV, first make sure you’ve got the basics down and implement ad placements into the core gameplay. Here, it's best to leverage rewarded video ads to help each player achieve their goals (in exchange for a bit of their time).1. Before the levelRewarded videos can be very useful even before core gameplay begins. Each pre-level traffic driver should pop-up and offer the player exactly what can be useful in that upcoming level - like boosters, skills, or extra items. Not only does this pleasant surprise motivate the player to start the level, it creates a precedent that ad placements are here to help.2. During the levelOnce the level begins, rewarded videos can also be a key source of support during the actual gameplay. These traffic drivers can be pop-ups, but unlike pre-level placements, you have more options - they don’t need to suddenly appear on the screen to grab the user’s attention. Rather, these placements can sit in the level, and players get to decide whether to engage with them or not. It sounds passive - but since players will see a clear and easy opportunity to get a reward, they’ll be motivated to engage with them.For example, if a player sees a glowing rewarded video traffic driver sitting inside the level, they’re likely to click on it - even without a big pop-up prompting them to do so. To meet users’ expectations, these traffic drivers should offer something useful to the user at the time, like a skill upgrade.3. After the levelEven once the level ends, ad placements can and should support the player’s progress in the game. If the player wins, the placement can offer to multiply their rewards, or if the player loses, it can give the player a chance to revive and restart the level.Offering a restart can be tricky when levels become very long - so another placement option is allowing the player to return to the point they died in the level. To give players the extra motivation they need to engage with the placement and try again, you can use progress bars like in the example below to show them just how close they were to finishing the level.Top ad placements for meta gamesMore hyper-casual games are building meta games, since they offer an additional way to boost retention - essentially they keep players engaged beyond traditional core gameplay. To bump LTV even higher, integrate the right placements to support it.4. Buying/building itemsThe metagames that offer a space for players to build and buy items, like equipment and living spaces, are a great place to incorporate rewarded videos. That’s because the rewards from the rewarded videos can give players the in-game cash needed to build and buy items. This placement option is a win for your game economy for two reasons - (1) players are motivated to spend their in-game cash and also (2) the items they acquire can become cash generators themselves.For example, in Twerk Race by Free Play, players can enter the gym at any time - the more equipment the player has, the more in-game cash they receive in return - so they’re motivated to buy even more equipment to fill it up. As soon as a new piece of equipment exceeds a player’s in-game budget, they can pay by watching a rewarded video instead.5. Unlocking more activitiesThere’s another common metagame where players can unlock more layers of the meta game experience - all players need to do is spend money or (you guessed it) watch a rewarded video. Players are extra motivated to engage with these ads because they can access a new and mysterious game experience.In Crowd Evolution by Rollic Games, for example, the player hops between different islands to unlock different meta activities on each island - all they need to do is engage with an ad placement.Depending on the game, players have the ability to unlock even more activities - in Arm Simulator by Supersonic, for example, players engage with the placement to see a continuation of the core game story.Beyond core gameplayBeyond core and meta gameplay, there’s even more ways to boost LTV in hyper-casual games - here are the ad placements that can best support them.6. New skinsLike weapons or power ups, skins offer the player an opportunity to experience the game in a new, exciting way - which makes it an ideal opportunity to drop in a rewarded video placement and let players test it out first-hand.Many hyper-casual games offer users to try out a skin before unlocking it. This gives the player an exciting first hand-experience that often motivates them to want to unlock the real thing - which might require hard or soft currency, or in the example below, watching a rewarded video.7. Daily missionsBy offering daily activities to complete, daily missions are another hot spot to incorporate rewarded video placements.In Lunch Box Ready, for example, players are offered a week’s worth of unique and valuable rewards, like coins and prizes - all they need to do is watch rewarded videos to get each one. If just a single daily reward can motivate users - imagine their excitement seeing how many rewards they can receive over a longer period of time. This way, players can see their progress in completing the missions - and get the extra boost of motivation to participate in the next one.8. LeaderboardsBy offering players exactly what they need at a specific moment, ad placements help reward player motivation - so try placing them where players feel most motivated: the leaderboard. The leaderboard can help ignite the player’s sense of competition and - because they can continually progress in the leaderboard over time - even their long-term retention. As the player is already considering their progress in the game, why not offer a rewarded video placement that can help them progress even further?That’s exactly what Bridge Race by Supersonic does, for example - they make it clear that players who watch a quick rewarded video get an extra 5 stars in the game - and an immediate boost in the leaderboard.As the hyper-casual gaming world grows, the only way to stay competitive is by growing with it - not only by deepening your gaming experience, but diversifying our placement experience to match it. Whether players are engaged in core or meta gameplay - the placements they interact with should always meet their unique interests, ultimately keeping them engaged and their user experience positive.]]></description><link>https://unity.com/blog/8-ad-placements-to-boost-your-hyper-casual-ltv-meta-gameplay</link><guid isPermaLink="true">https://unity.com/blog/8-ad-placements-to-boost-your-hyper-casual-ltv-meta-gameplay</guid><pubDate>Mon, 23 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to run special offerwall promotions that boost revenue and retention]]></title><description><![CDATA[The more downtime we have, the more we’re on our phones - which is why app engagement typically spikes during weekends and holidays. By doubling down on this uplift in traffic with special promotions, otherwise known as currency sales, developers and advertisers can both boost their revenue and acquire high ARPU users at scale. Here’s some data on how special promotions, also known as currency sales, can impact your business - plus tips on when to run them and how to make them stand out.What are special offerwall promotions?On holiday weekends throughout the year, like Christmas or Thanksgiving, these time-limited promotions offer users anything between 1.5 to 10x the standard offerwall reward in return for completing a task like playing an advertiser’s game and reaching the end of a level.What are the benefits for developers and advertisers?It's not just users who reap the rewards: a long list of our developer partners use special promotions to increase performance metrics like engagement rates, ARPDAU, and revenue. In fact, our data shows that, compared to a regular weekend, doubling rewards during special promotions can generate a 70% increase in revenue while tripling them can generate a 110% increase. Meanwhile, engagement rate jumps 60% for doubling rewards and 65% for tripling them. The benefits for developers don't stop there: special promotions also boost long-term retention and in-app purchases, as the credits enable users to progress further in the game and give them a "taste" of what IAPs can offer them.This boost in revenue sparks a cycle of growth - once the developer multiplies their rewards, it’ll attract more players to engage with the offerwall. Then advertisers leverage the increased traffic and raise bids to increase the rewards even more, resulting in even more traffic, installs, completions, and D7 ARPU. Our data shows that advertisers who raise bids during special offerwall promotions see a 56% increase in completions, compared to just 7% for advertisers who don’t.Here are some best practices to run a killer special promotion, which we’ve tested with some of the biggest mobile game developers in the world.When to run special promotionsAs a general rule, try running a special promotion at least once and up to twice a month. Less than once a month, you’ll miss out on potential revenue, but more than twice a month, you’ll risk flooding your in-game economy. When you run them, be sure to notify your ad network partner in advance, so they have enough time to encourage the biggest advertisers to focus their CPE efforts on your game. Here are a few times you can run the promotions:US holidays are a good way to stay on track with your special offerwall promotions, since they usually land once a month or so - from President's Day weekend in February to Labor Day in September, plus Thanksgiving and Christmas. Running promotions during holidays enables you to capitalize on increased traffic: people play games more during breaks from school and work.Each month, ironSource organizes cross-network special promotions so both developer and advertiser partners can enjoy maximum impact. Here’s the calendar for 2023, which you can bookmark:January - New Year's, mid-winter weekendFebruary - Valentine’s day, booster weekendMarch - Beginning of spring, St. Patrick’s Day April - April Fools’, Easter weekend May - Mother’s day, Memorial Day weekend June - Summertime weekend, longest day of the yearJuly - Independence day, Mid-summer weekendAugust - Summer booster, Back to school promotionSeptember - Labor Day weekend, Start of AutumnOctober - Columbus day weekend, Halloween November - Mid-autumn weekend, Black Friday December - Christmas, New Year’sHow to increase engagement for special offerwall promotionsTo generate revenue from special promotions, first you need users to engage. Here's a few ways to catch their attention and encourage engagement.Notify your players with alertsYour offerwall traffic drivers should always be visibly and strategically placed in your game. Special offers should follow the same logic: while the promotion will be automatically highlighted in the offerwall store, be sure to run pop-up ads in your game and push notifications outside of the game. Our data shows that these pop-ups can boost your player engagement rate by 190%.Not only do notifications like these boost engagement from users already familiar with the offerwall ad unit, they’re also a great way to educate non-offerwall users about the benefits.By running clear notifications about their offerwall special promotion, a partner (the turquoise line in the chart below) increased engagement rates for their offerwall campaign by +257%, while another game without notifications (the blue line) saw an increase of only +14%.Use the right messagingTo make sure the notifications work as best they can - users need to clearly understand just how much their rewards multiplied and that it’s only for a limited time. This way, players can understand how short-term this opportunity is, and are more motivated to claim their rewards immediately.For example, to encourage users to act fast try adding a countdown. In Pixel Federation’s Train Station 2, for example, they include a specific timer and clearly state the special promotion - including both “2x” and “get twice the amount of free gems” in their pop-up.Make sure to test different kinds of messages (more vs. less text, for example) and keep the one that generates the greatest uplift.Try higher reward multipliersThe more you put into your promotion, the more you can get out of it - if you offer a higher reward to your players, they’ll be more likely to engage.That’s exactly what we found during a recent special promotion. During Thanksgiving, people were already spending extra on their phones, so developers enjoyed a small uplift in offerwall revenue - but by doubling offerwall rewards, their daily revenue jumped 70%. The impact was even larger when our developers tripled them - daily revenue skyrocketed 110%.Measuring the full impactBe sure to measure the impact of the special promotions both during the promotion and after it expires. The time-consuming nature of completing offerwall events means that in addition to an initial spike in revenue, more revenue will be generated in the days or weeks following the end of the offer. That’s because even after the promotion ends, completions roll in along with revenue. The time period depends on the type of offers selected by the users: the deeper the events are, for example completing 10 levels of the advertiser’s game, the longer you should measure their impact.Measuring this way allows you to more accurately evaluate the impact of your special offerwall promotion, and understand how aggressive you should be for the next promotion. For instance, if you’ve waited to measure its full impact and it turns out to have underperformed, you can push more notifications, or increase the credit multiplier for the next promotion.The graph below shows the impact on revenue of a partners' offerwall special promotion. They achieved an initial spike while the promotion was live, and also saw a revenue uplift in the week after the promotion expired, due to more completions kicking in and an increase in the overall engagement rate with the offerwall.Getting startedironSource’s team are experts in maximizing your game’s offerwall ad revenue. Here’s how to join the long list of partners working with us to level up their offerwall strategy:Log into the ironSource platform Go to your ad units and placements, then select OfferwallClick on activate special promotion Set the start date, time and duration according to the dates belowUpdate your account manager so they can notify advertisers about your upcoming promotionIf you don’t have offerwall set up on ironSource, get it here on iOS and Android.]]></description><link>https://unity.com/blog/offerwall-special-promotions-tips</link><guid isPermaLink="true">https://unity.com/blog/offerwall-special-promotions-tips</guid><pubDate>Thu, 19 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Apps and games are a safe place for your brand's ads, according to consumer research]]></title><description><![CDATA[Brand safety is always a high priority, but has been a particularly hot topic the past few weeks. Times like this present an opportunity to consider additional channels to add to your media plan that make brand safety a priority.To find out which channels are the safest for brands, we leveraged MobileVoice®, ironSource's market research platform, to go straight to the source: the consumers. 3,130 consumers shared their opinions on the safety of advertising platforms and how it affects their purchasing decisions. According to the survey, mobile apps, games, and news sites are among the safest channels, with the lowest amount of inappropriate content. Let's explore why.67% of consumers believe the brand has a responsibility to not advertise on platforms with inappropriate content and 74% of consumers believe the platform has a responsibility to make sure they don’t house inappropriate content. For platforms, this means building safe environments for consumers and advertisers, according to these results. For brands, this means being intentional about the platforms you choose.To combat unauthorized reselling and app spoofing, apps and games add the app-ads.txt file to their websites, which lists all the ad sources authorized to sell their inventory. Meanwhile, ad platforms that apps and games use like the ironSource Exchange have the sellers.json file, which lists out all our authorized sellers and resellers, to increase transparency and combat fraud. These ad platforms also often have the IAB Open Measurement SDK integrated to ensure that all the ads passing through are brand safe. Specifically, it gives advertisers transparency into inventory quality, ad viewability, and fraud detection. The ironSource Exchange for example has had the Open Measurement SDK integrated for 3+ years, for example. The consequences for deferring responsibility can be harmful, as 66% of consumers would feel negative about a brand that advertised on sites that contain inappropriate content and only 21% of consumers would continue using those brands according to the survey. Gen Xers, who have the largest spending power with 31% of all income dollars than any other generation according to reports from American Express, are the most likely (70%) to feel negative or very negative about a brand that advertised on sites that contain inappropriate content and the least likely (19%) to continue using the brand.2. Apps and games are closed channels that don’t allow for user generated contentHate speech is the most common (61%) and the most offensive (60%) form of inappropriate digital content, according to consumers according to the survey. The next is fake news (49%), followed by explicit material, profanity, and violence.Generally, these are found on channels centered around user generated content, where people can do and say as they want, whenever they want. On the other hand, mobile apps and games, news sites, and search engines don’t have space for user generated content and open dialogue, meaning ads can’t be seen next to inappropriate material people are writing and sharing. This is likely the reason why many consumers believe these sources have the smallest problem with inappropriate content compared to other channels, according to the research.3. Ad content on apps and games is heavily monitoredMore than any other generation, 72% of parents say that inappropriate digital content is a significant or very significant problem according to the survey. Because parents make the final call on where their family spends time online and have the responsibility to prevent their family from using platforms that don’t adhere to their standards, it’s especially important that the channels you use have extremely advanced and thorough review processes for inappropriate content. Otherwise, you risk missing out on a large audience not using the platforms you're running on, according to the survey results.The ad platforms that apps and games use have built-in features and dedicated teams to monitor and flag inappropriate content before it reaches the app. For the ironSource Exchange, that includes automatic testing as well as manual review for each and every ad that passes through. In fact, each ad is tagged according to the type of content it displays and ranked according to its maturity level. This way, the Exchange only serves the ad on apps suited for it, and inappropriate content can never make it to the app environment.To take the ad review process a step further, there are tools that app developers can use to get visibility into all the ad content their users see, ensuring their app stays clean.There’s a lot of commotion in the brand advertising space right now. To ensure your brand ads are deployed on safe and clean environments, start running on apps and games through the ironSource Exchange.]]></description><link>https://unity.com/blog/apps-and-games-are-a-safe-place-for-your-ads-according-to-consumer-research</link><guid isPermaLink="true">https://unity.com/blog/apps-and-games-are-a-safe-place-for-your-ads-according-to-consumer-research</guid><pubDate>Wed, 18 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity Monthly: December 2022 roundup]]></title><description><![CDATA[The new year is here, but before we go forward, let’s look back at how 2022 wrapped up. Enjoy this latest monthly roundup of Made with Unity highlights, featuring everything you need to know about (and may have missed) as it relates to community happenings for the past month.December was, once again, a month filled with opportunities to celebrate your numerous achievements. Catch a recap of this month’s Milestone Monday posts below.This month, we celebrated the launch of the Sandbox update for POPULATION: ONE,the release of IXION by Bulwark Studios, and Mineko’s Night Market playable demo by Meowza Games. It was also a lot of fun to see the teleporting race cars from Supergonk’sWarp Driveand the return of a classic: JellyCar Worlds by Walaber. Keep looking out for new releases or milestone spotlights every Monday on the @UnityGames Twitter.As usual, Tuesdays are dedicated to #UnityTips on Twitter, and there were plenty of amazing tips shared in December.User @samyam_youtube offered a way to change your camera speed in one simple step. Then, we retweeted an amazing series of VFX tutorials from @studiocrafteurs that are simple to follow. We also published a recap of highlights from our 2022 dev Twitter takeovers right here on the blog.There’s more to come in 2023, so keep tagging us and using the #UnityTips hashtag!Continuing the trend from past months, we were amazed by the amount of incredible-looking projects we saw using the #MadeWithUnity hashtag throughout December.Twitter’s @GravitonPunch had a beautiful and satisfying world-generation mechanic to show (above), and @MortalCrux came up with a fun way to spawn entities. Finally, @ClipSummer demonstrated one character’s flashy combat skills in an epic boss battle.On Instagram, @jordy_j_s had some incredible animation to show a character’s transformation, the Obsidian Legion team gave a lesson on how to fight when outnumbered, and a repost from Twitter’s @AtelierChimere explored some ancient ruins.All in all, December was a flurry of fun. We can’t wait to share your projects throughout the new year, so keep adding the #MadeWithUnity hashtag to your posts.Before the holidays hit, we hosted three Twitch streams. The first, a Creator Spotlight featuring JellyCar Worlds. The second, a first-of-its-kind panel about the 2022.2 Tech Stream. And, last but not least, another Creator Spotlight with Whiteboard Games.We also brought clips back to YouTube – a resurrected series where we showcase highlights from the full Creator Spotlight streams. Check out a clip from our stream with Whiteboard Games (above).Don’t forget to follow us on Twitch and hit the notification bell so you never miss a stream. If you miss us in the moment, don’t worry: We upload all streams to our YouTube playlist.On December 8, we had our last Dev Blitz Day of 2022, focusing on DOTS. During the event, we answered more than 100 developer questions. We’d like to thank everyone who participated and look forward to bringing you more community events like these in 2023.Our next Dev Blitz Day doesn’t have a fixed date yet, but something tells us that having it close to Global Game Jam 2023 could be fun. Keep an eye on the forums and our Discord for future announcements.To start the month off, we asked what genre of game you were working on, and RPG took the top spot for popularity.We can’t wait to see the progress you make on your games in 2023. Be sure to tag us and share which #AssetStore assets you’re using. Here are some of our favorite creator showcases from Twitter in December:Sky Master ULTIMATE | ARTnGAME3 Worlds | Moon TribeSee-through Shader | ShadercrewThe amazing Amplify Creations took over our feed before the holidays, offering some fantastic #UnityTips on how to use Amplify Shader Editor to create shaders and make workflows work for you.To end the year, we shared a 2022 Publisher Highlights showcase that included exceptional creator contributions from our Asset Store publishers. If you’re a publisher, you are the butter to our bread. Thank you for all that you do.Last but not least, here’s a non-exhaustive list of Made with Unity titles released in December (which can double as a way to use those holiday gift cards). See any on the list that have already become favorites or one that we’re missing? Tell us about it in the forums.Swordship, Digital Kingdom (December 5)Knights of Honor II: Sovereign, Black Sea Games (December 6)Yi Xian: The Cultivation Card Game, 墨日工作室 (December 6)IXION, Bulwark Studios (December 7)Zombie Cure Lab, Thera Bytes GmbH (December 7)Chained Echoes,Matthias Linda (December 8)The Forest Quartet, Mads & Friends (December 8)JellyCar Worlds, Walaber (December 8)Potion Craft: Alchemist Simulator, niceplay games (December 13)Lil Gator Game, MegaWobble (December 14)Aka, Cosmo Gatto (December 14)Melatonin, Half Asleep (December 15)Depersonalization, MeowNature (December 20)Sail Forth, Festive Vector (December 21)That’s a wrap for December! Want more community news as it happens? Don’t forget to follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/news/made-with-unity-monthly-december-2022-roundup</link><guid isPermaLink="true">https://unity.com/blog/news/made-with-unity-monthly-december-2022-roundup</guid><pubDate>Fri, 06 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[On the road: My year of conferences on Unity’s Diversity Recruiting team]]></title><description><![CDATA[My name is Kaylynn, and I joined Unity as a member of the Diversity Recruiting team in 2022 as a project coordinator. My first priority was to head our conference engagements for the year. While I was initially nervous to lead such an important project, I am very happy to have done so alongside an amazing team, and am excited to share a behind-the-scenes recap of our recruiting travels.To kick off our first in-person conference of the year, members of the University Recruiting team and I headed to Washington, D.C., in September for the Center for Minorities and People with Disabilities in Information Technology’s Richard Tapia Celebration of Diversity in Computing Conference. The Tapia Conference was a great experience and held true to its 2022 theme, “A Time to Celebrate!” Attendees included undergraduate and graduate students, faculty, and professionals in computing from all backgrounds and ethnicities. This was my first in-person recruiting event coming out of the pandemic and my first with Unity overall. I can still remember experiencing jitters before we opened our booth on the first day, but the University team brought me up to speed fast, which boosted my confidence in speaking to students about our internship programs.Looking back at my time at Tapia, my favorite memories come from the engagement opportunities – connecting with others over common backgrounds, ethnicities, disabilities, and genders. Our team really did a great job in fostering the opportunity to develop relationships with candidates that extended beyond the conference itself.At the end of September, I joined several other Unity representatives in Orlando, Florida, for the Grace Hopper Celebration (GHC). While I have been to many recruiting events before, I had never been to a conference as big as this one. In 2021, GHC virtually hosted 29,000 people, and holds the record for the world’s largest gathering of women in computing.During our time at the conference, our recruiters had a lot of early mornings and late nights but, nonetheless, it was always fun. We usually started our day at 8:00 am sharp, when we could be spotted running to the shuttle stop to make it to the convention center on time.During the day, attendees could find the smiling and welcoming faces of our team at the booth, talking to potential candidates about the business and open opportunities. The career fair closed each evening at 5:00 pm; however, because we had so many candidates who wanted to speak with us, we would usually stay for an extra 30–45 minutes. Other conference events included participating in onsite internship interviews led by our University team or volunteers from across Unity. Having volunteers available allowed us to carry out all interviews and, later, make some internship offers.Although GHC was full of long days and nights, it was one of my favorite conference engagements because of the talent and drive evident in the room. It was rewarding to connect with so many candidates who were really excited to talk about Unity and eager to show us the projects they have built or are working on with our software.A second reason I enjoyed GHC was due to it being my first chance to meet all my wonderful teammates in person. These days, since we primarily meet and chat virtually, it was nice to see each other in person. The conference gave us the chance to spend five days working together and getting to know one another.In November, my team, our inclusion partners, and ComUnidad – the Latinx Employee Resource Group (ERG) – members packed our bags and headed to Charlotte, North Carolina, for the annual get-together of the Society of Hispanic Professional Engineers (SHPE). At the SHPE 2022 National Convention, we met hundreds of candidates from the Latinx community and created relationships with these prospective candidates for upcoming programs.With more than 13,000 students and professionals attending the event, we spoke to many aspiring engineers from different specialties. At the time, I was unaware that there were so many different types of engineering. Other than meeting so many talented engineers, networking, and giving out cool swag at the booth, our team also participated in onsite interviews, which – much like the other events – allowed us to speak to many candidates and, ultimately, make some internship offers.During my time at the booth, candidates shared their interests, projects, and career goals, and it was exciting to hear stories about how their persistence and hard work got them to where they are today. Seeing undergraduate and graduate students juggling finding internships at conferences on top of their busy school and home lives made me feel very proud of all those attending.A week after we wrapped up at SHPE, we headed to Austin, Texas, for Blavity Inc.’s AFROTECH Conference. AFROTECH is known for being the place for all things Black in tech and Web3, and was quite different from our other in-person engagements in 2022. This was because we were not only there to recruit, but we also participated in two additional conference activations: hosting a learning lab and an event in our Austin office.On the Monday, we started with a career fair, which included several team members from Recruiting and B-United – the Black ERG – helping out at the booth. We spent three days speaking to both internship candidates and advanced professionals and tech entrepreneurs.On the second day, Unity hosted a learning lab that showcased our real-time 3D capabilities. As part of the lab, an expert panel featured Unity’s Raymond Graham, Krystal Cooper, and Nick Straughn. Over 300 attendees packed the workshop to engage with our experts and learn more about the panelists’ respective career journeys.On the final day, we wrapped up our AFROTECH activations with an in-office Unity @ AFROTECH event. Unity for Humanity grantee Black Terminus AR joined us, and its founder Damien McDuffie wowed the crowd with an interactive VR exhibit. The in-office event was one of my favorite parts of this conference because it gave such a personal touch to the week. As a company, we were able to connect with candidates and creators on a more intimate level in our cool workspace.Throughout 2022, our team attended and represented Unity at seven virtual or in-person diversity recruiting engagements. In addition to the conferences I shared above, we participated in the National Society of Black Engineers’ annual convention, Latinx in Gaming’s CONEXION, and three QueerTech activations.During my time as a coordinator on some of these projects, I traveled to places I’d never been before, worked with amazing team members, and met candidates with great passion for technology and Unity.While our diversity recruiting approach at Unity includes many additional strategies to build relationships with candidates traditionally underrepresented in tech, I really enjoyed being able to create sustainable relationships with candidates face-to-face during my first year on the team.As we know, it is hard to be what you can’t see. At Unity, this means that showing up to events like these, with representation as a focus, helps us connect with candidates we might never have had the chance to get to know. It was an honor to be a part of these efforts in 2022, and, from a diversity, equity, and inclusion (DEI) perspective, it is great to know that, with each conference we attend and each person we meet, we inch one step closer to connecting underrepresented communities to the world of tech and to Unity.To learn more about Unity’s DEI strategies and initiatives, visit our Inclusion and Diversity page. To explore open roles, check out the Unity Careers site.]]></description><link>https://unity.com/blog/news/my-year-of-conferences-for-unity-diversity-recruiting</link><guid isPermaLink="true">https://unity.com/blog/news/my-year-of-conferences-for-unity-diversity-recruiting</guid><pubDate>Wed, 04 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[The what, why, and how of using nano influencers for performance marketing]]></title><description><![CDATA[There’s a common misconception that influencer marketing works best for brand awareness campaigns - but according to Ryan Silberman, CEO at Webfluential, it’s increasingly being used to drive performance. At Appfest 2022, Ryan explained how you can leverage influencer marketing to increase installs. Read the summary or watch the video below.The original ad recipeAccording to Ryan, creating engaging ads has historically been built on using two basic ingredients: context and personalization.Advertisers first use what they learn in different environments (context clues) to offer relevant information to consumers (personalized content). For example, let’s say a woman comes into a store soaked from the rain. When the store keeper offers her an umbrella, he’s using context clues (the woman soaked from the rain) to give her an item.Leveraging trust: Nano influencersHowever, even when you implement context and personalization into your ads, there’s a key ingredient still missing in the mix: trust. By incorporating trust into your ads, you can generate higher consumer confidence in your product - that’s because when we trust someone, we’re more likely to believe what they say.Consumers are more likely to trust people who feel accessible and relatable. For example, someone touring a new city likely trusts a local’s recommendation over a celebrity that’s getting paid to give those recommendations. Even though a celebrity is more well known and has a higher reach, a local would seem more credible. Another word for a person with a smaller reach, but a higher engagement rate? Introducing nano influencers.Nano influencers are influencers that have fewer than 3,000 followers. The graph below illustrates how leveraging nano influencers shows huge promise: the smaller someone’s audience size, the higher their engagement rate is.Improving performance at scaleEngagement rate is one thing, but can it translate to actual transactions like sales and installs?Looking to garner more sales, Elysium Health, an American health company that sells vitamins, partnered with nano influencers who were passionate about cycling, to drive traffic that resulted in sales. They used that content at scale by running ads on Facebook and Tiktok and managed to improve the CPA by 2x.Beyond sales, nano influencers can also improve sentiment towards your app. That’s because you’re creating an authentic narrative with your audience, while also showing your product in a positive light. In fact, Chef, a restaurant tycoon game, teamed up with nano influencers to create sponsored content that showed a 10x uplift in sentiment.Referrals with resultsIn addition to traditional social channels like Instagram and TikTok, here’s another way nano influencers can share your ads - dark social.Dark social includes more intimate channels like WhatsApp or email, in which nano influencers can simply copy and paste a link and share it directly with friends - producing extremely high conversion and engagement rates. In fact, Ryan says 84% of sharing is in dark social. So while it’s not tracked or spoken about, it’s a huge opportunity to leverage with nano influencers.Tips for influencers becoming a performance channelRyan gives us the 4 key pillars that make a successful influencer program.1. Technology platformHaving the right platform saves time and money for recruiting and contracting the right influencers. An added benefit is that it also manages your workflow.2. InventorySome people may think you need a lot of influencers on stand-by but according to Ryan, that’s actually not the case. What’s important is that your influencers are opt-in, meaning that they’ve linked their social channels, have agreed on contractual terms, and are fully ready to work - getting you a faster campaign turnaround.3. Strategy (on demand)You’ve got your technology and the right influencers, and now it’s time to decide what the influencers should do. Ryan’s suggestion? Bring your influencers into your world and ask them what the strategy should be, because they know their audience best.4. Execution + paidEven if you hit the other 3 pillars perfectly, Ryan says this is the most important pillar to ensure success. If you can’t execute at scale then it means nothing and organic isn't big enough. You need to integrate into ad networks and social platforms to scale up.Wrapping upIf there’s one thing to remember with influencer marketing, Ryan encourages you to remember these key points.Apply trust, context, and personalization to engage users Use low cost nano influencers as opposed to high cost celebrities or branded contentFigure out how to leverage dark social and use your ad networks through Paid Retention is built into the community - use this to your advantageWatch the recording here: https://youtu.be/-lN_RX4gj8c]]></description><link>https://unity.com/blog/the-what-why-and-how-of-using-nano-influencers-for-performance-marketing</link><guid isPermaLink="true">https://unity.com/blog/the-what-why-and-how-of-using-nano-influencers-for-performance-marketing</guid><pubDate>Tue, 03 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[2022 on-device mobile advertising overview and 2023 trends]]></title><description><![CDATA[2022 on-device mobile advertising overview and 2023 trendsWith new app sectors, device models, and marketing techniques shaping 2022, it’s crucial to stay up to date on the next big opportunities in on-device advertising. As 2023 begins, let’s explore what worked this past year and what will continue to be important.The smartphone industry in numbersLet’s first look at the state of the mobile ecosystem in 2022.- Worldwide smartphone shipments in 2022 were around 1.2 billion (1)- Samsung held 22% of the market share in 2022, maintaining the No. 1 position (1)- Total shipments of 5G-enabled smartphones were expected to reach 650 million units by the end of 2022 (2) - Android maintained its position as the leading mobile operating system worldwide in the fourth quarter of 2022 with a close to 71.8% share (3)- Trends in the market- The amount of devices sold and the technology they’re equipped with has a huge impact on what is possible with on-device advertising.Incorporating CTV into your on-device advertising strategyCTV, connected TV advertising, is expected to receive huge advertising investments in 2023, growing at a rate of 27% according to MarketingDive, making it a great time to consider how you can incorporate CTV advertising into your on-device advertising strategy.First, with a seemingly unlimited number of streaming services available today, it’s becoming harder for users to keep up with paid subscriptions. To create a more sustainable revenue stream, many platforms are working on offering less expensive plans with an ad-supported option.Second, as it stands, 95% of TV ad spend comes from Fortune 500 companies focused on branding, but these companies only represent 33% of US business revenue. With TV bigger than any other social network, the channel needs to be accessible to all kinds of advertisers. CTV advertising, a performance marketing channel (WiFi has a static IP, which allows advertisers to link every device in a household), makes that possible all while delivering 900K impressions per second in the US alone.On top of that, CTV can work in conjunction with your existing on-device advertising strategy, when the app is already on the phone, to increase engagement and retention. For example, CTV advertising can be used as a form of push notifications to encourage users to open your app for the first time or recommend a new way to engage with the app’s features. As the technology continues to evolve, more opportunities will unfold, such as opening the app directly from the CTV ad to start interacting immediately. With CTV advertising, your on-device advertising efforts could have an even greater impact.Listen to our podcast with Vibe, an all-in-one TV ad platform.Using AI to create more efficient on-device advertising experiencesIn the current macroeconomic climate, it’s even more critical to find ways to stand out on channels you’re already using, like on-device advertising. How? Utilizing innovative technology such as AI to make your efficient channels more efficient.AI will create better advertisements by writing headlines and creating ads - you can use generative AI to create text and images for your on-device advertising notifications and full-screen offer campaigns. AI can also enable predictive analytics - discovering insights, making predictions, and unifying your data - when it comes to on-device advertising, these tools can help you determine which audiences you should be reaching and how that audience is engaging on their devices.Most interestingly, however, is the opportunity to improve interactivity with users through creatives. For instance, a full screen on-device ad for an eCommerce app could allow users to try on various items to see which looks best. A full screen ad for a food delivery app could allow you to take a virtual tour from a nearby restaurant to your home to get a feel for how fast delivery can be.Today, AI is well equipped to help you drive productivity and creativity across your media mix.Growing smartphone brandsSamsungAs of January 2023, Samsung has a market cap of $335.28 billion according to Companies Market Cap. On top of that, Samsung’s brand value was evaluated at $87.7 billion in 2022, which represents 17% growth compared to $74.6 billion in 2021, ranking the company in 5th for three years in a row on Interbrand's Best Global Brands of 2022.Samsung’s Galaxy Z series, where their foldable phones live, are the market leaders in the foldable space. In fact, from January to October 2022, the number of foldable smartphones Samsung contracted to enterprise customers increased by 105% compared to the same period in 2021 according to Samsung. At CES 2023, Samsung announced a new technology for foldable phones, Flex Hybrid.Samsung also recently unveiled the Galaxy S23 series. The main upgrade on these devices is the 200-megapixel main camera, along with the use of the Snapdragon 8 Gen 2 chip, which will allow for better AI performance and power efficiency.On top of that, while many large chip manufacturers have begun scaling back their chip production due to external concerns, Samsung will increase chip production in 2023, especially at its largest semiconductor plant in Pyeongtaek. This prepares them to take a big portion of market share as demand for chips returns to normal levels.Learn more about Samsung in 2023.GoogleWith the release of Google’s revolutionary Pixel 6, housing Google’s first Tensor chip, at the latter end of 2021, Google saw massive sales growth in the first half of 2022. According to Canalys, Google sales in North America were up 380% in Q1 2022 year over year and 280% in Q2 2022 year over year. For reference, leaders in market share only saw 1-4% annual growth.In 2022, Google iterated on the Pixel 6 with the Pixel 7, which is powered by the next-generation Google Tensor G2 processor. First of all, Pixel 7 is “sleek, sophisticated and durable” and the regular size is more compact than Pixel 6. The Pixel 7 is also being shipped with Android 13, the best Android experience yet.So, what’s expected in 2023? According to rumors, it might be the best year for Pixels yet, marked by the company carving its own way rather than following others. One new innovation in 2023 includes the Pixel fold, otherwise known as the Pixel notepad. With the release of this device, Google will have beaten Apple to the foldable space. Google also plans to release the Pixel Tablet, which means they’re beginning to challenge the Apple dominant tablet market. Along with new innovations that push the envelope, Google will also improve on their already high-performing devices. We can expect Google to release the Pixel 7a, Pixel 8, and 8 Pro throughout 2023. These are phones that will continue to appeal to the masses and keep Google in the spotlight.Top 5 app categories using on-device advertising in 2023It’s also important to have an idea of which app categories are on the rise, so you can learn how and why advertisers are finding success through this channel.1. Brands with apps are investing in on-device advertisingAs marketing teams face budget cuts, brands are rethinking their spend and focusing on channels where consumers are most active - mobile.In fact, according to Oberlo, mobile advertising spend in the US in 2023 is expected to reach $355.1 billion, surpassing $300 billion for the first time. Ultimately, now that mobile has a larger audience, higher usage levels, and is more reputable, big brands are beginning to look beyond traditional channels, to on-device advertising, to get in front of new, quality users through their phone screens.McDonald’s Spain achieves 64% app launch rate and drives over 34K installs with Aura2. Food and rapid delivery apps are continuing to growCOVID-19 accelerated the shift to ordering in from delivery apps rather than eating out. Since then, many other factors have continued to drive the food delivery app industry forward - convenience, increased demand, safety, etc. In fact, the entire food delivery app industry is expected to reach $320 billion market size by 2029 according to Business of Apps. Ultimately, with more delivery riders and route optimizations technologies, delivery is faster and cheaper than ever, driving incremental growth despite diminishing COVID-19 protocols.Glovo increased Aura installs by 5x and decreased CAC by 60%Rapid delivery apps, or apps that deliver groceries within 10-30 minutes of app order, are also attracting millions of users and big name investors. Rapid delivery apps are largely operating out of major cities across the UK, US, and Europe, with a few first movers leading the market in these areas - Getir, Flink, Gorillas, Gopuff, Weezy, Dija, Jiffy, Fancy and Snappy are all notable names.Read more about rapid delivery apps3. Classified apps are allowing users to buy and sell wherever they areAs the economy faces uncertainty, people are spending time sifting through their belongings and making decisions about what to keep and sell. Now classified platforms, especially on mobile, represent a major opportunity for growth.eBay Kleinanzeigen (Classifieds) boosts installs with AuraSubito looked to Aura to boost engagement 4x, grow scale, and diversify their user acquisition strategyMilanuncios reduces cost per lead 47% with Aura4. News apps are users go-to to stay updated on current eventsThe share of US consumers reading online news on a smartphone more than doubled between 2013 and 2022 according to Statista. “News on the go” through mobile devices has become the norm. This means that news apps are no longer an add-on to people’s typical news source, but the main character - encouraging news apps to focus on their app discovery and user acquisition strategies. We’ve seen a similar trend in Europe as well over the last year.SmartNews drives 35 million installs and meets retention goals with AuraHow Le Figaro reduced costs 70% and reached retention goals in 3 months with Aura5. eCommerce apps are making it easier to shop from your phoneSimilarly to news apps, eCommerce apps have also seen immense growth, creating a more competitive environment - more than half of all internet traffic comes from a mobile device. This is most likely due to the effects of COVID-19, which turned people away from brick and mortar. In 2023, smartphone retail eCommerce sales are expected to pass $432 billion, up from $148 billion in 2018 according to Statista.OTTO sees over 100% MoM growth and significantly increased ROI for their ironSource Aura volumeAliExpress Russia drives over 400K installs and exceeds their KPI goals with ironSource AuraOzon drives over 900K installs and exceeds KPI goals with ironSource AuraOverall, the state of the smartphone industry, key trends in the Android market, and the growing app categories, all have had an impact on the success of ironSource Aura. With on-device advertising becoming more prevalent, Aura saw a record year in 2022.The growth of AuraIn 2022, the team at ironSource Aura focused on expanding the on-device channel’s available touchpoints so advertisers like you can continue to drive value and meet valuable users at scale. New placements - such as the Discovery Widget that offers new apps to users directly from their device’s +1 screen on a daily basis - use contextual information to reach users in the right ways and at the best times for maximum, long-term engagement.ironSource Aura also expanded to new carrier and telco partners in 2022 beyond our current partnerships with Samsung, Vodafone, Orange, and Boost - announcing our Samsung partnership in MENA.It’s been an incredibly successful year thanks to both our advertiser and telco partners. Looking forward to continued success in 2023!Full list of Aura’s on-device advertising content from 2022Case StudiesFugoVery/DentsuInspired SquareDish Retail Wireless engages its 8M customers with AuraBlogsLaunching a new report "5G: The consumer perspective"4 ways advertisers can optimize their 5G on-device advertising strategyThe mobile advertising ecosystem in SpainHow agencies can drive incremental growth through mobile on-device campaignsHow to leverage on-device advertising to create a frictionless install experience7 questions to ask yourself when evaluating a new user acquisition channelThe first 30 days of an on-device campaignLooking to boost your game’s LTV? Try an on-device advertising campaignNo guts, no glory: MAD//Fest 2022 with ironSource AuraThe 3 most important KPIs running an on-device acquisition campaignAn inside look at the Japanese mobile economyThe what, why and how of web-to-app acquisition campaignsArticlesHospitality Tech | Four Ways Hospitality Marketers Can Innovate in the Post-Pandemic Future via a Mobile AppRCR Wireless News | The new device experience: How mobile carriers successfully ‘get in’ on the app economyTotalRetail | How to Leverage Your App to Get More CustomersPodcastsAdam Hadi, Current | How to deeply integrate influencer marketing into your productJean-François Grang, Purchasely | How to succeed with a subscription monetization model for your appDave Edwards, Audiomack | Bridging the knowledge gap between music creators and the app economyAndre Kempe, Admiral Media | Back to the basics: How will performance marketing survive?Tobias Boerner, Fastic | The real people behind your app: community-based apps and the growth loopPeter Fodor, AppAgent | Storytelling and mobile apps: a tale as old as timeKaran Bhavnani, Tripledot | Growth trends: team structure and experimentation in a high growth environmentGreg Turtle, What3Words | Gaining a growth edge with media for equity dealsAdrienne Rice & Sarah Chafer, M&C Saatchi Performance | What consumers want from brands this holiday seasonThomas Petit | How to optimize your subscription app today to grow tomorrowResearchBack to school shopping trends for your app or brand in 2022Travel is back in-style: 6 trends advertisers should keep in mind in 20228 key findings to help you master your holiday advertising strategyWebinarBuilding your 3 pronged holiday UA strategy: Creatives, offerwall, and on-device advertisingReports5G: The Consumer PerspectiveOn-device advertising 101: A report by Singular and ironSource AuraThe 2022 modern mobile consumer: app discovery and monetizationThe mobile marketers’ guide to mastering the holiday seasonResourcesCanalys QualcommStatista]]></description><link>https://unity.com/blog/overview-of-on-device-advertising-trends</link><guid isPermaLink="true">https://unity.com/blog/overview-of-on-device-advertising-trends</guid><pubDate>Sun, 01 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Improvements to shader build times and memory usage in 2021 LTS]]></title><description><![CDATA[As Unity’s Scriptable Render Pipeline (SRP)’s available feature set continues to grow, so does the amount of shader variants being processed and compiled at build time. Alongside ongoing support for additional graphics APIs and an ever-growing selection of target platforms, the SRP’s improvements continue to expand.Shaders are compiled and cached after an initial (“clean”) build, thus accelerating further incremental (“warm”) builds. While clean builds usually take the longest, lengthy warm build times can be a common pain point during project development and iteration.To address this problem, Unity’s Shader Management team has been hard at work to provide meaningful and scalable solutions. This has resulted in significantly reduced shader build times and runtime memory usage for projects created using Unity 2021 LTS and later versions.To read more about these new optimizations, including affected versions, backports, and figures from our internal testing, skip directly to the sections covering shader variantprefiltering and dynamic shader loading. At the end of this blog post, we also address our future plans to further refine shader variant management as a whole – across project authoring, build, and runtime.Before delving into the exciting improvements made to Unity’s shader system, let’s also take the opportunity to quickly review the concepts of conditional shader compilation, shader variants, and shader variant stripping.Conditional shader features enable developers and artists to conveniently control and alter a shader’s functionality using scripts, material settings, as well as project and graphics settings. Such conditional features serve to simplify project authoring, allowing projects to efficiently scale by minimizing the number of shaders you’ll have to author and maintain.Conditional shader features can be implemented in different ways:Static (compile-time) branchingShader variants compilationDynamic (runtime) branchingWhile static branching avoids branching-related shader execution overhead at runtime, it’s evaluated and locked at compilation time and does not provide runtime control. Shader variant compilation, meanwhile, is a form of static branching that provides additional runtime control. This works by compiling a unique shader program (variant) for every possible combination of static branches, in order to maintain optimal GPU performance at runtime.Such variants are created by conditionally declaring and evaluating shader functionality through shader_feature and multi_compile shader keywords. The correct shader variants are loaded at run time based on active keywords and runtime settings. Declaring and evaluating additional shader keywords can lead to an increase in build time, file size, and runtime memory usage.At the same time, dynamic (uniform-based) branching entirely avoids the overhead of shader variant compilation, resulting in faster builds and both reduced file size and memory usage. This can bring forth smoother and faster iteration during development.On the other hand, dynamic branching can have a strong impact on shader execution performance based on the shader’s complexity and the target device. Asymmetric branches, where one side of the branch is much more complex than the other, can negatively impact performance. This is because the execution of a simpler path can still incur the performance penalties of the more complex path.When introducing conditional shader features in your own shaders, these approaches and trade-offs should be kept in mind. For more detailed information, see the shader conditionals, shader branching, and shader variants documentation.To mitigate the increase in shader processing and compilation time, shader variant stripping is utilized. It aims to exclude unnecessary shader variants from compilation based on factors such as:Materials included and keywords enabledProject and Render Pipeline settingsScriptable strippingWhen enumerating shader variants, the Editor will automatically filter out any keywords declared with shader_feature that are not enabled by materials referenced and included in the build. As a result, these keywords will not generate any additional variants.For example, if the Clear Coat material property is not enabled by any material using the Complex Lit URP Shader, all shader variants that implement the Clear Coat functionality will safely be stripped at build time.In the meantime, multi_compile keywords prompt developers and players to freely control the shader’s functionality at runtime based on available Player settings and scripts. The flip side is that such keywords cannot automatically be stripped by the Editor to the same degree as shader_feature keywords. That’s why they generally produce a larger number of variants.Scriptable stripping is a C# API that lets you exclude shader variants from compilation during build time via keywords and combinations not required at runtime. The render pipelines utilize scriptable stripping in order to strip unnecessary variants according to the project’s Render Pipeline settings and Quality Assets included in the build. Low quality High quality Variant multiplier Main Light/Cast Shadows: Off On 2x Main Light/Cast Shadows: On On 1x Main Light/Cast Shadows: Off Off 1xIn order to maximize the effects of the Editor’s shader variant stripping, we recommend disabling all graphics-related features and Render Pipeline settings not utilized at runtime. Please refer to the official documentation for more on shader variant stripping.Shader variant stripping greatly reduces the amount of compiled shader variants, based on factors like the Render Pipeline Quality Assets in the build. However, stripping is currently performed at the end of the shader processing stage. Simply enumerating all the possible variants can still take a long time, regardless of compilation.In order to reduce the shader variant processing (and project build) times, we are now introducing a significant optimization to the engine’s built-in shader variant stripping. With shader variant prefiltering, both clean and warm build times are significantly reduced.The optimization works by introducing the early exclusion of multi_compile keywords, according to Prefiltering Attributes driven by Render Pipeline settings. This decreases the amount of variants being enumerated for potential stripping and compilation, which in turn, reduces shader processing time – with warm build times reduced byup to 90% in the most drastic examples.Shader variant prefiltering first landed in 2023.1.0a14, and has been backported to 2022.2.0b15 and 2021.3.15f1.Variant prefiltering also helps cut down initial/clean build times by applying the same principle.Historically, the Unity runtime would front-load all shader objects from disk to CPU memory during scene and resource load. In most cases, a built project and scene includes many more shader variants than needed at any given moment during the application’s runtime. For projects using a large amount of shaders, this often results in high shader memory usage at runtime.Dynamic shader loading addresses the issue by providing refined user control over shader loading behavior and memory usage. This optimization facilitates the streaming of shader data chunks into memory, as well as the eviction of shader data that is no longer needed at runtime, based on a user controlled memory budget. This allows you to significantly reduce shader memory usage on platforms with limited memory budgets.New Shader Variant Loading Settings are now accessible from the Editor’s Player Settings. Use them to override the maximum number of shader chunks loaded and per-shader chunk size (MB).With the following C# API now available, you can override the Shader Variant Loading Settings using Editor scripts, such as:PlayerSettings.SetDefaultShaderChunkCount and PlayerSettings.SetDefaultShaderChunkSizeInMB to override the project’s default shader loading settingsPlayerSettings.SetShaderChunkCountForPlatform and PlayerSettings.SetShaderChunkSizeInMBForPlatformto override these settings on a per-platform basisYou can also override the maximum amount of loaded shader chunks at runtime using the C# API via Shader.maximumChunksOverride. This enables you to override the shader memory budget based on factors such as the total available system and graphics memory queried at runtime.Dynamic shader loading landed in 2023.1.0a11 and has been backported to 2022.2.0b10, 2022.1.21f1,and 2021.3.12f. In the case of the Universal Render Pipeline (URP)’s Boat Attack, we observed a78.8% reduction in runtime memory usage for shaders, from 315 MiB (default) to 66.8 MiB (dynamic loading). You can read more about this optimization in the official announcement.Beyond the critical changes mentioned above, we are working to enhance the Universal Render Pipeline’s shader variant generation and stripping. We’re also investigating additional improvements to Unity’s shader variant management at large. The ultimate goal is to facilitate the engine’s increasing feature set, while ensuring minimal shader build and runtime overhead.Some of our ongoing investigations involve the deduplication of shader resources across similar variants, as well as overall improvements to the shader keywords and Shader Variant Collection APIs. The aim is to provide more flexibility and control over shader variant processing and runtime performance.Looking ahead, we are also exploring the possibility of in-Editor tooling for shader variant tracing and analysis to provide the following details on shader variant usage:Which shaders and keywords produce the most variants?Which variants are compiled but unused at runtime?Which variants are stripped but requested at runtime?Your feedback has been instrumental so far as it helps us prioritize the most meaningful solutions. Please check out our public roadmap to vote on the features that best suit your needs. If there are additional changes you’d like to see, feel free to submit a feature request, or contact the team directly in this shader forum.]]></description><link>https://unity.com/blog/engine-platform/2021-lts-improvements-to-shader-build-times-and-memory-usage</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/2021-lts-improvements-to-shader-build-times-and-memory-usage</guid><pubDate>Wed, 28 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity: 2022 in review]]></title><description><![CDATA[As we reflect on the past year, we can’t help but be proud of all that the Unity community accomplished. From award-winning masterpieces and cult hits to the pure, unadulterated joy that Trombone Champ has brought to all of our lives. Case in point…Before we move into a new year, full of new possibilities, let’s take a moment to celebrate some of your biggest achievements from the past 12 months. Thank you for being part of our story; here’s to an even better 2023!To the best of our abilities, here’s a non-exhaustive list of Made with Unity games that you released in 2022, either into early access or full release. There have been so many great titles this year, so we’ve categorized them by genre to make this list a bit more digestible and hopefully inspire some of your future projects – though, of course, some titles defy easy genre categorization (*cough* Cult of the Lamb *cough*).See any on the list that have already become favorites or know of any that we missed? Tell us about it in the forums.Rollerdrome, Roll7 (August 16)Other action titles we love include:Sanabi, WONDER POTION (June 20) [Early Access]Cuphead: The Delicious Last Course, Studio MDHR Entertainment Inc. (June 30)Midnight Fight Express, Jacob Dzwinel (August 23)Warhammer 40,000: Shootas, Blood & Teef, Rogueside (October 20)Outshine, Fishing Cactus (November 3)SIGNALIS, rose-engine (October 27)Other horror titles we love include:The Mortuary Assistant, DarkStone Digital (August 2)Hell is Others, Strelka Games, Yonder (October 20)Bendy and the Dark Revival, Joey Drew Studios (November 15)TUNIC, TUNIC team (March 16)Other puzzle adventure titles we love include:FAR: Changing Tides, Okomotive (March 1)Syberia: The World Before, Microids Studio Paris (March 18)Lost in Play, Happy Juice Games (August 10)The Spirit and the Mouse, Albune Games (September 26)LEGO® Bricktales, ClockStone (October 12)The Past Within, Rusty Lake (November 2)How to Say Goodbye, Florian Veltman, Baptiste Portefaix, and ARTE France (November 3)Somerville, Jumpship (November 14)Ghost Song, Old Moon (November 3)Other metroidvania titles we love include:Infernax, Berzerk Studio (February 14)Haiku, the Robot, Mister Morris Games (April 28)HAAK, Blingame (August 24)Moonscars, Black Mermaid (September 27)Neon White, Angel Matrix (June 16)Other FPS titles we love include:Gloomwood, Dillon Rogers and David Szymanski (September 5) [Early Access]Isonzo, M2H and, Blackmill Games (September 13)Metal: Hellsinger, The Outsiders (September 15)Prodeus, Bounding Box Software Inc. (September 23)BONELAB, Stress Level Zero (September 29)CULTIC, Jasozz Games (October 13)Cult of the Lamb, Massive Monster (August 11)Other roguelike titles we love include:Have a Nice Death, Magic Design Studios (March 8) [Early Access]Across the Obelisk, Dreamsite Games (April 8) [Early Access]Rogue Legacy 2, Cellar Door Games (April 28)20 Minutes Till Dawn, flanne (June 8) [Early Access]Necrosmith, Alawar Premium (July 13)ORX, johnbell (August 30)Alina of the Arena, PINIX (October 13)I See Red, Whiteboard Games (October 24)Ship of Fools, Fika Productions (November 22)IMMORTALITY, Sam Barlow, Half Mermaid (August 30)Other narrative-focused titles we love include:NORCO, Geography of Robots (March 24)A Memoir Blue, Cloisters Interactive (March 24)As Dusk Falls, INTERIOR/NIGHT (July 19)Hindsight, Team Hindsight (August 4)Gerda: A Flame in Winter, PortaPlay (September 1)Beacon Pines, Hiding Spot (September 22)Pentiment, Obsidian Entertainment (November 15)Dortformantik, Toukana Interactive (April 28)Other city builder and strategy titles we love include:Diplomacy is Not an Option, Door 407 (February 9) [Early Access]Farthest Frontier, Crate Entertainment (August 9) [Early Access]The Wandering Village, Stray Fawn Studio (September 14) [Early Access]Terra Invicta, Pavonis Interactive (September 26) [Early Access]Moonbreaker, Unknown Worlds Entertainment (September 29) [Early Access]Stardeus, Kodo Linija, (October 12) [Early Access]Against the Storm, Eremite Games (November 1) [Early Access]IXION, Bulwark Studios (December 7)Citizen Sleeper, Jump Over The Age (May 2)Other RPG titles we love include:Unexplored 2: The Wayfarer’s Legacy, Ludomotion (May 27)Dungeon Munchies, maJAja (July 27)Backpack Hero, Jaspel (August 22) [Early Access]I Was a Teenage Exocolonist, Northway Games (August 25)Temtem, Crema (September 6)Lost Eidolons, Ocean Drive Studio (September 13)Gedonia, Kazakov Oleg (October 14)Chained Echoes,Matthias Linda (December 8)V Rising, Stunlock Studios (May 17)[Early Access]Other survival titles we love include:Arctico, Claudio Norori, Antonio Vargas (February 15)Core Keeper, Pugstorm (March 8)[Early Access]The Planet Crafter, Miju Games (May 24)Raft: The Final Chapter,Redbeet Interactive (June 20)Flat Eye, Monkey Moon (November 14)Other management titles we love include:Bear and Breakfast, Gummy Cat (July 28)PlateUp!, It’s happening (August 4)Two Point Campus, Two Point Studios (August 9)Arcade Paradise, Nosebleed Interactive (August 11)Dave the Diver, MINTROCKET (October 27) [Early Access]Aka, Cosmo Gatto (December 14)Other simulation titles we love include:Hardspace: Shipbreaker, Blackbird Interactive (May 24)Dinkum, James Bendon (July 14) [Early Access]PowerWash Simulator, FuturLab (July 14)CTRL ALT EGO, MindThunk (July 22)Disney Dreamlight Valley, Gameloft (September 6)Construction Simulator, weltenbauer. Software Entwicklung GmbH (September 20)Slime Rancher 2, Monomi Park (September 22) [Early Access]Turbo Golf Racing, Hugecalf Studios (August 4) [Early Access]Other sports or driving titles we love include:Olli Olli World, Roll7 (February 7)Shredders, FoamPunch (March 16)Blacktop Hoops, Vinci Games (April 19)[Early Access]Hot Lap League: Deluxe Edition, Ultimate Studio (August 23)You Suck at Parking, Happy Volcano (September 14)Trombone Champ, Holy Wow (September 15)Other funny titles we love include:Tentacular, Firepunchd Games UG (March 24)The Stanley Parable: Ultra Deluxe, Crows Crows Crows (April 27)Cosmonious High, Owlchemy Labs (May 31)The Looker, Subcreation Studio (July 17)The Last Hero of Nostalgaia, Over The Moon (October 19)MARVEL SNAP, Second Dinner (October 18)Other card titles we love include:Stacklands, Sokpop Collective (April 8)Card Shark, Nerial (June 2)Card Crawl Adventure, Tinytouchtales (August 3)That’s a wrap for 2022! Want more community news as it happens? Don’t forget to follow us on social media: Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch.]]></description><link>https://unity.com/blog/games/made-with-unity-2022-in-review</link><guid isPermaLink="true">https://unity.com/blog/games/made-with-unity-2022-in-review</guid><pubDate>Tue, 27 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get to know Unity’s Employee Resource Groups and the steps they’re taking to foster inclusion]]></title><description><![CDATA[At Unity, Employee Resource Groups (ERGs) are employee-led networks that foster an inclusive workplace by providing support around shared identities or life experiences that have historically been marginalized or underrepresented in the workforce. The purpose of ERGs is to champion an inclusive culture by modeling our company values of empathy, respect, and opportunity, and to build a sense of belonging. Membership in ERGs is open to all employees, regardless of whether they self-identify with the target demographic; allies are welcomed and encouraged to join in creating a culture of inclusion. Today we have a total of nine ERGs, nearly half of which were launched in 2022. Continue reading for a look back at all that our ERGs accomplished in the past year and to learn more about what each represents.The Access ERG was launched earlier this year and is a group that resonates with many people at Unity. The group hosted multiple meetings with guest speakers, covering various topics such as augmentative and alternative communication (AAC) literacy, guide dogs, and American Sign Language (ASL) interpretation. Leaders have also raised awareness and donations for nonprofits outside of Unity that are doing important work for communities with disabilities and neurodiversity.Employee feedback: “This is the most wonderful [update]. Thank you so, so much for researching, advocating, and sharing [recording transcripts].”In 2023, the Access ERG aims to normalize accessibility so that all team members with disabilities or neurological divergences have equal opportunities and rewarding careers. Seemingly small things, like having transcripts automatically enabled for Zoom meetings or introductions with visual descriptions, can make a big difference for someone with an auditory or visual impairment, respectively. They also plan on aligning with our accessibility council, focused on Unity’s product accessibility, to ensure that employees with disabilities are core stakeholders.The Asian ERG spent the past year recruiting new members through its monthly community meetings and also built an excellent event lineup. The group kicked off the year with a bang by putting together a video that featured Unity employees from around the world who each shared how Lunar New Year is celebrated in their respective cultures. Asian American and Pacific Islander (AAPI) Heritage Month is observed in North America during the month of May, so the Asian ERG organized four virtual events to raise awareness, including a Stop AAPI Hate presentation by Dr. Russell Jeung. In October, members gathered locally in offices with the Hindu and Sikh community to paint Diya lamps, and to taste locally sourced traditional food and sweets in celebration of Diwali, the Festival of Lights.In 2023, the Asian ERG leadership team aims to drive internal engagement and continue to grow community membership, as well as to continue collaborations with other ERGs such as the LGBTQ+ and Muslim groups by co-presenting discussions and events that tackle intersectional issues. The group also wishes to build partnerships with other companies and non-profit organizations, so as to create volunteer and networking opportunities for Unity’s Asian community. Finally, they are passionate about helping members develop and grow internally and are looking into ways to provide resources that can help guide the Asian diaspora in navigating their careers and to implement a mentorship program to promote a culture of learning.B-United, Unity’s Black ERG, has grown extensively over the past year. The group celebrated several amazing events for Black History Month in February (U.S. and Canada) and October (United Kingdom), and continued to honor Black culture throughout the year. An event that stands out was a fireside chat featuring one of Unity’s Black board members, whose story was impactful to hear for all who attended. The company was also able to send several B-United members to AFROTECH, which offered a unique chance to see and network alongside Black professionals across many areas of the tech industry. The conference was also the first time many of our group members met in person, since the ERG was established during the pandemic in 2020.In 2023, B-United plans to continue the momentum they’ve built and provide even more employees with opportunities to get involved. Creating psychological safety for our Black employees is essential for them to be able to thrive at Unity. This ERG can help be another space outside of someone’s immediate team for community building and career support.The mission of the Caregivers ERG is to partner with Unity to advance understanding and inclusion for employees who find themselves frequently in a caregiving role, be it for children, parents, or for other meaningful relationships in their lives. Founded this year, the group hosted a virtual volunteer event in partnership with our Social Impact team to send care packages to children in hospitals this holiday season. Balancing the care of others with impactful, meaningful work can be taxing for employees, and this ERG is dedicated to bringing resources, policies, and appreciation to its community so that, as a company, Unity is better able to retain, support, and provide equal opportunities for caregiving employees.Employee feedback: “I want to thank everyone for joining the kick off meetings this week. It’s really nice to meet new people at Unity and feel less alone.”Unity currently offers a variety of benefits for caregivers including family planning support and a flexible return to work program in the US and parental leave. In 2023, the Caregivers ERG intends to provide resources to make the return to work easier for employees who take leave for caregiving and to make flexible schedules a top priority.ComUnidad, Unity’s Latinx ERG, saw great improvements in its membership numbers, overall engagement, and group structure in 2022. The community grew to over 200 total members and attributes this growth to the time spent building a solid leadership structure and foundation to support the functions of the group. Growing its leadership team from four to nine this year allowed them to engage more with Unity’s Latinx community through events and community gatherings and to avoid leader burnout. Most notably, the group had a strong showing during Latinx Heritage Month (observed in the U.S. from September 15–October 15) when it hosted five events and increased its overall event engagement by more than 10%.In 2023, ComUnidad plans to continue its efforts to grow membership by offering more incentives for new Latinx employees and allies to join the ERG. This includes plans to provide more professional development opportunities and in-person events.What a busy year it has been for the LGBTQ+ ERG: The group organized more than a dozen events, many of which were in collaboration with other ERGs, such as a short film screening with the Asian ERG and Queer Icons trivia with the Latinx ERG. The team also hosted workshops on being an ally, a talk about the history of Drag Kings, a fireside chat with its executive sponsors, and launched a book club. In June, the group created a collective video to show what Pride really means to members of the community within Unity.Employee feedback: “I want to say how pleased and grateful I was to see [a] company-wide post specifically call out the LGBTQ+ community. A lot of companies tend to [take a much more vague] ‘Pride for everyone!’ approach – the acknowledgement of Pride's history is much appreciated, so thank you ”One of the LGBTQ+ ERG’s biggest goals for 2023 is to improve the sense of community for its members, as well as to offer opportunities for personal and professional growth. Group leaders are proud to have increased membership by over 12% in 2022, especially after a focus on gaining more global representation, but recognize there is still work to be done.The Muslim ERG is the first of its kind at Unity and a unique one in the tech industry, too. Through spreading awareness about issues that impact the community and Islamic culture, the group aims to set up frameworks that ensure that Muslim employees can practice their beliefs with respect and comfort. Leadership has collaborated with other ERGs, such as the Asian and Women ERGs, on issues that affect the intersectional communities. They’ve also hosted celebrations for Ramadan and Eid, including three successful fundraisers (tied to the internal employee match program) and informational sessions about Ramadan and how to be “in it together” for all. The fundraisers centered around food drives for war-torn countries and rebuilding education infrastructure in disaster-stricken nations due to global warming. As part of its end-of-year festivities, the Muslim ERG hosted baklava cooking and arabic calligraphy workshops to bring a bit of the Arabic culture to the diverse workspaces of Unity, and to make members feel more connected during the holidays.In 2023, there is great opportunity for this ERG to make an impact on Muslim employees and to create more allies and intersectional collaborations. The group’s leaders aim to work with internal teams to support onboarding of new employees who have been hired in or are relocating from Muslim-majority countries by introducing buddy systems, as well as to create inclusive workplaces globally for current employees. Together, the Muslim ERG looks forward to another good year for inclusion and diversity at Unity.The Service Members ERG is designed for veterans and military families, and chose a name and logo that would appeal to Unity’s global employee base. Members of the ERG believe service members and their families have unique skill sets and experiences to offer. Formed over the summer of 2022, the group hosted its first open workshop, led by a U.S. Army combat veteran, on how to cultivate a resilient mindset in an ever-changing world in September. To close the year, they hosted a children’s toy drive through Toys for Tots, which is run by the United States Marine Corps Reserve.In 2023, the Service Members ERG would like to grow its member base and bring more allies into the fold. With the new acquisition of ironSource, and the majority of its employees having served in the Israeli Defense Force, we believe there are many peers who would be interested in connecting with and learning from this community.What a year it has been. The Women ERG started off 2022 by introducing its first executive sponsors, who aim to build a continuous partnership in order to realize desired objectives and key results for women at Unity. The highlight of the year was, of course, the group’s impressive lineup of events during Women’s History Month in March, which included an influential Unity Women Panel, a showstopper that inspired all who tuned in and was supported by women leaders within the company. Another focus area for the ERG this year was to provide support for professional development, which led to the launch of its Peer Mentor program. Finally, the Women ERG announced the rollout of its Ambassador program, which is designed to provide additional support for events for employees in both virtual and in-person settings, and even found time to volunteer.As it looks to 2023, the Women ERG wants to support its members as best they can and iterate and improve processes. The leadership team is excited to show members all that they have prepared in an effort to bring more focused events and to increase engagement among women at Unity.We look forward to continuing to foster inclusion and diversity at Unity through these and more employee initiatives and extend a huge thank you to all who participated in ERG programming – both internally and externally – throughout 2022. Cheers to all that we can continue to accomplish in 2023!If you are interested in learning more about Unity’s Inclusion programs, check out our Inclusion & Diversity page. You can watch videos produced by our ERGs on our LinkedIn Life page or read through our Faces of Unity blogs, highlighting individual ERG leaders.]]></description><link>https://unity.com/blog/news/get-to-know-unity-employee-resource-groups</link><guid isPermaLink="true">https://unity.com/blog/news/get-to-know-unity-employee-resource-groups</guid><pubDate>Mon, 26 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Havok Physics for Unity is now supported for production]]></title><description><![CDATA[Announced back at the Game Developers Conference (GDC) 2019, Havok Physics for Unity was initially distributed as an experimental package on the Unity Asset Store. Now, with the availability of ECS for Unity (Entity Component System) in the Unity 2022.2 Tech Stream, Havok Physics for Unity is officially supported for production. In fact, we’ve made this package available to all Unity Pro, Enterprise, and Industrial Collection subscribers for free.Havok Physics for Unity is built on the same foundation of technology that powers many of the world’s leading game franchises like Destiny and Assassin’s Creed, among others. When we first set out to define what the future of physics could look like with our Data-Oriented Technology Stack (DOTS), we sought a partner that shared the same core concepts and values as us. Through our partnership with Havok, we were able to leverage DOTS to deliver the highly optimized, stateless, entirely C#, and performant Unity Physics we know today.We also prepared for more complex simulation requirements for users who might need a stateful physics system. We knew that Havok would be the perfect solution to integrate into Unity for those high-end simulation needs.The Havok Physics for Unity package is written using the same C# ECS framework as Unity Physics, and is backed by the closed-source, proprietary Havok Physics engine, written in native C++. Havok Physics for Unity is heavily optimized for many typical gaming use cases. For example, core algorithms have been refined over many years with various automatic caching strategies (including the sleeping of inactive objects), meaning that CPU resources are spent only as needed.Since the experimental package, Unity and Havok have been working together with early users of the plug-in to drive improvements and add new features.Here’s a breakdown of what’s new:Havok Physics for Unity is now available for free for all Unity Pro, Enterprise, and Unity Industrial Collection subscribers.Havok Physics for Unity is based on the 2021.2 version of the original Havok SDK, and brings more stability and performance to the Unity plug-in.As part of the full release, we’ve incorporated support for motorized joints (motors), such as linear position, as well as linear, rotational, and angular velocity.We’ve also added new methods to the HavokSimulation API, which enables granular stepping for your simulations, plus methods for accessing Havok simulations more efficiently with singletons.Check out the complete changelog of updates to Havok Physics for Unity.Havok Physics is a robust physics engine designed to handle the performance demands of the most dynamic games, often involving complex scenes with lots of physical interaction. By working with partners across the industry for over 20 years, Havok has encountered, solved, and continued to iterate on some of the toughest problems facing real-time physics simulation. This investment has led to the stable stacking of physics bodies, minimal artifacts for fast-moving bodies, and generally more controlled behavior, especially when it comes to non-optimized collision geometry.Of course, physics means action, so let’s see how these two creators are currently taking action with Havok Physics for Unity.Title:Hostile Mars
Studio:Big Rook Games
Studio size:Individual
Platforms: Windows PC, console
Genre: Open-world, base-building automation tower defense
Players: Single playerFirst presented at PAX – East in 2022, Hostile Mars drew in quite an audience with its dedicated use of physics and unique blend of genres. The vast Martian landscape is brought to life in an open-world factory base-building and automation game. Players confront each other at the ground level in close combat to defend their factories through both third-person shooting and programmable defenses.Jake Jameson, founder of Big Rook Games, began by blending genres across multiplayer and single-player games – adding elements from puzzlers along with first-person shooters (FPS) and wave-based shooters. The more he evolved this idea, the more he narrowed his focus on creating a single-player base builder. He soon discovered the ideal balance between building, strategy, and combat, finally leading up to the one and only Hostile Mars.When completing that final iteration of Hostile Mars, it was clear the game needed to use some sort of data-oriented programming model. Jake wanted to have large enemy waves while still achieving high-end visuals. In order to provide the players with the best possible experience, the game had to run performantly on a massive scale, supporting thousands of enemies simultaneously onscreen.To meet these demands, Jake turned to Unity’s Data-Oriented Technology Stack. In leveraging ECS for Unity, every enemy in Hostile Mars could run real-time Mesh Physics/Collisions, A* Pathfinding, and Local Avoidance, in addition to robust state systems, animations, weapon and projectile systems, high-quality VFX, particle systems, and more.“Without DOTS, I wouldn’t have been able to provide the experience that I imagined in my original design. It just wouldn’t have been possible without implementing my own ECS framework, and as a solo dev, this isn’t viable given my timeline and budget.” – Jake Jameson, founder of Big Rook GamesAlthough Jake is not a game developer by trade, he is an avid gamer and was already familiar with the original Havok Physics engine. Knowing how trusted Havok’s technology has been among AAA studios, Jake felt confident implementing it as soon as it became available in Unity via the experimental package.Hostile Mars is a physics-intensive experience. The player uses physics-based traps and turrets to manipulate the physics properties of enemies. By applying different physical properties to enemies, the goal is to stop them in their tracks or drive them toward more dangerous traps.Not to mention that Hostile Mars involves an incredible number of enemies. More specifically, there are up to 5,000 individual physics-based enemies that can flood the player’s Martian factories, which leads to hundreds of collisions and projectiles onscreen at once.All of the physics in Hostile Mars utilizes Havok Physics for Unity; from the collisions between projectiles and enemies, players and enemies, even enemies and other enemies, to enemies and the landscape itself, and hovering enemies who require a constant state of force to stay afloat. These distinct physics interactions take place in real-time, with physical simulation that allows for believable hovering, gravity, and mesh point collisions. So when players strike their enemies at a particular point, they will see them spin away just as Havok Physics for Unity intended them to.Not only are the enemies entirely physics-based, but the traps that are necessary for gameplay are physics-based too. There are gravity traps that push and pull enemies, which in turn, slow down or speed up traps that smash enemies. There are even traps that spring spikes up into an enemy’s path, not just pushing them aside, but realistically simulating the force and velocity of the spikes so that the enemy reaction appears authentic.Once the players advance, the enemy waves become varied and increasingly complex, which requires players to build traps more strategically, combining their different physics-based interactions to herd enemies with different weaknesses toward stronger traps and turrets that can impact them most. For example, while a frost trap might slow some enemies down, an explosive trap can deal the most damage possible against a highly concentrated wave.Plans for releasing Hostile Mars on consoles are still in the works, but in the meantime, you can add Hostile Mars for Windows PC to your Wishlist on Steam today.Title: Robocraft 2
Studio:Freejam Games
Studio size:25
Platforms:Windows PC, console
Genre: Online vehicular combat
Players: 5v5 online multiplayerRobocraft 2 is the free-to-play sequel to 2017’s award-winning Robocraft, where players build customizable robot battle vehicles that drive, hover, walk, and fly in an open-world multiplayer environment. Since this initial success, the team at Freejam Games has refined a fully customizable experience for Robocraft 2, so that players can bring their own creations to competitive multiplayer gameplay.As Freejam Games experimented with projects following the success of Robocraft, they focused on providing exciting new building tools. This way, players could enjoy more freedom to design complex, physics-simulated creations.The team evaluated how moving the physics from the client side to dedicated multiplayer game servers could enhance the physical interactions between the vehicles and robots created by the players. They discovered that relegating the physics to the server created a range of fun gameplay moments, wherein weight, inertia, momentum, friction, mass, and bounciness were all accurately simulated. In other words, the heavy vehicles could easily push lighter ones, or be combined with joints like pistons, servos, and rotating platforms. Even weapons and explosions applied realistic kickback and force when they hit. All of these experiments, alongside community testing and feedback, culminated in Robocraft 2.In Robocraft 2, players now get to create complex vehicles, take them into battle, and destroy them in 5v5 team battles online. From their experience with the first Robocraft game, the Freejam team knew how competitive and creative their players could be, finding new ways to optimize the provided building tools in order to win battles.This meant that the team had to rely on three key features from their physics engine in order to provide a fair experience for all:Fast performanceRobust, non-glitchy physics simulationAccess to low-level areas of the physics engine to make modifications in the gamePrior to the 2017 announcement of DOTS and ECS for Unity, Freejam Games explored the possibility of building their ECS framework in-house. They then quickly adopted ECS for Unity in its experimental release, starting with Unity Physics. For experiments with server-side tech, they used determinism as a solution for keeping the player clients and simulation on the server in sync, while Unity Physics (which is deterministic) provided the performance.As the game evolved, they moved away from a stateless approach and became early adopters of Havok Physics for Unity. As a stateful system, Havok Physics for Unity ultimately powered the performance of the simulation within the gameplay requirements for Robocraft 2.“The high performance of Havok [Physics for Unity] allows us to have accurate server-side physics in our online game. In turn, that provides several significant benefits including giving all clients an equal representation of the physics for a better quality experience. The fact that the server is authoritative over the simulation also has the added benefit of reducing the opportunity for cheaters.” – Ed Fowler, principal programmer and cofounder of FreejamHavok Physics for Unity helped Freejam Games solve complicated issues. For example, as players defeat opponents, the robots and vehicles fall apart block by block, which can create hundreds of Rigidbodies in the environment. To free up CPU and maintain high frame rates, those inactive Rigidbodies can be put to sleep via Deactivation, a feature that effectively removes the physics from broken pieces temporarily.Player creations in Robocraft 2 consist of many Rigidbodies with Compound Colliders constrained together by joints, which can be smashed or stacked on top of one another. Further improvements to overall performance of the physics simulation can be gained with Collision Caching, which additionally allows for refined simulation of joints/constraints, such as in those stacking situations.Lastly, the Havok Visual Debugger was used to visualize the collision in the game world in real-time. It enabled Freejam Games to identify glitches, snags, and efficiently spot instances where rogue contacts arise. This accelerated their workflow and prompted fast fixes.Want to see Robocraft 2 in action? Add it to your Wishlist on Steam.To help you get started, check out the ECS Physics Samples on GitHub.If you need more guidance, we created a tutorial to help you learn more about Unity’s physics options, including Havok Physics for Unity.By the end of the tutorial, you will be able to do the following:Describe the key benefits of Havok Physics for Unity and Unity PhysicsExplain the relationship between Unity Physics and Havok Physics for UnityIdentify situations where physics solutions for ECS are the right fit for a projectThis tutorial is an introduction to physics solutions in ECS for Unity, tailored to users with an intermediate or advanced level of experience with the Unity Editor. As mentioned earlier, DOTS is Unity’s Data-Oriented Technology Stack, a suite of data-oriented technologies for users looking to make complex projects with highly optimized performance. If you want to learn more about DOTS, we recommend the newly-released DOTS Guide on GitHub.We are also actively engaging with many of you on the DOTS channel, part of the Unity Discord, and in the forums. We look forward to learning more about the projects you’re building with Havok Physics for Unity.]]></description><link>https://unity.com/blog/engine-platform/havok-physics-now-supported-for-production</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/havok-physics-now-supported-for-production</guid><pubDate>Mon, 19 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Going off autopilot in ad monetization: 4 innovative strategies to start implementing]]></title><description><![CDATA[It's easy to stick with strategies that work - but incremental growth comes from balancing exactly that with constant testing and experimentation. That's why at Appfest 2022, Samantha Benjamin, Director of Growth at Supersonic, explored four ways you can break old patterns and be more experimental with your monetization strategy - or, as she puts it, “get off of autopilot."Get inspired by successful creativesFirst, Samantha recommended getting inspired by features in what she calls “booster creatives,” or creatives that give you 3-5x more installs for the same cost as other creatives (and can even change the marketability power of your game).For example, her team saw that creatives with realistic obstacles performed significantly better than creatives with cartoonish ones - so they decided to take those realistic obstacles and actually add them to their game Going Balls. As a result, LTV grew on both iOS and Android, and D7 ARPU jumped 5-7%.As your creative team finds these “boosters”, make sure they pass them directly to your monetization team. This way, with every new idea, you can consider and optimize any potential monetization opportunities.Building a sophisticated interstitial player experienceThough interstitials are a major source of revenue, the potential impact on retention sometimes deters developers from monetizing with them . So to ensure players have the best possible interstitial experience, it’s critical to adjust it to your players’ engagement behavior.No-touch interstitialsFor example, when a player hasn’t touched their screen for at least 20 seconds, Supersonic displays what they call “no touch interstitials”. This player is likely taking a break - but they’re going to return to their phone eventually, so the ad will be the first thing they see. CPMs are high with this placement, and it’s a win-win - LTV is high, advertisers get installs, and players can enjoy a more sophisticated interstitial experience.Before or after end-level screenAdditionally, Supersonic tested adapting interstitials for users who reject rewarded video offers. Usually, developers just show interstitials when this happens, but clearly these users don’t want to engage with ads. Supersonic tried a different approach: showing interstitials to this segment during natural pauses in the game, like commercials. They tested this by putting interstitial ads for these users right before or after the end-level screen - and engagement boosted as a result.Looking at other genresNext, try broadening your sources of inspiration - beyond just games competing in your genre. Other kinds of games might seem drastically different, but if they have similar motivations, they can be an ideal learning opportunity.Highlighting progress with a leaderboardInspired by PvP games, Supersonic decided to add an automated leaderboard that pops up at the end of their hyper-casual games. By creating a competitive atmosphere and displaying players’ progress, they boosted LTV and ARPU lifted 12% on average.Celebrating wins with confettiThe Supersonic team noticed other genres creating excitement within their games, so they decided to add a burst of confetti in their games whenever players achieved something (like shooting a basketball through the hop). Simply by emphasizing their players’ success and making them feel like winners, Supersonic saw their ARPU jump by 15%.The power of musicAs Samantha puts it: “never underestimate the power of music,” especially in ad-oriented games. When Supersonic tested incorporating more music into their games, they saw a 10% ARPU uplift - simply by tweaking the music and testing different volumes and sound effects.Staying open to ideasFinally, Samantha explains the value of having dedicated time to think of new ideas. In fact, when one growth operations manager at Supersonic pitched an idea, it inspired a real change in their games: timed treasure chests. To increase session length, as the user was approaching the average session length, they would see a pop-up chest with a timer - encouraging the user to keep playing and wait for their prize to be available. This proved so successful at increasing session length that Supersonic implemented this into three of their biggest games.Ultimately, new monetization ideas can come from anywhere and everywhere - so it’s crucial to stay on the lookout, trust your data - and, when the opportunity strikes, don’t be afraid to try going off autopilot.Watch the session here: https://www.youtube.com/watch?v=RMqiWKAFENY]]></description><link>https://unity.com/blog/going-off-autopilot-in-ad-monetization-samantha-benjamin</link><guid isPermaLink="true">https://unity.com/blog/going-off-autopilot-in-ad-monetization-samantha-benjamin</guid><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[It’s all in here: The ultimate guide to creating UI interfaces in Unity]]></title><description><![CDATA[Thousands of people have preregistered and now it’s finally here: Our biggest e-book yet, User interface design and implementation in Unity, is available to download. Get ready to dive into over 130 pages of advanced instruction in UI design.Your game’s user interface is perhaps the most direct way you can communicate with and guide your players – like a folded map you hand to them that reveals clues, key details, and directions as they progress. Whether you’re using more traditional elements like health bars and pop-up messages, or elements completely embedded in the game world, such as showing stats on the back of a player’s survival suit, the UI is integral to immersing players in your game’s story, realm, and artistic style.We’re thrilled to announce that our latest technical e-book, User interface design and implementation in Unity, is available to download for free. Thousands of people have already signed up for it, and just as many have downloaded its companion piece, the demo project, UI Toolkit sample – Dragon Crashers, to date. Now it’s your turn.The interest in this e-book is understandable. As it says in the introduction, “User interface is a critical part of any game… a solid graphical user interface (GUI) is an extension of a game’s visual identity… [and] modern audiences crave refined, intuitive GUIs that seamlessly integrate with your application.”The guide begins by covering UI design and art creation fundamentals, and then moves on to in-depth instructional sections on UI development in Unity. Written and reviewed by technical and UI artists – external and Unity professionals alike – the e-book unpacks both Unity UI, the default solution, and the newer UI Toolkit.The emphasis, however, is on the latter toolset, as UI Toolkit now provides many benefits for projects with complex, fullscreen interfaces. Think of projects that require a scalable and performant system for runtime UI. To help you choose the right solution for your project, please refer to this section of the Unity manual.The e-book is a treasure trove of information for professional UI designers, artists, and other Unity creators who want to deepen their knowledge of UI development. Here’s a snapshot of what’s inside.The first section aims to inspire with foundational tips for making effective UI. It looks at examples of diegetic UIs, where UI elements can be found right in the story, making parts of the game world function as a user interface. It explains how elements can either contribute to or break the immersion that a player experiences. We even turned this section into a blog post that you can read here.The guide then turns to the roles and responsibilities of a UI designer, and what tools and methods they employ such as UI wireframing, art creation through mockups, fonts, and grey-boxing. There’s also a chapter on asset preparation and exporting graphics from Digital Content Creation (DCC) tools. These earlier sections in the guide are helpful no matter what game engine and UI solution you’re using.An extensive chapter is devoted to Unity UI. Unity UI is our longtime system for creating in-game UIs, and currently the go-to solution for positioning UI in a 3D world or using GameObject-based Unity systems.This section outlines Unity UI fundamentals for prototyping and integrating assets in-Editor: the Canvas, prebuilt UI elements, TextMesh Pro, and Prefabs, among others. We recently updated an article on advanced optimization techniques for Unity UI, where you can find tips on related topics.UI Toolkit is made for maximum performance and reusability with workflows and authoring tools informed by standard web technologies. UI designers and artists will likely find it familiar, especially with prior experience designing web pages.Three major sections of the guide highlight instructions for developing runtime UI with UI Toolkit. There’s a thorough explanation of the parts that comprise UIs made with UI Toolkit, including the Unity Extensible Markup Language (UXML) and Unity Style Sheet (USS) using UI Builder.You’ll explore how UI Toolkit positions visual elements based on Yoga, an HTML/CSS Layout engine that implements a subset of Flexbox. Flexbox architecture provides advantages, such as responsive UI, enabling you to adapt your UI to different screen resolutions and sizes. Through both UXML and USS, you can decouple the styles applied to UI layouts (and switch those styles up as needed), while logic and functionality continue to live in code. Workflows for visual elements, the fundamental building blocks of each interface, are also discussed in great detail – from positioning, size, and alignment settings, to margins and padding.The chapter on styling shows you how to define reusable styling for visual elements with Selectors, override styles and define unique attributes with inline styles, and create animations and effects with USS animation and a Camera Render Texture. It also demonstrates how you can thematize UI elements for holidays and other special events.That’s when the e-book gets into UI Toolkit sample – Dragon Crashers, with different sections that depict how the UI was made; from the menus and custom controls like radial counters or tabbed views, to embedded UXML templates and more.Finally, the guide concludes with a mini profile of the studio Mechanistry’s UI migration to UI Toolkit for their new game, Timberborn. This brief study showcases how their lean team managed to scale and keep their game consistent across various menus and screens.At 137 pages, the UI e-book is not a light read. As with the other technical e-books released this past year, use it as a reference on an ongoing basis.Along with the e-book, check out a couple of recently released resources filled with useful tips for leveraging Unity UI and UI Toolkit:The Unite 2022 session, Extending the Unity Editor with custom tools using UI Toolkit, shows programmers how to use UI Builder to create a custom Inspector for real-time Play Mode debug data visualization.The webinar, Best practices for mobile UI design, gathers experts from Outfit7, Samsung, and Unity to share strategies for maximizing the creativity and flow of your mobile games.Bookmark one or both of these pages. They compile all of our technical e-books and advanced content:Unity best practicesAdvanced best practices – Unity ManualWe hope that you enjoy this latest e-book and look forward to your feedback in this forum.]]></description><link>https://unity.com/blog/games/ultimate-guide-to-creating-ui-interfaces</link><guid isPermaLink="true">https://unity.com/blog/games/ultimate-guide-to-creating-ui-interfaces</guid><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building better paths while maintaining creative flow with Splines in 2022.2 ]]></title><description><![CDATA[Unity 2022.2 includes updates to the Splines package, accessible through the Package Manager, which offers you the ability to draw and use spline paths in your game or other creation. For developers, this means you can easily build out rivers, roads, camera tracks, and other path-related features and tools. If you’re an artist, you get a consistent, Unity-supported experience across all these toolsets using our Splines solution. Several default components are also included with the Splines package, so you can use this new artist tooling right away.If you’d like to jump right into learning and discussing the new Splines package, head over to the Unity Splines forum post.A “spline” is a type of path that is often used in both 3D and 2D creative tools. Essentially, you set a few points as if you are mapping out a road, then optionally tweak how the path curves around those points, and, finally, connect more branching points if you need them… that’s your spline!Splines are often used to:Create rivers and roadsSet camera tracksDefine areas or shapesThe Splines package enables you to create and use splines as easily as you would any other object. Open the GameObject menu to create a spline, then add whatever components you want to use that spline’s path.As an artist, this means you just need to learn one set of tools to draw roads onto your terrain, define camera paths, or extrude mesh shapes for level design. Even better, the spline you draw for your camera can be reused to place a path on the ground, to navigate characters, or anything else. Just add or swap out components as needed.For developers, the Splines package provides a robust and standardized framework to build on. Create your own custom components or Unity Asset Store packages. For more information, see the Splines API documentation.Create or open a project on Unity 2022.2 or later, then install the Splines package using the Package Manager.To create a spline:1. From the top menu, select Create > Spline > Draw Spline.2. Click in the Scene view to place points for your spline. If you want to add a curve to the path, click and drag when you place a point.3. When you are done drawing, press Escape, or select a tool in the Tools overlay.4. Use the Editor’s standard select and transformation tools to edit the shape of the spline. For more information, see the Splines documentation.Splines is the first major feature to use our new tooling system, contextual workflows. Contextual workflows use overlays to get you the right tools at the right time. You can see them in action in these cases:Simplify editing with Tool context: Select a spline to see an icon appear at the beginning of the Tools overlay. This icon indicates the Tool overlay’s Tool context. Click the Tool context icon to change your Tool context from GameObject to Spline. Now you can dive right into editing the spline’s finer details using the standard Editor tools and controls.Customize with Tool Settings: Activate a spline tool to see new options in the Tool Settings overlay. This shows you which options are available so you can pick what you need on the fly.Discover new tools with component tools: Select a spline, and if that spline has any component tools, they appear at the bottom of the Tools overlay. If a package or asset uses components to add new tools, you can find them at the bottom of the Tools overlay – no need to search through the Editor.The best part here is that contextual tooling can work with any toolset in Unity, including the Unity Asset Store or other custom creations. If you’re a tool developer and need help setting this up, start with the tools documentation, or reach out on the Unity Forums.Speaking of components, we’ve included three to meet the common uses cases:Instantiate: Generate copies of an item along a spline. Use the Instantiate component to create objects like fences, trees, stone walkways, and so on.Animate: Move a GameObject along a spline. Use the Animate component with cameras, characters, or in situations where you need to define movement in Unity.Extrude: Build a tube mesh along a spline. Use the Extrude component to create and easily edit shapes like wires, pipes, ropes, noodles, and more.New in Splines 2.1, you can build splines with multiple, branching paths. Activate the Draw Splines tool, and begin drawing new parts onto the spline. This also enables you to create disconnected spline sections.You can directly manipulate splines quickly without having to hunt through menus for the right transform tool or gizmo. When you are editing spline points, click-drag a point to move it. No tool activation needed! This is designed to bring 2D-like simplicity of editing to splines.When editing spline points, these new options are available in the handle orientation dropdown. Parent enables you to move, rotate, or scale items relative to their parent element. Element gives you precise editing using the selected item’s directionality.Splines was built to be a foundation for other tooling, especially tools from the Unity Asset Store and custom creations. The package includes a robust API and samples for developers to learn from or customize. Check out the Splines API documentation to get started.The Splines package has been publicly available for almost a year now. Your continuous input has been fantastic, and we’re excited to hear even more, especially from artists, with this major update. Comments here are great, and for deeper discussions we hope to see you on the Splines forum thread.]]></description><link>https://unity.com/blog/engine-platform/building-better-paths-with-splines-in-2022-2</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/building-better-paths-with-splines-in-2022-2</guid><pubDate>Mon, 12 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2022.2 Tech Stream  is now available]]></title><description><![CDATA[I’m delighted to share that the 2022.2 Tech Stream, our final release of the year, is available for download.Tech Stream releases allow you to go hands-on with early access to the latest features. It’s also an opportunity to share your feedback on how we can build even better tools to power your creativity.Most recently at Unite, we gathered with our community of game developers to share some of these updates on topics like DOTS, rendering, multiplayer development, and XR, and we celebrated Made with Unity games like V Rising, Pentiment, Breachers, and many more. The dialogue online from over 9,000 Discord messages and countless in-person conversations was invaluable to shaping the future of Unity.Coupled with the 1,470 new forum threads where we discussed product feedback with you since the 2022.1 Tech Stream arrived and the 3,080 new notes on the Unity Platform roadmap, this feedback helped us get to today’s release. We couldn’t have done it without you and are excited to get that work in your hands. To learn more about how your feedback drives product development, check out this blog post.Together with the first Tech Stream, today’s 2022.2 completes this year’s cycle. Join us and explore what’s in store ahead of the LTS release in 2023. For even more on where Unity is heading, I encourage you to read our Games Focus blog series.In this post, I’ll be sharing a few highlights from this release, but you can always get more details in the official release notes.A frequent request we receive is to give you the ability to create more engaging gaming experiences, deeply immersive worlds, and to do so with more objects and characters than ever before.Unity 2022.2 includesECS for Unity (Entity Component System), a data-oriented framework that empowers you to build more ambitious games with an unprecedented level of control and determinism. ECS and a data-oriented approach to development put complex gameplay mechanics and rich, dynamic environments at your fingertips. Starting with Unity 2022.2, ECS for Unity is fully supported for production, so you can get even more out of ECS through support channels and success plans.ECS for Unity includes the Entities package, along with ECS-compatible packages for Netcode, Graphics, and Physics. If you’re already familiar with Unity’s GameObject architecture and scripting standards, ECS for Unity is fully compatible with GameObjects, so you’ll find a familiar authoring experience and streamlined workflows. This gives you the capability to leverage your existing skill set and leverage ECS only where it will best benefit your game experience.We’re already seeing some great games running on ECS for Unity, such as Stunlock Studios’s V Rising. Because they turned to ECS, they were able to vastly increase the number of in-game interactable assets to more than 160,000 across a 5km2 map, with more than 350,000 server-side entities powering the experience.If you’re looking for help, want to provide feedback, discuss best practices, or show off your projects, you can join a thriving community on our forums and Discord. Our teams regularly engage in these channels and keep a close eye on your feedback. Join us on December 8, 2022 for our Dev Blitz Day dedicated to DOTS, when we’ll be spending an entire day trying to answer all your ECS questions.The last 18 months have seen an explosion of multiplayer experiences being built with Unity, and we hear that many of you want to add multiplayer access to your games but aren’t sure where to start.Alongside Unity 2022.2, we’re highlighting Netcode for GameObjects, a package that simplifies the implementation of multiplayer capability to your project in a number of scenarios such as couch cooperative play. The package works with familiar GameObject-based programming techniques, and it abstracts away low-level functionality so you can write less code while creating the multiplayer experience you envision.For more demanding, large-scale games, you can harness the power of ECS with Netcode for Entities. Netcode for Entities can enable you to increase your game world size, player counts, and complex network interactions without the performance sacrifices developers have traditionally had to deal with.We also recently announced the launch of self-serve capabilities in our Multiplayer Solutions suite within Unity Gaming Services (UGS), which helps you to operate your multiplayer games with hosting, communications, and more. Learn more about the latest developments for this tech in this Games Focus blog, or take a deeper look at the UGS Multiplayer suite in this UGS video, produced in collaboration with Tarodev.Multiplatform scalability and high-fidelity graphics continue to be our focus for rendering. In our Games Focus blog “Rendering that scales with your needs,” we covered our dedication to delivering features that allow you to scale with confidence while tapping into an even broader range of tools that provides the best possible visual quality and performance.We continue to bring the Universal Render Pipeline (URP) closer to feature parity with Built-in Render Pipeline through more streamlined and scalable workflows. We worked on key tools such asForward+, which provides functional parity with Forward path in Built-in Render Pipeline, eliminating the light limit count so you can scale with quality across platforms.Another key feature is Decal Layers,which allow you to filter and configure how different objects are affected by Decal Projectors in a scene. Decals are useful for adding extra texture details to a scene, especially to break the repetitiveness of materials and their detail patterns.Other special URP enhancements include LOD crossfade for smoother transitions and Built-in Converter improvements that provide you with tools to upgrade your existing projects from the Built-in Render Pipeline to URP. You can also personalize your rendering experience with Shader Graph Full Screen Master Node and Custom Post Processing across both renderers.Diving into High Definition Render Pipeline (HDRP), we’ve made enhancements that help you create even more beautiful physically based environments and detailed characters. You can scale high-fidelity environments with the new HDRP Water System to render oceans, rivers, and underwater effects, and use Volumetric Material to create procedural local fog using Shader Graph. Create even more realistic skies with improved Cloud Layers dynamic lighting, and you can even blend between different Volumetric Cloud conditions.You can also take your cinematic renders further to render realistic characters with Eye Cinematic with Caustics and PCSS shadows. HDRP Path Tracing Denoising provides you the choice between NVIDIA Optix™ AI accelerated denoiser and Intel® Open Image.Watch our latest Unite 2022 session on Lighting Environments in Unity to discover some key tips to get you started with our latest HDRP environment tools.Creative endeavors are never linear, and we understand that rapid iteration is part of the journey. This release includes new authoring features and workflow improvements to help speed up your productivity.For example, the Prefab system sees a number of upgrades, including the ability to quickly replace a Prefab Asset for a Prefab instance in a scene or nested inside other Prefabs. Read our latest blog on this topic for more information.For faster environments, the Paint Detail brush in the Terrain Tools package now allows you to simultaneously scatter multiple types of details with per-detail-type density settings available. Additionally, detail density and a few other Terrain settings are now overridable in the Quality settings to help you achieve platform performance targets.You can also use improved tooling and API features for Splines to help draw paths in your environments with greater precision. This means you can build out rivers, roads, camera tracks, and other path-related features and tools more efficiently. Thank you to all who engaged with us in the worldbuilding forums in the last couple months to help us finalize this delivery. For more on the API features, check out the documentation.Finally, the AI Navigation package is now available for you to quickly add intelligence to 3D characters and move in game worlds without needing to code rules manually. It also ships with samples to help you get started. See the forum for more details, and check out what’s next on the roadmap.In 2022.2, UI Toolkit is reaching parity with IMGUI for customizing the Editor and is the recommended solution for Editor tools. This means better separation of concerns, more flexible layouts, and advanced stylings. With updates like default inspectors generated with UI Toolkit, ported common built-in Property Drawers, TreeView controls with multicolumn support, and a new vector-drawing API, this release not only helps us reach parity with IMGUI but also supports runtime use cases as well.If you want to learn more about the current state of runtime, we recently released a new project demonstrating a full-feature interface with UI Toolkit based on your feedback for more samples. Check that out here.To help you get started, watch the recent Unite session illustrating a step-by-step example of how to build custom tools with UI Toolkit. Plus, visit the recently released Editor Design system for guidance on how to build intuitive experiences.After extensive work, testing, and listening to a lot of community feedback, DirectX 12 is out of an experimental state with the release of 2022.2. Depending on the project, you can now expect performance on par or greater than DX11, especially in draw call-heavy scenes.This is a result of significant investment into performance and stability, making DX12 the recommended graphics API for Windows and Xbox development. Additionally, DX12 lays the foundation for more advanced graphics features, such as real-time ray tracing, which is now available for Xbox game development. We couldn’t be more excited and thankful to you all for helping us get DX12 across the finish line and look forward to the great games you’ll be creating.We continue to hear that you not only want us to support new platforms, but also where we can simplify and improve development when targeting devices. If you haven’t already, check out the Games Focus blog “Reach more players over multiple platforms and form factors,” where we dive into both what is here now and what will be available in the near future.We’re making cross-device XR creation simpler with Unity XR Interaction toolkit (XRI). XRI provides a framework for common interactions that work across various controllers, such as grab, hover, select, visual feedback to indicate possible interactions on objects, and more. XRI is now in version 2.2, which adds multi-grab support, new locomotion methods, and a collection of ready-to-go Prefabs in our Starter Assets sample package.We recently invited the creators of Blacktop Hoops, a VR basketball game, to talk about how they used XRI as the base for their input controls during the Unite 2022 Keynote. Check out the XR segment for more information.We’ve also updated AR Foundation to version 5.0. This update brings two key features to reduce development time. The first is simulation, allowing you to test your AR app in the Editor using Play mode, an update that addresses a common AR developer frustration in the past. We’ve also added the AR Debug Menu as a new Prefab that you can use to view available configurations on your device and visualize AR subsystem data such as planes and point cloud positions.Finally, we’re continuing to add key platform support to the Editor with Meta Quest Pro, PlayStation®VR2 and Magic Leap 2.To read more about the 2022.2 Tech Stream, check out the release notes for a comprehensive list of features and the Unity Manual for documentation. As you dive in, keep in mind that while each Tech Stream release is supported with weekly updates until the next one, there is no guarantee for long-term support for new features and remember to always back up your work prior to upgrading to a new version. The upgrade guide can also assist with this. For projects in production, we recommend using Unity Long Term Release for stability and support.Each Tech Stream is an opportunity to not only get early access to new features, but also to shape the development of future tech through your feedback. We want to hear how we can best serve you and your projects. Let us know how we’re doing on the forums, or share feedback directly with our product team through the Unity Platform Roadmap. You can also follow us on Twitter and catch our latest Unity Twitch Roundtable, covering 2022.2, on demand.This release completes our 2022 development cycle. We have ambitious goals for next year, which you can read about in our Games Focus series or watch in the recent Unite Roadmap session. Thank you for all your support, and we look forward to partnering with you every step of the way.]]></description><link>https://unity.com/archive/blog/engine-platform/2022-2-tech-stream-available</link><guid isPermaLink="true">https://unity.com/archive/blog/engine-platform/2022-2-tech-stream-available</guid><pubDate>Thu, 08 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[VR for everyone: Accessible game design tips from Owlchemy Labs ]]></title><description><![CDATA[Over a billion people experience disability globally, and many are gamers. 30% of gamers in the U.S. identify as disabled, yet 66% say they face barriers or issues related to gaming.Fortunately, this situation is starting to change.From Tribe Games and Owlchemy Labs to Insomniac and Naughty Dog, studios of all sizes are creating more accessible gaming experiences. Today, 70% of allplayers use accessibility features built into games, whether they have a disability or not. Players want flexibility, and accessible game design can provide that.Owlchemy Labs, the studio behind titles like Job Simulator, Rick and Morty: Virtual Rick-ality, and, most recently, Cosmonious High, champions accessibility in VR. In June, they introduced Cosmonious High’s first accessibility update, with a range of updated gameplay options, including one-handed control mode, features to accommodate seated players, colorblindness enhancements, an immersive subtitling system, and more.Andrew Eiche (chief operating owl and cable slinger), Jazmin Cano (accessibility product manager), and Peter Galbraith (accessibility engineer) joined Unity’s Hasan Al Salman on Twitch to discuss the update.Read on to learn how this innovative studio built a culture of accessibility, get tips you can apply to your own games, or watch the full stream below.Their accessibility statement explains that, “At Owlchemy Labs, we believe deeply in making VR for everyone! Improving our accessibility helps us achieve that goal.” The studio has built a strong, accessibility-first culture that every Owl experiences from their first day of onboarding.“There’s a huge developer documentation page, which is fantastic. It has a fabulous guide on accessibility,” says Jazmin. “There are tools, learning resources, and examples of how Owlchemy approaches games with this thinking. From day one, it shows everyone at Owlchemy how important this is.”Conversations about accessibility at the studio aren’t relegated to specific Slack threads and channels, but are discussed openly everywhere. “It’s really important for everyone to see what’s going on in the industry and even just learn about it as we develop,” says Jazmin.Owlchemy Labs considers every gameplay element through the lens of universal design. Where possible, each feature is built to be used easily by anyone, without having to enable specific accessibility settings from a menu.“There’s a great saying that goes: ‘Design for one, extend to many,’” says Jazmin. “When you create something that’s accessible for one person, it’s likely going to benefit more people than you had in mind.”The team considers accessibility from the start and draws on learnings from previous projects, which makes it easier to implement or iterate on new gameplay features.“We do a lot to think about these things from the beginning as much as we can,” says Andrew. “We’re always improving and getting better, which is why we created the accessibility update. But having the thought process from the beginning makes the whole process significantly easier.”Accessibility options in Cosmonious High generally aren’t hidden in menus. To play in one-handed mode, you can just turn off your second controller and start playing.Peter Galbraith, the team’s accessibility engineer, shares how Owlchemy Labs adapted features like the Powers Menu, the way you select various VR superpowers, for one-handed mode. “Previously, you would have to tap the back of your hand and it would pull up a radial menu of your powers. With the new accessibility update, you can just double tap, and it opens up the menu so you’re good to go.”Players can grab objects telekinetically by gesturing towards them and pulling them with a flick of the wrist. “You don’t have to reopen your hand and get the exact timing when it hits right. It’s a really nice way to make you feel powerful, while making it easy to identify and grab what you want,” Peter says.One-handed mode obviously helps players who don’t have use of both hands, but it has subtle benefits for players who do.“When you design for one use case, you can actually end up solving for a lot of different situations,” says Jazmin. “You can play Cosmonious High while holding a drink, or a snack, or a pet. Maybe only one of your controller’s batteries is charged, so you only have one to play with. If we didn’t have this one-handed mode, in these situations, you just wouldn’t be able to play at all!“During the stream, one viewer asked what makes VR games inaccessible to players who use wheelchairs.“Imagine looking around your own room. All the things that are more than an arm’s length above your head – all of those are inaccessible,” says Andrew. “Imagine if you’re a person who is capable of leaning or moving in your chair, so literally all you can do is stick your arms out in front of you and move them. Those are the kind of things that we have to consider for wheelchair accessibility.”One-handed mode is one way to remove barriers for seated players, but Owlchemy Labs has also implemented other features to ensure players of all heights and abilities can explore the halls of Cosmonious High.For example, every surface in the game functions like a standing desk, with a handle you can adjust to change the height. Players can dynamically change their own height in-game using Small student mode, allowing them to reach areas they might not be able to reach through height sliders and other toggles.Cosmonious High has been praised for its distinctive, colorful visuals. However, Owlchemy Labs was careful to ensure the game remains completely accessible to players with different types of colorblindness.“We have these puzzles where players have to match up different crystals,” explains Peter. “Each has patterns and shapes in addition to colors. Blue triangles connect to blue triangles, yellow squares connect to yellow squares – that way no puzzle or feature is entirely reliant on color alone.”Owlchemy Labs uses Colorblind Effect from the Unity Asset Store to simulate what the scene would look like for players with the three most common types of color blindness. See the tool in action below.Owlchemy Labs has put a huge amount of work and research into the subtitling system for their games, which they believe is among the best in the industry for XR. Cosmonious High’s subtitles are embedded into the HUD, and feature the name, image, and pronouns of the speaker, as well as an arrow pointing in their direction that adjusts based on the player’s position.“The big thing is, unlike television or a 2D view where you can just pop things on the bottom of the screen, we don’t want players to be forced to look at a character when they’re playing,” says Andrew. “But we also want players to know where that character is, so that’s where that little arrow design comes from. We want everyone to have the same level of fidelity that players who hear in the game with the spatialized audio would have.”Owlchemy’s subtitling features ended up being useful for developers, too. “A lot of our developers play without the audio on because they want to listen to music – they just want to hit play, make sure that all the subtitle timings are lined up, and not hear the chaos,” says Andrew. “And now they can do that.”For more information on Owlchemy Labs’ subtitles, check out their talk, “Subtitles in XR: A Practical Framework.”Owlchemy Labs regularly conducts interviews and feedback sessions and performs user testing with the disability community. VR is a physical medium by nature, so in-person testing is ideal. “A player’s body, their range of motion, and their physicality are all important considerations,” says Peter.“In-person feedback is super valuable,” agrees Jazmin. “Not only do you get direct feedback, but you also get feedback through body language. If someone’s scratching their head, maybe they’re a little confused. There’s a lot of nonverbal feedback that you get from meeting with someone.”During the pandemic, Owlchemy Labs began conducting more player research remotely on video calls – now, they do a mix of both. Reaching out and building community online via channels like Discord means they’ve been able to reach even more players in the accessibility community.“There’s a really important saying in the accessibility community: ‘Nothing about us, without us,’” says Jazmin. “It’s important to respect that statement. Listening to people with disabilities provides feedback, and that’s a must. We have to have diverse voices for this work to actually work.”Closing out the stream, Owlchemy Labs offered advice on implementing accessibility features into your projects – and why you should consider it as part of your game design.Jazmin: “Whether you’re making a game right now, or you’re about to launch, or you’ve already launched, it’s never too late to add accessibility. Accessibility is a journey: There’s a lot to learn, a lot to explore and a lot to try out. It’s never too late! For example, Cosmonious High launched before our accessibility update. You can always do more.”Peter: “I echo exactly what Jazmin was saying: It’s never too late to add accessibility. It benefits everyone, not just the people that you assume to have accessibility needs. When you improve accessibility, you are improving your game not just for players with disabilities, but for every one of your players. And the sooner you start thinking about that, the more accessibility features you get to help everyone share virtual reality.”Andrew: “If, for some reason, you need one last bottom-line way of convincing the folks in your organization that accessibility matters, let me remind you that the entertainment market is a very crowded market: Finding a good niche is always a benefit to you. When you cater to a community and you show that you care, that community is going to respond in kind. It’s going to create a market for you, and it’s going to increase the amount of people that are capable of playing your games. But if you want to do it altruistically, which is where, hopefully, Owlchemy expresses itself – we think that it’s a really, really important goal.”Cosmonious High is available now on Meta Quest 2 and SteamVR. To learn how to make your own games accessible, check out our Unity Learn course, Practical Game Accessibility.]]></description><link>https://unity.com/blog/games/accessible-vr-game-design-tips-from-owlchemy-labs</link><guid isPermaLink="true">https://unity.com/blog/games/accessible-vr-game-design-tips-from-owlchemy-labs</guid><pubDate>Wed, 07 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Create spellbinding visual effects with our advanced VFX guide]]></title><description><![CDATA[The sparks from a magic spell, plumes of smoke, ultraviolet or electric blue energy bolts, city lights seen through mist or rain, open fields of swaying grass... It’s hard to imagine a modern game without the evocative power of visual effects.Visual effects are the key to creating deeply immersive experiences for your players. And thanks to continuous hardware advancements, what used to be available only for Hollywood blockbusters can now be attained in real-time.VFX Graph is one of several major toolsets available in Unity for artists and designers to create with little or no coding. With its node-based visual logic, you can create any number of simple to complex effects for projects across genres.Our new 120-page e-book, The definitive guide to creating advanced visual effects in Unity, guides artists, designers, and programmers using the Unity 2021 LTS version of VFX Graph. Use it as a reference for producing richly layered, real-time visual effects for your games.The VFX Graph creates GPU-accelerated particle systems, and therefore requires compute shader support to maintain compatibility with target devices. It works with theUniversal Render Pipeline (URP, including the 2D Renderer) and the High Definition Render Pipeline (HDRP).Compared to the Built-in Particle System, the VFX Graph can drive more particles with faster simulation, customizable behaviors, extensibility, Camera Buffer access, and native Shader Graph integration. You can use any custom shader created in Shader Graph to target VFX Graph. These shaders are able to use new lighting models like HDRP hair or fabric, and can even modify particles at the vertex level to enable effects like birds with flapping wings, wobbling particles like soap bubbles, and so much more.The VFX Graph e-book is as beautiful to look at as it is inspiring and informative. Created in collaboration with Wilmer Lin, a veteran VFX artist from the film and games industries, and internal experts on the Unity Graphics team, it’s generous in scope, level of detail, thoughtful instruction, images and videos, and numerous downloadable resources and references for VFX authoring in Unity.Let’s take a quick look at what’s in the guide.Get a thorough understanding of each part of the VFX Graph, starting with the VFX Graph Asset and component, and the VFX Graph window. Learn how to create logic with Systems, Contexts, Blocks, Properties, Operators, Blackboards, Subgraphs, Events, Attributes, and more.Visual effects often involve many moving pieces. Connecting them to the correct points in your application is essential to integrating them at runtime. You’ll learn about the available tools for playing back an effect and how to use them:Event Binders:These listen for several different things that happen in your scene and react to specific actions at runtime.Timeline:Sequence visual effects with Activation Tracks to send events to your graph at select moments. Gain precise control with pre-scripted timing (e.g., playing effects during a cutscene).Property Binders: These link scene or gameplay values to the Exposed properties on your Blackboard so that your effects react to changes in the scene, in real-time.Colorful swarms of Particle Strips, explosive effects for a crashing Meteorite, and an extra slimy GooBall: These are just a few of the effects you’ll find in the Visual Effect Graph Samples(HDRP).Each sample highlights different scenarios involving the VFX Graph. For a better understanding, this section of the e-book examines how some of these samples were created, namely through the use of:Shader and VFX Graph togetherGPU Events to trigger other systems in the same graphOrganic movement added to Particle Strips via the Noise Operator, and available Blocks for customizing each Particle Strip’s texture mapping, spawning, and orientationA single graph to drive other graphs in a visual effectA Spawn Context to trigger many other effectsExperimental mesh sampling to fetch data from a mesh and include the result in the graphSee the e-book for more clips that show the different samples, including the following introduction to the GooBall scene.Effects aren’t isolated in a vacuum. Often you’ll need to supply them with external data to achieve your intended look.What if you want the genie to emerge from a magic lamp? Or you’d like to integrate a hologram? While you can accomplish much of this with math functions and Operators, you might need the effect to interact with more complex shapes and forms.This section explains how to use three Data types supported in Unity to enhance your visual effects: Point Caches, Signed Distance Fields, and Vector Fields. Other tools you’ll learn about are the VFXToolbox, which features additional tools for Unity VFX artists, and Flipbook Texture Sheets to bake animated effects into a sprite.Other chapters in the guide cover optimization techniques for visual effects, future developments for VFX Graph, and finally, a long list of tutorials and videos. We’re thrilled to be able to offer you this valuable resource, which is free to download (as all of our technical e-books are). Please don’t hesitate to share your feedback with us in this forum.For a full list of available Unity e-books, check out the How-to hub or browse the documentation under Working in Unity > Best practices guide.]]></description><link>https://unity.com/blog/games/create-spellbinding-visual-effects-with-advanced-vfx-guide</link><guid isPermaLink="true">https://unity.com/blog/games/create-spellbinding-visual-effects-with-advanced-vfx-guide</guid><pubDate>Tue, 06 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The making of Enemies: The evolution of digital humans continues with Ziva]]></title><description><![CDATA[From The Heretic’s Gawain to Louise in Enemies, our Demo team continues to create real-time cinematics that push the boundaries of Unity’s capabilities for high-fidelity productions, with a special focus on digital humans.The pursuit to create ever more realistic digital characters is endless. And since the launch of Enemies at GDC 2022, we have continued our research and development into solutions for better and more believable digital human creation, in collaboration with Unity’s Graphics Engineering team and commercially available service providers specializing in that area.At SIGGRAPH 2022, we announced our next step: replacing the heavy 4D data playback of the protagonist’s performance with a lightweight Ziva puppet. This recent iteration sees the integration of Ziva animation technology with the latest in Unity’s graphics advancements, including the High Definition Render Pipeline (HDRP) – all with the aim of further developing an end-to-end pipeline for character asset creation, animation, and authoring.Along with the launch of a new strand-based Hair Solution and updated Digital Human package, the Enemies real-time demo is now available to download. You can run it in real-time and experience it for yourself, just as it was shown at Unite 2022.While the cinematic may not appear too different from the original, its final rendered version shows how the integration of Ziva technology has brought a new dimension to our protagonist.Ziva brings decades of experience and pioneering research from the VFX industry to enable greater animation quality for games, linear content production, and real-time projects. Its machine learning (ML)-based technology helps achieve extraordinary realism in facial animation, and also for body and muscle deformations.To achieve the level of realism in Enemies, Ziva used machine learning and 4D data capture, which goes beyond the traditional process of scanning actors in 3D scans. The static, uneditable 4D captured facial performance has now been transformed into a real-time puppet with a facial rig that can be animated and adjusted at any time – all while maintaining high fidelity.Our team built on that 4D capture data and trained a machine-learned model that could be animated to create any performance. The end result is a 50 MB facial rig that has all the detail of the 4D captured performance, without having to carry its original 3.7 GB of weight.This technology means that you can replicate the results with a fraction of the animation data, creating real-time results in a way that 4D does not typically allow.In order to achieve this, Unity’s Demo team focused on:Creating the puppetTo create this new version of Louise, we worked with the Ziva team. They handled the machine learning workflow using a preexisting 4D data library. Additional 4D data was collected from a new performance by the original Enemies actor (we only needed to collect a few additional expressions). This is one of the unique advantages of our machine learning approach.With this combined dataset, we trained a Ziva puppet to accurately reproduce the original performance. We could alter this performance in any way, ranging from tweaking minute details to changing the entire expression.Using the 4D data capture through machine learning, we could enable any future performance to run on any 3D head by showing a single performance applied to multiple faces of varying proportions. This makes it easier to expand the range of performances to multiple actors and real-time digital humans for any future editions.The puppet’s control schemeOnce the machine learning was completed, we had 200–300 parameters that, when used in combination and at different weights, could recreate everything we had seen in the 4D data with incredible accuracy. We didn’t have to worry about a hand-animated performance looking different when used by a group of different animators. The persona and idiosyncrasies of the original actor would come through no matter how we chose to animate the face.As Ziva is based on deformations and not an underlying facial rig, we could manipulate even the smallest detail because the trained face uses a control scheme that was developed to take advantage of the fidelity of the machine-learned parameters/data.At this point, creating a rig is a relatively flexible process as we can just tap into those machine-learned parameters – this, in turn, deforms the face. There are no joints in a Ziva puppet, besides the basic logical face and neck joints.So what does this all mean?There are many advantages to this new workflow. First and foremost, we now have the ability to dynamically interact with the performance of the digital human in Enemies.This allows us to change the character’s performance after it has already been delivered. Digital Louise can now say the same lines as before, but with very different facial expressions. For example, she can be friendlier or angrier or convey any other emotion that the director envisions.We are also able to manually author new performances with the puppet – facial expressions and reactions that the original actress never performed. If we wanted to develop the story into an interactive experience, it would be important to expand the possibility of what the digital character reacts to, such as a player’s chess moves, with nuances of approval or disapproval.For the highest level of fidelity, the Ziva team can even create a new puppet with its own 4D dataset. Ziva also recently released a beta version of Face Trainer, a product built on a comprehensive library of 4D data and ML algorithms. It can be used to train any face mesh to perform the most complex expressions in real-time without any new 4D capture.Additionally, it is possible to create new lines of dialogue, all at a fraction of the time and cost that the creation of the first line required. We can do this either by getting the original actress to perform additional lines with an HMC and then using the HMC data to drive the puppet, or by getting another performer to deliver the new lines and retargeting their HMC data to the existing puppet.At SIGGRAPH Real-Time Live! we demonstrated how to apply the original performance from Enemies to the puppet of another actress – ultimately replacing the protagonist of the story with a different person, without changing anything else.This performance was then shown at Unite 2022 during the keynote (segment 01:03:00), where Enemies ran on an Xbox Series X, with DX12 and real-time ray tracing.To further enhance the visual quality of Enemies, a number of HDRP systems were leveraged. These include Shader Graph motion vectors, Adaptive Probe Volumes (APV), and of course, hair shading.Enemies also makes use of real-time ray tracing in HDRP and Unity’s native support for NVIDIA DLSS 2.0 (Deep Learning Super Sampling), which enable it to run at 4K image quality, comparable to native resolution. All of these updated Unity features are now available in Unity 2022 LTS.The brand new strand-based Hair Solution, developed during the creation of the Enemies demo, can simulate individual hairs in real-time. This technology is now available as an experimental package via GitHub (requires Unity 2020.2.0f1 or newer), along with a tutorial to get started.By integrating a complete pipeline for authoring, simulation, shading, and rendering hair in Unity, this solution is applicable to digital humans and creatures, in both realistic and stylized projects. The development work continues with a more performant solution for hair rendering enabled by the upcoming Software Rasterizer in HDRP. We are also diversifying the authoring options available by adopting and integrating the Wētā Wig tool for more complex grooms, as showcased in the Lion demo.Expanding on the technological innovations from The Heretic, the updated Digital Human package provides a realistic shading model for the characters rendered in Unity.Such updates include:A better 4D pipelineA more performant Skin Attachment system on the GPU for high-density meshesMore realistic eyes with caustics on the iris (available in HDRP as of Unity 2022.2)A new skin shader, built with the available Editor technologyTension tech for blood flow simulation and wrinkle maps, eliminating the need for a facial rigAnd as always, there is more to come.Discover how Ziva can help bring your next project to life. Register your interest to receive updates or get early access to future Ziva beta programs. If you’d like to learn more, you can contact us here.]]></description><link>https://unity.com/archive/blog/industry/enemies-evolution-of-digital-humans-with-ziva</link><guid isPermaLink="true">https://unity.com/archive/blog/industry/enemies-evolution-of-digital-humans-with-ziva</guid><pubDate>Fri, 02 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to monetize the 97% of non-payers in your midcore or hardcore game]]></title><description><![CDATA[At Appfest 2022, Noelia Lopez, Blockchain PM and Senior Monetization Manager at Tilting Point, shared her ad monetization strategies for midcore and hardcore mobile games. Read the summary or watch the full video.She kicked off her presentation with the main challenge facing free-to-play games: less than 3% of gamers actually pay for in-app purchases. But, Noelia explains, just because 97% of users aren’t paying, doesn’t mean you can’t monetize them.The pillars of monetizationAs Noelia explains, many hardcore and midcore game developers are concerned that ad monetization may negatively affect retention and/or revenue. She’s heard them say that:“paying users will churn if they see ads”“in-app ads might cannibalize in-app purchase revenue”“ads attract low-quality players or decrease the quality of the game”But, according to Noelia, none of these concerns are true - in fact, it just means these developers aren’t implementing their ad placements the right way (or, as she puts it, “you aren’t doing your job well enough!”).The roadmap of ad implementationSo, how can you monetize with ads in a way that promotes revenue growth and [tooltip term="user-engagement"]engagement[/tooltip]? Follow a roadmap, implementing placements throughout the development lifecycle, from prototyping, soft launch, global launch, and finally live ops.PrototypingMany developers think the prototyping stage of the game is too early to begin thinking about ad monetization, and would rather focus on other in-game features - but in fact, Noelia says it's critical to begin here.That’s because during the prototyping phase, your entire studio is conducting the necessary market research to understand your competition - making it a critical time to also understand the monetization strategies your competitors use and the strategies you’d like to adopt.From here, conceptualize putting these placements into your game and how much revenue they could bring. Understanding each ad placement’s revenue potential will help you prioritize which placements to focus on first. By getting started this early, you can also encourage the product team to prioritize placements and align on your exact strategy.Noelia emphasizes the importance of conceptualization, or mentally preparing yourself and your team for an ad placement, even if there’s no space for it in that moment. You can start preparing by asking yourself: where exactly a placement should go, what it looks like, and what else it needs, like a tutorial.Soft launchAfter prototyping, it’s time for the soft launch, or the testing phase. Noelia broke this phase down into three parts: integration, goal setting, and testing.First comes your ad placements. This starts with integrating ad networks - whichever ones you find perform best - and a mediation platform. The best ads for hardcore games are rewarded videos and offerwalls.In the next stage, you want to always consider your goals - like fill rate, boosting LTV, and finding the balance between in-app ads and in-app purchases that maximizes revenue. As she explains, there’s no need to push for CPMs, or make a complex waterfall because soft launches often run in countries that tend to have lower impressions. That’s why it’s important to focus on fill rate, so you understand your engagement and impressions per day, and that your fill rate is good.As for tests, Noelia suggests conducting multiple tests for your ads - it’s important to test the most challenging ads, or the ones that might cannibalize in-app purchases, affect retention, etc. As you determine your game economy, this is also the time to test the ideal reward amount you want to give - increasing or decreasing it accordingly. Even after launch, you should continually be testing and optimizing to ensure the highest performance.Global launchNext comes the global launch - time to finally monitor how your in-app ads are performing. Noelia recommends viewing the metrics of all your ad placements, like engagement and ads per [tooltip term="daily-active-users"]DAU[/tooltip], on one page so you can see which perform best. The ad engagement rate for hardcore games, according to Noelia, hovers around 60%, ads per DAU ranges from 0-3, and ad revenue can get up to 15%. The goal is to have a 95% fill rate, to ensure there’s the highest opportunity possible to serve impressions.To drive home her point, Noelia shared successful examples of placement strategies from her games, like Warhammer: Chaos and Conquest. For example, they offer a welcome package of hard currency every time a user logs on, which boosts players to get started in the game and keep playing. To get non-paying hardcore users to experiment with your game’s ads, she also recommends using offerwall ads - which also helped increase Warhammer’s engagement rate.Live operationsFinally comes the live ops, or the post launch period, where you should be adjusting your ad placements to optimize performance. Before making any adjustments it’s important to be mindful that these changes don’t impact users’ ability to engage with ads.The live ops period can even be an opportunity to increase revenue. For example, if you establish a leaderboard to incentivize non-paying players, you can use ad placements as “tickets” for getting in. Due to increased competition with non-paying users, paying users can also be motivated to invest more to stay on top.Ultimately, ads are a major asset to monetizing your midcore or hardcore game, but placement strategies can only succeed with the right amount of monitoring and optimizing - even from the initial stages of your game’s development.]]></description><link>https://unity.com/blog/how-to-monetize-non-payers-in-your-game</link><guid isPermaLink="true">https://unity.com/blog/how-to-monetize-non-payers-in-your-game</guid><pubDate>Tue, 29 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making VR education accessible to the next generation of creators]]></title><description><![CDATA[Virtual reality (VR) is a game changer, and it’s here to stay. No longer a tech novelty or niche hobby, VR is rapidly shifting how we design, create, and share everything from cars and buildings to games and films.Around the world, industries of all sorts are realizing VR’s potential and creating exciting new career paths for tomorrow’s workforce. In fact, PWC estimates that 23 million jobs will involve AR and VR globally by 2030, augmenting the many roles already available today.As use cases expand, so does demand for VR talent. However, unequal access to equipment and educator training leaves many institutions struggling to prepare students for the VR boom’s emergent careers.This year, Unity and Meta Immersive Learning partnered to help educators and institutions overcome these challenges. Read on to learn more.Virtual reality is predicted to grow 170% globally in the next 10 years, but educators and students eager to dive into VR today can often find it hard to get started.One reason for this is the wide disparity in institutional funding. VR relies on hardware and software that can be prohibitively expensive to acquire. At a time when many secondary and post-secondary institutions are systemically underfunded, students from lower-income backgrounds who attend these schools are less likely to have access to the tools needed to develop their VR skills.Securing the right equipment is only half the battle. In order to provide high-quality VR education, instructors also need access to training and resources so they can teach with confidence. VR is a new frontier for many educators just as it is for their students, so resources need to cater to both types of learners to achieve the best outcomes.To address these barriers, Unity and Meta Immersive Learning worked together to design the Create with VR Grant program, which aims to reduce the VR learning gap by:1. Increasing access to the hardware and software needed to create and consume VR content2. Increasing educator preparation and offering resources for teaching VR creationVR headset distributionThis spring, Meta Quest 2 VR headsets were made available to secondary and post-secondary education institutions that applied to the grant program. Applications were selected based on the applicant institutions’ current and future plans for teaching VR, as well as the demographic makeup of their student bodies and their unique challenges related to accessing funding.Educator trainingIn concert with the distribution of VR headsets, the Create with VR for Educators professional development training opened for registration in April 2022, offering a crash course in technical skills and pedagogical approaches for teaching VR effectively.School representatives, educators, IT administrators, and lab leaders of all skill levels were encouraged to sign up for the training, which consists of live, online sessions supplemented by self-paced learning and virtual office hours.“The Create with VR Grant bridges the digital divide, affording meaningful interactions and experiences with VR for our students. Whether they are creators, gamers, or engaged in immersive learning, the Create with VR Grant allows us to integrate VR/AR/XR lessons across disciplines and programs. This access builds technical literacy and inspires innovation. We are excited about what is now possible.” – Jenny Hanson, Director, Film & New Media and Online and Blended Learning Pedagogies, Augsburg UniversityBy jointly addressing access to hardware and educator preparation, the grant program aims to put high-quality VR education within reach for teachers and students who might otherwise miss out.Seven months after the partnership announcement, the Create with VR Grant program has already helped thousands of learners and educators take their first steps into the exciting world of virtual reality creation – and we’re just getting started. As of November 2022, the program has:Distributed more than 5,300 Meta Quest 2 VR headsets to more than 300 education institutions across the United States, the majority of which teach real-time 3D creation and cater predominantly to underserved students.Provided more than 10,700 students with access to essential VR hardware.Welcomed more than 3,000 secondary and post-secondary educators from around the world into the Create with VR for Educators training program.“The Create with VR program made a tremendous difference in how we approach teaching VR. We used to share one headset in a class of 20 students. Now, each of our students gets to keep a headset for the duration of a semester. This means more opportunities for full immersion in VR and more time spent on creating meaningful experiences.” – Wojciech Lorenc, Chair, Mass Communication Department, Sam Houston State UniversityUnity and Meta are proud to be contributing to a VR-ready workforce. With the right combination of tools, professional development, and teaching content, educators will be able to successfully build their curricula and prepare themselves to empower tomorrow’s creators.“We’re incredibly humbled and excited to hear about the impact that the Create with VR Grant program has had on schools and communities around the country. It has always been our mission to equip educators with the tools needed to prepare students to compete in the job market of tomorrow, and we wholeheartedly believe that when given opportunities like this, we’ll see students flourish.”– Jessica Lindl, Vice President, Social Impact, Unity“My students used to be thrilled to surf on YouTube – now they make videos. They were happy to play Fruit Ninja on their laptops – now they make their own games and animations. They love VR, but never contemplated being able to create in 3D or virtual worlds until now.” – Darlene Bowman, Founder, AusomeTech IndustriesVR and AR have the potential to add $1.5 trillion to the global economy by 2030, and today’s learners deserve access to the training they’ll need to reap the benefits of the immersive technology boom. We encourage you to join Unity and Meta on our shared mission to make VR education accessible to all.Ready to get started? Sign in to Unity Learn to access on-demand Create with VR for Educators sessions that will help you prepare to teach, and dive into our community on Discord to connect with fellow educators leveraging Unity for VR around the world.]]></description><link>https://unity.com/blog/news/making-vr-education-accessible-with-meta</link><guid isPermaLink="true">https://unity.com/blog/news/making-vr-education-accessible-with-meta</guid><pubDate>Tue, 29 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The hyper-casual gaming industry: Past, present, and future]]></title><description><![CDATA[Since coming onto the scene just a few years ago, hyper-casual games have experienced an exponential surge in growth. From Q1 2017 to Q2 2021, for example, the share of voice of hyper-casual installs among all total US mobile game installs grew from a few percentage points to 40%.
Where this category emerged from, its position now, and its likely path in the future can help you understand how to take advantage of its success and prepare for impending industry shifts - no matter what genre your games are.To provide these insights, Nadav Ashkenazy, SVP & GM Supersonic, shares his take on the hyper-casual genre and its past, present, and future. Catch his full presentation from AppFest at the end of this article and keep reading for a comprehensive overview of the state of hyper-casual.The past: Evolution of the hyper-casual industryTracing back the hyper-casual genre to 2013, this is the year Flappy Bird was published. It was the first game to show off hyper-casual characteristics, like short levels and simple, accessible gameplay.From 2013-2016, most hyper-casual games scaled with cross-promotion campaigns and organic installs - a shift that you can learn more about in Omer Kaplan’s Gamefest presentation. Then in 2017, developers managed to grow hyper-casual games just like other genres - using paid user acquisition. Despite their low LTV compared to casual or mid-core games, hyper-casual games proved they could be profitable at scale. As a sustainable business model for growing hyper-casual games emerged, more publishers began focusing on this genre and the market became more competitive.Over the next few years - and particularly after 2017 - sub-genres within hyper-casual emerged. For example, 2019 saw the rise of the ASMR hyper-casual games and 2021 was the year of TikTok-based concepts.As these games evolved, the depth of the content grew, too. The first hyper-casual games were on an endless loop, focusing on simple gameplay that repeated itself. The rise of sub-genres and new hyper-casual concepts introduced more complex level structures, a larger amount of content, and new ways to progress. Additionally, meta features, like providing skins as rewards for progressing instead of as a default monetization approach, added another layer of complexity and depth to the core game loop.With the evolution of hyper-casual games, the processes of developing, monetizing, and marketing them improved, too - as a result, the entire business model evolved further:Development: Faster development time, better-quality execution, and more accurate marketability prediction tools and approachesMonetization: Deeper meta, more in-app purchase and rewarded video monetization opportunities, late retention and LTV optimizations, greater variety of A/B tests UA: Predict LTV up to day 180, bid granularly based on user quality, and access enhanced creative optimization capabilitiesThe present: Hyper-casual games boost growth in overall mobile marketToday, the hyper-casual market earns $2-2.5 billion in revenue and achieves approximately 17 billion installs per year - about 1.8 billion of which come from the US. This amount of revenue and scale fuels growth in the larger mobile market, indicated by the fact that as hyper-casual installs increase, non hyper-casual installs do, too.This comes down to the fact that as hyper-casual games became popular, more non hyper-casual titles relied on hyper-casual supply for their UA campaigns, rather than social media channels. In fact, about 20% of the installs for casual and midcore games on SDK networks now come from ads displayed in hyper-casual games and 51% of apps advertising in hyper-casual games are IAP-based titles.
Meanwhile, hyper-casual advertisers represent 30% of the video ads shown on SDK networks - more than any other genre, indicating their importance in the market.As the success of non hyper-casual games becomes more intertwined with that of hyper-casual games, the growth of hyper-casual becomes fundamental to the growth of the overall mobile market - these install and advertising numbers show that it’s not just correlation, it’s causation.The future: Hyper-casual is here to stay, with a twistLooking to the future of the hyper-casual industry, we can break it down into two main themes:Short-form entertainment will keep user demand for hyper-casual highHybrid-casual games will emerge from the foundations of hyper-casual as a new category Demand for short-form content keeps attracting hyper-casual usersThe demand for short-form, snackable entertainment is higher than ever - just look at the popularity of TikTok, Instagram Reels, and YouTube Shorts. This is precisely the type of content that hyper-casual games provide and why they’ll continue to grow in popularity well into the future. The execution level of these games is also increasing and the ad experience is improving, which is further helping to attract and retain users.The demand for short-form, snackable entertainment is higher than ever, which is precisely what hyper-casual games provide.However, as costs rise and LTV will need to increase with it, a new category will emerge alongside hyper-casual: hybrid-casual.The rise of hybrid-casualThe hybrid-casual genre maintains the fundamentals of traditional hyper-casual games, including:Quick prototypingSimple and engaging gameplayEmphasis on high marketabilityShort sessions
And it evolves upon these foundations by introducing deeper gameplay, a greater reliance on IAPs, and more advanced LiveOps. With their hybrid monetization strategy, these games get the best of both worlds:Ad monetization for quick, high-converting revenueIn-game purchases for higher retention and LTVAs the hyper-casual genre evolves with the market, expect its growth only to increase and continue driving forward the larger mobile industry.]]></description><link>https://unity.com/blog/the-hyper-casual-gaming-industry-past-present-and-future</link><guid isPermaLink="true">https://unity.com/blog/the-hyper-casual-gaming-industry-past-present-and-future</guid><pubDate>Mon, 28 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to immerse your players through effective UI and game design]]></title><description><![CDATA[In an excerpt from the e-book, User interface design and implementation, veteran game designer Christo Nobbs examines the interplay between UI and game design.Our e-book, User interface design and implementation, illustrates how UI artists and designers can build better interfaces in Unity. The guide covers workflows for the two UI systems available in Unity, but the primary focus is on Unity UI Toolkit for Unity 2021 LTS and beyond. Christo Nobbs, the game designer who was also a major contributor to The Unity game designer playbook, shares a section that he provided for this latest guide on how UI and game design can create rich immersion to keep your players captivated.Successful games are immersive. Whether it’s a VR simulation or mobile role-playing game (RPG), a great game transports us to a different world.Immersion requires a delicate balance of UI and game design. The UI needs to be functional – but within the confines of the game’s art direction and overall identity. The trick is using the right UI for the right situation.Should you show an onscreen icon when a player picks up an item or defeats an enemy, or is that too distracting? Could a misplaced pop-up take the viewer out of the action? These are the kinds of questions you’ll need to consider as a UI designer and artist in the larger context of your game.One current trend is diegetic UI. Today’s game players inherently recognize traditional extra-diegetic UIs, such as health bars or menu screens, as conventions of the medium. They’re artificial devices plastered on the “fourth wall” to communicate with the user. But diegetic UIs, conversely, embed themselves into the story and narrative. They make parts of the game world function as a user interface.Imagine a game character that pulls out an empty weapon magazine in a scripted Timeline sequence. That animation can replace a head-up display (HUD)-based ammo counter.The Dead Space series is often cited as a prime example of diegetic interface. Here, the player dons a sci-fi survival suit, which motivates the game’s UI. The suit’s holographic display projects in-game statistics and inventory, as well as colored lights on its spine that double as a health indicator. The result is a built-in UI seamlessly integrated into the story.In iRacing by iRacing.com Motorsport Simulations, realistic in-car dashboard indicators show damage, which also affects the car’s handling. The player understands there’s something wrong with the vehicle through audio and visual cues, rather than an explicitly flashing vignette or HUD icon.On the flip side, if a game is tooimmersive, the designer can build an “out.” A horror game can give the player a “safe word” with a pause button. This intentionally breaks immersion if scenes become too intense.Experienced designers understand that the UI must fit with the game’s identity. The interface needs to be clean, readable, and appropriate for the situation. With today’s hardware, you can realize advanced UIs that support the story you are trying to tell.At the other end of the spectrum, competitive games like Counter-Strike: Global Offensive, or CS:GO, Overwatch, and League of Legends depend on UIs that gather information. They use HUDs that must be efficient and assist in gameplay. Diegetic interfaces are less appropriate here. Breaking that fourth wall can actually make for a better game.Since the players have a keen awareness that they are participating in a planned experience, the interface helps them assess the “playing field” – remaining time, team rosters, vitals, minimaps, etc. In some ways, this reflects a sporting event, where the broadcast UI updates its spectators.Whether they’re showing team positions or illuminating players through walls, these UIs have the effect of enhancing strategy and tactics. They can also build suspense for the player and heighten the experience. Thanks to the UI, being a spectator after losing an online match can sometimes be as entertaining as playing.In World of Tanks, the spatial UI elements appear above each player’s tank to relay information about teammates and enemies; things like their name, tier, health, and tank icon. The HUD point bar, navigation elements, and minimap all share a clean and direct visual language.By working with your designer, you can better understand the game’s UI needs. Gameplay is a balance between challenging your players and sharpening their skills. Ideally, this will pass through the Flow channel (see the chart below).Tilt too far to one side and you risk boring your players. To alleviate that, reduce UI elements and increase the challenge level. Then you can force the player to puzzle through the gameplay without too much assistance.Making the game too difficult, on the other hand, can result in anxiety. In this case, adding UIs can lessen gameplay confusion and get your target complexity back on track.Think of UI as a design device meant to steer your game into this Flow channel. An interface shouldn’t waste the viewer’s time. It should clearly communicate its content (e.g., load out, health, etc.), but nothing else. Your designer will likely go through numerous iterations as the product evolves into its shippable form. Let the players – and the gameplay – work out the rest.Tip: UI text
You might want to use less text in your interfaces to improve their focus. Small adjustments to icons, fonts, and layout can all impact game pacing. Less text, where appropriate, can also make it easier to localize your game.For more UI text tips, see Joseph Humfrey’s 2018 GDC talk, Designing text UX for effortless reading.Interface designers today have a vast library of game applications to learn from. You can explore them through the Game UI Database. This massive, searchable site allows you to filter by HUD element, type, style, and feature, among other categories. Use it to pore over hundreds of published games and study their in-game menus and screens.Another great resource is Interface in Game. It features video clips of UI elements you can browse. Use this database to search a wide range of titles by platform and genre. Need to polish up some visual effects or UI details? You’re likely to find a reference here.As you examine more game interfaces, you’ll begin to perceive patterns, especially by genre. In a first-person shooter (FPS), for example, we expect to see the health stats at the bottom of the screen. It’s almost an established convention, since so many applications have done it this way.When designing a UI, it’s important to capture the genre’s visual language. If you’re building an RPG, look at how other RPGs handle inventories, skill trees, leveling up, etc. Make something that players are already familiar with, so they can jump right into the gameplay with an understanding of the established style.UI design patterns aren’t random. They’ve evolved over time through a sort of collaborative effort. Designers have already figured out what works, and new designs are simply building on an existing game canon. Learn from these past design decisions. You’ll not only save yourself time, but appease your players as well, who will be expecting certain patterns and visuals in the game.For more information on UI design patterns, read Best practices for designing an effective user interface by Edd Coates, a senior UI artist from Double Eleven.UI Toolkit sample – Dragon Crashers is a demo available to download for free from the Unity Asset Store. This sample demonstrates how you can leverage UI Toolkit for your own applications, and involves a full-featured interface over a slice of the 2D project Dragon Crashers, a mini RPG, using the Unity 2021 LTS UI Toolkit workflow at runtime.You can find more advanced e-books for Unity creators on our How-to hub.]]></description><link>https://unity.com/blog/games/how-to-immerse-your-players-through-effective-ui-and-game-design</link><guid isPermaLink="true">https://unity.com/blog/games/how-to-immerse-your-players-through-effective-ui-and-game-design</guid><pubDate>Fri, 25 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Aiming used Tapjoy offerwall to boost engagement rate by 80%]]></title><description><![CDATA[Aiming Inc. is a Japan-based game developer responsible for hits like Dragon Quest Tact and CARAVAN STORIES. They wanted to bring in more revenue from their newest hit, Charast Magical Academy a spin-off app of the hit game "CARAVAN STORIES, but had never used an ad monetization model - so the ironSource team helped them get started.ironSource’s Yusuke Toyoshima and Shuichiro Mine sat down with Aiming, to learn all about why they chose ironSource rewarded video and the Tapjoy offerwall, what they learned, and how they managed to boost their engagement rate 80% in the process.Choosing to work with ironSourceMine: This was the company’s first time using ad monetization, right?Saito: Yes. Aiming has a stance that when we see good market trends, we want to adopt and test it by ourselves - so it was only natural to start monetizing with ads. Originally, our company specialized in midcore games, but there were already many competing apps in the market. To generate a stable source of revenue, we decided to develop a hybrid revenue model (in-app purchase and ads) based on "CARAVAN STORIES," which already has a large fan base.Mine: Now you’re monetizing with ironSource and using Tapjoy’s offerwall - why did you decide to go with us?Sakaino: This was our first time integrating ads into our app, so we needed a platform that offered extensive support and a full suite of products. We compared companies from all over the globe, but ironSource was the only one completely that fulfilled our needs.Yusuke: We're glad you chose us! Sakaino: We felt the support immediately - the ironSource quickly responded and drafted financial projections for us.Mine: Publishers who integrate ads in their apps for the first time often don’t have enough information about performance benchmarks. Since ironSource has experience across all game genres in Japan and globally, we can provide our customers with practical ad monetization plans.Sakaino: There were other local options with good products for early-stage companies, but we wanted to get as much operational know-how as possible. That's why we chose ironSource - they offer a variety of report data with a UI that allows us to intuitively understand what’s important at first glance. There was a strong connection between Aiming’s attitude of "challenge new trends and accumulate know-how" and ironSource's push to "provide actionable data for publishers."Mine: At ironSource, we care about providing actionable data. In the long run, we think it is very important to understand the factors behind fluctuations - not be overwhelmed by the ups and downs of CPMs. Ad revenue is always important, but what’s most important for publishers is the success of the game itself. We provide data in a format and UI that every publisher can understand - not just the specific person in chargePerforming beyond expectationYusuke: How was the integration process?Sakaino: It took about two weeks to develop and integrate rewarded video and offerwall into our game. Since the dashboard was easy to understand, even for beginners, we were able to issue and set up placements in one day.Suzuki: From the planning phase, everyone on the team had a shared strategy of how to put ads into our game - so I think it went really smoothly.Mine: I feel that your monetization and game management teams work seamlessly together. For many publishers, this can be challenging - different teams usually have different goals and opinions.Sakaino: Since I joined the project, from the game planning phase to leading ad monetization, I think everyone, including the development team, shared a common goal.Suzuki: It may seem unusual to have someone in charge of ad monetization during the planning phase. Normally people tend to give higher priority to their own department, so perhaps our company's strength is the way that each department can share and coordinate all goals.Yusuke: How was the ad revenue performance?Sakaino: The result was much better than we expected. eCPM for ironSource rewarded videos was more than double our original estimation, and engagement rate reached 80% - even though our original estimation was 65%.Mine: Since the players are mainly from "CARAVAN STORIES," the user quality may be different from the other casual game players. If your game has been around for a while and has a certain income level, eCPM might be higher as a result.Sakaino: I think that’s right.Suzuki: Since the game story is a prequel about the lives of popular characters, fans are highly motivated to play.Mine: It's a successful app strategy for using IP (intellectual property).Sakaino: Tapjoy’s offerwall also performed better than we originally expected. Especially in the beginning, it performed better than the rewarded videos.Yusuke: Since Offerwall provides bigger rewards than rewarded videos, it’s particularly compatible with games that have many users who are willing to pay.Saito: In particular, Android has good KPI compatibility with the offerwall. Android users usually have a lower retention rate, but the offerwall increased revenue and stabilized it.Showing ads to domestic and global usersMine: Did you get any negative user feedback about ads?Sakaino: I don't think there were any noticeably negative reactions.Mine: The key to user-initiated ads like rewarded videos and offerwall is motivating the users to see the ads. "Charast Magical Academy" was designed to use ad monetization from the start, so I think it shows ads to users in the best way possible.Suzuki: Since we set the right rewards for both the offerwall and rewarded video, users connect with the ads and feel satisfied with them.Saito: The rewards we offer are valuable to users. To ensure that users who want to receive rewards don’t miss them, we added badges to places where there are ads that have not yet been seen, and added a jump button that auto-scrolls to that point. However, it seems that some new users thought that they couldn't progress in the game without clearing the ads, so now we only display badges for users who have progressed to a certain stage.Yusuke: I see.Saito: Impressions grew about 2.5x the normal rate during the offerwall's currency sale, but when we displayed the badge on the game screen and directed users to the ad page, it grew 8x - a huge revenue increase.Yusuke: It's a device that tells users that an offerwall event is currently being held.Sakaino: Also, Charast Magical Academy is only available on Japan’s app store, but some overseas fans download and play it. Thanks to the Tapjoy offerwall’s global support, it’s been great to be able to show global ads and rewards to overseas users.Yusuke: Global support is the Tapjoy offerwall's strength. There is no need to separate campaigns, and global ads are automatically displayed for access from overseas, to accommodate overseas users. Also, the offerwall is optimized with an algorithm to automatically display ads that users are interested in on the top of the list, so publishers can maximize their revenue without spending too much time and effort.Continuing to use ad monetization modelsMine: What are your plans for the future?Sakaino: We are satisfied with ironSource’s usability and profitability, and will continue to use both their rewarded video and the Tapjoy offerwall. For the offerwall, thanks to their global support and compatibility with Apple/Google’s regulations - we’re sticking with Tapjoy.Yusuke: That's great news for us.Saito: We plan to continue releasing games with an ad revenue model. Thanks to our new know-how from Charast Magical Academy, I'm including ads in all the proposals for our new games. Since it generates additional revenue and doesn’t discourage in-app purchases, there’s no reason to not use it.Sakaino: In the future, it would be nice to have a verification function that can segment users according to their in-app purchase status and level of loyalty, and optimize ads accordingly.Thank you to Mr. Sakaino, Mr. Suzuki, and Mr. Saito for participating in the interview. And congratulations on your half anniversary!]]></description><link>https://unity.com/blog/aiming-tapjoy-offerwall</link><guid isPermaLink="true">https://unity.com/blog/aiming-tapjoy-offerwall</guid><pubDate>Thu, 24 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[What’s new for Prefabs in 2022.2?]]></title><description><![CDATA[It’s been a while since the Scene Management team has shared an update on Prefabs. During the last few releases, and after fixing a large number of bugs you’ve reported (thank you!), we’ve made several improvements to the Prefab system. Let’s take a look at each improvement coming in 2022.2 – now available in beta – and how these updates can benefit you.You can now replace the Prefab Asset for a Prefab instance that exists either in a scene or nested inside other Prefabs. This feature will keep the Prefab instance position, rotation, and scale in the scene, but merge the contents from the new Prefab Asset, all while retaining as many overrides and references as possible via name-based matching (by default). More specifically:The Inspector for a Prefab instance has a new Object Field that can be used for replacing the Prefab Asset.The Hierarchy has Context Menus that can similarly replace the Prefab Asset of the instance.Finally, a plain GameObject can be converted to a Prefab instance through the Context Menu in the Hierarchy, or by dragging and dropping with the Ctrl/Cmd modifier key.This functionality is not only available in the UI, but as with most features we build, it has an API that allows you to manage how objects are matched, as well as how Overrides should be treated. See PrefabUtility.ReplacePrefabAssetOfPrefabInstanceand PrefabUtility.ConvertToPrefabInstance.One of the most requested improvements has been the ability to reorder added GameObjects and components. “Added GameObjects and components” refers to the GameObjects and components that are not part of a Prefab instance, but are added to the Prefab instance in a scene or inside a Variant or Nested Prefab. So as of 2022.1, it is possible to reorder the added GameObjects by drag and drop – both among themselves and between GameObjects belonging to the Prefab instance. Getting this feature ready has required a major refactoring of the Undo system.If you want to reorder added GameObjects from an Editor script, it is simply a matter of setting the sibling index on the Transform of the added GameObject. The ability to reorder added components in the Inspector is included in 2022.2. There is no public API for reordering components.The last thing we needed to achieve full feature parity between GameObjects and components was the ability to delete GameObjects from Prefab instances as an Override. Deleting GameObjects as Overrides, an option available in 2022.2, ensures that once you’ve deleted a GameObject, the usual workflows for reverting from/applying to a Prefab Asset works as you’d expect.When it comes to an Editor script, use Object.DestroyImmediate to destroy Prefab instance objects and record the destruction as an Override stored in the scene file.Users often ask what the Variant inheritance tree looks like for a specific Prefab Asset. In 2022.2, we added the Prefab Family pop-up to the Inspector. The content of the pop-up is dependent on the selected Prefab Asset in the Project Browser. After selecting a Prefab Asset and opening the Prefab Family pop-up, the Editor lists all the ancestors of the current Prefab, as well as all the immediate children.In addition to queries about the inheritance tree, users have often asked how they can get rid of unused Overrides stored in a scene but never accessed (because the property has been removed from a script). In the worst case, such properties might reference assets that are then pulled into the final build, taking up space on the storage device and in memory – but never used.Overrides are now flagged as unused for:Null target objectsUnknown Property Paths (which are not subject to scripted FormerlySerializedAsAttribute usage)Removed componentsRemoved GameObjectsChanged array dimensions (e.g., materials array)When selecting one or more Prefab instances in the Hierarchy and opening the Overrides drop-down, the Editor now shows whether there are unused Overrides. You can then remove them from the scene using the new Unused Overrides drop-down.Moreover, you can remove all unused Overrides in a scene through the Hierarchy’s Scene Context Menu or via the Context Menu for an arbitrary selection of Prefab instances.We do not automatically remove unused Overrides. After all, the reason for their existence cannot be inferred. Removing a property from a script or deleting an asset should not automatically remove unused Overrides as you might subsequently wish to undo the removal and have the Overrides restored.In case you’re wondering: “Why do I still have Overrides on my Prefab instance after pressing ‘Apply All’?” The answer is that those Overrides simply can’t be applied to the Prefab Asset. Most commonly, such Overrides are references to other objects in the scene that cannot be referenced from the Prefab Asset. Overrides that are not typically applicable are now highlighted by a dark blue bar in the Inspector. These cannot be applied; only reverted.You can now change the default behavior when opening Prefab Mode to In Isolation instead of In Context. Go to Editor Preferences > General > Default Prefab Mode to make this change.Now, with 2022.2, Undo is recorded as a single Undo operation when exiting Prefab Mode. This results in all changes made to the Prefab being reverted if you perform an Undo after leaving Prefab Mode.Over the course of multiple releases, the error handling and reporting during scene load (and Prefab load in Prefab Mode) has substantially improved, and will now indicate which Prefabs the errors are related to and/or the GUID for missing Prefabs. In fact, the way we handle missing Prefabs’ assets during scene loading is safer and more stable than before.In an effort to further improve error handling and avoid introducing bad data into your project, we’ve added a Broken Prefab Asset Type, which will be produced by the Prefab Importer when errors that cannot be rectified are encountered.The most common case is when a Prefab Variant has lost its parent Prefab, perhaps because it was deleted. In this case, we can’t produce a meaningful Prefab Variant, so a Broken Prefab Asset is created instead. This new asset will show information about what is wrong in the Inspector when selected in the Project Browser. If it’s a case of a missing Prefab parent, then the GUID of the missing Prefab is shown. Alternatively, if it’s a chain of Prefab Variants that is broken, you can go up the chain through the Inspector until you find the Variant with the missing parent.The concept of Disconnected Prefab instances no longer exists as of 2022.1. We still support loading Disconnected Prefab instances, but when the Editor encounters them during scene loading, the Disconnected Prefab instances are stripped of all their Prefab information and become regular GameObjects.As mentioned, our team has fixed a series of bugs you’ve graciously reported to us over time. Some of them derive from the original Prefab system, but many have only become apparent upon the introduction of our improved Prefabs.Today, we are confident you will enjoy the stability of the latest Prefab system. We hope you will find it smooth and efficient to work with.Have more Prefab-related questions or comments? Join us in the forums to share your feedback.]]></description><link>https://unity.com/blog/engine-platform/prefabs-whats-new-2022-2</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/prefabs-whats-new-2022-2</guid><pubDate>Tue, 22 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Perception 1.0: Expanding the toolbox for synthetic data]]></title><description><![CDATA[Synthetic data in Unity now includes synthetic humans and homes in this major release of our open-source tools.The success of increasingly ambitious machine learning (ML)-driven computer vision (CV) systems depends on high volumes of richly annotated data. Since performance of these systems depends so much on the data, gathering better data is often the best way to improve model performance. Collecting and annotating real data is so expensive and time consuming, however, that a data-centric approach is not feasible for many projects. To that end, thousands of teams have turned to Unity for building synthetic data for computer vision.Today we are making a big leap forward in synthetic data with a major update to our open-source tools for building synthetic data, which we are calling Perception 1.0. A new Synthetic Humans package gives you diverse, poseable, randomizable, and deterministic 3D humans. The new Synthetic Homes dataset generator provides photorealistic home interior data for scene understanding and object detection. Additionally, the Perception package has been updated with depth and normal outputs, path tracing support, and Python visualization and analysis tools.With this expanded suite of tools, we want to enable you to build high-quality synthetic data faster than ever.We are excited to announce the release of Unity Synthetic Humans, a 3D person generator built from the ground up for human-centric CV synthetic data. Thousands of hours went into creating the content using a mix of scanning, simulation, and 3D artistry. Today, we are sharing all of this work for free under an academic use open-source license.Unlike other digital humans, which provide small variations on a handful of base character models, Synthetic Humans create massive diversity by combining libraries of hair styles, fully anonymized facial and ethnic generation, body models, and clothing. As a result, each generated human is anonymous and unique – instead of generating a specific person, you control the sampling distributions on axes of randomization, including ethnicity, height, weight, and age. For example, a dataset with 20% teenagers, 45% young adults, and 35% middle-aged and older, can be specified in the generation parameters.Key features:Wide range of diversity in age, body type, and skin toneRich labeling, including body keypoints and clothing segmentationFully rigged and skinned bodies and clothes compatible with the Unity Animation SystemPlacement randomization in 3D environments with collision avoidanceWe are also releasing Synthetic Homes, a large-scale dataset of synthetic home interiors, and the associated dataset generator. Use cases for in-home CV are innumerable, but gathering diverse home interior data in the real world is notoriously difficult due to privacy concerns and data collection restrictions. Synthetic Homes aims to accelerate model training for such applications by providing a large dataset of varied home interiors with accurate and rich labeling, as well as a configurable dataset generator.We include a variety of randomizations to maximize diversity. These include materials, furniture type and configuration, sunlight angle and temperature, day/night switching, interior lighting temperature, camera angles, clutter, skybox, door and curtain animations, and more. The dataset generator gives you control over many of these elements, enabling you to tune them to your liking.Interior lighting in homes is complex and intentional, making photorealism especially important. We used Unity’s multi-bounce path tracing to accomplish physically accurate global illumination and reflections. This accuracy can help bridge the so called “Sim2Real gap”, improving a model’s ability to perform well in the real world after training on synthetic data.The Synthetic Homes project includes a 100,000 image dataset, a configurable dataset generator, and a notebook for data analysis. The dataset includes rich labels for semantic and instance segmentation, bounding boxes, depth, and normals. It also includes environmental information like occlusion percentage and camera position. To enable you to iterate on the data we also provide the dataset generator, where you can tweak parameters like camera positioning, blur randomization, and image size.The Perception package powers synthetic data in the Unity Editor. We are broadly expanding the package in this release to support new CV tasks, increase quality, and speed up dataset development. New Perception features include:A conveyor belt sample illustrates the capture of video datasets with randomized object spawning and physics.Ray tracing integration provides highly photorealistic images using physically-based multi-bounce lighting with minimal setup.Occlusion labeler calculates how much of an object is occluded by other parts of the scene and how much is offscreen. This information makes it possible to filter out annotations on highly occluded objects.Depth and normal labelers capture rendering layers that can be used for new tasks or give models additional information to perform better predictions.Transparency and two-sided geometry support enables pixel perfect labeling of plants in agriculture and outdoor environments.We also want to give the community more impact on Perception, so alongside this release we are also opening up the package to accept contributions from the community.Data exploration and analysis are critical to iterating quickly on synthetic data, and we want to make that as easy as possible. With this update we are introducing a new dataset format called SOLO, designed for large-scale image datasets extensible to new types of annotations and metrics. SOLO datasets are separated on disk by frame, enabling distributed dataset generation and processing.In tandem with the SOLO format we are releasing pysolotools, a new open-source python package that provides utilities to work with the SOLO format. The pysolotools Python package provides an iterator interface that allows you to easily work with SOLO data on a frame-by-frame basis. It also includes a framework to easily retrieve common dataset statistics universal to most CV problems such as object counts, size distributions, and heatmaps. Finally, with pysolotools it is easy to write custom scripts to convert from SOLO into your needed data format. Even easier, pysolotools comes with pre-built converters to some popular formats, including COCO.Finally, we recognize that it is important to be able to visually verify the data that was created. pysolotools-fiftyone is an integration with the Voxel FiftyOne viewer to allow you to visually inspect SOLO datasets.You can learn more about building synthetic data on Unity’s Computer Vision hub, including tutorials, case studies, and links to all of the content and examples.Synthetic data for machine learning is a growing, fast-moving field. Connect with the community and with us on the Computer Vision forums, where you can share questions and ideas.]]></description><link>https://unity.com/archive/blog/engine-platform/perception-open-source-toolbox-for-synthetic-data</link><guid isPermaLink="true">https://unity.com/archive/blog/engine-platform/perception-open-source-toolbox-for-synthetic-data</guid><pubDate>Mon, 21 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Man vs. Machine: 3 ways you can impact growth]]></title><description><![CDATA[At Appfest 2022, ironSource’s Maytal Shaul, Anna Popereko, and Yuval Lotan walked through 3 ways you can impact growth in the heavily automated App Economy - including tips for custom product pages, ad placement strategy, and A/B tests. Read the summary or watch the video below.In the mobile app industry, automation has been a growing force - improving performance for both user acquisition and monetization. But as Maytal, VP Business Growth at ironSource explains, automation is not a threat to manual control. In fact, to get to the best performance, man and machine should work together.Here are 3 areas where app and game companies can utilize this control and have the most impact.Spend more time optimizing on ad strategy and placementsYuval Lotan, ironSource’s Head of Platform Growth, kicked off the session with some important findings - optimizing placement strategy has significantly higher growth potential than optimizing waterfalls, up to 400% in fact. But surveying LevelPlay customers showed a disconnect in time allocation, with most studios investing the majority of their time into areas with the least growth potential.So why do studios tend to invest less in placement strategy? There are three main reasons: risk, team structure, and data accessibility.The retention riskNaturally, changing your ad placement strategy can be riskier than changing your waterfall - since it can affect retention, playtime and in-app purchases while optimizing your waterfall won’t. But for those same reasons, it can also be much more beneficial. According to ironSource research, users who engage with rewarded video have much higher retention rates and are much more likely to make in-app purchases. That increase in performance makes it a risk worth taking.Team structureTo best optimize your ad strategy, you need an expert, or a team of experts, who understand what your users need and how they respond to different ad units. But that can be difficult when your studio’s structure isn’t built for it.It can be tricky, for example, to collaborate on placement strategy when the monetization manager, product manager, and game designer, all sit under different teams with different goals. One might prioritize in-app purchase revenue while the other prioritizes ad revenue.That leaves you with three options:- Make changes to your company structure, if needed- Hire a dedicated person for this role, like we did at ironSource (more  tips by her later)- Outsource to an agency, like ironSource’s game design consultancy Data transparencyMany studios also hesitate to invest in their placement strategy because it’s difficult to get transparency into what success looks like. Here are some of Yuval’s tips:First you need to know what KPIs to look out for. Start with engagement rate, or the percentage of users watching your ads - which is the best way to evaluate your growth potential because it’s proportional to your revenue. Additionally, pay attention to impressions per engaged user and impressions per DAU.Next, find out your category’s benchmark from your mediation partner - if you have a clear target, it’s much easier to define goals. For example, one RPG game compared their KPIs to the benchmarks and saw their rewarded video engagement rate was low but impressions/engaged user was high. From this, they understood that their ads were delivering good value to their users, but the traffic driver wasn't accessible enough for them to find it. In fact, when Yuval’s team built recommendations for this game, they calculated the game had a growth potential of more than 40%, because they estimated they could reach the genre’s median engagement rate. Eventually, this game boosted engagement rate by 60% - all while keeping retention stable.Following Yuval’s call to spend more time optimizing placements, Anna Poperko, ironSource’s in-house Game Design Consultant, shared four tips on how to do just that.Data is kingTo fully understand how users are engaging with a traffic driver, Anna recommends comparing KPIs (engagement rate, impressions/DEU, etc.) rather than viewing them in isolation - this way, you get greater context for players’ behavior. Let’s say one placement has a very low engagement rate but very high impressions per/engaged user - you can conclude that players don’t notice this placement often, but those who do find it very valuable.Understanding your players’ motivationsTo monetize players, it’s essential to first understand them and what they need. Gamers are commonly split into standard motivational groups - mastery, achievement, creativity, and more. If, for example, you know your players are motivated by achievement, you can match their motivations to a placement strategy that suits their needs - like offering a rewarded video to help when they fail.Know your competitorsTo maximize your ad placement strategy, it’s always worthwhile to learn from similar games to know exactly what makes your competition succeed. Playing those games is an opportunity to compare and understand their user flow. Do they have more or fewer placements? Where are their placements located? Does their app address the same user motivations as yours? See what gaps you can fill in your placement strategy - every insight is an opportunity, and there’s always room for improvement.Get inspired by other genresBeyond competitors, Anna recommended getting inspired by other successful genres that lean on similar player motivations. For example, Anna worked with a first-person shooter game that never updated the items in their store - losing engagement from players. Inspired by racing games that have stores which refresh monthly, the shooter game decided to refresh their store items more often - and revenue quickly increased. Even though the genres were vastly different, they both had “achieving” player motivations in common.Utilizing custom product pagesIn addition to optimizing placements, Maytal covered another area for growth: Apple’s custom product pages, a product of iOS 15 which has huge potential to boost IPM and conversion rate. 15%-43% increase in IPM, 8%-37% increase in CVR, and 7%-40% increase in eCPM, to be exact. It works by connecting custom versions of an app’s App Store landing page to specific creatives.Looking at the ironSource network, more than 40% of the spend is running with Apple’s custom product pages - and 90% of the advertisers utilizing custom product pages are running their UA through ironSource ROAS optimizer. From that, we understand that automating their bid strategy gives them more time to focus on their creatives and product page experience.As Maytal explained, there’s a reason why and how custom product pages boost IPM and conversion rate. Basically, they add an extra layer of optimization to the user journey - either towards your audience or your creatives. By optimizing custom product pages toward your audience, you get an additional opportunity to focus on language and localization, unique holidays, etc. Meanwhile, by optimizing towards creative elements, by adding screenshots, previews, similar colors, character, and other elements to match popular creatives, you get to build a better bridge between the product page and the creative that sent them there..In fact, when Pocket Gems saw one creative outperforming the rest, they created a custom product page to include that creative’s theme and ran it on the ironSource network. After a successful A/B test, they implemented the new page into their main campaign, and their IPM boosted by 16% as a result. Learn how they did it with ironSource.Applying A/B testingA/B testing is another key strategy to optimize both user acquisition and monetization.In fact, there’s a direct correlation between studios automating monetization by adopting in-app bidding and running A/B tests.By A/B testing monetization, you can measure the impact of any in-game change without hurting KPIs. It also helps predict ARPU and retention uplifts, while giving a clear window into users’ behavior.If you suspect that a change, even a small one - can boost your revenue or scale, it’s always worth finding out. In fact, among LevelPlay customers who A/B test - in 62% of cases, the B group wins - those who applied the new change saw their LTV grow by 7%. These changes might include adding/updating bidding networks, testing different ad placements (capping, pacing, rewards), and banner refreshment rate - all of which have the biggest impact on LTV.To run A/B tests successfully, Maytal recommends:- Challenging existing strategies you have - user behavior in a game is always changing - Testing a wide cohort of users to see the A/B tests impact on all audiences - Looking at both overall and granular results to better understand that the change will impact all groups positively- Testing everything - everything has potential to be optimizedSimultaneously, Maytal suggests:- Avoiding running tests that are too long in order to not risk hurting KPIs- In order to always pinpoint what is affecting results, don’t run test different test versions simultaneouslyUltimately, while the automation tools we have have great potential to increase performance, there is always room for manual optimization - we just have to find the best places to do it.]]></description><link>https://unity.com/blog/man-vs-machine-3-ways-you-can-impact-growth</link><guid isPermaLink="true">https://unity.com/blog/man-vs-machine-3-ways-you-can-impact-growth</guid><pubDate>Sun, 20 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games Focus: Creating and operating connected games with multiplayer networking]]></title><description><![CDATA[This is the eighth blog in our Games Focus series, which highlights key product development initiatives for the year ahead and beyond. In this installment, we cover the status, upcoming release plans, and future vision for Unity Multiplayer Networking.Hi there, my name’s Kiki Saintonge and I’m a product manager on the multiplayer team – the one focused on delivering Unity’s Netcode for GameObjects solution.I’ve been at Unity for about a year, but I’ve been a hobbyist and indie Unity developer since 2013. My passion lies in games, particularly playing the inspiring things y’all make. I’m pretty excited to chat about our multiplayer solutions in this post today, especially since so many of you have voiced the need and desire to have a more complete and accessible solution to multiplayer development. We’re closer than you think.Let’s be honest: Making multiplayer games can be really hard, from designing the mechanics to implementing and testing. You have to account for so much – latency, packet loss, handling scene management, what should or shouldn’t be sent over the network – much of which is difficult to track or simulate. Even our third-party networking solutions need third- (fourth?) party tools just to see what the heck is going on.Building a complete networking system for your game should be just like the game itself: unique and refined to fit your game’s experience.With that in mind, we wanted to build a netcode solution that’s flexible enough to accommodate every core aspect of your multiplayer game, while also making it easier for you to use third-party tools or services if you need to. This is the fundamental goal of our netcode solutions.It’s also important to keep in mind that with multiplayer development comes services and scale, two things you might not have thought about in the context of single player or co-op. Unity Gaming Services is our recently launched platform that includes Game Server Hosting (Multiplay), Matchmaker, Relay, and Lobby services. It was designed to give you all the tools you need to build solid foundations, create engaging player experiences, and drive game growth, all within the same integrated ecosystem.We announced some amazing netcode solution releases this year. Our first major release of Netcode for GameObjects is now available in 2020 and 2021 LTS.This GameObject-based Netcode solution helps you get started building small-scale co-op multiplayer games. However, if you’ve built your experience using DOTS (Entities), we’re also pleased to announce our Netcode for Entities solution coming to the 2022 Tech Stream, which helps you get set up for a larger-scale multiplayer experience. Look for our next post in this series to learn more about that release.These stacks cover a wide foundational start to multiplayer development. Together, they make up one step of many to get you on your feet with multiplayer games. These releases also are focused specifically on critical networking scenarios, like abstracting how to communicate to servers and clients, sending object data across the network, and input handling.This release also supports some essential tools that allow you to track the packet loss, size, and latency of networked objects. Network Profiler is an extension to the Profiler that’s built into the Editor, and Runtime Network Stats Monitor(RNSM) is a customizable lighter-weight “Profiler” view of the network states that can be run on standalone builds for playtests.You can install these tools through our com.unity.multiplayer.tools package in-Editor.All of our Netcode stacks – yes, that includes Entities – are built on top of our Transport layer. This layer is netcode-agnostic and can be utilized with any solution.Unity Transport Protocol (or UTP) extends the user datagram protocol with added support for Unity Relay and extra security using DTLS. This layer works across Windows, Mac, Linux, iOS, Android, and all major consoles.We also provide some light network simulation capabilities through our transport package’s Debug Simulator properties. This allows you to throttle or simulate latency or bandwidth issues when testing in-Editor.If you’re looking to get direct access to this lower-level networking library you can install it directly via the com.unity.transportpackage.Although Netcode for GameObjects is relatively new, there are already games being built with it.The wonderful team over at Fika Productions with Team17 are working on a beautifully hand-drawn game, Ship of Fools. It’s a fast-paced multiplayer co-op game of nautical persuasion developed completely in Netcode for GameObjects.We’re constantly looking to cover gaps and demystify what’s happening on the network with multiplayer tooling.Multiplayer Play Mode would be a big first step in making multiplayer development a first-class Editor experience.The goal of this multiplayer tool is to “just work” once you enter play mode. It offers the same experience as the single-player workflow, but now you can have up to four clients running within the same Editor session, each receiving its own console information and able to be differentiated with a network-based tagging system.Network Simulator is another feature we’d like to bring up from the Transport layer and expand into a more fully functional tool with a UI that lets you introduce lag spikes, set ping rates, trigger connections/disconnections at will, and even customize certain networking scenarios to run during playtests.We’re looking at getting our Transport package better integrated with Burst, as well as supporting WebSockets.Having a dedicated server is the core to many multiplayer games, and it comes with the need for more fine-grained control of what kind of headless server you’re building.We’ve begun to investigate the dedicated server workflow. This starts with giving you more control and clarity over which assets you want within a server and which you do not. Essentially, you’re selecting the content you want in your server builds, which saves you time and potentially bandwidth in the long run.Want to see the status of these features and more on Netcode for GameObjects?Check out our multiplayer networking roadmap to see what’s included in 1.0 and what’s in the works for future releases. You can also check out our recent Unite 2022 Roadmap session for an overview across the Unity ecosystem.Creating multiplayer games is not easy, and it’s common to feel overwhelmed when exploring the development of a multiplayer game – even with SDK docs provided.It’s our goal to equip and support you with the tools to build great multiplayer gaming experiences for your players. Part of that promise involves providing not only the foundational networking technology but also the documentation and educational templates, such as Boss Room, you’ll need to understand its application.There are many resources available today that you can use to learn more about Unity multiplayer solutions.Boss Roomis a small-scale cooperative game sample project built with Netcode for GameObjects. It’s designed to be used in its entirety to help you explore the concepts and patterns behind a multiplayer game flow.We’re continuing to develop in-house projects as well, to highlight new features and the general capabilities of what you can do with Netcode for GameObjects.Our latest game is Galactic Kittens, a 2D, multiplayer, playable, open source, co-op shooter.To start, check out these blog posts to learn about Unity’s multiplayer suite:Empower great multiplayer experiences with Relay and LobbyEnter the Boss Room: our new multiplayer sample gameState of disruptive behavior in multiplayer gamesChoosing the right netcode for your gamePlus some amazing resources created by our incredible community:COMPLETE Unity Multiplayer Tutorial (Netcode for Game Objects) | CodeMonkeyHow to: Unity Online Multiplayer | TarodevWe hope you’ll stay engaged with our Games Focus series by giving your feedback. Post your questions and comments for this blog in the multiplayer forum or in this dedicated thread.Visit our Productboard for full details on the roadmap. You’ll need to log in with your Unity ID and accept to use functional cookies. Each card on this interactive board is clickable, giving you more details about each topic while providing you with the option to share your feedback. Click on a card, select the level of importance of the topic to you, add your point of view, and submit. This feedback is then directly routed to the proper product teams.Netcode for GameObjects is a capable netcode solution, but if you’re looking to build something much bigger – think galaxies or multi-server MMOs with thousands of players active at once – you’ll want to stay tuned for the release of our next blog in the Game Focus series, which will be all about how to create larger worlds and richer environments.]]></description><link>https://unity.com/blog/engine-platform/games-focus-creating-and-operating-connected-games-with-multiplayer-networking</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/games-focus-creating-and-operating-connected-games-with-multiplayer-networking</guid><pubDate>Wed, 16 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[You can change the world: Unity for Humanity Grant application tips and inspiration]]></title><description><![CDATA[Following the 2022 Unity for Humanity Summit, we’re looking for social impact creators who are using real-time 3D to make the world a better place. Is that you? If your answer is yes, or even maybe, Unity is awarding funding, technical support, and mentorship to help bring changemaking projects to life in 2023.To help you make the most of this opportunity, we’ve put together a few tips to guide you through the application process. Not sure if you need the support? We also spoke with three past grantees about their experience and how the support has helped them realize their creative vision.1. Lead with your passion.Are you dedicated to making the world a better place? That’s exactly what our judges will be looking for, so try to get that across in your application.2. Keep a record of all of your answers.To avoid potentially losing your hard work, write your submission text in a separate document before entering it into the Typeform application.3. Read the application criteria and questions carefully.There are no trick questions – we’re transparent about the projects that are eligible and the judging criteria we’ll be using, so make sure your application includes all the required information to improve your chance of being selected.For more guidance, watch our session on grant application tips from the 2021 Unity for Humanity Summit.To make sure all applicants have as much information and context as possible, we make our judging criteria clear. All projects must be impact-driven – meaning that they have measurable impact goals and/or calls to action – and encompass social, healthcare, education, humanitarian, and/or environmental issues. Projects must also align with at least one of the 17 UN Sustainable Development Goals.When reviewing grant applications, we consider inclusion, impact, viability, and vision:Inclusion – Inclusive storytelling is at the heart of the Unity for Humanity program. Does your project reflect a diversity of experiences and backgrounds? Does it have a natural connection to the community and audience being represented or served through the work? Does your application demonstrate that you are thinking about future audiences and distribution of the work in an inclusive way?Vision – Is there a strong motivation for creating the work? Does your project express a unique perspective? Does it reflect a strong sense of compassion for humanity?Impact – Does your project have measurable impact goals and calls to action? Is your project aligned with at least one of the UN Sustainable Development Goals?Viability – Does your team have a realistic plan of execution for the production and distribution of the project so that it can achieve the greatest impact? Is it realistic in scope?For more detailed information on applying, read our Unity for Humanity FAQ. If your project’s timeline doesn’t align with this year’s application period, you can pre-register for next year’s grant to receive inspiration, tips, and grant news.We spoke with three past Unity for Humanity grantees to learn about the impact receiving the grant has had on the development of their project.Love Death Design, creators of Gone to Water / Ido al Agua, an immersive documentary that brings first-hand accounts of environmental injustice in Los Angeles, Tongva Land, into a virtual space of protest.AnythingEverything, creators of Powers of X, an immersive film exploring our planet’s environmental fragility relative to the effects of global consumption and man-made climate breakdown.Presencias, creators of Origen, a series of virtual, digital and real-world experiences that reveal ancestral stories through nature.Q: What inspired you to create a social impact project?Love Death Design, creators of Gone to Water / Ido al Agua – New media can be leveraged as a profoundly impactful mode of storytelling: we can protest in virtual spaces, we can employ new technologies to demand sustainable future architectures.“New media can be leveraged as a profoundly impactful mode of storytelling.” – Love Death Design, creators of Gone to Water / Ido al Agua“Gone to Water” is a term that describes the process by which an oil well becomes unproductive and therefore unprofitable, eventually filling with water. We chose to apply for UFH support to create this immersive documentary on urban oil extraction and its community health impacts on Tongva Land – in South Los Angeles because for those most affected by environmental racism, it is a matter of survival. Los Angeles is considered a microcosm of the world for its rich cultural contributions but it is also a snapshot of environmental injustices faced by BIPOC and low-income communities throughout the world.AnythingEverything, creators of Powers of X – We are incredibly excited about using emerging technologies like XR to enable new formats for storytelling and create positive change, particularly when it comes to education about the climate crisis. With Powers Of X, we saw a powerful opportunity to harness VR and AR's unique ability to convey scale in order to reveal the impact we each have on the planet in a much more tangible way.Presencias, creators of Origen – Having been in contact with stories, memories of this land’s origin, led us to think that collaborating with storytellers from the various territories (the Amazon, the Andes and northwestern Argentina) to jointly create an experience in first person, interwoven by meaningful interactions, could result In a significant project capable of touching many hearts.“The project has driven an initiative to replant 20 different species in the mid-Ucayali region of the Amazon Rainforest.” – Presencias, creators of OrigenSomething incredible happened from the production phase of Origen, thanks to the collaborative networks it has woven, the project has driven an initiative to replant 20 different species in the mid-Ucayali region of the Amazon Rainforest. We understood that a project with these characteristics transcends what it can generate in the public once released. It is since its construction, through its dialogue with reality, that starts to generate an impact on multiple levels.Q: How did you come up with the idea for your project?Presencias, creators of Origen – The story of this project began more than ten years ago thanks to the bond with an incredible Mapuche descendant woman, Celeste, a great friend I’ve known since I was 19 (she’s also a script supervisor in the VR experience). Since then, in successive trips that I’ve made in Latin America, Celeste asked me to take presents of great symbolic value to her friends, guardians of other territories. It was revolutionary for me to be in contact with these women, their stories and this powerful network. Eventually these experiences became the opportunity to collectively create Origen.Q: What impact has the Unity for Humanity Grant had on your project?Love Death Design, creators of Gone to Water / Ido al Agua – Support from the Unity for Humanity Grant enabled our small creative design studio to produce a large scale project, collaborating with a wide spectrum of community members, activists and artists across South Los Angeles – Tongva Land. We were able to afford hardware to create the work, time and space to produce it, and the ability to compensate all our contributors – as well as offer free community workshops. As this is a pilot project for our artist-led studio, Love Death Design, having the support to realize the work in scope with our vision has been impactful and has greatly lifted our presence as under-represented artists and voices in the XR community.We are so grateful to have the support to co-create this work with community members, activists, and artists on the frontlines of environmental injustice and hope that this piece provokes those who experience it to consider their privilege and position, and join us in demanding the end of neighborhood drilling.“UFH was instrumental in helping us get our project off the ground and taking our concept from abstract idea to a tangible prototype.” – AnythingEverything, creators of Powers of XAnythingEverything, creators of Powers of X – We have used the UFH funding in order to conduct research around the subject matter, refine the conceptual experience, and most importantly to develop a functioning prototype which demonstrates the format and can be used in order to raise follow-on funding for the full production. We have successfully completed the prototype and we could not have done it if it wasn't for the help, resources, and support we received from Unity For Humanity.Presencias, creators of Origen – For the development of the experience and to implement the first steps of the replanting initiative that emerged as a result of the process of creating the firsts chapters of Origen.Receiving the grant was what made possible for this first chapter of Origen to come off paper and become a reality. It also gave us the freedom to create with so much autonomy, it allowed us to delve into the artisanal and interdisciplinary part of the project, which was crucial to respect its identity.The premiere of the first chapter, “The Journey to the Heart of the Amazon Rainforest,” is approaching and we are starting the pre-production of chapter two – “The Journey to the Andes” – which keeps us working and very excited for what is to come.The Unity for Humanity 2023 Grant is open for applications until 11:59 pm PT on December 9, 2022. Join our Social Impact creator Discord to speak to the Unity for Humanity team, ask questions, and meet other creators. Apply for the grant today.]]></description><link>https://unity.com/blog/news/unity-for-humanity-grant-application-tips-inspiration</link><guid isPermaLink="true">https://unity.com/blog/news/unity-for-humanity-grant-application-tips-inspiration</guid><pubDate>Wed, 09 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Advanced Editor scripting hacks to save you time, part 2]]></title><description><![CDATA[I’m back for part two! If you missed the first installment of my advanced Editor scripting hacks, check it out here. This two-part article is designed to walk you through advanced Editor tips for improving workflows so that your next project runs smoother than your last.Each hack is based on a demonstrative prototype I set up – similar to an RTS – where the units of one team automatically attack enemy buildings and other units. For a refresher, here’s the initial build prototype:In the previous article, I shared best practices on how to import and set up the art assets in the project. Now let’s start using those assets in the game, while saving as much time as possible.Let’s begin by unpacking the game’s elements. When setting up the elements of a game, we often encounter the following scenario:On one hand, we have Prefabs that come from the art team – be it a Prefab generated by the FBX Importer, or a Prefab that has been carefully set up with all the appropriate materials and animations, adding props to the Hierarchy, etc. To use this Prefab in-game, it makes sense to create a Prefab Variant from it and add all the gameplay-related components there. This way, the art team can modify and update the Prefab, and all the changes are reflected immediately in the game. While this approach works if the item only requires a couple of components with simple settings, it can add a lot of work if you need to set up something complex from scratch every time.On the other hand, many of the items will have the same components with similar values, like all the Car Prefabs or Prefabs for similar enemies. It makes sense that they’re all Variants of the same base Prefab. That said, this approach is ideal if setting up the art of the Prefab is straightforward (i.e., setting the mesh and its materials).Next, let’s look at how to simplify the setup of gameplay components, so we can quickly add them to our art Prefabs and use them directly in the game.The most common setup I’ve seen for complex elements in a game is having a “main” component (like “enemy,” “pickup,” or “door”) that behaves as an interface to communicate with the object, and a series of small, reusable components that implement the functionality itself; things like “selectable,” “CharacterMovement,” or “UnitHealth,” and Unity built-in components, like renderers and colliders.Some of the components depend on other components in order to work. For instance, the character movement might need a NavMesh agent. That’s why Unity has the RequireComponent attribute ready to define all these dependencies. So if there’s a “main” component for a given type of object, you can use the RequireComponent attribute to add all the components that this type of object needs to have.For example, the units in my prototype have these attributes:Besides setting an easy-to-find location in the AddComponentMenu, include all the extra components it needs. In this case, I added the Locomotion to move around and the AttackComponent to attack other units.Additionally, the base class unit (which is shared with the buildings) has other RequireComponent attributes that are inherited by this class, such as the Health component. With this, I only need to add the Soldier component to a GameObject so that all the other components are added automatically. If I add a new RequireComponent attribute to a component, Unity will update all the existing GameObjects with the new component, which facilitates extending the existing objects.RequireComponent also has a more subtle benefit: If we have “component A” that requires “component B,” then adding A to a GameObject doesn’t just ensure that B is added as well – it actually ensures that B is added before A. This means that when the Reset method is called for component A, component B will already exist and we’ll readily have access to it. This enables us to set references to the components, register persistent UnityEvents, and anything else we need to do to set up the object. By combining the RequireComponent attribute and the Reset method, we can fully set up the object by adding a single component.The main drawback of the method shown above is that, if we decide to change a value, we will need to change it for every object manually. And if all the setup is done through code, it becomes difficult for designers to modify it.In the previous article, we looked at how to use AssetPostprocessor for adding dependencies and modifying objects at import time. Now let’s use this to enforce some values in our Prefabs.To make it easier for designers to modify those values, we will read the values from a Prefab. Doing so allows the designers to easily modify that Prefab to change the values for the entire project.If you’re writing Editor code, you can copy the values from a component in an object to another by taking advantage of the Preset class.Create a preset from the original component and apply it to the other component(s) like this:As it stands, it will override all the values in the Prefab, but this most probably isn’t what we want it to do. Instead, copy only some values, while keeping the rest intact. To do this, use another override of the Preset.ApplyTo that takes a list of the properties it must apply. Of course, we could easily create a hardcoded list of the properties we want to override, which would work fine for most projects, but let’s see how to make this completely generic.Basically, I created a base Prefab with all the components, and then created a Variant to use as a template. Then I decided what values to apply from the list of overrides in the Variant.To get the overrides, use PrefabUtility.GetPropertyModifications. This provides you with all the overrides in the entire Prefab, so filter only the ones necessary to target this component. Something to keep in mind here is that the target of the modification is the component of the base Prefab – not the component of the Variant – so we need to get the reference to it by using GetCorrespondingObjectFromSource:Now this will apply all overrides of the template to our Prefabs. The only detail left is that the template might be a Variant of a Variant, and we will want to apply the overrides from that Variant as well.To do this, we only need to make this recursive:Next, let’s find the template for our Prefabs. Ideally, we will want to use different templates for different types of objects. One efficient way of doing this is by placing the templates in the same folder as the objects we want to apply them to.Look for an object named Template.prefab in the same folder as our Prefab. If we can’t find it, we will look in the parent folder recursively:At this point, we have the ability to modify the template Prefab, and all the changes will be reflected in the Prefabs in that folder, even though they aren’t Variants of the template. In this example, I changed the default player color (the color used when the unit isn’t attached to any player). Notice how it updates all the objects:When balancing games, all the stats you’ll need to adjust are spread across various components, stored in one Prefab or ScriptableObject for every character. This makes the process of adjusting details rather slow.A common way to make balancing easier is by using spreadsheets. They can be very handy as they bring all the data together, and you can use formulas to automatically calculate some of the additional data. But entering this data into Unity manually can be painfully long.That’s where the spreadsheets come in. They can be exported to simple formats like CSV(.csv) or TSV(.tsv), which is exactly what ScriptedImporters are for. Below is a screen capture of the stats for the units in the prototype:The code for this is pretty simple: Create a ScriptableObject with all the stats for a unit, then you can read the file. For every row of the table, create an instance of the ScriptableObject and fill it with the data for that row.Finally, add all the ScriptableObjects to the imported asset by using the context. We also need to add a main asset, which I just set to an empty TextAsset (as we don’t really use the main asset for anything here).This works for both buildings and units, but you should check which one you’re importing as units will have many more stats.With this complete, there are now some ScriptableObjects that contain all of the data from the spreadsheet.The generated ScriptableObjects are ready to be used in the game as needed. You can also use the PrefabPostprocessor that was set up earlier.In the OnPostprocessPrefab method, we have the capacity to load this asset and use its data to fill the parameters of the components automatically. Even more, if you set a dependency to this data asset, the Prefabs will be reimported every time you modify the data, keeping everything up to date automatically.When trying to create awesome levels, it’s crucial to be able to change and test things quickly, making small adjustments and trying again. That’s why fast iteration times and reducing the steps needed to start testing are so important.One of the first things that we think of when it comes to iteration times in Unity is the Domain Reload. The Domain Reload is relevant in two key situations: after compiling code in order to load the new dynamically linked libraries (DLLs), and when entering and exiting Play Mode. Domain Reload that comes with compiling can’t be avoided, but you do have the option of disabling reloads related to Play Mode in Project Settings > Editor > Enter Play Mode Settings.Disabling the Domain Reload when entering Play Mode can cause some issues if your code isn’t prepared for it, with the most usual issue being that static variables aren’t reset after playing. If your code can work with this disabled, go for it. For this prototype, Domain Reload is disabled, so you can enter Play Mode almost instantaneously.A separate issue with iteration times has to do with recalculating data that is required in order to play. This often involves selecting some components and clicking on buttons to trigger the recalculations. For example, in this prototype, there is a TeamController for each team within the scene. This controller has a list of all the enemy buildings so that it can send the units to attack them. In order to fill this data automatically, use the IProcessSceneWithReport interface. This interface is called for the scenes on two different occasions: during builds and when loading a scene in Play Mode. With it comes the opportunity to create, destroy, and modify any object you want. Note, however, that these changes will only affect Builds and Play Mode.It is in this callback that the controllers are created and the list of buildings is set. Thanks to this, there is no need to do anything manually. The controllers with an updated list of buildings will be there when play starts, and the list will be updated with the changes we’ve made.For the prototype, a utility method was set up that allows you to get all the instances of a component in a scene. You can use this to get all the buildings:The rest of the process is somewhat trivial: Get all the buildings, get all the teams that the buildings belong to, and create a controller for every team with a list of enemy buildings.Besides the scene being edited, you also need to load other scenes in order to play (i.e., a scene with the managers, with the UI, etc.) This can take up valuable time. In the case of the prototype, the Canvas with the healthbars is in a different scene called InGameUI.An effective way of working with this is by adding a component to the scene with a list of the scenes that need to be loaded along with it. If you load those scenes synchronously in the Awake method, the scene will be loaded and all of its Awake methods will be invoked at that point. So by the time the Start method is called, you can be sure that all the scenes are loaded and initialized, which gives you access to the data in them, such as manager singletons.Remember that you might have some of the scenes open when you enter Play Mode, so it’s important to check whether the scene is already loaded before loading it:Throughout parts one and two of this article, I’ve shown you how to leverage some of the lesser known features that Unity has to offer. Everything outlined is just a fraction of what can be done, but I hope that you’ll find these hacks useful for your next project, or – at the very least – interesting.The assets used to create the prototype can be found for free in the Asset Store:Skeletons: Toon RTS Units – Undead DemoKnights: Toon RTS Units – DemoTowers: Awesome Stylized Mage TowerIf you’d like to discuss this two-parter, or share your ideas after reading it, head on over to our Scripting forum. I’m signing off for now but you can still connect with me on Twitter at @CaballolD. Be sure to stay tuned for future technical blogs from other Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/advanced-editor-scripting-hacks-to-save-you-time-part-2</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/advanced-editor-scripting-hacks-to-save-you-time-part-2</guid><pubDate>Tue, 08 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity and ironSource merge to simplify launching and growing great mobile games]]></title><description><![CDATA[Today, we announced that our merger with ironSource is complete. It's a big day for Unity, and we’re excited because ironSource’s team and complementary capabilities will help us deliver even more ways to help game developers bring their vision to life:The leading end-to-end platform – The combination of Unity and ironSource is transformational in that it will give mobile game developers the tools they need at each stage of their development journey: from building, publishing, and operating mobile games to monetizing them, if they choose to, and growing their player base across multiple channels.Integrating creation and growth – It’s not just about having all of these tools in one place but also about connecting them so that they work together to simplify the whole development process. Together with ironSource, we can transform the linear mobile game development process into a deeply connected and interactive one. By integrating ironSource's products into Unity's platform, developers will be able to get real-world player and market feedback earlier in the development process, which means that they can learn what players really want, make better games and be on track for a more successful game businesses.When we announced our intent to merge with ironSource in July, we heard a lot of our community members sharing some concerns and I’d like to address the main ones directly:“Is Unity no longer focused on games?”Helping developers create great games that reach players where they are has always been and will stay at the heart of what we do (read our Games Focus blog series to learn more). Our goal is to make the tools that make it easier for developers to realize their vision – and that includes supporting that vision with resources to help them turn their games into sustainable businesses, if and when they choose to do so, which ironSource will help us do as they, too, are heavily focused on games.“Is Unity now only focused on mobile game developers?”While mobile is, of course, a huge platform for games, with 70% of all top mobile games globally made with Unity, we also remain committed to developing features for PCs, consoles, and XR. We want to ensure that all developers, from early learners working on their first game to the largest studios in the world, can rely on us regardless of the platform they choose to deploy their games on.The benefits from the merger with ironSource are, indeed, particularly strong for mobile game developers who choose advertising as their business model. Gamers are a highly engaged audience but only a small minority (less than 2%) utilize in-app purchase in the games they play. Advertising and in-app-purchases are the ways most mobile game developers choose to monetize their games. And most players welcome ads as a way to discover new games to play. This provides developers with the revenue to not only pay the bills, but also fund their growing teams - and build more beautiful games.We know you will have a lot of questions about how Unity will integrate and introduce these products. We are committed to moving quickly and transparently to integrate our technologies to deliver the best tools and services and over the course of the next week will share more about the short-term benefits for mobile game developers in particular.Unity’s mission remains the same: We want Unity to be the best development engine for creators to create what they imagine – no matter what they want to do.Keep an eye here on our blog for more updates about product integration and roadmap over the next few weeks.]]></description><link>https://unity.com/blog/news/unity-ironsource-merger-growing-great-mobile-games</link><guid isPermaLink="true">https://unity.com/blog/news/unity-ironsource-merger-growing-great-mobile-games</guid><pubDate>Mon, 07 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[At Unite 2022: Machine learning research, persistent worlds, and celebrating creators]]></title><description><![CDATA[On November 1, more than 19,000 members of the Unity community joined us from around the world, both virtually and in-person, for a full day of gamedev inspiration, education, and connection. Following the keynote, attendees were able to experience fellow creators’ projects, participate in expert-led sessions, network with peers, and even attend a first-of-its-kind, multiplatform virtual concert.With over 20 streamed sessions throughout the day and five unique local experiences, here is a roundup of notable highlights from Unite 2022.Senior Machine Learning Developer Florent Bocquelet expanded on a tool and Real-Time Live! Audience Choice Award-winning project that first debuted this summer at SIGGRAPH 2022. The session “Authoring character poses with AI” walked attendees through how the technology – which is not yet available – is being designed to work in the Editor to enable easier creation of natural-looking poses.Benoit Gagnon, a senior software developer, modeled ways for users to handle persistent data in a multiplayer context during the session “Persistent worlds: Managing player and world state.” The technical deep dive also covered PlayerPrefs, CloudSave, and general-purpose DBs, and offered a glimpse at what’s next from Unity Gaming Services.Of the more than 20 virtual sessions, nine featured leading minds from creators like you who use Unity day in and day out to optimize your projects, including:Renaud Forestié, director and Unity Asset Store publisher at More MountainsNic Gomez, senior games designer at AltaFreya Holmér, studio founderBen Hopkins, expert graphics engineer at Owlchemy LabsRohan Jadav, platform engineer at SuperGamingBrandon Jahner, CTO at MalokaManesh Mistry, lead programmer at ustwo GamesErick Passos, SDK lead developer at Photon EngineWe also caught up with creators from Triangle Factory, Vinci Games, and Obsidian Entertainment during the keynote session.Get the inside scoop on the Unite 2022 experiences hosted in five unique locations at Unity offices around the world.After networking and breakfast, Senior Vice President and General Manager of Create Solutions Marc Whitten welcomed the Austin crowd before the global keynote stream. For the rest of the day, attendees had the chance to check out exclusive in-person sessions, global virtual streams, and panels, and chat live with experts at the “Ask the Experts” booth. The day concluded with a fireside chat between Marc Whitten and Jeff Hanks, director of marketing for industries.Kicking off with breakfast burritos, Unity Senior Vice President Peter Moore welcomed a packed crowd at the Brighton office for the Unite 2022 keynote stream. The day continued with enthusiasm as attendees filled rooms to watch session streams, live panels, and roundtable discussions. Topics exclusive to Brighton ranged from understanding your audience from a scientific perspective to how Unity identifies and fixes bugs. Brighton also featured a very popular iiRcade machine and four “Studio Spotlights” featuring local studios who talked about their latest games and how Unity helped bring each to life.At yet another Unity office, Copenhagen guests were also welcomed with breakfast and an introduction from Senior Director of Product Management Andrew Bowell. In addition to its own iiRcade console and chances to check out the Made with Unity games featured in the keynote – Cult of the Lamb, Turbo Golf Racing, and Hyper Dash – attendees were treated to exclusive panel discussions as well as a fireside chat between Head of Marketing Strategy, Analytics, and Insights Deborah-Anna Reznek and Senior Vice President of AI Danny Lange.Despite a rainy day, Montreal welcomed a solid mix of students and teams from mid- to large-sized studios. Luc Barthelet, senior vice president of technology, kicked off the day. Following the keynote stream, participants had their choice of roundtables, panels, and presentations to attend. The Montreal office also hosted 24 Unity Insiders from around the world, including Ireland, the Netherlands, Brighton, Portugal, Vancouver, and Toronto. This group participated in a VIP experience that featured exclusive tracks catered to their areas of interest.The San Francisco experience had a great turnout and offered a choice of three different tracks for attendees, which included breakout focus groups, roundtables with Unity experts, and panel discussions. One such session featured Clive Downie, senior vice president and general manager for Consumer, as he moderated an interactive discussion with Ingrid Lestiyo, senior vice president and general manager for Operate Solutions, and the creators of Ramen VR (pictured below) amid a packed room. Another standout session was CEO John Riccitiello’s fireside chat with indie game developer Thomas Brush. To cap off the memorable day, attendees continued the festivities with a happy hour.It was so great to connect with our Unity community at a Unite event again (for the first time since 2020). Please continue to join us on our journey toward making the world a better place with more creators: connect with us through the forums, Twitter, Facebook, LinkedIn, Instagram, YouTube, or Twitch. And keep your eyes peeled in the coming months for on-demand session recordings so you can check out anything you missed.]]></description><link>https://unity.com/blog/news/unite-2022-event-recap</link><guid isPermaLink="true">https://unity.com/blog/news/unite-2022-event-recap</guid><pubDate>Fri, 04 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Metaverse Minute: The versatility of VR featuring Cas and Chary]]></title><description><![CDATA[Who says that virtual reality (VR) is limited to gaming? Not Cas and Chary. Our team had the absolute pleasure of collaborating with the renowned duo on the Unity-sponsored YouTube video, AWESOME things to do in VR that’s NOT gaming.More than virtual reality’s reigning cutest couple, Cas and Chary are deeply passionate about showing how technology can improve our lives today – and shape the future. Here are just a few applications of Unity mentioned in the video that demonstrate how.During Cas and Chary’s segment on how VR can change the way we travel, they explored the Great Pyramids of Giza in Emissive’s Horizon of Khufu. This experience was designed in partnership with Peter Der Manuelian, professor of Egyptology and his team at the Giza Project at Harvard University. On the experience, CEO of Emissive Fabien Barati shared, “We are thrilled by the success of Horizon of Khufu. Both entertaining and educational, it shows how VR can be appealing to a wide audience.”With several years of research and data collected onsite, they managed to produce an immersive VR landscape that allows you to freely roam and discover one of the Seven Wonders of the World. A small group of us at Unity actually had the opportunity to try it at a pop-up in New York City, and we can confirm that it’s as magical as it sounds.“We are thrilled by the success of Horizon of Khufu. Both entertaining and educational, it shows how VR can be appealing to a wide audience.” – Fabien Barati, CEO of EmissiveTo quote Cas in the video, “You want a window that looks out to the universe? Done. You want five TVs instead of one? Done!” That’s where Custom Home Mapper comes in.It takes a one-to-one map of your home and brings it into the metaverse in three simple steps:Trace out the perimeter of your home.Mark out large objects, such as your couch or bed.Set your anchor, and you’re ready to start customizing your home for VR mini golf, or just about anything else you can imagine!The solo developer behind this SideQuest project, Ryan, explains why he created the app: “To help people experience real freedom of movement in VR. It was a joy to try and solve these unique, creative problems of multi-room gameplay and social home interactions.”Ryan acknowledges “The tremendous amount of support received from enthusiastic users who wanted to see the same dream realized… Couldn’t have asked for a more interesting project to keep busy with during Covid lockdowns!”We’ve been fans of Rezzil for a while now and couldn’t wait to introduce the app to Cas and Chary. Rezzil uses a VR headset with both eye- and feet-tracking to register a player’s skill level in a particular sport.Rezzil’s suite of drills helps athletes achieve excellence in specific modalities they need to improve. And it doesn’t end there: Rezzil puts players back into past matches so they can understand where there’s room to improve their performance. Top clubs like Manchester United F.C. and the Atlanta Falcons of the NFL are using the app, and while the team at Rezzil can’t say who, we know that at least five World Cup teams took the app with them to the competition.Our friends at Cause + Christi XR worked with six-time Emmy Award winner, Baobab Studios, to build a custom social VR world for the red carpet premiere of Baba Yaga. Daisy Ridley and Jennifer Hudson brought some star power to the virtual event and even took photos with fans in AltspaceVR.As Cas points out, doing premieres this way is fun and gives anyone with internet access and a headset the chance to join in. That’s our kind of guest list.BraVeR is doing something pretty spectacular. With intentionally designed VR spaces, this team is working to help people overcome their fears. All of the levels and tasks in BraVeR are tested by experts and users alike, and based on proven methods and studies to help people cope with their anxieties. Each of BraVeR’s unique spaces centers on a fear to offer a mutually challenging yet enjoyable experience.In the words of Moshe Radman, CEO of BraVeR, “I saw that there is a huge technological change coming at us and decided to use this change for good. Mental health is a great place to start. As I dug in more and more, I found out that this is an inefficient and overloaded market. But VR can radically help take the load off and make mental health-related solutions more accessible.”“VR can radically help take the load off and make mental health-related solutions more accessible.” – Moshe Radman, CEO of BraVeRWe can’t wait to see how extended reality (XR) will shape the future of product design and prototyping. One of the apps that gets us super excited about this is ShapesXR. Gabriele Romagnoli and his team created a product that’s intuitive to use, even for beginners in the XR space.Visualizing your thoughts with 3D sketching enables you to communicate in a way that isn’t really possible with traditional methods. Safe to say that Cas and Chary are thrilled with the app.“We’ve been in the XR space since 2015 and have seen that creatives still have a hard time contributing their skills and knowledge to this new world. We created ShapesXR with the mission to empower designers and any non-developers to ideate, design, and prototype immersive apps,” states Gabriele Romagnoli, Founder of ShapesXR.“Some of our users call us ‘the Figma for 3D and immersive’ and it is actually very spot on. ShapesXR is, in fact, easy to pick up, and you can mock up interactions in a way that is fully collaborative. We strongly believe that working together and being able to effectively communicate your ideas in real-time is the key to success.”For the construction folk among us, it’s impressive to see how Arkio has made it so much easier to design interiors, sketch buildings, and craft environments with our hands.As Cas says in the video, “It supports the right tools for the industry and it’s really, really powerful.” With Arkio, the only limit is your imagination.Transfr trains people for well-paying careers in high-demand fields. It enables learners to find secure jobs currently available and facilitates their upward mobility thanks to immersive, hands-on VR training.With complete VR courses, tailored to audiences at diverse educational institutions and companies, Transfr puts participants in simulations that teach real-world skills relevant to their career paths. They even include tests that are reviewed by instructors in specific fields. When Cas gave it a try, she had a blast learning about autobody tools.“There is so much undiscovered and underdeveloped talent in our world. These high-potential individuals are often passed over because they lack access to the training needed for well-paying careers at great companies,” says Bharani Rajakumar, CEO of Transfr.“VR allows us to deliver on-the-job training at a massive scale to support the economic development needs of different communities, so that employers get what they want, a highly skilled workforce – and we get what we want, a pathway to upward mobility. By working with everyone in the ecosystem, from customers to technologists, we are creating pathways, from classroom to career, that can help workers and learners access new skills and a better quality of life.”We’d like to see more XR experiences created for younger generations. After all, they hold the future of these technologies.That’s why the Kai XR platform is so exciting. Created by educators, it provides students with the ability to explore the world of immersive tech. Schools, libraries, and extracurricular programs like summer camps across the United States are using the platform to show students what’s possible with XR.According to Kai XR CEO Kai Frazier, “Kai XR works with a wide variety of students ranging from those at juvenile detention centers to charter schools. Some students are expert coders while others don’t know what coding is. From working with a range of experiences, I wanted to create a makerspace that lets all students dive into their imaginations, and doesn’t limit them due to schools lacking the tools or experience to create. All of their ideas are valuable and it’s great to see what they create in our drag-and-drop Metaverse Makerspace, Kai XR Create.”“I wanted to create a makerspace that lets all students dive into their imaginations, and doesn’t limit them due to schools lacking the tools or experience to create.” – Kai Frazier, CEO of Kai XRThe combined forces of Varjo Technologies and Volvo have done some stellar work with Unity. The two companies first came together to create a digital twin of the entire car factory – Volvo’s own metaverse. Engineers and designers can now show each other exactly what they envision in VR with an interactive 3D model.As Cas states in the video, this has resulted in improved collaboration, faster design iteration, and accelerated development. Working together in the metaverse, from start to finish, has been beneficial for Volvo, and it could not have happened without the incredible people at Varjo.And now, it’s time to enjoy more awesome things you can do in VR outside of gaming. Let Cas and Chary take it away.Are you using Unity for something other than games?If you’re using Unity for a unique project, give us a shout on social media.Follow Unity for Digital Twins on Twitter, LinkedIn, and Instagram. For more on Unity for Digital Twins, check out our recent demo or our new kickstarter package.]]></description><link>https://unity.com/blog/industry/metaverse-minute-the-versatility-of-vr-featuring-cas-and-chary</link><guid isPermaLink="true">https://unity.com/blog/industry/metaverse-minute-the-versatility-of-vr-featuring-cas-and-chary</guid><pubDate>Thu, 03 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Real-time action: Creators make the world a better place at Unity for Humanity Summit 2022 ]]></title><description><![CDATA[That’s a wrap on this year’s Unity for Humanity Summit. We’ve pulled together our favorite moments and takeaways in case you weren’t able to make it or just wanted to relive the highlights.During the Summit, we announced that applications for the Unity for Humanity 2023 Grant are open. Submit your social impact project for a share of $500,000 USD in funding, plus technical support and mentorship.We met so many incredible social impact creators using Unity in innovative ways to drive change. If you have a similar project, the Unity for Humanity Grant is open for applications to help support you in making your vision a reality.Grant recipients will receive a bespoke grant from a pool of $500,000 USD, plus mentorship and technical support to help bring their project to life. Your project must be currently in production and align with one of the UN Sustainable Development Goals. For application details and criteria, please visit the Unity for Humanity FAQ. Don’t have a prototype ready this year but want to pre-register for next year’s grant? Sign up to be one of the first to hear when the next grant is live.“[Receiving the grant] gave us the freedom to create with so much autonomy.”“Receiving the grant was what made possible for this first chapter of Origen to come off paper and become a reality,” shared Presencias, creators of Origen. “It also gave us the freedom to create with so much autonomy, it allowed us to delve into the artisanal and interdisciplinary part of the project, which was crucial to respect its identity.”Actor and activist Rosario Dawson joined us to share her vision for the future – which she believes is possible thanks to the remarkable potential of technology and the impact of creators.“We used to be all around the fire: the medicine woman, the warrior, the mother, the father, the child, the person who worked with the animals, and the food. Everyone had an equal space around that fire where they came together as a community. And, as industry built up, we started going into that pyramid shape where it was just the few people at the top and all the workers at the bottom,” she shared. “What’s remarkable now, with this technology, is we get to open up that portal, and get that light in our face and be back around the fire again – through our watches and our tablets and our phones.”So why does she have so much faith that technology will change the world? In Dawson’s words,“I know that we’re getting there because this generation is coming in hot. They are looking at the problems that we have perpetuated up until this moment and they are factoring in. They are being so conscious and intentional with what they are making and creating, and that just gives me a lot of hope.”In one session, attendees met students from Spelman College, Urban Arts Partnership, and Generation Pakistan. These remarkable organizations provide STEM education to underserved students, to skill-up more students, provide more career opportunities, and diversify the tech industry.Since its inception, Urban Arts has served more than 250,000 students across 150 New York City public schools. Their mission is to provide students from low-income communities with a high quality education in an industry lacking workforce diversity.Generation is on a mission to transform education-to-employment systems and help prepare, place, and support people into life-changing careers that would otherwise be inaccessible. Unity partners with Generation to run a 3-month training bootcamp in Pakistan, that not only teaches participants Unity skills, but also provides mentorship, employer site visits and support to place them in a career upon graduation.A 2022 graduate of the program, Farwar Bashir, shared, “The course improved my Unity skills, but also focused on our personality and built up our professional skills. It wasn’t just Unity – it was also how to deal with challenges and solutions that we would face in the real-time industry.”“When I came out of the interview room, I had the biggest smile on my face, and I knew in my heart that yes I got the job,” added fellow graduate Humaira Salamat. “I received a call the day after the interview, 'yes you got the job, please come to our office for negotiation of your salary'.”“It wasn’t just Unity – it was also how to deal with challenges and solutions that we would face in the real-time industry.”We heard from a number of creators using Unity to fight climate change and protect the planet. Former Unity for Humanity grant winners shared insights into their projects and gave attendees an update on their progress.For example, Gone to Water is currently in production and has an anticipated release on STEAM VR in February 2023. “Gone to water” is a term that describes the process by which an oil well becomes unproductive and therefore unprofitable, eventually filling with water.According to Cat Ross, designer and researcher for Love Death Design, “We chose to apply for [Unity] support to create this immersive documentary on urban oil extraction and its community health impacts on Tongva Land – in South Los Angeles – because, for those most affected by environmental racism, it is a matter of survival. Los Angeles is considered a microcosm of the world for its rich cultural contributions, but it is also a snapshot of environmental injustices faced by BIPOC and low-income communities throughout the world.”Drop in the Ocean, another grant-winning project, is a 10-minute social VR adventure where audiences hitch a ride on a jellyfish and encounter the mysteries of the deep. Most importantly, participants experience the plastic pollution crisis from the viewpoint of sea life. Read more about this project in a blog from one of the creators.“Through 2023, we will be exploring staging Drop in the Ocean at the most important environmental and climate action conferences and events, as well as supporting Conservation International’s outreach activity,” shared Vision3 Immersive Creator and Producer Adam May.At the “Accessibility Insights for Creators” roundtable we heard from Studio Director of Falling Squirrel Dave Evans, Accessibility Product Manager at Owlchemy Labs Jazmin Cano, and Blind Accessibility Consultant, Gamer, and Developer Lukáš Hosnedl about the importance of creating experiences with accessibility in mind.During this open conversation we listened as experts discussed the future of accessible gaming and how game developers can add features that will ensure their games can be enjoyed by everyone.In the “Create with AR Live” workshop, we were introduced to the latest Unity Learn free online course, Create with AR. This 13-hour, self-paced course will teach you how to create your own AR (augmented reality) face filter app.As we unlock the potential of AR apps, these skills are increasingly growing in demand, so now is a great time to add AR to your Unity skill set.What was your favorite part of this year’s Summit? To keep up with Unity for Humanity year round, visit the program website and sign up to our mailing list for social impact creator news and inspiration.]]></description><link>https://unity.com/blog/news/unity-for-humanity-summit-2022-recap</link><guid isPermaLink="true">https://unity.com/blog/news/unity-for-humanity-summit-2022-recap</guid><pubDate>Wed, 02 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unite 2022 Keynote recap]]></title><description><![CDATA[It’s been two years since we’ve hosted a Unite event to gather with our amazing community of game developers. Thanks to you, this year’s Unite is on track to become our most attended ever. If you haven’t had the chance to watch the keynote yet, we’ve got you covered with this spotlight on what was shared.“When we say the world is a better place with more creators in it, we mean that literally,” shared CEO John Riccitiello. “Because creators bring people together. Because we know the joy of creating, and we want more people to experience this joy.”“Now, we know creation is hard,” he continued. “Game creation is especially hard because it involves so many disciplines – from programming to design, art to lighting, character creation to animation, and some serious mastery of technology. Our role at Unity is to make the tools that make it easier for you, as creators, to realize your vision.”Bringing our community together to offer updates and insights into what we’re working on is so important to us. Today’s hybrid event – both virtual and in person within our local communities in Austin, Brighton, Copenhagen, Montréal, and San Francisco – is also an opportunity for us to listen to your feedback so we can ensure we’re building tools and features that meet your needs.Watch the full keynote, or keep reading for a recap of highlights from key areas of focus as we continue to heavily invest in our game engine to help you build, scale, and grow incredible games.DOTS, an acronym for Data-Oriented Technology Stack, is composed of three parts: Entity Component System (or ECS for short), Burst compiler, and the C# Job System. If your game requires massive scale, DOTS is a great alternative to an object-oriented coding framework because it lets you write safe, multithreaded code that can deliver performance gains. Simply put, DOTS enables you to build vast, complex worlds and deliver incredible experiences to your players.As Laurent Gibert, who oversees the development of DOTS and multiplayer technology at Unity, announced, “ECS is finally leaving its experimental phase. That means that with the coming 2022.2 Tech Stream – like any other feature – ECS will be supported for your projects.”Gibert emphasized that you don’t have to choose between data- and object-oriented development: The two can coexist. This means you can solve hard scaling problems while relying on your traditional workflows for everything else.To help you scale up your DOTS skill set more quickly, ECS will include graphics packages, physics capabilities, and Netcode, as well as full documentation, samples, and tutorials.“ECS is finally leaving its experimental phase. That means that with the coming 2022.2 Tech Stream – like any other feature – ECS will be supported for your projects.”Creating great visuals is time consuming, so our team spotlighted a few updates to help you achieve your vision more efficiently in both Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP).“We know that it’s hard to choose a rendering pipeline early in a project,” said Nancy LaRue, a marketing manager for technical artistry tools. “And it can be complicated to switch later on. So we’re working on modifying the render workflow so you’ll be able to use both URP and HDRP in the same project.”The segment highlighted some new tools for URP, including Forward+ rendering and a new Decals offering, that achieve parity and even eclipse what you could achieve with the Built-in Render Pipeline. To highlight URP tools’ effectiveness in production, Hannah Kennedy, art director from Obsidian Entertainment, took to the stage to talk about the studio’s new game Pentiment, launching November 15. Hannah’s team chose Unity and URP to deliver on their project because they needed a flexible approach, right from the start.“We were also able to use URP’s wide range of direct and indirect lighting solutions to quickly achieve the mood and enhance the dramatization of the game,” she said.Next, a demo illustrated an HDRP workflow to help you create dynamic environments using Physically Based Sky, Cloud Layers, Volumetric Fog, Adaptive Probe Volumes, the Volume System, and our incredible new Water System.We closed the graphics segment by celebrating some of the inspiring and jaw-droppingly gorgeous games that you’ve brought to life with Unity over the last few months. Catch the full sizzle below.“We’re working toward an end-to-end solution that covers every aspect of your multiplayer game – from creation to ongoing management of a live experience,” explained senior technical product manager Kiki Saintonge. She also shared what’s upcoming for multiplayer services.Developing and operating multiplayer games is incredibly challenging. We want to make it easier for you to design innovative multiplayer experiences, so we’re improving our Netcode solutions and bringing services like matchmaking and game hosting right into the Editor.To showcase what’s possible, Timothy “Timo” Vanherberghen, founder and CEO of Triangle Factory, joined us onstage. He spoke about the studio’s multiplayer VR games, Hyper Dash and Breachers, both of which leverage our Matchmaker and Game Server Hosting solutions.Timo had this to say about why his studio chose to select services from UGS: “We could have built a solution ourselves, but that would mean spending a lot of time building and maintaining features that have nothing to do with our core gameplay. We’re in this industry to build games, not the systems around them.”Triangle Factory’s next game, Breachers, will be in open alpha later this month.“We’re in this industry to build games, not the systems around them.”Today’s keynote also gave a preview of how we’re simplifying VR development with the XR Interaction Toolkit, including an example from Vinci Games in Blacktop Hoops. We shared the ways we’re making it easier for you to customize your Editor with updates to the UI Toolkit, which is now at full feature parity with IMGUI. The keynote even provided insight into how you can continuously fine-tune and test your live game content from a single platform to boost player satisfaction and reduce churn.Next, we announced the arrival of DirectX 12 in the upcoming Tech Stream 2022.2, as well as the work we’re doing to make our suite of art and VFX tools – including our digital human package, hair system, and puppet-based animation – widely available to you in real-time, so you can use these tools in your games.Unite 2022 continues for the remainder of today, with technical sessions, roadmap deep dives, and more. This content will also be available on-demand later this year, and you can watch the full keynote address below. Last but not least, we hope you’ll join us tomorrow for Unity for Humanity Summit 2022, an inspiring look at how creators are using real-time 3D technology to make the world a better place.]]></description><link>https://unity.com/blog/news/unite-2022-keynote</link><guid isPermaLink="true">https://unity.com/blog/news/unite-2022-keynote</guid><pubDate>Tue, 01 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building your 3 pronged holiday UA strategy: Creatives, offerwall, and on-device advertising]]></title><description><![CDATA[Time spent in apps always peaks during the holiday season. The key to making that uplift work for your user acquisition is tackling it from all angles - from optimizing existing channels to expanding into new ones. That way, you can generate the installs and ROAS you need to start the new year off right.That’s why we invited three ironSource experts to this edition of our Angles of Acquisition webinar series:- Noa Eckstein, Head of Business Operations at ironSource Luna, covered building holiday-themed creatives that spike IPM - Sarah Chafer, VP US Sales at ironSource Sonic, discussed how to set up an offerwall campaign that'll generate record ARPU - Jess Overton, Director of Demand at ironSource Aura, walked through setting up an on-device campaign at a time when everyone's buying new phones Read on for a summary of the webinar or watch it here: https://www.youtube.com/watch?v=CvewwdzvVBMConsumer insights during the holidaysTo kick off, Marketing Director at ironSource Lauren Baca set the scene with consumer insights during the holidays pulled from ironSource and M&C Saatchi Performance’s holiday marketing playbook:- 75% of consumers plan on purchasing clothes and footwear as gifts this year, making them the most popular gifts across all generations. - 65% of consumers plan to spend more or the same on holidays gifts this year compared to last year - 28% of consumers plan to start shopping in the fall and 27% of consumers plan to start shopping on Black Friday or Cyber MondayDownload the report for more data and insightsWith a better understanding of how consumers plan to shop and celebrate this season, Lauren passed the mic to our ironSource experts to break down some best practices for optimizing UA - from how to build holiday-themed creatives to making the most of a unique ad unit all the way to how to leverage a time when everyone's buying new phones.How to build holiday-themed creatives that spike IPMNoa explained that while the holiday season feels quite special, the marketing problems you face during the winter months are the same problems you face every other season - you need to find the best content and creatives, you need to optimize key channels, and you need to utilize your data better. The only difference? Your creatives get a holiday makeover.During the holidays, people tend to be their most emotional - it’s a time for nostalgia and thinking about friends and family. This emotion is a key ingredient to building high-IPM creatives - the goal is always to get users to go from seeing a creative to actually feeling something that encourages them to download, and the holidays are a time when that’s even more feasible.So if IPM has the potential to be so high, why wouldn’t you invest in building holiday creatives? Noa covered a few reasons why some studios might choose not to:- Holiday creatives can cost a lot to run and need more resources and attention to build, but may only run for a very short amount of time - Most creatives don’t end up scaling and often fail - it is more challenging to find the winning creative within such a short time period - Users who see a holiday-themed creative may expect to play a holiday-themed game, so you might need to adjust your gameplay or pay closer attention to user quality. - On the flip side, there are tons of data that show why you should invest in building holiday creatives, according to data from the ironSource Luna platform:- IPMs are significantly higher throughout the holiday season due to more engagement in apps and on phones (2021, US, iOS)- In fact, game installs surged 3x during the week of Christmas (2021, US, Facebook)- Advertisers test 2x the amount of creatives during the holidays, which means you don’t want to be left behindLooking deeper, Noa explained that building holiday-themed creatives can have a positive impact on your team and collaboration:- It’s an opportunity to refresh, prevent fatigue, and get creative in a unique way - Holiday elements trigger a lot of emotion leading to higher intent- You can create a really healthy dialogue between your creative team, UA team and product team as everyone works on holiday plansNext, Noa gave us some proof and walked through case studies. First, she presented a game studio that works with ironSource Luna that changed the sword in their playable ad to a Christmas tree, which had a huge impact on IPM during the holidays. It performed so well that the studio chose not to deactivate the creative after the holidays - and it remained the top-performing creative even two months after Christmas day. In another example, the holiday-themed creative was a top performer until the end of April.Last, Noa showed what happened when Luna tested three different Halloween-themed creatives for a game studio. For the first one, the Luna team took an existing high-performing creative and just put a Halloween theme on top of it. For the second one, Luna replaced a mermaid’s head with a pumpkin head and changed the pointer to a witch's hand. Neither of these variations are showing positive results yet - but that may change the closer we get to Halloween! For the third variation, Luna built a creative where the witch is playing the Halloween-themed game, which became one of the most successful creatives for this title and led to a 20% higher D7 ROAS.So how can you find this same success without heavy production?- Use real footage of real people that show pure emotion - Test holiday figures - snowflakes, witches, pumpkins - to spice it up - Give the pointer and buttons a holiday theme, like Santa Many advertisers are taking advantage of this time of year to increase performance, but you need to weigh that against the internal resources you have to build a new set of creatives. There are other ways to optimize your holiday strategy, such as with the offerwall - which leads us to our next angle.How to set up an offerwall campaign that'll generate record ROASNext up, Sarah Chafer discussed best practices for running offerwall campaigns during the holidays. First, she started with a brief background, explaining that the offerwall is a user-initiated, rewarded in app marketplace with three main constituents: developers use the offerwall to grow revenue, user retention, and app engagement, without cannibalizing IAP. Advertisers use the offerwall to reach a unique, quality audience that is looking for a transaction of some sort and will remain highly engaged in the app. Consumers engage with the offerwall for app discovery and brand discovery, all while getting further and deeper into the app they’re already using.So, how does this all work together - how do the advertiser and consumer come together in that moment or transaction? Sarah ran through a few of the most popular offerwall pricing models to help advertisers get campaigns started:Cost per engagement (CPE): Here, advertisers only pay when a user installs an app and completes a specific engagement event. This is all about getting users deeper down the funnel. Ask yourself, what do you want the user to do to remember the app and what would encourage them to use it again?Multi-reward cost per engagement (MR-CPE): In this pricing model, you pay in incremental steps as a user works towards completing a deep engagement event. This way, you can reward the user for completing more actions - not only installing and opening, but installing, opening and downloading a coupon or making a purchaseCost per action (CPA): You’ll pay when a user completes a quiz, action on a website, or purchases from a brand. This is the most common format during the holidays and it can be used in a lot of creative ways. Cost per install (CPI): You’ll pay each time a user installs your app, which is really about getting your app out there in the market and driving app discovery. Surveys: Pay when a user completes a survey to help you better understand user behavior - how they feel, what are their thoughts, what are they into, etc. Next, Sarah dove into best practices for mastering this ad unit during the holidays - saying that the most important thing to keep in mind is timing.There are tons of new devices entering the market - all the major players are releasing the latest versions of their best-selling devices and if you’re an early adopter of technology, you may already have one. Device sales increase heavily starting now and many will end up wrapped up as gifts. Starting with the offerwall now can help you be top of mind as new devices enter homes globally. Second, with holiday shopping starting earlier this year compared to last year according to our report, it’s important to remind users that the holidays are coming and that right now is the time to shop. You can provide this sense of urgency in your messaging, which we will discuss in the next section. Third, level up with currency sales and double down on rewards on key shopping days, like Black Friday and Cyber Monday. Consumers will be inclined to engage with an offer that gives them extra rewards. As an advertiser, you can double down on your bid - the reward is higher, the traffic is higher. In fact, we’ve seen around a 35% lift in conversions during previous currency sales. Once the timing is right, how do you get your creative to capture all the great offerwall traffic?Stay competitive with special promotions, also known as currency sales. We know that users are looking for deals - 40% said that rewarded ads influence their purchasing decisions according to our report. Whether you’re offering a sale or special package, get creative and switch it up frequently to stay fresh, unique and competitive. Going back to providing a sense of urgency, it’s important to be reminding users not only to shop but who to shop for. Include “gifting” and “holiday” in your messaging and add holiday-themed graphics to your creatives, which are consistent reminders that the holidays are coming. You can even call out someone in particular with phrases like - “for that someone special in your life,” or “for your pet” to get consumers thinking about their gift lists. The Tapjoy offerwall has a shopping tab, which gives consumers a better understanding of what our advertisers do by highlighting their packaging, merchandising, and best-selling products. Give the shopper an idea of who your brand is and what will be shipped to their home.Overall, the offerwall is an excellent touchpoint to reach high-intent users that will drive high ROAS. If you’re looking to expand your touchpoints even further, on-device advertising is a unique way to take advantage of the new phones entering the market - covered by Jess Overton.Setting up on-device campaigns when everyone's buying new phonesJumping off of Sarah’s point that there are tons of new devices sold, unboxed, and unwrapped this time of year, Jess shared that 51% of consumers plan to give a new device as a gift for the holidays. With each new device, consumers get access to new forms of entertainment - Jess even alluded it to the world’s greatest mall. Ultimately, how consumers decide to interact with their devices is a function of the apps they download and engage with.Jess shared that 95% of users that will be unboxing new devices this Christmas will be downloading apps in the first 48 hours. During those 48 hours, consumers will install 60% of the apps they’ll download for the lifetime of the device. If you look at your device's home screen and ask yourself, “when was the last time you downloaded a bunch of apps?”, it’s probably been a while. That’s the power of capturing a download at device activation.ironSource Aura partners with top device manufacturers and mobile carriers to deliver app discovery experiences directly to users on their devices so you can get your app discovered at key moments during the device lifecycle, whether it’s during device activation on Christmas morning or after a major operating system update. On-device marketing enables dynamic bidding and endless opportunities for optimization, which is largely impossible on traditional preload channels. Being able to meet users at moments when they're ready to discover and experiment with new apps along with first-class optimization capabilities means that on-device marketing is a channel that converts potential users into high-value customers.There are three things to keep in mind about running on-device during the holiday season. First, holiday-ify your creatives. Second, you can reach a range of demographics for your app and price accordingly. Third, sit back and watch that LTV rack up.Holiday-ify your creativesData shows that tailoring your on-device creatives to the audience and the placement can generate a significant uplift in performance. For example, you can add a holiday graphic or theme, such as a Santa hat, to your app icon on the device setup placement. Or you can show real people in the holiday spirit on the full-screen offer placement.Reach a range of demographics and price accordinglySecond, you need to ensure the bid for each demographic. This is especially important during the holidays, because you only get one shot. There’s only one Christmas morning, consumers only unbox your device once, which means you as the advertiser have to get your bids right the first time. So pay attention to price and understand which demographics are most important to your campaign.To paint a better picture, Jess broke down demographics of device activations last Christmas: the Boomer group is slightly less represented, with 15% activating new devices. 29% of activations came from Gen X, 25% from Millennials, and 21% from Gen Z. Bottom line? The on-device channel is a great way to get in front of hard-to-reach demographics, such as the older than 55 group. For Gen Z who are bombarded with ads, the on-device channel cuts through the noise and gives you a way to reach these users in a different mindset.Prepare for long LTVOn-device channels are a much slower burn in terms of LTV and app engagement. When you think about Christmas morning and setting up your new device, you might download a travel app, food delivery app, a few shopping apps, a bunch of games, but you’re not ordering food right away or booking your next trip on Christmas. Ultimately, you’ll see users start to engage more at D14 or D30, and this effect is even more significant during the holiday season. After all, we spend a lot more time on our phones and dabbling with apps.Having a multi-channel approach to your holiday advertising strategy is critical, and being well-informed on how to optimize all of those components is a huge benefit. If you’ve made it this far, you should have all of the best practices you need to drive high-performing creatives, create an offerwall strategy that converts, and leverage a time period high in device activations.]]></description><link>https://unity.com/blog/angles-of-acquisition-holiday-webinar-summary</link><guid isPermaLink="true">https://unity.com/blog/angles-of-acquisition-holiday-webinar-summary</guid><pubDate>Mon, 31 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creepy, cute, compelling: The recipe for smash hit, Cult of the Lamb]]></title><description><![CDATA[Cult of the Lamb was a breakout success this summer, selling more than a million copies in its first week. Through its unique premise, Massive Monster’s dungeon-crawling, base-building, rogue-lite hybrid casts you in the role of a possessed, cult-leading lamb.Your mission? Indoctrinate woodland creatures, perform dark rituals, and hunt down bosses – all to appease an eldritch being, The One Who Waits, and become leader of “the one true cult.” A major factor in the game’s success is its compelling gameplay loop, which reviewers have described as “addictive,” “satisfying,” and even “perfect.”We sat down with Jay Armstrong, Massive Monster’s design director and lead programmer, to discuss how the team chose which genres to combine, what they did to balance a two-genres-in-one-game approach, and their top tips for overcoming challenges to keep development focused.The Massive Monster team – Jay Armstrong, Julian Wilton (creative director), and James “Jimp” Pearmain (art director) – is spread out across Singapore, Australia, and the UK. How did you all meet and start making games together?We all started making Flash games individually. We first met through the Flash game scene, forums, and events. We all worked together on different games, and when Flash games fell away, we decided to team up and make games for desktop and console.The first game that Julian and I created together was called Super Adventure Pals, and almost exactly 10 years later, we released Cult of the Lamb. So the three of us have been collaborating together for a long time.What was your source of inspiration for Cult of the Lamb? How did you develop the idea?Funny enough, the cult stuff didn’t come until much later. The game actually started with the idea of combining the genres of a roguelike with a colony sim/base builder. I noticed that games like RimWorld and Enter the Gungeon created so many interesting emergent narratives – stories that spring out of the game’s mechanics – that made it so everyone’s experience with the game was unique. I was excited about the idea of combining those two genres to create something that would become more than the sum of its parts, so I created a prototype that I planned to show to the other guys at an upcoming PAX.When I took it to Jimp and Julian, they loved it, but we immediately found that it was a really hard game to pitch when talking to publishers. At this point we still hadn’t come up with the cult theme. We knew we had to figure out a way to market the game in one sentence. We needed a player fantasy we could explain easily and that people would immediately understand. It took around nine months of experimenting with different themes before we finally landed on the idea of the cult.Once we had that, everything for the next three years was about making sure we kept hitting the “promise” the game’s theme created. The game had to feel like you were leading a cult, which meant we had to have rituals and sermons. But figuring out how to make those game mechanics took a lot of iteration and experimentation. We got very used to cutting ideas that didn’t achieve that goal, and “listening” to what the game wanted to be. Having a clear goal for what we wanted the experience to be meant we were all on the same page, and it was obvious when something was or wasn’t working.Cult of the Lamb is your first Unity project. Why did you choose Unity to develop it?Yes, Cult of the Lamb is our first Unity project. We chose it because of the great tools it offers for iterating, quick testing, and allowing designers to lay out levels. In the past, we’ve created our own editors, but the tools that are available for Unity and on the Asset Store are such timesavers. We also have the flexibility of building whatever tools we want for ourselves.How did Unity enable you to manage the game’s combination of 2D and 3D assets to create a 2.5D look?One of the reasons we picked the 2.5D look was because we were moving to Unity and it was our first time using a 3D engine. It felt like a waste if we just stuck to normal 2D, so we decided to take advantage of that extra axis!It was great being able to move the sprites around and create faux-3D structures; to use the Editor to decide on the best angles for our characters and the camera.Why did you choose the top-down perspective? What were some challenges you encountered during implementation and how did you solve them?The main problem with our perspective was that we had to keep the camera relatively fixed, which restricted our options for combat and the placement of things in the world. While it is sort of top-down, we had to arrange things so that the important stuff was all at the top/back of the screen. It was fine once we got the hang of it: Creating restrictions forces you to come up with creative solutions.What benefit did Unity’s lighting provide for creating the look of Cult of the Lamb?The lighting is such a big part of what makes Cult of the Lamb look so cool! We had some support from our extremely talented friend Jonathan Swanson, who helped us set up all the lighting. Because of our 2.5D setup, we had to create some custom solutions. But once we got it all up and running, it really elevated the game massively.Did your artists work directly in Unity?Yes, everyone was working directly on the project at once, which saved us huge amounts of time. Having an artist or designer implement something directly is so great. This not only saves the programmers time, it also allows the artist or designer to get it looking exactly how they want it to.Back when we started in Flash, everything had to be implemented into the project by one person, and we’d send assets over email. This created a huge bottleneck. It’s such a relief to be able to put the tools in the hands of talented artists and let them do their thing!How did you iterate on what are essentially two different game concepts, while maintaining the scope of your project?It was definitely a challenge. Cult of the Lamb only works when both sides of the game feed into the other – when one side is broken or not as good as it should be, the whole game falls apart. It really didn’t come together until quite soon before the release. We just kept working as hard as we could and dragged the game kicking and screaming over the finish line.We still have loads of ideas for the game – but it just came to a point where we had to stop adding new stuff and focus on making it as cohesive as possible and the game loop itself as compelling as it could be. That’s where the real magic of the game is. We plan to keep adding more stuff to the game post release.How did you test features as you added them?Everyone on the team would do regular playtests. Later in development, our publisher helped us to connect with a focus group who gave us feedback. Ordinarily we would have exhibited the game to get player feedback, but due to COVID, we were essentially making this game alone in the dark. We had no idea what people would think of it!Thinking about the roguelike elements, how did you implement randomization? What was most difficult to balance here?Our team has a huge range of skill levels when it comes to gaming. We balanced “easy” to Julian, “medium” to me, and “hard” to Jimp.The other nice thing about dungeon crawlers is that you don’t really need the randomization to be very balanced. It’s actually more fun when you have a run where you get lucky, and sometimes you get really unlucky. It’s that variety that makes it fun!Balancing was mostly focused on enemy and boss HP against the level of your character’s starting weapon. Then there was experimentation with faith and hunger levels.We also have a lot of things under the hood of the game that adjust to the player if you’re struggling. For example, if you’re low on health, you’re much more likely to find a heart in the grass or to loot one from a chest.During our Twitch stream at GDC, you and the team talked about how taking advantage of the cult members is central to the game. How did you ensure that your players would feel like they were making difficult yet impactful choices when managing the cult?That was a decision we made very early on, and it pervades the entire DNA of the game. Really, it was part of almost every design decision we made.One thing that took us a while to figure out was how to make sacrificing a follower feel valuable. You originally just got gold for it, but it never felt valuable enough, so we knew we needed to make it more tempting for a player. That’s why we changed it to an instant level-up. Suddenly we found players were sacrificing their followers all the time!Another idea that we had from almost the beginning was being able to consume a follower to bring yourself back to life. That was originally a core mechanic of the game, but we decided to bring it in a bit later instead. Making leveled-up followers give more hearts is a great example – the cult members you care about more, and have invested in more, we make more tempting to kill. Basically, anything you care about, we try to make it tempting for you to do something horrible to it.What are the most important things you learned during the making of Cult of the Lamb that will impact how you approach your next project?Pick a theme and then create three design pillars; that will be how you fulfill the promise that the theme creates. For example, if it’s a game about cults, then you need a sacrifice ritual – even if you don’t yet know how it will be used mechanically.Once you have those pillars, absolutely every design decision must directly feed back into them. You might come up with a really cool idea, but if it doesn’t support that pillar, then you have to scrap it or your game will become unfocused.Start with a concept – it’s X meets Y – don’t just make another metroidvania or Stardew Valley clone. Even if you do decide to make another metroidvania, do something to elevate it so that you’re offering something new and exciting. It will make things much easier to get your foot in the door with publishers, socials, and press. Plus, while it might be more demanding, it’s incredibly rewarding to challenge yourself.Cult of the Lamb is available now on Nintendo Switch™, PC, PlayStation®4, PlayStation®5, Xbox One, and Xbox Series X/S. Follow @MassiveMonsters on Twitter for updates and visit our Indie Innovation hub for more stories featuring Unity creators making waves in the games industry.Answers attributed to Jay Armstrong.Nintendo Switch is a registered trademark of Nintendo.]]></description><link>https://unity.com/blog/games/recipe-behind-smash-hit-cult-of-the-lamb</link><guid isPermaLink="true">https://unity.com/blog/games/recipe-behind-smash-hit-cult-of-the-lamb</guid><pubDate>Fri, 28 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The 5 steps to launching a hyper-casual game in 2022]]></title><description><![CDATA[At this year’s Mobidictum Business Conference, Lior Shekel, Director of Strategic Partnerships at ironSource, walked through 5 steps to launch a hit hyper-casual game today - including tips for marketability testing, soft launching, and global launching. Let’s dive in.Step 1: Run a marketability test on social networksThe first step to launching a hyper-casual game is running an initial marketability test on social media networks - this tells you its relative potential for success in the market. Facebook is typically the best place to start - it has a simple integration, it’s relatively fast and cheap to use, and offers a vast audience. Essentially, testing on Facebook gives you a general idea whether your game prototype matches your KPI goals.If test results on Facebook look promising, try marketability testing on other social networks like Google, Snapchat and TikTok. This will give you even broader confirmation that your game stands out among the competition.Step 2: Run a marketability test on SDK networksOnce initial KPIs are looking good, now it’s time to test on SDK networks. Why? SDK networks offer the biggest audience possible, and the biggest opportunity for your game to scale up during the global launch. Just because a game passes marketability on Facebook, doesn’t necessarily mean it will scale on an SDK network later on.To understand marketability on SDK networks, we look at eCPM, which is IPM multiplied by CPI. Like the chart shows, the campaigns that generate the highest eCPMs will be the ones to top the SDK networks’ data science ad serving models, winning the most impressions and scaling the fastest. Essentially, the higher the eCPM, the more the purchasing power your campaign has on the network.Step 3: Implement ad monetizationOnce your game’s KPIs look promising on both social media and SDK networks, you’re almost ready for launch. But first, you need to maximize your monetization opportunities through the game content itself. This includes adding more levels, A/B testing different placement and creative strategies, determining a basic game economy, and more.This way, before launch, you’re putting yourself in the best position to profit from your game, while ensuring your users have the most positive and exciting experience possible.Step 4: Run a soft launchNow it’s time to soft launch your game - releasing the product ahead of the scheduled launch is an opportunity to simulate real-world interactions. Since you’ve already tested your marketability, you can confidently soft launch on every ad network possible to increase your buying power.Some hyper-casual studios choose to initially soft launch on social networks, then later on SDKs - but we see that the most successful cases soft launch everywhere at once. Let’s dive into two different soft launch strategies.Going all inThe first strategy, the “all-in” launch, focuses on scaling up quickly to find the profitable and scalable sweet spot. It starts with a higher-than-average bid (we recommend around 20% higher), giving you a higher eCPM, as we mentioned earlier (remember CPI, or bid, is a factor of eCPM). By spending extra money, you’re increasing your eCPM - so you can scale quickly and top the charts, but your profit KPIs will drop as a result. To retain your revenue, we recommend capping this campaign at $500-1000 daily.Next, you lower your bid each day by no more than 10% - increasing the budget cap simultaneously. This process usually takes around 3 days, helping you reach your sweet spot when you can start granular bidding - carefully setting and adjusting different bids according to their source behavior. You should bid per source based on the quality that it’s generating for you, such as increasing bids in sources with a good ROAS.Staying conservativeConversely, a conservative launch is much more stable - but because it prioritizes profit, it scales much more slowly. With this strategy, you start with your target bid, which means your budget will likely be smaller, but will soon grow. At this stage, it’s crucial to prevent your game from reaching its budget cap - it harms the game’s positive trend and growth potential.To start granular bidding within 4-5 days, you should also be monitoring ROAS from day 1.Comparing four games that used one of these two strategies - every single one hit the top charts, with games using the “all-in” strategy staying there for a slightly longer time. Most importantly, despite the strategy, the games’ total revenue was virtually the same at the end of the day.Staying ahead of the curveNo matter which soft launch strategy you use, we recommend first launching in the US - it’s the biggest market offering the highest bids and eCPMs. From there, we recommend waiting 2-3 days before launching globally. To get maximum scale from your top sources, it’s best to optimize based on ROAS source bidding. Eventually, you can go on “auto-pilot” mode by turning on automated ROAS optimizer campaigns within each ad network - reducing workload for the whole team.As you global launch, keep these tips in mind:- Timing is everything - launch close to the weekend for longer retention and more playtime- Utilize your top-performing creatives and test new creatives - this improves IPM, which therefore boosts eCPM (eCPM = IPM x eCPI)- Call your users to action using different interactive and playable end cards to increase IPMStep 5: Automate and scale upCongrats! You’ve now global launched your game, new users are joining every day, and LTV is becoming much more accurate. Now is the best time to automate user acquisition, so you and your team can not only focus on acquiring the users, but also the game itself - and you can buy users much more efficiently.Not only does automation free your time, but it also uses highly accurate data - many ROAS optimizers today bid on an extremely granular level, for example per user and per ad request. This expands your reach because you can adjust your bids all the time, while your optimizer continues to optimize to scale and profit.By launching your hyper-casual game in a thoughtful way, you’re ensuring it’s on the best path for success - from the earliest marketability testing stages, all the way through post launch and automation.]]></description><link>https://unity.com/blog/5-steps-to-launching-a-hyper-casual-game-2022-lior-shekel</link><guid isPermaLink="true">https://unity.com/blog/5-steps-to-launching-a-hyper-casual-game-2022-lior-shekel</guid><pubDate>Tue, 25 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Advanced Editor scripting hacks to save you time, part 1]]></title><description><![CDATA[On most of the projects I’ve seen, there are a lot of tasks developers go through that are repetitive and error-prone, especially when it comes to integrating new art assets. For instance, setting up a character often involves dragging and dropping many asset references, checking checkboxes, and clicking buttons: Set the rig of the model to Humanoid, disable the sRGB of the SDF texture, set the normal maps as normal maps, and the UI textures as sprites. In other words, valuable time is spent and crucial steps can still be missed.In this two-part article, I’ll walk you through hacks that can help improve this workflow so that your next project runs smoother than your last. To further illustrate this, I’ve created a simple prototype – similar to an RTS – where the units of one team automatically attack enemy buildings and other units. With each scripting hack, I’ll improve one aspect of this process, whether that be the textures or models.Here’s what the prototype looks like:The main reason developers have to set up so many small details when importing assets is simple: Unity doesn’t know how you are going to use an asset, so it can’t know what the best settings for it are. If you want to automate some of these tasks, this is the first problem that needs to be addressed.The simplest way to find out what an asset is for and how it relates to others is by sticking to a specific naming convention and folder structure, such as:Naming convention: We can append things to the name of the asset itself, therefore Shield_BC.png is the base color while Shield_N.png is the normal map.Folder structure: Knight/Animations/Walk.fbx is clearly an animation, while Knight/Models/Knight.fbx is a model, even though they both share the same format (.fbx).The issue with this is that it only works well in one direction. So while you might already know what an asset is for when given its path, you can’t deduce its path if only given information on what the asset does. Being able to find an asset – for example, the material for a character – is useful when trying to automate the setup for some aspects of the assets. While this can be solved by using a rigid naming convention to ensure that the path is easy to deduce, it’s still susceptible to error. Even if you remember the convention, typos are common.An interesting approach to solve this is by using labels. You can use an Editor script that parses the paths of assets and assigns them labels accordingly. As the labels are automated, it’s possible to figure out the exact label that an asset will have. You can even look up assets by their label using AssetDatabase.FindAssets.If you want to automate this sequence, there is a class that can be very handy called the AssetPostprocessor. The AssetPostprocessor receives various messages when Unity imports assets. One of those is OnPostprocessAllAssets, a method that’s called whenever Unity finishes importing assets. It will give you all the paths to the imported assets, providing an opportunity to process those paths. You can write a simple method, like the following, to process them:In the case of the prototype, let’s focus on the list of imported assets – both to try and catch new assets, as well as moved assets. After all, as the path changes, we might want to update the labels.To create the labels, parse the path and look for relevant folders, prefixes, and suffixes of the name, as well as the extensions. Once you have generated the labels, combine them into a single string and set them to the asset.To assign the labels, load the asset using AssetDatabase.LoadAssetAtPath, then assign its labels with AssetDatabase.SetLabels.Remember, it’s important to only set labels if they have actually changed. Setting labels will trigger a reimport of the asset, so you don’t want this to happen unless it’s strictly necessary.If you check this, then the reimport won’t be an issue: Labels are set the first time you import an asset and saved in the .meta file, which means they’re also saved in your version control. A reimport will only be triggered if you rename or move your assets.With the above steps complete, all assets are automatically labeled, as in the example pictured below.Importing textures into a project usually involves tweaking the settings for each texture. Is it a regular texture? A normal map? A sprite? Is it linear or sRGB? If you want to change the settings of an asset importer, you can use the AssetPostprocessor once more.In this case, you’ll want to use the OnPreprocessTexture message, which is called right before importing a texture. This allows you to change the settings of the importer.When it comes to selecting the right settings for every texture, you need to verify what type of textures you’re working with – which is exactly why labels are key in the first step.With this information, you can write a simple TexturePreprocessor:It’s important to ensure that you only run this for textures that have the art label (our own textures). You’ll then get a reference to the importer so that you can set everything up – starting with the texture size.The AssetPostprocessor has a context property from which you can determine the target platform. As such, you can complete platform-specific changes, like setting the textures to a lower resolution for mobile:Next, check the label to see if the texture is a UI texture, and set it accordingly:For the rest of the textures, set the values to a default. It’s worth noting that Albedo is the only texture that will have sRGB enabled:Thanks to the above script, when you drag and drop the new textures into the Editor, they will automatically have the right settings in place.“Channel packing” refers to the combination of diverse textures into one by using the different channels. It is common and offers many advantages. For instance, the value of the Red channel is metallic and the value of the Green channel is its smoothness.However, combining all textures into one requires some extra work from the art team. If the packing needs to change for some reason (i.e., a change in the shader), the art team will have to redo all the textures that are used with that shader.As you can see, there’s room for improvement here. The approach that I like to use for channel packing is to create a special asset type where you set the “raw” textures and generate a channel-packed texture to use in your materials.First, I create a dummy file with a specific extension and then use a Scripted Importer that does all the heavy lifting when importing that asset. This is how it works:The importers can have parameters, such as the textures you need to combine.From the importer, you can set the textures as a dependency, which allows the dummy asset to be reimported every time one of the source textures changes. This lets you rebuild the generated textures accordingly.The importer has a version. If you need to change the way that textures are packed, you can modify the importer and bump the version. This will force a regeneration of all the packed textures in your project and everything will be packed in the new way, immediately.A nice side effect of generating things in an importer is that the generated assets only live in the Library folder, so it doesn’t fill up your version control.To implement this, create a ScriptableObject that will hold the created textures and serve as the result of the importer. In the example, I called this class TexturePack.With this created, you can begin by declaring the importer class and adding the ScriptedImporterAttribute to define the version and extension associated with the importer:In the importer, declare the fields you want to use. They will appear in the Inspector, just as MonoBehaviours and ScriptableObjects do:With the parameters ready, create new textures from the ones you have set as parameters. Note, however, that in the Preprocessor (from the previous section), we set isReadable to True to do this.In this prototype, you’ll notice two textures: the Albedo, which has the Albedo in the RGB and a mask for applying the player color in the Alpha, and the Mask texture, which includes the metallic in the Red channel and the smoothness in the Green channel.While this is perhaps outside the scope of this article, let’s look at how to combine the Albedo and the player mask as an example. First, check to see if the textures are set, and if they are, get their color data. Then set the textures as dependencies using AssetImportContext.DependsOnArtifact. As mentioned above, this will force the object to be recalculated if any of the textures end up changing.You also need to create a new texture. To do this, get the size from the TexturePreprocessor that you created in the previous section so that it follows the preset restrictions:Next, fill in all the data for the new texture. This could be massively optimized by using Jobs and Burst (but that would require an entire article on its own). Here we’ll use a simple loop:Set this data in the texture:Now, you can create the method for generating another texture in a very similar way. Once this is ready, create the main body of the importer. In this case, we’ll only create the ScriptableObject that holds the results, creates the textures, and sets the result of the importer through the AssetImportContext.When you write an importer, all of the assets generated must be registered using AssetImportContext.AddObjectToAsset so that they appear in the project window. Select a main asset using AssetImportContext.SetMainObject. This is what it looks like:The only thing left to do is to create the dummy assets. As these are custom, you can’t use the CreateAssetMenuattribute. You must make them manually instead.Using the MenuItem attribute, specify the full path to the create the asset menu, Assets/Create. To create the asset, use ProjectWindowUtil.CreateAssetWithContent, which generates a file with the content you’ve specified and allows the user to input a name for it. It looks like this:Finally, create the channel-packed textures.Most projects use custom shaders. Sometimes they’re used to add extra effects, like a dissolve effect to fade out defeated enemies, and other times, the shaders implement a custom art style, like toon shaders. Whatever the use case, Unity will create new materials with the default shader, and you will need to change it to use the custom shader.In this example, the shader used for units has two added features: the dissolve effect and the player color (red and blue in the video prototype). When implementing these in your project, you must ensure that all the buildings and units use the appropriate shader.To validate that an asset matches certain requirements – in this case, that it uses the right shader – there is another useful class: the AssetModificationProcessor. With AssetModificationProcessor.OnWillSaveAssets, in particular, you’ll be notified when Unity is about to write an asset to disk. This will give you the opportunity to check if the asset is correct and fix it before it’s saved.Additionally, you can “tell” Unity not to save the asset, which is effective for when the problem you detect cannot be fixed automatically. To accomplish this, create the OnWillSaveAssets method:To process the assets, check whether they are materials and if they have the right labels. If they match the code below, then you have the correct shader:What’s convenient here is that this code is also called when the asset is created, meaning the new material will have the correct shader.As a new feature in Unity 2022, we also have Material Variants. Material Variants are incredibly useful when creating materials for units. In fact, you can create a base material and derive the materials for each unit from there – overriding the relevant fields (like the textures) and inheriting the rest of the properties. This allows for solid defaults for our materials, which can be updated as needed.Importing animations is similar to importing textures. There are various settings that need to be established, and some of them can be automated.Unity imports the materials of all the FBX (.fbx) files by default. For animations, the materials you want to use will either be in the project or in the FBX of the mesh. The extra materials from the animation FBX appear every time you search for materials in the project, adding quite a bit of noise, so it’s worth disabling them.To set up the rig – that is, choosing between Humanoid and Generic, and in cases where we are using a carefully setup avatar, assigning it – apply the same approach that was applied to textures. But for animations, the message you’ll use is AssetPostprocessor.OnPreprocessModel. This will be called for all FBX files, so you need to discern animation FBX files from model FBX files.Thanks to the labels you set up earlier, this shouldn’t be too complicated. The method starts much like the one for textures:Next up, you’ll want to use the rig from the mesh FBX, so you need to find that asset. To locate the asset, use the labels once more. In the case of this prototype, animations have labels that end with “animation,” whereas meshes have labels that end with “model.” You can complete a simple replacement to get the label for your model. Once you have the label, find your asset using AssetDatabase.FindAssets with “l:label-name.”When accessing other assets, there’s something else to consider: It’s possible that, in the middle of the import process, the avatar has not yet been imported when this method is called. If this occurs, the LoadAssetAtPath will return null and you won’t be able to set the avatar. To work around this issue, set a dependency to the path of the avatar. The animation will be imported again once the avatar is imported, and you will be able to set it there.Putting all of this into code will look something like this:Now you can drag the animations into the right folder, and if your mesh is ready, each one will be set up automatically. But if there isn’t an avatar available when you import the animations, the project won’t be able to pick it up once it’s created. Instead, you’ll need to reimport the animation manually after creating it. This can be done by right-clicking the folder with the animations and selecting Reimport.You can see all of this in the sample video below.Using exactly the same ideas from the previous sections, you’ll want to set up the models you are going to use. In this case, employ AssetPostrocessor.OnPreprocessModel to set the importer settings for this model.For the prototype, I’ve set the importer to not generate materials (I will use the ones I’ve created in the project) and checked whether the model is a unit or a building (by verifying the label, as always). The units are set to generate an avatar, but the avatar creation for the buildings is disabled, as the buildings aren’t animated.For your project, you might want to set the materials and animators (and anything else you want to add) when importing the model. This way, the Prefab generated by the importer is ready for immediate use.To do this, use the AssetPostprocessor.OnPostprocessModel method. This method is called after a model is finished importing. It receives the Prefab that has been generated as a parameter, which lets us modify the Prefab however we want.For the prototype, I found the material and Animation Controller by matching the label, just as I located the avatar for the animations. With the Renderer and Animator in the Prefab, I set the material and the controller as in normal gameplay.You can then drop the model into your project and it will be ready to drop into any scene. Except we haven’t set any gameplay-related components, which I’ll address in the second part of this blog.With these advanced scripting tips, you’re just about game ready. Stay tuned for the next installment in this two-part Tech from the Trenches article, which will cover hacks for balancing game data and more.If you would like to discuss the article, or share your ideas after reading it, head on over to our Scripting forum. You can also connect with me on Twitter at @CaballolD.]]></description><link>https://unity.com/blog/engine-platform/advanced-editor-scripting-hacks-to-save-you-time-part-1</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/advanced-editor-scripting-hacks-to-save-you-time-part-1</guid><pubDate>Tue, 18 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[It’s here: The complete overview of Unity toolsets and workflows for technical artists]]></title><description><![CDATA[As longtime Unity creators know, we regularly share updates and feature improvements, alongside tips and best practices, across multiple channels: on our blog, in the forums, and at events. This open, multichannel dialogue is a central part of our community’s roots.Sometimes, however, it’s nice to have a complete overview, or inventory, of what’s available for your specific expertise or area of interest. That’s what our new e-book, Unity for technical artists: Key toolsets and workflows, aims to provide for experienced and technical artists alike. While the original version of the e-book was based on the 2020 LTS, this latest iteration reflects what’s available in 2021 LTS.The first of its kind, this new guide compiles detailed summaries of all Unity systems, features, and workflows for experienced technical artists. Use it as both a source of inspiration and a reference for accessing more advanced creator content to expand your skill set.Through compact yet visually rich sections, Unity for technical artists highlights the vast possibilities for graphical quality and breadth of style that you can realize with Unity.But inspiration is not our only goal here. Each section includes links to instructional, in-depth resources, so you can learn how to use the toolsets that are most important to you, your work, and career path.Based on feedback from individual creators and professional teams we’ve worked with, technical artists are expected to have a broad understanding of what’s possible to achieve on various target platforms with the Digital Content Creation (DCC) tools and game engine they’re using. In light of this knowledge, they inform the art director and other artists of any limitations and opportunities surrounding the target hardware.Many technical artists address their team’s most complex artistic needs, from character rigging to writing shaders, or proposing new workflows and creation tools to accelerate their processes. Overall, they play a critical role in ensuring that the visual quality of a game or other application meets the standard set by their team.Unity for technical artists spans a multitude of toolsets, pipelines, and workflows, reflecting this range of expertise required of technical artists.The e-book serves as a useful resource for users who want to expand their skills in Unity. Maybe you’re a programmer looking to specialize in graphics programming, a designer who wants to refine game content by scripting interactivity in Unity, or an artist learning to create shaders either through scripting or with the Shader Graph.Keep this e-book handy for onboarding new team members – those who have worked with Unity in a limited way previously, or those who’ve worked with a different engine entirely. This guide will help them pinpoint the Unity tools and related learning resources that can benefit their creative work.Let’s take a look at some of the major sections in the e-book.The chapters on assets cover topics such as building a non-destructive asset pipeline, importing assets, roundtripping with DCC tools, and the Asset Database.In this guide, we review the latest capabilities of the Universal Render Pipeline (URP) and the High Definition Render Pipeline (HDRP), as well as pointers on how to choose the best rendering path for your particular project. Other topics covered include dynamic resolution and upscaling methods.Additionally, we unpack the lighting workflows used to simulate Global Illumination (GI) with the Progressive, CPU, and GPU Lightmappers, as well as differences between Real-time GI, Ray-traced GI, and Enlighten.Unity provides a complete set of tools for building and designing rich and scalable 3D and 2D worlds. These chapters dive into key workflows for grey-boxing levels with ProBuilder and Polybrush, while showcasing the latest iteration of the Terrain sculpting tools, and sharing details on how to create sky, cloud, and fog visuals in URP and HDRP.Visual Scripting comprises visual, node-based graphs that non-programmers can use to design final logic and create quick prototypes. An introduction to Unity’s Visual Scripting system explains how you can use it to define game logic for your Unity projects without writing traditional code.An extensive appendix outlines the process of creating digital humans for the Unity demos The Heretic and Enemies. From data capture and processing to creating the skin, eyes, and hair visuals, this section discloses how such effects were achieved.There’s much more to discover in the e-book, including sections on the animation system, creating cutscenes and cinematics, and the 2D toolset.We hope that you enjoy this latest technical guide. We encourage you to share your feedback on the forum.For more advanced content, you can browse our recently published How-to hub, which gathers Unity e-books, instructional articles, documentation, and more, all in one place.]]></description><link>https://unity.com/blog/engine-platform/complete-overview-of-unity-toolsets-workflows-for-technical-artists</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/complete-overview-of-unity-toolsets-workflows-for-technical-artists</guid><pubDate>Mon, 17 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Level up your code with game programming patterns]]></title><description><![CDATA[If you have experience with object-oriented programming languages, then you’ve likely heard of the SOLID principles, MVP, singleton, factory, and observer patterns. Our new e-book highlights best practices for using these principles and patterns to create scalable game code architecture in your Unity project.For every software design issue you encounter, a thousand developers have been there before. Though you can’t always ask them directly for advice, you can learn from their decisions through design patterns.By implementing common, game programming design patterns in your Unity project, you can efficiently build and maintain a clean, organized, and readable codebase, which in turn, creates a solid foundation for scaling your game, development team, and business.In our community, we often hear that it can be intimidating to learn how to incorporate design patterns and principles, such as SOLID and KISS, into daily development. That’s why our free e-book, Level up your code with game programming patterns, explains well-known design patterns and shares practical examples for using them in your Unity project.Written by internal and external Unity experts, the e-book is a resource that can help expand your developer’s toolbox and accelerate your project’s success. Read on for a preview of what the guide entails.Design patterns are general solutions to common problems found in software engineering. These aren’t finished solutions you can copy and paste into your code, but extra tools that can help you build larger, scalable applications when used correctly.By integrating patterns consistently into your project, you can improve code readability and make your codebase cleaner. Design patterns not only reduce refactoring and the time spent testing, they speed up onboarding and development processes.However, every design pattern comes with tradeoffs, whether that means additional structures to maintain or more setup at the beginning. You’ll need to do a cost-benefit assessment to determine if the advantage justifies the extra work required. Of course, this assessment will vary based on your project.KISS stands for “keep it simple, stupid.” The aim of this principle is to avoid unnecessary complexity in a system, as simplicity helps drive greater levels of user acceptance and interaction.Note that “simple” does not equate to “easy.” Making something simple means making it focused. While you can create the same functionality without the patterns (and often more quickly), something fast and easy doesn’t necessarily result in something simple.If you’re unsure whether a pattern applies to your particular issue, you might hold off until it feels like a more natural fit. Don’t use a pattern because it’s new or novel to you. Use it when you need it.It’s in this spirit that the e-book was created. Keep the guide handy as a source of inspiration for new ways of organizing your code – not as a strict set of rules for you to follow.Now, let’s turn to some of the key software design principles.SOLID is a mnemonic acronym for five core fundamentals of software design. You can think of them as five basic rules to keep in mind while coding, to ensure that object-oriented designs remain flexible and maintainable.The SOLID principles were first introduced by Robert C. Martin in the paper, Design Principles and Design Patterns. First published in 2000, the principles described are still applicable today, and to C# scripting in Unity:Single responsibility states that each module, class, or function is responsible for one thing and encapsulates only that part of the logic.Open-closed states that classes must be open for extension but closed for modification; that means structuring your classes to create new behavior without modifying the original code.Liskov substitution states that derived classes must be substitutable for their base class when using inheritance.Interface segregation states that no client should be forced to depend on methods it does not use. Clients should only implement what they need.Dependency inversion states that high-level modules should not import anything directly from low-level modules. Both should depend on abstractions.In the e-book, we provide illustrated examples of each principle with clear explanations for using them in Unity. In some cases, adhering to SOLID can result in additional work up front. You may need to refactor some of your functionality into abstractions or interfaces, but there is often a payoff in long-term savings.The principles have dominated software design for nearly two decades at the enterprise level because they’re so well-suited to large applications that scale. If you’re unsure about how to use them, refer back to the KISS principle. Keep it simple, and don’t try to force the principles into your scripts just for the sake of doing so. Let them organically work themselves into place through necessity.If you’re interested in learning more, check out the SOLID presentation from Unite Austin 2017 by Dan Sagmiller of Productive Edge.What’s the difference between a design principle and a design pattern? One way to answer that question is to consider SOLID as a framework for, or a foundational approach to, writing object-oriented code. While design patterns are solutions or tools you can implement to avoid everyday software problems, remember that they’re not off-the-shelf recipes – or for that matter, algorithms with specific steps for achieving specific results.A design pattern can be thought of as a blueprint. It’s a general plan that leaves the actual construction up to you. For instance, two programs can follow the same pattern but involve very different code.When developers encounter the same problem in the wild, many of them will inevitably come up with similar solutions. Once a solution is repeated enough times, someone might “discover” a pattern and formally give it a name.Many of today’s software design patterns stem from the seminal work, Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. This book unpacks 23 such patterns identified in a variety of day-to-day applications.The original authors are often referred to as the “Gang of Four” (GoF),and you’ll also hear the original patterns dubbed the GoF patterns. While the examples cited are mostly in C++ (and Smalltalk), you can apply their ideas to any object-oriented language, such as C#.Since the Gang of Four originally published Design Patterns in 1994, developers have since established dozens more object-oriented patterns in a variety of fields, including game development.While you can work as a game programmer without studying design patterns, learning them will help you become a better developer. After all, design patterns are labeled as such because they’re common solutions to well-known problems.Software engineers rediscover them all the time in the normal course of development. You may have already implemented some of these patterns unwittingly.Train yourself to look for them. Doing this can help you:Learn object-oriented programming: Design patterns aren’t secrets buried in an esoteric StackOverflow post. They are common ways to overcome everyday hurdles in development. They can inform you of how many other developers have approached the same issue – remember, even if you’re not using patterns, someone else is.Talk to other developers: Patterns can serve as a shorthand when trying to communicate as a team. Mention the “command pattern” or “object pool” and experienced Unity developers will know what you’re trying to implement.Explore new frameworks:When you import a built-in package or something from the Asset Store, inevitably you’ll stumble onto one or more patterns discussed here. Recognizing design patterns will help you understand how a new framework operates, as well as the thought process involved in its creation.As indicated earlier, not all design patterns apply to every game application. Don’t go looking for them with Maslow’s hammer; otherwise, you might only find nails.Like any other tool, a design pattern’s usefulness depends on context. Each one provides a benefit in certain situations and also comes with its share of drawbacks. Every decision in software development comes with compromises.Are you generating a lot of GameObjects on the fly? Does it impact your performance? Can restructuring your code fix that? Be aware of these design patterns, and when the time is right, pull them from your gamedev bag of tricks to solve the problem at hand.In addition to the Gang of Four’s Design Patterns, Game Programming Patterns by Robert Nystrom is another standout resource, currently available for free as a web-based edition. The author details a variety of software patterns in a no-nonsense manner.In our new e-book, you can dive into the sections that explain common design patterns, such as factory, object pool, singleton, command, state, and observer patterns, plus the Model View Presenter (MVP), among others. Each section explains the pattern along with its pros and cons, and provides an example of how to implement it in Unity so you can optimize its usage in your project.Unity already implements several established gamedev patterns, saving you the trouble of writing them yourself. These include:Game loop: At the core of all games is an infinite loop that must function independently of clock speed, since the hardware that powers a game application can vary greatly. To account for computers of different speeds, game developers often need to use a fixed timestep (with a set frames-per-second) and a variable timestep where the engine measures how much time has passed since the previous frame.

Unity takes care of this, so you don’t have to implement it yourself. You only need to manage gameplay using MonoBehaviour methods like Update, LateUpdate, and FixedUpdate.
Update: In your game application, you’ll often update each object’s behavior one frame at a time. While you can manually recreate this in Unity, the MonoBehaviour class does this automatically. Use the appropriate Update, LateUpdate, or FixedUpdate methods to modify your GameObjects and components to one tick of the game clock.Prototype: Often you need to copy objects without affecting the original. This creational pattern solves the problem of duplicating and cloning an object to make other objects similar to itself. This way you avoid defining a separate class to spawn every type of object in your game.

Unity’s Prefab system implements a form of prototyping for GameObjects. This allows you to duplicate a template object complete with its components. Override specific properties to create Prefab Variants or nest Prefabs inside other Prefabs to create hierarchies. Use a special Prefab editing mode to edit Prefabs in isolation or in context.
Component:Most people working in Unity know this pattern. Instead of creating large classes with multiple responsibilities, build smaller components that each do one thing.

If you use composition to pick and choose components, you can combine them for complex behavior. Add Rigidbody and Collider components for physics, or a MeshFilter and MeshRenderer for 3D geometry. Each GameObject is only as rich and unique as its collection of components.Both the e-book and a sample project on the use of design patterns are available now to download for free. Review the examples and decide which design pattern best suits your project. As you gain experience with them, you’ll recognize how and when they can enhance your development process. As always, we encourage you to visit the forum thread and let us know what you think of the e-book and sample.]]></description><link>https://unity.com/blog/games/level-up-your-code-with-game-programming-patterns</link><guid isPermaLink="true">https://unity.com/blog/games/level-up-your-code-with-game-programming-patterns</guid><pubDate>Thu, 13 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 ways to level up your game development skills]]></title><description><![CDATA[Are you looking to improve your gamedev skills? You’ve come to the right place. Below, we’ve curated a selection of courses and projects that are popular with our developer community and guide you through engaging, gamified learning experiences. Read on to discover five ways to reach new heights with your next project, no matter your skill level.This course is an exciting learning experience for intermediate creators, guiding you through the creation of your own game while emphasizing an inclusive design process focused on accessibility. We created Out of Circulation – a vertical slice of a point-and-click adventure game – as a case study, and we’ll explore how it came together as you work through the course tutorials.Take the course.This Unity Learn project is the second part of Introduction to Visual Scripting, so complete that first if you haven’t already! Here, you’ll develop several visual scripts to add a new level to Clive the Cat, a Sokoban-style game that follows the titular cat as he navigates a maze-like crypt in search of his food dish. Along the way, you’ll learn intermediate and advanced techniques in visual scripting, including super units, events, and State Machines.Start the project.In the John Lemon’s Haunted Jaunt project, you’ll discover how to create a stealth game as you work through 10 tutorials that explain the principles behind every step. This project is a great way for beginners to gain confidence in the Unity Editor and learn the foundations of game design.Start the project.This intermediate course on Unity Learn guides you through the essentials of C# scripting. Skills you’ll learn along the way include application scripting, programming theory, and code optimization, all of which will allow you to take your creativity to the next level.Take the course.If you understand the Unity basics and want to try out VR development, the VR Beginner: The Escape Room project gives you the opportunity to explore and create simple immersive experiences supported by the XR interaction Toolkit package.Take the project.Looking for more ways to boost your gamedev know-how? Check out the full Unity Learn catalog and keep your eyes peeled for future courses offering guidance on new skills.]]></description><link>https://unity.com/archive/blog/games/level-up-your-game-development-skills</link><guid isPermaLink="true">https://unity.com/archive/blog/games/level-up-your-game-development-skills</guid><pubDate>Thu, 06 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Learn, connect, and celebrate at the Unity for Humanity Summit]]></title><description><![CDATA[The Unity for Humanity Summit is back for its third year on Wednesday, November 2, 2022. Join us for a virtual celebration of real-time 3D creators using Unity to change the world – registration is free and open to all.This year’s Summit includes an inspiring keynote conversation with actor and activist Rosario Dawson, who will discuss her sustainable fashion and nonprofit work, why positivity breeds innovation, and how technology can bring us all together around the virtual fire.In addition, you can attend a wealth of sessions led by artists, game developers, educators, nonprofit leaders, activists, and other changemakers across the core themes of sustainability, education, health and wellbeing, and inclusivity. Here are just a few of the exciting sessions on the agenda:Players first: Accessibility insights for creators features Dave Evans, Jazmin Cano, and Lukáš Hosnedl in a conversation about prioritizing accessibility in game development and the future of accessible gaming.From imagining to creating better worlds in RT3D brings together visionary creators Binh Minh Herbst, Katerina Cizek, Kathryn Evans, and Tony Patrick to discuss the process of translating ambitious visions into real-world action and impact.Create with AR Live and Unity Essentials Live showcase hands-on tools and resources for getting started in Unity and developing mobile AR experiences, led by Unity Learn team members Joy Horvath and Thomas Winkley.Activate your players: Nudging sustainable behavior and driving engagement provides insight into how game developers Hunter Bulkeley, Sheila Ndungu, Jude Ower, Galina Fedulova, and Jens Isensee are driving sustainability and empowering players to protect the planet through their games.Leveraging digital twins for sustainability in the built environment spotlights how organizations across the nonprofit, public, and private sectors are using real-time 3D for positive impact, hosted by Dr. Max Mallia-Parfitt, Dr. Sarah Whateley, and Ursula Smolka.Crafting Heroes: Students building the future using HoloLens 2 with Deidre LaCour and Sean Wybrant takes you straight into the inspiring XR work students are creating.Check out the full schedule and register now.Conversations with Creators are unique opportunities to meet fellow creators, ask them your burning questions, and immerse yourself in their stories, projects, and practical advice. Topics for these live Q&A sessions include:Addressing the youth mental health crisis with Cleo Barnett, co-creative director of AmplifierImmersive storytelling and impact with Gone to Water team Cat Ross and Marin VeselyThe world of immersive theater with Ferryman Collective cofounders Deirdre V. Lyons and Stephen ButchkoUnity for Humanity technical support Q&A with Andy Ellis, software development consulting manager at UnityDigital health and wellbeing with Gabriel G. Torres, creator of Haus of DustAR-tivism with Damien McDuffie, creator of Black TerminusPersonal storytelling for impact with Ondřej Moravec, Hana Blaha Šilarová, and Robin Pultera of DarkeningApplications for the Unity for Humanity 2023 Grant will open during the Summit, and we’ll be sharing tips for applying for the $500,000 available to bring your real-time 3D projects to life. Be sure to tune into the Unity for Humanity Grant Q&A session during the Summit to ask our program leads all of your questions, and sign up for the Social Impact mailing list to be notified of future grant announcements.Register now and join us at the Unity for Humanity Summit on November 2 to connect with social impact creators from across the globe and be part of the movement working towards a more equitable, inclusive, and sustainable world.]]></description><link>https://unity.com/blog/news/learn-connect-and-celebrate-at-the-unity-for-humanity-summit</link><guid isPermaLink="true">https://unity.com/blog/news/learn-connect-and-celebrate-at-the-unity-for-humanity-summit</guid><pubDate>Mon, 03 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Metaverse Minute: 4 sales and marketing trends you can jump on now]]></title><description><![CDATA[With each evolution of communication, marketing and sales tactics have changed. The rise of print media gave us print ads, radio gave us radio ads, and this trend continued with television, podcasts, etc. So what does this mean for the metaverse? Think immersive, interactive, and customizable. In this edition of the Metaverse Minute, we break down some applications of Unity that could be a window into the future of marketing and sales techniques. Let’s see if we can sell you on them.The challenge of convincing customers to buy increases with price, making big ticket items a harder sell. For this reason, we see experiential metaverse technologies empowering luxury items and travel to sell themselves.If the price is $450,000, it had better be a good pitch! This is one of the reasons Virgin Galactic hired global innovation company Seymourpowell to design the world’s first commercial spaceship.Since design and development of the spaceship took place during the pandemic, virtual reality was critical to the project. A digital twin of the cabin was created so prototyping and production of the spaceship could stay on schedule.The usage of the digital twin didn’t end there. As Virgin Galactic began prepping for their marketing campaign they realized the best way to sell seats was to let people sit in them. The team from Seymourpowell converted the digital twin into an experience, and this sales tactic did not disappoint.Cars aren’t something that people typically buy more than one of, and once purchased they’re used for a long time before being replaced. This makes building a personal connection with customers a priority for automotive manufacturers. Visionaries 777 Ltd. created an experience for INFINITI that did just that.Customers start at an iPad station where they answer a set of personality questions and create a photo-based avatar of themselves. After choosing a setting, their avatars were placed next to a configured car that was best suited to their personality. Users picture themselves in their future car with a 360º camera, snapping a selfie.As a kid did you imagine your “dream house?” Remember how fun it was to try and visualize the space? Ordering kitchen cabinets and furniture as an adult is much more complicated. Taking the right measurements and working around physical boundaries adds a nice dose of reality to what you once thought of as a fun game of imagination. Virtual technologies have the potential to recapture the childhood experience of limitless creativity for homeowners once again. For this reason, we love what Volumiq and VOXBOX are doing.Imagine making that dream house plan once again and then converting it to a 3D blueprint with color and texture. Utopiq is working to make this possible. The team wants to simplify the process of home renovations into deciding on a shopping list, visualizing in 3D, and then placing your order.The VOX brand has created their own solution for the products their sales teams are using in their showrooms. Customers are bringing their home to the store. This makes recommending design decisions and products much easier and creates a compelling reason for purchases.Games offer a different, and sometimes more compelling, way for brands to build loyalty. Rather than being static, games offer an interactive way for marketers to engage with customers and give them an experience that sticks with them.This unique experience put together by Groove Jones demonstrates the power of Medtronic’s GI Genius™ and PillCam™ systems. The GI Genius™ intelligent endoscopy module is the first-to-market, computer-aided polyp detection system powered by artificial intelligence (AI). The PillCam™ COLON capsule endoscopy system enables direct visualization of the colon with a noninvasive capsule endoscopy procedure, supporting early detection of polyps. This game educates potential customers how AI-powered systems can improve the early detection of precancerous polyps along the lower digestive tract.In an era where anyone can order anything online, what differentiates one brand from another? Online shopping has put immense pressure on retailers to develop a competitive edge. This is why Mitchell Harvey of Deckers told us his team turned to real-time 3D for product rendering. “There are no limitations to what you can explore to communicate your brand and offer an unforgettable experience to your consumer.”The team from Smartpixels found the same thing when Church’s reached out to them to create a configurator for the 75th anniversary of their Consul shoe. If a product looks photorealistic online, you’re way more likely to buy it. If you’re able to customize a product to your tastes, that increases the likelihood of purchase even further. This held true as real-time 3D and photorealistic rendering allowed Church’s to make 35% more per purchase.Are you using Unity for sales and marketing?If you’re using Unity to get people excited about your products, give us a shout on Twitter.Follow Unity for Digital Twins on Twitter, LinkedIn, and Instagram. For more details on Unity for Digital Twins check out our recent demo or our new kickstarter package]]></description><link>https://unity.com/blog/industry/metaverse-minute-4-sales-and-marketing-trends-you-can-jump-on-now</link><guid isPermaLink="true">https://unity.com/blog/industry/metaverse-minute-4-sales-and-marketing-trends-you-can-jump-on-now</guid><pubDate>Fri, 30 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Announcing the Higher Ed XR Innovation Grant recipients]]></title><description><![CDATA[The demand for extended reality (XR) talent is increasing rapidly, opening countless new doors for the next generation of metaverse creators. To adequately prepare tomorrow’s real-time 3D workforce, educators and schools need to be teaching these desirable skill sets to their students today. In pursuit of this goal, Unity Social Impact and Meta Immersive Learning have partnered to increase access to AR/VR hardware, high-quality educational content, and other resources that will help educators create or enhance innovative XR programs.The Higher Ed XR Innovation Grant is one of the core components of this partnership, providing over $1 million in awards to higher-education institutions leveraging real-time 3D and immersive technology to make advances in teaching and learning, XR creation, and workforce development.Grantees were selected based on their proposals’ attention to inclusion, impact, viability, and innovation. Special consideration was given to institutions and programs that cater to or design innovative educational content for underserved learners.Today, we’re thrilled to introduce the eight recipients of the Higher Ed XR Innovation Grant. A team of over 60 judges from Unity and Meta selected the winners from among 276 submissions.“Now, more than ever, we have a responsibility to equip young people with the skills necessary for future jobs – providing them with learning that translates to earning,” says Jessica Lindl, vice president of social impact at Unity. “I’m thrilled with the winners of the Higher Ed XR Innovation Grant and am confident that these institutions will continue to provide equitable access to education and workforce opportunities.”Read on to learn how these forward-thinking projects are increasing access to quality real-time 3D education.Arizona State University’s Center for Narrative and Emerging Media (NEM) in Los Angeles will open as a best-in-class teaching and research facility, focused on diversifying who can create and distribute narratives using emerging media technologies in the areas of arts, culture, and nonfiction.NEM will train and support storytellers, artists, journalists, entrepreneurs, and engineers who will build the stories, technologies, and policies of the future. This fall, ASU launched their flagship MA Narrative and Emerging Media program, a collaborative effort between the Herberger Institute for Design and the Arts and the Walter Cronkite School of Journalism and Mass Communication centered around the development of a creative practice and critical understanding of emerging storytelling and immersive content creation. Funding from the Higher Ed XR Innovation Grant will support student production, virtual production, staff training, and research.Country: United States of AmericaThe vision of California Community Colleges is to ensure students from all backgrounds succeed in reaching their education and career goals, with emphasis on improving families’ incomes and communities’ workforces. To achieve this, California Community Colleges aim to provide educational programs that highlight inclusivity, diversity, and equity while minimizing logistical and financial barriers to success.Cañada College will partner with various employers and California Community College districts to enhance XR apprenticeship programs, K–14 curriculum development, and XR job training programs designed for dislocated workers, workforce board clients, and underemployed individuals. Funds from the Higher Ed XR Innovation Grant will aid Cañada College in designing and sharing workforce readiness models for county education offices, community colleges and universities, and workforce training entities in California and throughout the U.S.Country: United States of AmericaThe Clarkson University Psychology Department plans to use their grant funding to develop a novel instructional tool that leverages both VR for accurate neuroanatomical renderings and modern pedagogical principles (such as social interaction and embodiment) to build an innovative and engaging neuroscience learning experience.By using this tool to enhance their psychology program’s neuroscience instruction and open-sourcing the tool for use at other institutions, Clarkson University hopes to positively impact psychology students – especially those from underrepresented backgrounds. And, since student training is integrated throughout the project, the development process will involve students from multiple departments, providing them with opportunities to work in VR, engage in usability testing, and learn about neuroscience.Country: United States of AmericaThe LED (Digital Experience Lab) at the Federal University of Ceará (UFC) Department of Architecture, Urbanism and Design (DAUD) aims to be a place for students and professors to explore new digital technologies and develop innovative solutions for real-world problems.The LED plans to use their Higher Ed XR Innovation Grant funding to outfit eight digital studios with hardware for running prototyping experiments in virtual environments. They’ll also acquire peripherals for interacting with AR and MR experiences, including projectors for SAR (spatial AR), Kinect sensors, and motion trackers, with the goal of exploring ways that XR technology can improve design education and project solutions. Finally, their team will drive development of LEDed, a free platform for sharing educational content and experiences in XR within the department’s community and beyond.Country: BrazilNorQuest College is Alberta’s largest community college, serving more than 21,000 students annually. Housed within the Research Office at NorQuest College, Autism CanTech! (ACT!)’s vision is to remove barriers that hinder meaningful and sustainable employment within the digital economy for individuals on the Autism spectrum.Through job-specific training in technical skills, employability skills, career coaching, and Work Integrated Learning (WIL) opportunities, ACT! works to fill industry gaps. ACT! also offers participants additional support through new assistive technology which allows users, career coaches, and supervisors to manage tasks, schedule work-related activities, and live chat. Funds from the Higher Ed XR Innovation Grant will support the development of a road map and team to adapt educator resources and XR courses for a neurodiverse audience.Country: CanadaEthọ́s Lab is a Black-led, nonprofit innovation academy for teens based in Vancouver, British Columbia, and accessible from anywhere in the world. To build toward a more inclusive future, Ethọ́s Lab takes a holistic, community-based approach to teaching S.T.E.A.M. that is partnered and has a long-term vision. The organization provides pathways to applied learning, mentorship, and access to emerging tech through weekly collaborative workshops, creative projects, and events. As participants, youth develop core skills for post-secondary admissions, future careers, and being the leaders of innovation.Centre for Digital Media (CDM) was established in 2007 through a ground-breaking partnership between the University of British Columbia, Simon Fraser University, British Columbia Institute of Technology, and Emily Carr University of Art + Design. Anchored by the flagship, multidisciplinary Master of Digital Media program, CDM is a mixed-use campus, home to Canada’s first Metastage studio as well as game studios and innovative startups in the healthcare and cloud-computing sectors.With the support of the Higher Ed XR Innovation Grant, Ethọ́s Lab and CDM aim to increase the representation of Black youth and girls in XR-based digital futures through development of an XR Media Lab program. The funding will enable the program to serve 300+ underrepresented youth and 190+ high school educators over five years.Country: CanadaUniversidad de los Andes was founded in 1948 as an autonomous and innovative institution pursuing pluralism, tolerance, and respect. It strives to raise consciousness about students’ social and civic responsibilities as well as their relationship to and stewardship of the environment.The XR Incubator Program (named “Vivero Virtual” in Spanish) is a two-year program focused on both workforce development and education innovation in XR. With Higher Ed XR Innovation Grant funding, Universidad de los Andes will launch three Massive, Open Online Courses (MOOCs) in Spanish to promote learning throughout Ibero-America. Funds will also help implement a week-long XR Camp offering Colombian educators access to a variety of XR technologies, and an XR Mobile Lab that will allow those educators to show XR technologies to the public at their own institutions.Country: ColombiaThe University of Johannesburg (UJ) and the Swiss Distance University of Applied Sciences (FFHS) aspire to design an innovative, immersive tool that addresses challenges faced by teachers in underrepresented communities. With Higher Ed XR Innovation Grant funding, their multinational team will develop and test a VR prototype for pre-service teachers (student teachers working towards their teacher certification) in South Africa.The tool will allow future teachers to have authentic teaching experiences in a safe environment, aided by learning analytics that provide opportunities to reflect on their lesson delivery and prepare them for actual teaching. The University also intends the tool to help mitigate language barriers for students whose first language is not English. Broadly, the project will empower pre-service teachers to be agents in transforming science teaching, leveraging the potential of immersive technologies and preparing students from marginalized communities with 21st-century digital skills.Country: South AfricaOn behalf of Unity Social Impact and Meta Immersive Learning, congratulations to all of our grant recipients and thank you to everyone who applied for the Higher Ed XR Innovation Grant. Learn more about educator resources and tools for propelling real-time 3D in the classroom and Meta’s $150 million investment to transform the way we learn through Meta Immersive Learning.]]></description><link>https://unity.com/blog/news/announcing-the-higher-ed-xr-innovation-grant-recipients</link><guid isPermaLink="true">https://unity.com/blog/news/announcing-the-higher-ed-xr-innovation-grant-recipients</guid><pubDate>Thu, 29 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Games Focus: Profiling and performance optimization]]></title><description><![CDATA[This is the third blog in our Games Focus series, which highlights key product development initiatives for the year ahead and beyond. Here, we cover the status, upcoming release plans, and future vision for profiling and performance at Unity.My name is Marika. I’ve worked in the video game industry for nearly a decade, and I’m currently the senior technical product manager for profiling tools and performance optimization at Unity.When we think about performance at Unity, there are three main areas where we believe we can help:Insight: Empowering you to dig into your game’s performance, identify bottlenecks, and pinpoint areas that would benefit from optimization strategiesExperience: Ensuring that creating your projects feels seamless by raising the performance of the Unity Editor and runtimeInnovation: Guiding you in new programming techniques and paradigms that have performance in mind from the ground upToday’s post focuses on the first two areas, covering recent updates to our suite of profiling tools and how customer feedback is shaping our roadmap for 2023 and beyond. It ends with a recap on best practices for optimizing projects.We’ll dive into the third area, performance-focused programming techniques and workflows with a focus on DOTS-based projects, in an upcoming post.We like to think of the profiling features in Unity as detective tools that help you unravel the mysteries of why performance in your application is slow or glitchy, or why code is allocating excess memory. They help you understand what’s going on under the hood of the Unity game engine.Our goal is to raise the performance of Unity tools and runtime through profiling and optimization, helping you to deliver smooth performance for your players across a broad range of platforms and devices.Memory Profiler is designed to make it easier to keep track of memory usage and composition. I’m happy to share that the Memory Profiler 1.0.0 is now a verified package for the Unity 2022.2 beta release and above (find instructions for download here). Thank you to everyone who shared their invaluable feedback on how to create a better workflow for this important feature.Many of you contend with the challenge of working within the memory restrictions of each of your target platforms. The Memory Profiler helps solve this challenge by providing you with a clear overview of the memory impact of assets and objects in one view. It also shows you detailed contextual information on which objects and systems the memory relates to.You can dig deeper into the capture through breakdown views and compare memory snapshots to identify potential leaks and unnecessary allocations that negatively impact memory usage.Refining the existing profiling toolsetIn 2022.1, we added the Frame Timing Manager, which enables you to capture and access frame timing data across multiple frames. If performance is lagging, use this feature to assess frames and analyze why your application isn’t meeting performance targets. Learn more about this in our documentation.If you’re looking to monitor low-level GPU metrics in the Unity Profiler, you can use the new System Metrics Mali package, which we released in 2022.1 through a partnership with Arm. This package allows you to access low-level system or hardware metrics on mobile devices. If you’re curious to learn more about how to ensure your content runs smoothly on mobile devices powered by Arm CPUs and Mali GPUs, this 2021 blog can guide you.Performance optimizationThe profiling tools highlighted so far are a great start to helping you identify areas where performance can be improved. On my team, however, “performance optimization” applies not only to your games’ runtime performance on their target devices, but also to how your team works – your productivity. We’re aiming to provide you with faster iteration times, fewer interruptions, and greater efficiency in the Editor.In Unity 2021 LTS, importing your assets is three to four times faster, and opening imported projects up to 8.7% faster compared to Unity 2020 LTS.I’m excited to share some of the improvements that are available in the 2022 releases as well:Improved material reimport for the Universal Render Pipeline and High Definition Render PipelineEditor workflow improvements, including:   Faster save time for large scenesReduced stall time in scene pickingImproved performance in the Scene view when there are many LOD GroupsAn optimized animation rigging packageBetter Hierarchy scrollingImproved save workflow for large PrefabsImproved iteration time when working inside the Editor thru optimizations on domain reloadsPlay mode improvements, including: Improved static batching performanceOptimized process for how Addressables finds resource directoriesPrewarming particle systemsAgain, your feedback has played a vital role in many of these improvements. Please continue sharing your feedback on our future roadmap here, or contact the team on the forums. We’re particularly interested in performance-related issues, which we’re capturing here.For over a decade, we’ve stayed focused on ensuring that you can achieve the best performance possible using our profiling tools, and we will continue refining the toolset. This development has taken many forms, including all of the functionality we’ve already mentioned here.Another area where we’ve worked to provide significant performance gains is the Data-Oriented Technology Stack, or DOTS. Two of the core features integral to the successful delivery of DOTS are the Burst compiler and C# Job System. These were leveraged in our own internal engine performance to great results, and they’re available for all today. Coming soon, we’ll deliver on the third critical feature, Entities, which will turbo boost project performance in areas like networking, physics, and more. This is such an important aspect to our commitment to game development that we will dedicate a standalone Games Focus article to DOTS in this series, coming soon.For now, let’s take a look at a few improvements planned for upcoming releases.We’re working to cut time spent starting the Editor, to improve start-up time and help you stay in flow. Today, when you connect a target device to the Editor, you might experience instability such as disconnection or an inability to recover. We’re working on making Editor connections to mobile platforms more reliable and performant in the 2023.1 release.Additionally, we want to make it more efficient for you to identify bottlenecks with the Profiler and to know what to do next once you’ve spotted them. Our goal is to quickly direct you to the areas of optimization that will yield the greatest performance gains.We’re also looking to add memory insights based on the device you’re building for, so you can get platform-specific performance gains. This is in the early stages, and we’re actively looking for your feedback on this new feature, which you can provide on our roadmap page.Expertise with Unity’s suite of profiling tools is one of the most useful skills you can add to your game development toolbox. That’s why we’re working on creating more advanced content about best practices to help you get the most out of our tools.Several of my teammates recently put together our most extensive guide to date about profiling in Unity, in partnership with expert engineers from the Unity Integrated Success team and experts.I also suggest you download these additional advanced e-books that offer extensive platform-specific optimization best practices:Optimize your mobile game performanceOptimize your console and PC game performanceAnother handy reference is this flowchart, which provides a recommended approach to identifying bottlenecks in your project.Finally, this Profiling and optimization reading list, created by our content and marketing teams, includes key blog posts that will help you understand profiling concepts and methods, from basic to advanced.My team is working hard to bring you the solutions you need for your most ambitious projects, and we’re always eager to understand how we can help you better.Stay tuned to updates in our public roadmap page. This is also the best place for you to share feedback directly with the product team.Watch the blog for our next Games Focus update, which will focus on what Unity is doing to help you target more platforms and form factors with your game content. And, as always, share your feedback with us on the forums.]]></description><link>https://unity.com/blog/engine-platform/games-focus-profiling-and-performance-optimization</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/games-focus-profiling-and-performance-optimization</guid><pubDate>Wed, 28 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 things multiplayer gamers want in 2022 and beyond]]></title><description><![CDATA[Unity surveyed over 1,400 multiplayer gamers in the US, UK, Japan, and Korea to find out what multiplayer gamers want from their experiences so you can get a head start on planning your next project.Developing multiplayer games can require more up-front work to get running – like specialized expertise, ongoing service, and up-front capital and maintenance costs.In that sense, multiplayer game development is more of an investment than single player game creation – so you need to design the player experience right in order to find success.But what’s most important to multiplayer gamers? We surveyed players across the globe to find out.In each country (US, UK, Japan, Korea), we focused on two categories of multiplayer gamers: Casual and core.Casual gamers: Those who spend at least two hours gaming per week, of which at least 30 minutes is playing multiplayerCore gamers: Those who spend at least four hours playing multiplayer games in any combination of the following traditionally multiplayer genres: Shooter (battle royale, FPS, third person shooter), MOBA, MMO, racing, sports, or fightingWe collected responses from approximately 1,400 gamers, split about 50/50 between the core and casual groups. Here’s what we found.One thing we found is that demand for multiplayer games is massive, and people around the world are playing a lot of multiplayer titles without walled gardens. More than half the global population (52%) play games, and of those gamers, 77% play multiplayer games.Additionally, crossplay is a powerful tool that is helping fuel deeper engagement with multiplayer gaming – with those who spend the most time playing cross-play titles also being the ones spending the most time playing multiplayer games.Features that make playing with others easier are significant factors when gamers are choosing a new multiplayer title to invest their time in, and also impact enjoyment of games they’re actively playing.Players want to easily connect with their friends through shared gaming experiences. When choosing a new multiplayer game, the most important in-game feature is the ability to chat with friends.When it comes to how they like to chat, 52% of respondents prefer creating chat parties with menus inside of their games, while 25% most prefer using a separate device/software solution, and only 15% of respondents preferred using a separate device.This indicates that investing in a smart in-game player comms solution is a good move for your multiplayer titles.Also ranking highly in must-have features for a multiplayer game is a short wait to join a match, with 29% of gamers ranking this in their top three.Tip 💡 Invest in social features – like friends lists, parties, and in-game comms – for your multiplayer title to give reasons a player to choose your game and build a community within it.Most multiplayer gamers stay engaged with games post launch and will spend on content to keep their experiences fresh, with over half of multiplayer gamers (61%) reported having purchased some amount of multiplayer game DLC content in the last thirty days.When it comes to the breakdown between core and casual gamers, there are a few key differences in how they spend on extra content.Core gamers are almost twice as likely to spend 20 or more USD/GBP on DLC and casual gamers are slightly more likely to spend in the sub-20 USD/GBP band for their extra content.Tip 💡 Keep fresh content and experiences rolling into your game updates to increase the longevity of your game and keep your players coming back for more. They’re willing to pay if you’re willing to provide.Casual gamers aren’t relegated to specific genres like card and puzzle games. Aside from FPS, fighting, and sports – where more core gamers report having played a title within the last week – there’s a relatively even split of core and casual gamers enjoying games in every genre.In fact, on average, across all genres, there’s a less than 10 percentage point difference between core and casual gamers who have played a title within the genre in the last week.For example, 51% of core gamers played a role-playing game in the last week, versus 46% of casual gamers.As mentioned, FPS, fighting, and sports titles have the biggest difference in popularity with core and casual audiences, with a 23, 16, and 16 percent difference between the audiences respectively.Card games have the most even split of casual versus core gamers (43% vs 44%), with racing, simulation, puzzle, and RPGs tied for second place.Tip 💡 Don’t let your planned genre box you into thinking you’ll only reach a certain audience. Knowing that there are people out there for all kinds of games, across core and casual gamers, might just open up the opportunity for you to build your dream game for an audience you hadn’t yet considered.Dive deeper into the full findings of our 2022 multiplayer report by downloading the PDF.Starting on a new multiplayer game project? Get everything you need to create your game, connect your players, and empower communication from our Multiplayer suite of products.Unity is looking to equip studios of all sizes with both the knowledge and tools needed to deliver on these experiences for years to come. Get involved with us and the community by heading over to our Unity Gaming Services forum.]]></description><link>https://unity.com/blog/games/4-things-multiplayer-gamers-want-2022</link><guid isPermaLink="true">https://unity.com/blog/games/4-things-multiplayer-gamers-want-2022</guid><pubDate>Tue, 27 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 common lightmapping problems and tips to help you fix them]]></title><description><![CDATA[I recently developed a guide to Progressive Lightmapper troubleshooting in order to help developers get the most out of Baked Global Illumination (GI) in the Unity Editor. Here, I unpack five of the most common lightmapping problems and their solutions, supported by images and links to pages in the Unity Manual. For the full guide, visit the forums.If certain prerequisites are not met, the Progressive Lightmapper might fail to generate lighting in your scene. These conditions include, but are not limited to:No objects marked as GI ContributorsNo baked lights in the sceneShader issuesTo correct this, I recommend trying one of the fixes laid out below.Mark objects you want to lightmap as GI Contributors by following these steps:Select your GameObject.Navigate to the Mesh Renderer component.Unfold the Lighting header.Check the Contribute to Global Illumination checkbox.Doing so will enable the Receive Global Illumination parameter underneath. It contains two options:Lightmaps: Meant for static lightmapped objects – GameObject will receive and contribute GI to lightmaps.Light Probes: Meant for small props and objects not fit for lightmapping – GameObject will receive GI from Light Probes and will contribute GI to the surrounding lightmaps.Only Mixed and Baked lights can contribute to Baked GI. Select lights in your scene, then set the Mode to either Mixed or Baked in the Light component. Other properties that are worth checking include:Color: Dark colors will have low or no GI contribution. Choose bright colors for lights and use the Intensity property to boost or dim them.Intensity: The higher the intensity, the brighter the light. Ensure that your lights are bright enough for meaningful GI contribution.Indirect Multiplier: This property controls the intensity of the indirect bounce. Make sure that it is not set to zero. Otherwise, the light will have no contribution to GI at all. Note that setting this value above one will make the lighting in your scene non-compliant to the physically based rendering (PBR) standard.Visit No Baked Global Illumination in the scene forum 

In the Lighting window (accessible via Window > Rendering > Lighting), make sure that the Lighting Settings Asset field is not left blank. If there is no asset assigned, click on the New Lighting Settings button. This will create and assign an asset, unlocking the properties in the window for editing.Once this is complete, verify that:You have ticked the Baked Global Illumination checkbox, which enables Baked GI computations. This checkbox will also expose the Lighting Mode drop-down list.The Max Bounces value is not set to zero. The higher this value, the more the light will bounce around the environment.The Indirect Intensity slider is not set to zero. Setting this slider to zero will diminish all indirect lighting in the scene.Custom shaders could be the reason why GI computation has failed. For debug purposes, use the built-in shaders that come with the Unity Editor. Those are:Standard Shader: Available in the Built-in Render PipelineLit Shader: Available in the Universal Render Pipeline (URP)Lit Shader: Available in the High Definition Render Pipeline (HDRP)If Unity generates lighting after switching to one of the shaders outlined above, the problem might be with the custom shaders. In this case, make sure that the surface shaders contain the LIGHTMAP_ON shader keyword.Check out the Meta Pass page for details on how to further customize the Baked GI output using shaders.Other potential fixesIf the above steps have not solved your problem, consider trying these potential fixes:Select a different lightmapping backend in the Lighting window. If lighting fails to bake when using the Progressive GPU, but succeeds when baking with the Progressive CPU, this might be the result of a hardware or driver problem.Update the GPU drivers. Please refer to the GPU manufacturer’s page for the correct drivers for your system. (For Linux machines, check the Linux driver setup section in this forum thread).Ensure that your GPU meets the minimum requirements. Please refer to this forum thread.Clear the GI Cache. To clear it, navigate to Preferences > GI Cache and click on the Clean Cache button. Keep in mind that this will delete all lighting data present in the scene, requiring you to regenerate lighting.Certain objects that appear unlit or out of place might indicate a problem with the scene setup, which often reproduces when dynamic objects have no Light Probes to sample the lighting from. Furthermore, any glossy metallic material in the scene might appear as black if no local Reflection Probes are present.To correct this, I recommend trying one of the fixes laid out below.Dynamic objects – or GI Contributors receiving GI from Light Probes – need Light Probes to sample indirect lighting data. If none are present, objects will fall back to sampling the Ambient Probe (i.e., the Light and Reflection Probe that is always present in the scene).To mitigate this, set up a Light Probe network in the scene, adding more probes in areas of high importance. Make sure that there are enough Light Probes to encompass all affected objects, and generate lighting again to see the effect.Reflective metallic objects might still render as black, even after placing a dense network of Light Probes. To shade such objects, you need to place a Reflection Probe that encompasses the affected object. Generate the lighting again or re-bake the probe in the Reflection Probe Component by clicking the Bake button.If you observe black areas in the reflections, try increasing the Bounces count. This will increase the number of bounces, thus creating reflections within reflections. You can access this property in Lighting > Environment > Environment Lighting.Visit Objects are missing lighting forumIf performing the previous steps still does not solve the issue, inspect the Mesh Renderer component of the affected object. Under the Probes section, make sure that the Light Probes and Reflection Properties are set to anything other than Off.Pure black materials will absorb all direct and indirect light. This is physically correct behavior. In real life, no naturally occurring material is completely black. For example, one of the darkest natural materials, coal, measures at “50, 50, 50” on an RGB luminosity scale.Adjust your material color values to follow the physically based shading standards. In the Built-in Render Pipeline, you can use the Validate Albedo Scene View Draw Mode to determine whether Albedo values are PBR-compliant. You can use the Rendering Debugger in URP and HDRP to do the same.If you are working with multiple scenes, check that the scene containing lighting is set as the Active Scene. By default, Unity sets the first loaded scene as the Active Scene, which might have a detrimental effect in the standalone player builds.There are two types of issues related to emissive material rendering:Emissive materials do not appear as “glowing,” which indicates a post-processing issue.Emissive materials are not contributing to Global Illumination, which indicates an issue with object or material setup.To correct either of these issues, I recommend trying one of the fixes laid out below.To create the impression of a glowing material, enable Bloom in your post-processing stack of choice. Refer to Built-in RP, URP, or HDRP documentation for tips on how to do this.If you intend on using emissive objects for lightmapping, make sure that:You have marked the GameObject in question as a GI Contributor. Due to the self-illuminating nature of emissive objects, you can set their Receive Global Illumination property to Light Probes. This will save space in the lightmap atlas.The Global Illumination property is set to Baked in the Material Inspector. This property is available under the Emission input. Refer to Built-in RP, URP, or HDRP documentation for more details.In the Lighting window, make sure that the Indirect Intensity property is not set to zero. Setting it to zero will disable all indirect lighting, including baked contribution from baked emissive objects.Visit Emissive materials not rendering forumWhen baking in Non-directional mode, the Unity Editor will not create a separate texture to hold directionality information. This will result in objects looking flat after baking.It is worth noting that low frequency normal maps are hard to capture using directionality textures. Such textures will appear flat when generating lighting using fully baked lights.To correct this, I recommend trying one of the fixes laid out below.In the Lighting window, set the Directional Mode property to Directional. This mode will generate a secondary texture that will store dominant light direction. Normal maps will have a good representation of relief, but will lack specular response.Visit Flat normal maps ForumMixed lights provide real-time specular and normal response. The Progressive Lightmapper bakes indirect lighting into a lightmap. This combination ensures the highest quality material response when using baked lighting.If your project allows for it, switch the light Mode to Mixed in the Light component. Note that Mixed lights have the same performance cost as real-time lights. Depending on the Lighting Mode used, Mixed lights will cast real-time shadows but not baked soft shadows.Probe-lit GameObjects will often have a better material response than those lit by Baked lights. If your art direction allows for it, set their Receive Global Illumination property to Light Probes in the Mesh Renderer component. Note that you can also use Light Probe Proxy Volume (LPPV) to add a spatial gradient to probe-lit objects.One of the inherent limitations of Baked lights is that they do not provide real-time specular response to materials. This means that glossy materials will lack specular highlights after generating lighting.To correct this, I recommend trying one of the fixes laid out below.Unlike Baked lights, Mixed lights provide real-time direct specular response to materials. If specular highlights are important in your scene, switch the light Mode to Mixed in the Light component.Visit Missing specular response forumIt is possible to imitate specular response from lights by using emissive objects. To do so, follow these steps:Place a Reflection Probe in your scene.Right-click in the Hierarchy panel and select 3D Object > Sphere. Select the newly created object and set its Static Editor Flag to Reflection Probe Static.In the Project panel, create a new material by right-clicking and selecting Create > Material.Select the newly created material and enable the Emission checkbox. Set the Global Illumination property to None.Drag and drop the material onto the sphere to assign it.Place the sphere in the same position as your light.Generate lighting.After following the above steps, you should be able to see the emissive objects captured in the Reflection Probe cubemap. You can hide those objects after baking or set up a Culling Mask in the Camera component.For more tips on troubleshooting the Progressive Lightmapper, check out the full guide in the forums. If you’d like to discuss this article or share other solutions, feel free to connect with me there or here. Finally, be sure to watch for new technical blogs from other Unity developers as part of the ongoing Tech from the Trenches series.]]></description><link>https://unity.com/blog/engine-platform/5-common-lightmapping-problems-and-tips-to-help-you-fix-them</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/5-common-lightmapping-problems-and-tips-to-help-you-fix-them</guid><pubDate>Tue, 27 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get your game on at Unite 2022]]></title><description><![CDATA[Are you ready? Unite is back and free for everyone this fall – and that means you.It’s all happening on Tuesday, November 1. Whether you join in person or online, the event will be a chance to celebrate accomplishments alongside fellow game developers and learn from the Unity community. Read on for more information about the event (and to snag your spot by registering).No matter where you’re located, this year’s Unite has an option for you to participate. Join the event in person – in Austin, Brighton, Copenhagen, Montreal, or San Francisco – or virtually from anywhere in the world. As an attendee, you’ll have access to exciting education and a full schedule of unique experiences.By registering for Unite 2022, you’ll take your Unity network and knowledge to the next level. In addition to incredible relationship-building opportunities, some top reasons to participate include:20+ expert-led, outcome-based breakout sessions from developers – Discover technical deep dives on new features, product roadmaps, performance tips, code structures, advice from studios for better workflows, and more.A keynote packed with product updates and creator stories – Join Unity leaders and respected developers to hear inspiring stories, watch exciting tech demos, and find out how Unity is evolving to meet your needs.A unique virtual concert, made with Unity – The excitement amps up with a top-notch, live musical performance in an interactive world ready for you to explore. Come take a look around, mingle, and join the party – you won’t want to miss it.View the full agenda online.We can’t wait to connect with our community both in person and virtually at Unite 2022. If you want to talk to us in the meantime, we’re always available in the forums, or you can join the conversation on Twitter and Instagram. Plus, don’t forget to register for the Unity for Humanity Summit on November 2.]]></description><link>https://unity.com/blog/news/get-your-game-on-at-unite-2022</link><guid isPermaLink="true">https://unity.com/blog/news/get-your-game-on-at-unite-2022</guid><pubDate>Thu, 22 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Programmatic video advertising: the complete guide]]></title><description><![CDATA[Programmatic video advertising is a complex, multi-layered topic. Multiple networks serving different audiences — advertisers on the demand side and publishers on the supply side — work together with third-party mediators to serve video ads to billions of end users in the blink of an eye.It’s also a multi-billion dollar industry under constant, rapid evolution, and understanding it is key to reaching your audience and maximizing ROAS. Wherever you are on the demand or supply-side of the mobile ad stack, you should be aware of how the programmatic ad service process works and where things are headed.Let’s dive into programmatic video advertising and go over what it is, identify several key trends for the future, and break down how to choose a programmatic video platform that’s right for you.In this post, we’ll cover the following:What is programmatic video advertising?A timeline of growth for programmatic video advertisingProgrammatic video trends to watchHow to choose a programmatic video advertising platformMake programmatic video easyWhat is programmatic video advertising?For years, direct media buying — where advertisers made direct deals with publishers to determine exactly where their ads would run — ruled the landscape. And while direct media buying still works for static media, the advent of interactivity through the internet and smartphones allows for users to be directly catered to based on their individual interests. That’s where programmatic video advertising comes in.But what’s a good programmatic video definition? Essentially, as ads are served to users in mobile games, through connected TV experiences like Roku, or social media platforms, they are bid on in real-time by ad networks. The value of the bids is determined by characteristics like user demographics, what game they’re playing or app they’re using, and the bid ceiling set by the advertiser. The winner of the bid has their video served to the user.What makes programmatic video advertising so mind-blowing is that all of these bids are happening automatically in the fractions of a second between the moment an ad is called (like when a user taps on a button to double their reward in a game) and when it’s served. Market forces determine the cost of an ad, and data like user acquisition and ROAS can be monitored in real-time. And while the whole market cycle can seem intimidating and highly-technical, platforms like the ironSource Exchange make it easier than ever to integrate and display ads.To learn more about the benefits of programmatic video advertising and the channels best suited for it, read our guide, What Is Programmatic Video Advertising?A timeline of growth for programmatic video advertisingThe programmatic video ad market has seen an explosion of growth over the last few years, and it shows no signs of slowing down.In 2019, surveys showed that programmatic video ad spending grew to more than $24B. Only two years later, that number shot up to $52B according to a 2021 report by eMarketer, with the potential for ad spend reaching $62.96B in 2022. Mobile ad spend accounts for two-thirds of all programmatic video spending, with connected TV following behind and steadily growing.And that’s just in the United States. Global programmatic video ad spending reached $112.9B in 2019, eventually hitting $155B in 2021 and accounting for 34% of all global programmatic ad spend.As smart device and mobile game adoption grows, so too will programmatic video grow to meet the demand.Read more about programmatic video growth and learn about the top programmatic advertising video players in Your Guide to the 2022 Programmatic Video Advertising Market.Programmatic video trends to watchMobile advertising technology moves fast, and it’s important to have a sense of where things are headed so you can stay a step ahead of the competition.In terms of ad content, the rise of TikTok as a social media platform has caused a shift in the kinds of ads companies are creating for the programmatic video marketplace. Ads themselves are starting to look like TikToks, often being repurposed from TikTok itself to suit the more specific needs of mobile games and other apps. Videos are shorter, filled with dances or direct conversations, and often embrace subtitles or other text alternatives like written signs to present information.Privacy moves made by Google and Apple have made waves throughout the industry, as the removal of third-party cookies and updated app tracking policies are forcing mobile ad companies to get creative with data solutions. Advertisers are looking to first-party data to replace information third-party cookies would normally provide, and are implementing solutions like rewarded ads and the offerwall to paint a better picture of user data. It’s also leading to a wider move toward consolidation, as agencies look across the demand- and supply-side stack for opportunities to shore up weaknesses and strengthen their offerings.How to choose a programmatic video advertising platformProgrammatic video advertising platforms integrate with the demand side and supply side of the mobile advertising stack, and determining which platform is best for you will depend on which side of the stack you’re on.Advertisers looking for the best way to increase their return on ad spend (ROAS) will want to find a platform that offers the following:A large audience of engaged usersFull-screen video offerings that won’t go unnoticedEasy testing for a variety of creative and placement optionsSDK integration that provides access to thousands of connected appsIf you’re an app publisher looking to maximize user engagement and revenue, you’ll want to find a platform that can:Connect your app with a large network of advertisersProvide rewarded videos and offerwallsEasily integrate via industry-standard SDKsProvide support for programmatic mediation so you can ensure impartiality on ad bidsCheck out our guide on How to Choose a Programmatic Video Advertising Platform: 8 Consideration for more details on how to pick a platform that suits your needs.Make programmatic video easyThere are a lot of moving parts within the programmatic video advertisement world, and it can seem like a lot to take in. You don’t have to sweat the hard stuff, though. The ironSource Programmatic Marketplace makes putting your ads in front of billions of engaged users in brand-safe environments with complete transparency easier than ever. Contact us today to learn more.]]></description><link>https://unity.com/blog/programmatic-video-advertising-the-complete-guide</link><guid isPermaLink="true">https://unity.com/blog/programmatic-video-advertising-the-complete-guide</guid><pubDate>Fri, 16 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity Pro and Unity Enterprise plans: New pricing coming soon]]></title><description><![CDATA[Starting October 13, we’re changing our pricing for Unity Pro, Unity Enterprise, and Unity Industrial Collection, our first price increase in almost three years. This announcement will not affect Unity Personal or Unity Plus pricing.Our per-seat subscription pricing will be adjusted as follows:Unity Pro annual prepaid pricing will be $2,040/yr, and annual monthly paid plans will be $185/mo.Unity Enterprise annual prepaid pricing will be $3,000/yr.Unity Industrial Collection (UIC) annual prepaid pricing will be $2,950/yr.Note: Unity Personal and Unity Plus pricing are not affected by this announcement.The new pricing goes into effect on October 13, 2022 for Unity Pro, Unity Enterprise, and UIC. Online customers can visit their account before this date to renew or switch to an annual plan for greater savings. Customers with account managers should reach out to them directly to discuss the options based on their custom agreements. Find more details in the FAQs below.If you have further questions, contact Unity support or talk to your account manager.Who is affected by the new pricing?The new pricing applies to both new and existing Unity Pro, Unity Enterprise, and Unity Industrial Collection (UIC) customers on monthly or annual plans. Unity Personal and Unity Plus customers are not affected.When does the new pricing take effect?For new Unity Pro, Unity Enterprise, and UIC customers, the new pricing is effective on October 13, 2022, 13:00 UTC.For existing Unity Pro, Unity Enterprise, and UIC customers, the new pricing goes into effect on October 13, 2022. Online customers can visit their account before this date to renew or switch to an annual plan for greater savings. Customers with account managers should reach out to them directly to discuss the options based on their custom agreements.Which plans are included in the price change?Prices are changing for Unity Pro, Unity Enterprise, UIC, and bundles containing these plans, as well as Starter Success, Build License, Pro Build Server, and Enterprise Build Server.Unity Personal and Unity Plus plans are not included in the price change.Each seat of Unity Pro will be $2,040/year, Unity Enterprise will be $3,000/year, and UIC will be $2,950/year for annual prepaid plans. We offer other options such as monthly payment for certain plans.Per seat pricingUnity Plan Current List Price New Price on October 13, 2022 Unity Pro, prepaid yearly $1,800/year $2,040/year Unity Pro, paid monthly $150/month $185/month Unity Enterprise $2,400/year $3,000/year Unity Industrial Collection $2,520/year $2,950/yearFor more details, please see the extended FAQ.What other changes are being made to the plans?The changes below will take effect starting on October 13, 2022. For more details, please see the extended FAQ.Unity Pro – New and existing plans will include Unity Mars, as well as Havok Physics for Unity with the release of Unity 2022.2 this fall.Unity Enterprise – New and existing plans will receive an additional year of Long Term Support (from two years to three years) starting with 2021 LTS.New and existing customers or those upgrading from Unity Pro to Unity Enterprise will receive access to read-only source code on request.Enterprise plans will also include new support offerings:1–19 seat accounts receive Starter Success, a technical support package to help you overcome issues with assistance from Unity engineers.20+ seat accounts get a Partner Relations Manager, an internal advocate and strategic advisor to accelerate projects.100+ seat customers will receive Bug Handling and LTS backporting at no additional charge.This plan will also include Unity Mars, as well as Havok Physics for Unity with the release of Unity 2022.2 this fall.Unity Industrial Collection – Starter Success is an entry-level technical support package that helps you overcome issues with assistance from Unity engineers. New customers or those upgrading from Unity Pro to UIC will receive access to Starter Success. Existing UIC customers who have a contract expiry date after October 13, 2022 will receive Starter Success upon renewal.This plan will also include Unity Mars, as well as Havok Physics for Unity with the release of Unity 2022.2 this fall.We are updating our Terms of Service for all Unity subscription plans, effective October 13, 2022, to create a more streamlined, user-friendly set of terms. Please review them here.Why is the price of my Unity plan changing?The new price reflects the value of our products today, and it’s our first increase in almost three years.In that time, we’ve expanded our R&D resources by 172%, with the Unity Editor being our largest focus for R&D investment at Unity. This continued investment has helped us deliver Unity 2021 LTS with powerful improvements to workflows, rendering capabilities, and supported platforms.We will continue delivering improvements based on your feedback in every release to enhance your productivity, performance and stability.What is happening to the free Unity Personal plan?Unity Personal will remain free to creators with revenue or funding (raised or self-funded) below USD $100K in the past year. We are committed to ensuring Unity continues to be accessible to the millions of students, hobbyists, and indies starting out on their game development journeys.I still have more questions!Don’t see your question here? Get more details on Unity Pro, Unity Enterprise, Unity Industrial Collection, Unity Mars, Havok Physics for Unity, and how this change will impact your specific payment plan in our extended FAQ.]]></description><link>https://unity.com/archive/blog/news/pro-enterprise-new-pricing</link><guid isPermaLink="true">https://unity.com/archive/blog/news/pro-enterprise-new-pricing</guid><pubDate>Tue, 13 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Clean up your code: How to create your own C# code style]]></title><description><![CDATA[While there’s more than one way to format Unity C# code, agreeing on a consistent code style for your project enables your team to develop a clean, readable, and scalable codebase. In this blog, we provide some guidelines and examples you can use to develop and maintain your own code style guide.Please note that these are only recommendations based on those provided by Microsoft. This is your chance to get inspired and decide what works best for your team.Ideally, a Unity project should feel like it’s been developed by a single author, no matter how many developers actually work on it. A style guide can help unify your approach for creating a more cohesive codebase.It’s a good idea to follow industry standards wherever possible and browse through existing style guides as a starting point for creating your own. In partnership with internal and external Unity experts, we released a new e-book, Create a C# style guide: Write cleaner code that scales for inspiration, based on Microsoft’s comprehensive C# style.The Google C# style guide is another great resource for defining guidelines around naming, formatting, and commenting conventions. Again, there is no right or wrong method, but we chose to follow Microsoft standards for our own guide.Our e-book, along with an example C# file, are available for free. Both resources focus on the most common coding conventions you’ll encounter while developing in Unity. These are all, essentially, a subset of the Microsoft Framework Design guidelines, which include an extensive number of best practices beyond what we cover in this post.We recommend customizing the guidelines provided in our style guide to suit your team’s preferences. These preferences should be prioritized over our suggestions and the Microsoft Framework Design guidelines if they’re in conflict.The development of a style guide requires an upfront investment but will pay dividends later. For example, managing a single set of standards can reduce the time developers spend on ramping up if they move onto another project.Of course, consistency is key. If you follow these suggestions and need to modify your style guide in the future, a few find-and-replace operations can quickly migrate your codebase.Concentrate on creating a pragmatic style guide that fits your needs by covering the majority of day-to-day use cases. Don’t overengineer it by attempting to account for every single edge case from the start. The guide will evolve organically over time as your team iterates on it from project to project.Most style guides include basic formatting rules. Meanwhile, specific naming conventions, policy on use of namespaces, and strategies for classes are somewhat abstract areas that can be refined over time.Let’s look at some common formatting and naming conventions you might consider for your style guide.The two common indentation styles in C# are the Allman style, which places the opening curly braces on a new line (also known as the BSD style from BSD Unix), and the K&R style, or “one true brace style,” which keeps the opening brace on the same line as the previous header.In an effort to improve readability, we picked the Allman style for our guide, based on the Microsoft Framework Design guidelines:
Whatever style you choose, ensure that every programmer on your team follows it.A guide should also indicate whether braces from nested multiline statements should be included. While removing braces in the following example won’t throw an error, it can be confusing to read. That’s why our guide recommends applying braces for clarity, even if they are optional.Something as simple as horizontal spacing can enhance your code’s appearance onscreen. While your personal formatting preferences can vary, here are a few recommendations from our style guide to improve overall readability:Add spaces to decrease code density:The extra whitespace can give a sense of visual separation between parts of a lineUse a single space after a comma, between function arguments.Don’t add a space after the parenthesis and function arguments.Don’t use spaces between a function name and parenthesis.Avoid spaces inside brackets.Use a single space before flow control conditions: Add a space between the flow comparison operator and the parentheses.Use a single space before and after comparison operators.Variables typically represent a state, so try to attribute clear and descriptive nouns to their names. You can then prefix booleans with a verbfor variables that must indicate a true or false value. Often they are the answer to a question such as, is the player running? Is the game over? Prefix them with a verb to clarify their meaning. This is often paired with a description or condition, e.g., isPlayerDead, isWalking, hasDamageMultiplier, etc.Since methods perform actions, a good rule of thumb is to start their names with a verb and add context as needed, e.g., GetDirection, FindTarget, and so on, based on the return type. If the method has a bool return type, it can also be framed as a question.Much like boolean variables themselves, prefix methods with a verb if they return a true-false condition. This phrases them in the form of a question, e.g., IsGameOver, HasStartedTurn.Several conventions exist for naming events and event handles. In our style guide, we name the event with a verb phrase,similar to a method. Choose a name that communicates the state change accurately.Use the present or past participle to indicate events “before” or “after.” For instance, specify OpeningDoor for an event before opening a door and DoorOpened for an event afterward.We also recommend that you don’t abbreviate names. While saving a few characters can feel like a productivity gain in the short term, what is obvious to you now might not be in a year’s time to another teammate. Your variable names should reveal their intent and be easy to pronounce. Single letter variables are fine for loops and math expressions, but otherwise, you should avoid abbreviations. Clarity is more important than any time saved from omitting a few vowels.At the same time, use one variable declaration per line; it’s less compact, but also less error prone and enhances readability. Avoid redundant names. If your class is called Player, you don’t need to create member variables called PlayerScore or PlayerTarget. Trim them down to Score or Target.In addition, avoid too many prefixes or special encoding.A practice highlighted in our guide is to prefix private member variables with an underscore (_) to differentiate them from local variables. Some style guides use prefixes for private member variables (m_), constants (k_), or static variables (s_), so the name reveals more about the variable.However, it’s good practice to prefix interface names with a capital “I” and follow this with an adjective that describes the functionality. You can even prefix the event raising method (in the subject) with “On”: The subject that invokes the event usually does so from a method prefixed with “On,” e.g., OnOpeningDoor or OnDoorOpened.Camel case and Pascal case are common standards in use, compared to Snake or Kebab case, or Hungarian notations. Our guide recommends Pascal case for public fields, enums, classes, and methods, and Camel case for private variables, as this is common practice in Unity.There are many additional rules to consider outside of what’s covered here. The example guide and our new e-book, Create a C# style guide: Write cleaner code that scales, provide many more tips for better organization.The concept of clean code aims to make development more scalable by conforming to a set of production standards. A style guide should remove most of the guesswork developers would otherwise have regarding the conventions they should follow. Ultimately, this guide should help your team establish a consensus around your codebase to grow your project into a commercial-scale production.Just how comprehensive your style guide should be depends on your situation. It’s up to your team to decide if they want their guide to set rules for more abstract, intangible concepts. This could include rules for using namespaces, breaking down classes, or implementing directives like the #region directive (or not). While #region can help you collapse and hide sections of code in C# files, making large files more manageable, it’s also an example of something that many developers consider to be code smells or anti-patterns. Therefore, you might want to avoid setting strict standards for these aspects of code styling. Not everything needs to be outlined in the guide – sometimes it’s enough to simply discuss and make decisions as a team.When we talked to the experts who helped create our guide, their main piece of advice was code readability above all else. Here are some pointers on how to achieve that:Use fewer arguments: Arguments can increase the complexity of your method. By reducing their number, you make methods easier to read and test.Avoid excessive overloading: You can generate an endless permutation of method overloads. Select the few that reflect how you’ll call the method, and then implement those. If you do overload a method, prevent confusion by making sure that each method signature has a distinct number of arguments.Avoid side effects: A method only needs to do what its name advertises. Avoid modifying anything outside of its scope. Pass in arguments by value instead of reference when possible. So when sending back results via the out or ref keyword, verify that’s the one thing you intend the method to accomplish. Though side effects are useful for certain tasks, they can lead to unintended consequences. Write a method without side effects to cut down on unexpected behavior.We hope that this blog helps you kick off the development of your own style guide. Learn more from our example C# file and brand new e-book where you can review our suggested rules and customize them to your team’s preferences.The specifics of individual rules are less important than having everyone agree to follow them consistently. When in doubt, rely on your team’s own evolving guide to settle any style disagreements. After all, this is a group effort.]]></description><link>https://unity.com/blog/engine-platform/clean-up-your-code-how-to-create-your-own-c-code-style</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/clean-up-your-code-how-to-create-your-own-c-code-style</guid><pubDate>Wed, 07 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity Monthly: August 2022 roundup]]></title><description><![CDATA[With so many interesting and varied projects being shared with us at any given moment, whether via direct tags or the #MadeWithUnity and #UnityTips hashtags, it can be hard to keep up with all that’s happening within our community. Don’t worry, we’ve got you covered. Sit back, relax, and enjoy this roundup of highlights that showcase everything you need to know about what the community got up to last month.Each Monday, we celebrate a milestone hit by one of our creators. From new game launches to awards won, we are constantly in awe at your achievements!Throughout August we celebrated the launch of Lost in Play by Happy Juice Games, the launch of As Dusk Falls by INTERIOR/NIGHT, and Dot's Home by Rise-Home Stories Project for winning big at the Games for Change Awards!Tuesdays are dedicated to #UnityTips on Twitter, and last month Massive Monster, makers of Cult of the Lamb, took over @UnityGames to share tips on how to make your 2D Sprites work harder (1,2,3,4,5).Some other great tips that were shared include Ehsan Ehrari’s quick and easy way to neaten up your workflow if your layers end up getting messy and Sunny Valley Studio’s tip on how to fix holes in your shadows.We share tips on our Twitter channels every Tuesday, so keep tagging us and using the #UnityTips hashtag!We love seeing your works in progress, and each Friday we share the projects that have us searching for a playable demo.August was no exception! Rollerdrome by Roll 7 had us mesmerized with a peek under the hood at the prototype to final game transition, Grimm Tales made a pool of water look so refreshing that all we could think about was going for a swim, and François Martineau sent our imagination racing about what other great foes we’d encounter on our hero’s journey.Each time we browse through the #MadeWithUnity hashtag across social media, we’re always amazed at the creativity and love you bring to your projects. Keep sharing!Last month, the Unity YouTube saw a flurry of activity with two new entries into our Meet the Creator series and a sizzle reel for gamescom 2022.Want more? We have you covered with two amazing YouTube playlists you need to keep your eye on.We love #MadeWithUnityMade with Unity Game TrailersLast month on Twitch we:Sat down with INTERIOR/NIGHT, the team behind As Dusk Falls, to gain insights into their development: unique character pipelines that blend 2D and 3D, the use of Unity Timeline, their companion app, and more.Skated into the Rollerdrome with Roll_7 to look at level design, shaders, physics, and more.Spoke to Thomas Brush, creator of Father, who shared his approach to pitching to publishers, crowdfunding, and demoing.Don’t forget to follow us on Twitch and hit the notification bell so you never miss a stream. If you miss us live no sweat, we upload full streams to our YouTube playlist.We kicked off August with 40% off select Asset Store tools and packages to spark your imagination. Then, Daniel Zeller took over the @AssetStore Twitter to share tips on the Fluffy Grooming Tool, and so did Renaud Forestié from More Mountains, who offered insights on how you can use FEEL to level up your game.For even more on assets, see how the smaller teams behind popular game Sable and indie mobile business Tinytouchtales have used Asset Store resources to speed up game development and save time.Each Friday, we also feature beautiful assets made by our publisher community. Whether it’s something new, or a popular tool that has been around for a while, we love to see the assets in action. Check out some of what was shared in August below!InfiniGRASS by ArtnGameGPU Grass by Dan PhilipsScreen Ripple by Steven GerrardElemental Animations by Kevin IglesiasDo you want to show off your work? Make sure to use the #AssetStore hashtag!And finally, here’s a non-exhaustive list of Made with Unity games released in August. See any on the list that have already become new favorites?Big Ambitions, Hovgaard Games (August 1)The Mortuary Assistant, DarkStone Digital (August 2)Two Point Campus, Two Point Studios (August 9)Stereo Boy, Main Gauche Games (August 9)Farthest Frontier, Crate Entertainment (August 9)Lost in Play, Happy Juice Games (August 10)Arcade Paradise, Nosebleed Interactive (August 11)Cult of the Lamb, Massive Monster (August 11)Rollerdrome, Roll7 (August 16)Cursed to Golf, Chuhai Labs (August 18)Midnight Fight Express, Jacob Dzwinel (August 23)I Was a Teenage Exocolonist, Northway Games (August 25)ORX, johnbell (August 30)Immortality, Sam BarlowHalf Mermaid (August 30)Tinykin, Splashteam (August 30)That’s a wrap for August! Want more as it happens? Don’t forget to follow us on social media.]]></description><link>https://unity.com/archive/blog/news/made-with-unity-monthly-august-2022-roundup</link><guid isPermaLink="true">https://unity.com/archive/blog/news/made-with-unity-monthly-august-2022-roundup</guid><pubDate>Thu, 01 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[App Analytics: 3 ways to optimize performance by combining player and growth data]]></title><description><![CDATA[Optimizing monetization and UA is key for growth - but they only get you so far if the app itself isn't optimized. In fact, the best way to maximize growth is by tying monetization and user acquisition data to user behavior. The more granular you can get, the more you can do to strengthen your business.Using ironSource's App Analytics solution to break down the data, here are 3 ways you can better optimize for growth.#1: Reconciling impressions vs playtimeThere’s typically a tradeoff between the number of impressions you serve users versus its effect on user engagement (playtime). That’s because game designers are determined to improve the user experience in the game, while monetization managers are focused on maximizing the revenue per user. The key to reconciling these pain points is to deep dive into each metric to find the sweet spot that maximizes both.For example, you can compare playtime versus impressions per user, side by side. Let’s say you want to increase impressions from a cap of 3 to 5. The first step is to assess whether this affects playtime, and make the best adjustments to ensure a positive user experience. If you see a significant drop in playtime, it’s a sign that users weren’t happy, and a lesson to return to the original impressions cap. However, if increasing the cap has no effect on playtime - you can generate revenue without affecting user experience.Now your data-informed conclusions can improve both user experience and profits. It’s not always easy to find the optimal point between them, but looking at them side by side with a tool like App Analytics can help to reconcile multiple interests.#2: Improving user engagement with cohortsTraditionally, retention analysis focuses on user churn. Going one step further - not just looking at if users return, but also understanding their behavior when they return - paints a much clearer picture about how to better retain users and find more places to monetize them.Assessing how users playTo encourage your players to keep going, first understand what’s already motivating them in the first place. If you have in-app purchase API data, simply split paying versus non-paying users and see how they compare in different metrics (playtime, impressions per user, sessions, session length, etc.). Now you can better understand your paying users and how they differ from non-paying users - for example, if you see that session length is higher for paying or non-paying users, you can use this information to your advantage.Let’s say App Analytics shows there was a spike in your revenue on a cohorted day. You also see that your users were running out of the initial resources from their starter pack and hadn’t utilized ways to earn more, like clans and special events. Your profits spiked because users only had one choice - to keep playing, they had to use in-app purchases to gain more resources.Offering just the right reward amountTo determine a reward amount that continuously engages users, you need to first understand your users. Start by looking at impressions per user. The figure should be fairly consistent, especially if you’re capping impressions, but it’s still important to monitor this number for any technical issues.Let’s say you see a drop in impressions on day 5 on the App Analytics platform. You can dive deeper to understand why - it turns out that on day 5, users received a special daily bonus with a lot of gems. However, they acquired so much currency, they didn’t need to watch a rewarded video to move forward - which is why impressions were low that day.The best practice would be to decrease the reward on day 5, so that users stay in the sweet spot: engaged in the game but needing extra gems to progress.Maximizing your strengthsTo increase your user retention, you want to maximize exposure to events that engage users, like clans. To do that, look for areas in the game with increased playtime and determine whether it’s connected to an event. For example, if you see increased playtime on day 8 and know that users usually unlock the clan on day 8, you can infer that’s why you saw a spike. Great! Let’s put our focus here.Try moving the clan date earlier in the user experience. If you can identify key engagement moments in the game and offer those experiences before the typical drop in retention, you have a better chance at retaining users for a longer period. You can track the success of this decision on the App Analytics cohorts page by using both the retention and playtime metric for users who were exposed to this change. #3: Determine your milestones with the funnel pageTo boost user playtime and revenue, we need to optimize how users move from one milestone in the game to another. This is where funnels come in: with a custom events API on App Analytics, you can create custom funnels and immediately see how users progress through your milestones, or fall in the pitfalls between them. For example, you can create a level funnel that shows how many users started level 1, then progressed to level 2, and so on.Optimizing your in-app purchase flowTo best understand your user journey in action, define exactly what you’re interested in observing and create clear funnels based on that path. For example, if you’re looking to convert more users into paying users, you might want to understand user purchase patterns. You can create funnels that filter users who make a specific purchase, and follow whether users continue making purchases after that. Informed by your new funnels, you can start using trial and error to adjust your in-app purchases’ rewards or placements and increase your conversion rate.Optimizing engagement (level drop)The majority of users drop off in the first days of playing. So to improve user engagement, it’s essential to monitor the onboarding process. Using funnels, define each of your onboarding milestones and order them chronologically - for example, “registration,” “privacy policy,” “select avatar,” and more. This way, you can view the dropoff rate between them.These insights can inform exactly the tweaks your game needs to improve retention. We recommend you test your changes with A/B testing. In fact, you can dive even deeper. If you created a “select avatar” milestone, you can focus on specific avatars to gain more insight. If the conversion rate is much higher for players who chose a specific avatar, you can use this information to update your game accordingly.You can also assess behavior by level. For example, if suddenly on level 3 there’s a major drop in conversion rate, it’s an indication to dig deeper and understand the cause. Create a level funnel to understand how conversion changes incrementally. Try to find the origin - did this drop happen before level 3, or during it? All of this information will bring you closer to making the adjustments needed to improve engagement, boosting game performance.With any app, understanding user engagement is the key to understanding how to scale up your business. App Analytics ensures this process is easy and intuitive by providing different pages (explore, cohorts, and funnels) to zoom in on user behavior and understand what’s affecting it. Learn more about App Analytics here.]]></description><link>https://unity.com/blog/3-ways-you-can-optimize-your-app-business-with-app-analytics</link><guid isPermaLink="true">https://unity.com/blog/3-ways-you-can-optimize-your-app-business-with-app-analytics</guid><pubDate>Thu, 25 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The what, why and how of web-to-app acquisition campaigns]]></title><description><![CDATA[Nailing cross-channel marketing for your app is crucial in today’s ecosystem. This isn’t just a speculation, it’s a hard fact: the average mobile marketer uses 5 or fewer media sources, but CPIs tend to be much higher for marketers using 6 or more media sources, according to a report by Singular and ironSource Aura.It’s time to start looking elsewhere for users. Something to consider is returning to old-school, tried-and-true strategies that have taken a backseat as the industry has advanced, such as web acquisition campaigns. There are two clicks in these campaigns - the first click directs users from an ad to a web landing page and the second click directs users from the web page to the app store. While the funnel to get to your app is longer, it’s actually an opportunity. Let’s dive into why and how you should be running web-to-app acquisition campaigns.3 benefits of web-to-app campaignsWeb acquisition campaigns became tried-and-true for a reason and many apps are beginning to take advantage of the strategy to reduce costs, get better visibility, and expand their reach.Reduce costsWhile the cost of app acquisition campaigns is increasing as the space becomes more saturated, web campaigns have been underutilized in recent years. This means many advertisers are finding that the cost of web campaigns are less than app store acquisitions. Much of these higher costs comes from high app store fees - Apple takes a 30% cut from large developers and a 15% cut from smaller developers. The web remains a relatively low-cost, accessible channel.Get better visibilityWith the ability to direct users to your owned mobile site before they click to download your app, you get better visibility into new users and where they came from - the app store is a black box where it’s nearly impossible to match the user who clicked an ad to the user who downloaded your app. On top of that, longer funnels give you more control and insight into each step users take to get to your app - allowing you to better optimize your campaigns. For example, you can try out different web landing pages to find the most effective way to increase users’ understanding of your app before they download it. This increases your likelihood of, first, motivating users to download your app, and second, encouraging them to stick around.Expand your reachInternet users worldwide spent 415.5 minutes a day online in 2021 according to Oberlo. App users spend at most 300 mins a day in apps according to TechCrunch. The internet is still more prevalent than apps because, let’s face it, the web predates the app store. Even more so, users have become especially savvy on the web, visiting the search bar to research a brand, fact check a friend, or dive deeper into a news headline. This means that by running web campaigns, you’re reaching a massive audience - nearly the entire world population.Andre Kempe, Founder and CEO of Admiral Media says, “marketers consider web acquisition important because they’re reaching a different type of audience that may convert to becoming an active app user, even though they were surfing on a news website… When you start advertising for the web, you reach an audience you haven’t reached before. This is definitely a growth opportunity." Listen to the full podcast.Web campaigns are a tried and true strategy, which is what makes them so effective in today’s ecosystem. Realizing that you should be considering this acquisition channel, let’s discuss how web onboarding can help you maximize success.Maximize success with web onboardingTypically, users complete onboarding directly on your app. Web onboarding, however, means letting users register, subscribe, and sometimes pay on the web, before heading to your app. This way, users are fully prepared to start using your app before even clicking download, ensuring they can engage at full capacity as soon as download is complete.When users onboard through the app, they may not immediately decide to engage but at least the app is still on their phones reminding them everyday of its value - they’re likely to open it again at some point in time. When a user onboards on the web and decides your app isn’t valuable, they’ll never end up actually downloading it - it’s gone and forgotten before it even started. That said, with web onboarding, the users who end up downloading your app will do so with high-intent to actively engage. Plus, you don’t have to pay for users that download without ever engaging. Whatever category your app is - fitness, food delivery, dating, reading, learning, etc. - you can use the web touchpoint to drive quality users to your app.Ensure the transition is seamlessFirst, ensure the web experience mimics the app experience enough that users don’t feel jipped when they actually start using your app. The transition from the web to the app should be seamless. If you’re offering users a taste of your app, the web touchpoint should look exactly like your app or, at least, include all of the same features. If the buttons to adjust settings are on the right side of the page during onboarding, they should be on the right side in the app as well. To ensure users stick around, you have to give them what they signed up for.Give users a sneak peakYou should also determine your main selling point and give users a sneak peak. For example, if you’re a reading app that allows users to adjust the settings of the page, you could give users premium access to the first chapter of a book allowing them to adjust font size or brightness. Readers will not want to leave the experience behind, encouraging them to set up their subscription and input their credit card information on the web before heading to the app to continue reading the book. The best part - when they open your app for the first time they’ll be able to jump right into the app experience.Learn more about how to improve your app’s onboarding experienceWeb-to-app campaigns should not be ignored in this competitive landscape - lower costs, more visibility, better optimization, and strong reach. Going even further to onboard users through the web, you’re improving the quality of the users entering your app for the first time.]]></description><link>https://unity.com/blog/the-what-why-and-how-of-web-to-app-acquisition-campaigns</link><guid isPermaLink="true">https://unity.com/blog/the-what-why-and-how-of-web-to-app-acquisition-campaigns</guid><pubDate>Wed, 24 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Understanding the impact of rewarded ads on IAP, retention and engagement]]></title><description><![CDATA[Tapjoy studies have shown that mobile gamers prefer rewarded ads to interstitials 4-to-1. It’s a valuable insight for advertisers and developers alike when it comes maximizing ad revenue, but rewarded ads also have the potential to impact other parts of the user experience and your game’s performance overall.To ensure a healthy portfolio, it’s critical that developers understand the additional impact rewarded ads have beyond ad revenue. This includes their effect on metrics like in-app purchase conversion rate, average user spend, 30-day retention, and daily session count. To find out more, we conducted an in-depth analysis of eight different high-DAU apps across iOS and Android for several varying timeframes to find out how users behave when exposed to rewarded ads compared to those who aren’t.Higher IAP conversion ratesWe studied new app users during a one month period and segmented them into two different groups: Those who engaged with at least one rewarded ad and those who never engaged with an ad. We then compared the IAP conversion rates (or percentage of users that made a first time purchase) for each group.On average, users who engage with rewarded ads are 4.5 times more likely to make in-app purchase versus those who do not.7 out of the 8 of apps studied demonstrated higher conversion rates among those who engaged with ads versus those who did not.In the case of two of the apps studies, we found that users who engaged with an ad were over 9 times more likely to make a purchase.Higher average spend per userWe measured the average spend per user in each app for seven days before and seven days after a user’s first rewarded ad engagement.In all 8 apps studied, user spend increased significantly after they engaged with an ad. The average weighted increase in user spend was 326%. Among the apps studied, the boost in average spend per user ranged from just shy of 200% to over 500%.Increased 30-day retentionWe measured the 30-day retention rates of users who engaged with 1-6 rewarded ads during their first week of using an app. Three types of rewarded ad formats were studied (rewarded video, full-screen interstitial, and offerwall placements) and measured against the average 30-day retention benchmark for all apps.Players who complete just one rewarded ad in the first week — whether a video, full-screen interstitial or an offerwall engagement — have a retention rate of at least 50%, compared to the benchmark of 13%.Rewarded video has the most profound effect on retention of any ad type. 30-day retention steadily increases with each video view, ranging from 53% to 68%, which is 3.5-5 times greater than the benchmark.Higher average daily session countWe measured the average number of user sessions per day — both seven days before and seven days after a user’s first rewarded ad engagement — for each high-DAU app.In all cases, users engaged with apps more frequently after completing a rewarded ad.All 8 apps studied demonstrated a lift in the average number of user sessions among those who completed an ad.The average weighted increase in user sessions across all apps was 34%.What does this mean for developers?4 key monetization strategies became abundantly clear following our research:Make rewarded ads easy to find – To increase visibility, consider adding a button to your app’s home screen or storefront, or utilize in-app messaging or push notifications to promote rewarded offers. Tapjoy’s Native-to-Earn, Message-to-Earn, and Push-to-Earn features make it easy for developers to add and manage these additions right from the dashboard.Explore currency sale promotions – Try running limited-time offers in which your players earn more currency than usual for every rewarded ad they complete. These currency sales can drive serious spikes in revenue. With Tapjoy, it’s easy to personalize your currency sale with custom branding and to control the payout ratio.Introduce ads early – Getting users to interact with ads early in their gameplay increases the chance that they will continue to engage with or make a purchase in your app. Rewarded ads introduce players to the mechanics and benefits of your in-app currency, so it’s important to make ads visible and easy to access during the player’s first few sessions.Integrate multiple rewarded formats – Integrating multiple formats — such as rewarded video and offerwall combined — provides developers with the best opportunity to monetize their users and maximize revenue. Diversifying formats not only unlocks higher eCPMs, but it provides players with the freedom to pick and choose the rewarded offer that appeals most to them.]]></description><link>https://unity.com/blog/understanding-the-impact-of-rewarded-ads-on-iap-retention-and-engagement</link><guid isPermaLink="true">https://unity.com/blog/understanding-the-impact-of-rewarded-ads-on-iap-retention-and-engagement</guid><pubDate>Wed, 24 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[What’s next for computer vision: An AI developer weighs in]]></title><description><![CDATA[In this Q&A, get a glimpse into the future of artificial intelligence (AI) and computer vision through the lens of longtime Unity user Gerard Espona, whose robot digital twin project was featured in the Made with Unity: AI series. Working as simulation lead at Luxonis, whose core technology makes it possible to embed human-level perception into robotics, Espona uses his years of experience in the industry to weigh in on the current state and anticipated progression of computer vision.During recent years, computer vision (CV) and AI have become the fastest-growing fields both in market size and industry adoption rate. Spatial CV and edge AI have been used to improve and automate repetitive tasks as well as complex processes.This new reality is thanks to the democratization of CV/AI. Increasingly affordable hardware access, including depth perception capability as well as improvements in machine learning (ML), has enabled the deployment of real solutions on edge CV/AI systems.Spatial CV using edge AI enables depth-based applications to be deployed without the need of a data center service, and also allows the user to preserve privacy by processing images on the device itself.Along with more accessible hardware, software and machine learning workflows are undergoing important improvements. Although they are still very specialized and full of technical challenges, they have become much more accessible, offering tools that allow users to train their own models.Within the standard ML pipeline/workflow, large-scale edge computing and deployment can still pose issues. One of the biggest general challenges is to reduce the costs and timelines currently required to create and/or improve machine learning models on real-world applications. In other words, the challenge is how to manage all these devices to enable a smooth pipeline for continuous improvement.Also, the implicit limitations in terms of compute processing need extra effort on the final model deployed on the device (that is, apps need to be lightweight, performant, etc.). That said, embedded technology evolves really fast, and each iteration is a big leap in processing capabilities.Spatial CV/AI is a field that still requires a lot of specialization and systems. Workflows are often complicated and tedious due to numerous technical challenges, so a lot of time is devoted to smoothing out the workflow instead of focusing on value-added tasks.Creating datasets (collecting and filtering images and videos), annotating the images, preprocessing/augmentation process, training, deploying and closing the feedback loop for continuous improvement is a complex process. Each step of the workflow is technically difficult and usually involves time and financial cost, and more so for systems working in remote areas with limited connectivity.At Luxonis, we help our customers build and deploy solutions to solve and automate complex tasks at scale, so we’re facing all these issues directly. Our mission, “Robotic vision made simple,” provides not only great and affordable depth-capable hardware, but also a solid and smooth ML pipeline with synthetic datasets and simulation.Another important challenge is the work that needs to be done on the interpretability of models and the creation of datasets from an ethical, privacy and bias point of view.Last but not least, global chip supply issues are making it difficult to get the hardware into everybody’s hands.Data-centric AI is potentially useful when a working model is underperforming. Investing a large amount of time to optimize the model often leads to almost zero real improvement. Instead, with data-centric AI the investment is in analysis, cleaning and improving of the dataset.Usually when a model is underperforming, the issue is within the dataset itself, as there is not enough data for the model to outperform. This could be the result of two possible reasons: 1) the model needs a much larger amount of data, which is difficult to collect in the real world, or 2) the model doesn’t have enough examples of rare cases, which take a lot of time to happen in the real world.In both situations, synthetic datasets could help.Thanks to Unity’s computer vision tools, it is very easy to create photorealistic scenes and randomize elements like materials, light conditions and object placement. The tools come with common labels like 2D bounding boxes, 3D bounding boxes, semantic and instance segmentation, and even human body key points. Additionally, these can be easily extended with custom randomizers, labelers and annotations.Almost any task you want to automate or improve using edge CV/AI very likely involves detecting people for obvious safety and security reasons. It’s critical to guarantee user safety around autonomous systems or robots when they’re working, requiring models to be trained on data about humans.That means we need to capture a large amount of images, including information like poses and physical appearance, that are representative of the entire human population. This task raises some concerns about privacy, ethics and bias when starting to capture real human data to train the model.Fortunately, we can use synthetic datasets to mitigate some of these concerns using human 3D models and poses. A very good example is the work done by the Unity team with PeopleSansPeople.PeopleSansPeople is a human-centric synthetic dataset creator using 3D models and standard animations to randomize human body poses. Also, we can use a Unity project template, to which we add our own 3D models and poses to create our own human synthetic dataset.At Luxonis, we’re using this project as the basis for creating our own human synthetic dataset and training models. In general, we use Unity’s computer vision tools to create large and complex datasets with a high level of customization on labelers, annotations and randomizations. This allows our ML team to iterate faster with our customers, without needing to wait for real-world data collection and manual annotation.Since the introduction of transformer architecture, CV tasks are more accessible. Generative models like DALL-E 2 could also be used to create synthetic datasets, and NeRF as a neural approach to generate novel point of views of known objects and scenes. It’s clear all these innovations are catching the attention of audiences.On the other hand, having access to better annotation tools and model zoos and libraries with pre-trained, ready-to-use models are helping drive wide adoption.One key element contributing to the uptick in computer vision use is the fast evolution of vision processing units (VPUs) that currently allow users to perform model inferences on device (without the need for any host) at 4 TOPS of processing power (current Intel Movidius Myriad X). The new generation of VPUs promises a big leap in capabilities, allowing even more complex CV/AI applications to be deployed on edge.Any application related to agriculture and farming always captures my attention. For example, there is now a cow tracking and monitoring CV/AI application using drones.Our thanks to Gerard for sharing his perspective with us – keep up with his latest thoughts on LinkedIn and Twitter. And, learn more about how Unity can help your team generate synthetic data to improve computer vision model training with Unity Computer Vision.]]></description><link>https://unity.com/blog/industry/whats-next-for-computer-vision-an-ai-developer-weighs-in</link><guid isPermaLink="true">https://unity.com/blog/industry/whats-next-for-computer-vision-an-ai-developer-weighs-in</guid><pubDate>Wed, 24 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The 3 most important KPIs running an on-device acquisition campaign]]></title><description><![CDATA[On-device channels are no longer all about preloads. Today, telcos represent another performance marketing channel with transparent reporting and deeper insights. To get the full picture behind the performance of your on-device campaigns, it’s critical to prioritize long-term KPIs. It’s the only way the stickiness of users acquired through these channels really shine. Why?On-device campaigns reach users when they’re setting up their new devices and looking to download apps they’ll use throughout the device lifetime, not necessarily right away. Think about it - if you download a booking app from an ad during device setup, are you planning to book a vacation immediately or later down the road?This means attribution is a waiting game for on-device campaigns, with day 30 as the turning point. In fact, if a user engages with your app 30 days down the line, they’re more likely to stay active for a long period of time. Simply put, LTV is high for on-device campaigns. This means you want to be looking at KPIs that allow you to measure and optimize the value of the users you attract far down the road.ROASROAS is king when it comes to measuring the long-term value of your users. To get the clearest idea of your ROAS and how to optimize it, there are a few things to keep in mind. First, ROAS should be measured on D30/60/90 not D1/3/7. This is because, with on-device channels, users are likely to open an app within the first 30 days or longer - when a user downloads an app during device setup, they do so expecting to open it in the future, not right away.You should also pay attention to how it’s being measured. ROAS is calculated by dividing the amount of revenue a campaign generates by the amount it costs to run it. In the context of on-device campaigns, that revenue comes from in-app purchases, subscriptions, or ad monetization.When measuring the effectiveness of your on-device campaigns, it’s important to calculate ROAS using your on-device ad revenue rather than average ad revenue, which will be lower. That’s because ad revenue is high for users acquired through on-device campaigns - on-device channels use unique data points and deep algorithms to ensure the right bid for each individual user. To get the clearest picture of where you stand in relation to your ROAS goals, you should integrate ad revenue with your on-device platform.Once calculated, ROAS gives a clear monetary view of your campaigns, so it’s clear how much you spent vs brought in. This monetary value is important because it tells you if your on-device campaigns are reaching valuable users. Looking at ROAS by placements, you get insight into which placements are doing it best. With the knowledge of how to maximize ROAS, you’ll maximize the long term value and engagement of your users, too.Cost KPIsComparing LTV to spend will help you determine whether or not your users are spending enough to cover your spend and ultimately turn a profit. You can even pinpoint areas of your strategy that are effective, and those that may need adjustment.There are a few ways to measure cost effectiveness. Here are the most common two, especially for on-device campaigns.Cost per action (CPA)If it’s quality you’re looking for, first, run a CPA campaign to confirm that you’re looking in the right places for users who will engage with your app. To count as a conversion, users must see the ad, install the app, and complete the action you preset. You’ll only pay for the users who reach a chosen point in the app experience after installation. A CPA that is higher than LTV is a clear indicator that your campaigns are focused on less relevant channels or touchpoints, while a CPA that is lower than your LTV confirms that you are attracting high quality users.In the context of on-device campaigns, this is key because it means you won't pay immediately for a user who may not engage for a month or so. The pricing model also integrates in-app revenue, which is useful for apps that rely more on IAPs than ads.Cost per retained user (CPRU)It’s also worthwhile to keep track of how much you’re paying for the user that’s still there on day 30. CPRU takes into account conversions and retention rate - if your budget is $10k, you have 1000 conversions and a day 1 retention rate of 20%, you come away with 200 converted users at a $50 per user acquisition cost. If you can increase retention, you end up with higher quality users at a lower CPRU.Measuring CPRU, retention becomes a success metric for your UA campaigns and can help you determine whether you have enough engaged users to cover spend.On day 30 and beyond, these KPIs can help you optimize your on-device campaigns to reach the most engaged users with high LTV.]]></description><link>https://unity.com/blog/the-3-most-important-kpis-running-an-on-device-acquisition-campaign</link><guid isPermaLink="true">https://unity.com/blog/the-3-most-important-kpis-running-an-on-device-acquisition-campaign</guid><pubDate>Tue, 16 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to choose a programmatic video advertising platform: 8 considerations]]></title><description><![CDATA[Whether you’re an advertiser or a publisher, partnering up with the right programmatic video advertising platform is one of the most important business decisions you can make. More than half of U.S. marketing budgets are now devoted to programmatically purchased media, and there’s no indication that trend will reverse any time soon.Everybody wants to find the solution that’s best for their bottom line. However, the specific considerations that should go into choosing the right video programmatic advertising solution differ depending on whether you have supply to sell or are looking for an audience for your advertisements. This article will break down key factors for both mobile advertisers and mobile publishers to keep in mind as they search for a programmatic video advertising platform.Before we get into the specifics on either end, let’s recap the basic concepts.What is a programmatic video advertising platform?A programmatic video advertising platform combines tools, processes, and marketplaces to place video ads from advertising partners in ad placements furnished by publishing partners. The “programmatic” part of the term means that it’s all done procedurally via automated tools, integrating with demand side platforms and supply side platforms to allow advertising placements to be bid upon, selected, and displayed in fractions of a second.If a mobile game has ever offered you extra rewards for watching a video and you found yourself watching an ad for a related game a split second later, you’ve likely been on the user side of an advertising programmatic transaction. Now let’s take a look at what considerations make for the ideal programmatic video advertising platform for the other two main parties involved.4 points to help advertisers choose the best programmatic platformLooking for the best way to leverage your video demand side platform? These are four key points for advertisers to consider when trying to find the right programmatic video advertising platform.A large, engaged audienceOne of the most important things a programmatic video advertising platform can do for advertisers is put their creative content in front of as many people as possible. However, it’s not enough to just pass your content in front of the most eyeballs. It’s equally important for the platform to give you access to engaged audiences who are more likely to convert so you can make the most of your advertising dollar.Full-screen videos to grab attentionYou need every advantage you can get when you’re grappling for the attention of a busy mobile user. Your video demand side platform should prioritize full-screen takeovers when and where they make sense, making sure your content isn’t just playing unnoticed on the far side of the screen.A range of ad options that are easy to testYour video programmatic advertising partner should be able to offer a broad variety of creative and placement options, including interstitial and rewarded ads. It should also enable you to test, iterate, and optimize ads as soon as they’re put into rotation, ensuring your ad spend is meeting your targets and allowing for fast and flexible changes if needed.Simple access to supplyEven the most powerful programmatic video advertising platform is no good if it’s impractical to get running. Look for partners that allows instant access to supply through tried-and-true platforms like Google Display & Video 360, Magnite, and others. On top of that, you should seek out a private exchange to ensure access to premium inventory.4 points for publishers in search of the best programmatic platformYou work hard to make the best apps for your users, and you deserve to partner up with a programmatic video advertising platform that works hard too. Serving video ads that both keep users engaged and your profits rising can be a tricky needle to thread, but the right platform should make your part of the process simple and effective.A large selection of advertisersEncountering the same ads over and over again can get old fast — and diminish engagement. On top of that, a small selection of advertisers means fewer chances for your users to connect with an ad and convert — which means less revenue, too. The ideal programmatic video advertising platform will partner with thousands of advertisers to fill your placements with fresh, engaging content.Rewarded videos and offerwallsInterstitial video ads aren’t likely to disappear any time soon, but players strongly prefer other means of advertisement. In fact, 76% of US mobile gamers say they prefer rewarded videos over interstitial ads. Giving players the choice of when to watch ads, with the inducement of in-game rewards, can be very powerful — and an offerwall is another powerful way to put the ball in your player’s court.Easy supply-side SDK integrationThe time your developers spend integrating a new video programmatic advertising solution into your apps is time they could have spent making those apps more engaging for users. While any backend adjustment will naturally take some time to implement, your new programmatic partner should offer a powerful, industry-standard SDK to make the process fast and non-disruptive.Support for programmatic mediationMediators such as LevelPlay by ironSource automatically prioritize ad demand from multiple third-party networks, optimizing your cash flow and reducing work on your end. Your programmatic video advertising platform should seamlessly integrate with mediators to make the most of each ad placement, every time.Pick a powerful programmatic partnerThankfully, advertisers and publishers alike can choose one solution that checks all the above boxes and more. For advertisers, the ironSource Programmatic Marketplace will connect you with targeted audiences in thousands of apps that gel with your brand. For publishers, ironSource’s marketplace means a massive selection of ads that your users and your bottom line will love. ]]></description><link>https://unity.com/blog/how-to-choose-a-programmatic-video-advertising-platform-8-considerations</link><guid isPermaLink="true">https://unity.com/blog/how-to-choose-a-programmatic-video-advertising-platform-8-considerations</guid><pubDate>Fri, 12 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to optimize your hybrid waterfall with CPM buckets]]></title><description><![CDATA[In-app bidding has automated most waterfall optimization, yet developers still manage multiple hybrid waterfalls, each with dozens of manual instances. Naturally, this can be timely and overwhelming to maintain, keeping you from optimizing to perfection and focusing on other opportunities to boost revenue.Rather than analyzing each individual network and checking if instances are available at each price point, breaking down your waterfall into different CPM ranges allows you to visualize the waterfall and easily identify the gaps.Here are some tips on how to use CPM buckets to better optimize your waterfall’s performance.What are CPM buckets?CPM buckets show you exactly how much revenue and how many impressions you’re getting from each CPM price range, giving you a more granular idea of how different networks are competing in the waterfall. CPM buckets are a feature of real time pivot reports, available on ironSource LevelPlay.Identifying and closing the gapsTypically in a waterfall, you can only see each ad network’s average CPM. But this keeps you from seeing ad network distribution across all price points and understanding exactly where ad networks are bidding. Bottom line - you don’t know where in the waterfall you should add a new instance.By separating CPM into buckets, (for example, seeing all the ad networks generating a CPM of $10-$20) you understand exactly which networks are driving impressions and revenue and which CPMs aren’t being filledNow how do you do it? As a LevelPlay client, simply use ironSource’s real time pivot reports - choose the CPM bucket filter option and sort by “average bid price.” From here, you’ll see how your revenue spreads out among CPM ranges and you’ll start to notice gaps in your bar graph. Every gap in revenue - where revenue is much lower than the neighboring CPM group - indicates an opportunity to optimize your monetization strategy. The buckets can range from small increments like $1 to larger increments like $10, so it’s important to compare CPM buckets of the same incremental value.Pro tip: To best set up your waterfall, create one tab with the general waterfall (filter app, OS, Ad unit, geo/geos from a specific group) and make sure to look at Revenue and eCPM in the “measures” dropdown. In the “show” section, choose CPM buckets and sort by average bid price. From here, you can mark down any gaps.But where do these gaps come from? Gaps in revenue are often due to friction in the waterfall, like not enough instances, instances that aren’t working, or a waterfall setup mistake. But gaps can also be adjusted and fixed.Once you’ve found a gap, you can look at the CPM buckets around it to better understand the context. Let’s say you see a strong instance generating significant revenue in the CPM bucket right below it, in the $70-80 group. This instance from this specific ad network has a lot of potential, so it’s worth trying to push it to a higher CPM bucket.In fact, when you look at higher CPM buckets, you don’t see this ad network anywhere else in the waterfall - what a missed opportunity! Try adding another instance of this network higher up in the waterfall. If you’re profiting well with a $70-80 CPM, imagine how much more revenue you could bring at a $150 CPM.Pro tip: Focusing on higher areas in the waterfall makes a larger financial impact, leading to bigger increases in ARPDAU.Let’s say you decide to add 5 instances of that network to higher CPM buckets. You can use LevelPlay’s quick A/B test to understand if this adjustment boosts your revenue - not just for this gap, but for any and all that you find. Simply compare your existing waterfall against the new waterfall with these 5 higher instances - then implement the one that drives the highest instances.Božo Janković, Head of Ad Monetization at GameBiz Consulting, uses CPM buckets "to understand at which CPMs the bidding networks are filling. From there, I can pinpoint exactly where in the waterfall to add more traditional instances - which creates more competition, especially for the bidding networks, and creates an opportunity for revenue growth."Finding new insightsYou can dig even deeper into your data by filtering by ad source. Before CPM buckets, you were limited to seeing an average eCPM for each bidding network. Maybe you knew that one ad source had an average CPM of $50, but the distribution of impression across the waterfall was a black box. Now, we know exactly which CPMs the bidders are filling. “I find ironSource CPM buckets feature very insightful and and use it daily. It’s an easy way to identify opportunities to optimize the waterfall and earn even more revenue."

-Božo Janković, Head of Ad Monetization at GameBiz ConsultingUnderstanding your CPM distribution empowers you to not only identify your revenue sources, but also to promote revenue growth. Armed with the knowledge of which buckets some of their stronger bidding networking are performing in, some publishers actively add instances from traditional networks above those ranges. This creates better competition and also helps drive up the bids from the biddersThere’s no need for deep analysis - once you see the gaps, you can quickly understand who’s performing in the lower and higher buckets, and see exactly what’s missing. This way, you won’t miss out on any lost revenue.Learn more about CPM buckets, available exclusively to ironSource LevelPlay here.]]></description><link>https://unity.com/blog/optimize-waterfall-cpm-buckets</link><guid isPermaLink="true">https://unity.com/blog/optimize-waterfall-cpm-buckets</guid><pubDate>Wed, 10 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[New real-time demo, Lion: Unity Art Tools in action and the future of Wētā Digital for RT3D]]></title><description><![CDATA[Lion marks a key milestone for our Unity Art Tools, and illustrates our ongoing work to build tools that empower creators.This collaborative demo showcases what happens when artists and developers work together at the production level to push the boundaries of what’s possible for real-time, high-fidelity visuals.This combined production and technological effort features innovations in real-time technology that shows content created with Wētā Digital, SpeedTree, Ziva, SyncSketch, and the Unity Editor artist tools – now part of an integrated demo in a real-time pipeline, experienced on consumer hardware, running at 30 fps at 4K on PlayStation 5®.The original offline demo assets were created by students from the Monster Emporium Animation School, with lions simulated in real-world measurements using the biomechanical elastic-body solver in Ziva VFX for soft body dynamic simulation.The scene was then updated to enable a highly performant real-time experience. The lion assets were enhanced with machine-learned Ziva RT deformations, executed dynamically using the new Ziva RT Unity player (launching in Preview at SIGGRAPH 2022), which provides the utmost fidelity deformation.For optimal performance at runtime, Ziva RT Unity Player executes SIMD-optimized code in a parallel manner, leveraging Unity’s Burst technology for the dynamic interactive deformations in real-time.The new demo environment also features vegetation from SpeedTree. We started from assets created with SpeedTree Cinema, and optimized them for real-time to add some dusty tufts of grass near the lions and build the iconic shape of an African mopane in the horizon. These exports are Games FBX with individual high-resolution textures that allow the plant assets to match resolution to the finely groomed creatures.To achieve realism, Wētā Digital’s hair and fur groom tool, Wig (pre-alpha), complemented Ziva’s deformation technology by adding another layer of fidelity and artist directability to create the big cat’s mane and fur grooms on both the lion and cub.“Wig is a different way of working – it’s actually the fastest grooming tool that I’ve ever used,” says Sara Hansen, a Unity technical artist on Lion who has previously created production grooms for Wētā FX, DNEG, and other VFX houses.“A high-quality hero groom – which would take me several months in another grooming package – is much faster to create in Wig. It takes just a couple of weeks, and some grooms go from weeks to create in other tools, to only one or few days in Wig, and at far better quality levels and with greater artist controllability… Even when you have to react to detailed art direction feedback notes, like adjusting a specific strand from a reference shot, it’s easy to author in Wig.”The team behind Lion was distributed across multiple countries in North America and Western Europe. Their remote teamwork was made possible by visual collaboration tool SyncSketch, which provides the ability for real-time production reviews and intuitive iteration.Production validation of Wētā Digital’s Wig, Ziva, SpeedTree, SyncSketch, and the Unity Editor through this creative exercise allowed the team to iterate quickly and improve the workflow for end-to-end creatures and characters – creating connections from rigging to deformations to hair and fur attachment systems, rendering to shading, and more, into a coherent system.“We want to ensure that our tools work together and enable creators to have great workflows for authoring characters and creatures end-to-end. So, part of the goal behind creating this demo was to help validate our Unity Art Tools in a production setting, solving real production needs that artists face on a regular basis and making our tools and workflows better and more robust throughout,” says Natalya Tatarchuk, Distinguished Technical Fellow and Chief Architect, VP, Professional Artistry and Graphics Innovation at Unity Technologies.To accomplish realistic and believable creature and scene rendering that runs in real-time on PlayStation 5®, Xbox Series X|S®, and PC, a number of key technology innovations were developed.The project began with Unity’s High Definition Render Pipeline (HDRP). We used Global Illumination (GI), which was achieved by leveraging Adaptive Probe Volumes (APV) to light the arid desert and vegetation surrounding the lions.The team had to tackle the challenge of simulating and rendering several million hairs on high-fidelity grooms. In order to achieve this, a significant set of performance and visual-fidelity improvements were made to HDRP.One set of improvements includes a new GPU-driven clustered hair simulation that enables millions of hair strands to react dynamically in real-time, part of the new Hair System released on Unity’s GitHub. This builds on the hair simulation used for the incredible Digital Human showcase, Enemies, and expands the method to handle several orders of magnitude more hair strands efficiently on GPU.For hair and fur rendering, the graphics developers at Unity designed a set of improvements to a GPU tile-based software rasterization algorithm in HDRP, with significant optimization to render several million unique hair strands. This method achieved smooth visuals with analytic anti-aliasing with compute-sorted order independent transparency for hair strands, and improved advanced physically-based hair lighting models for film-quality hair strand rendering.This approach means that we can now render millions of individual hair strands, all moving independently and uniquely, without artifacts. It accurately preserves the hair highlights and the way that the light shines through soft hair, such as on the cub’s fur or the lion’s mane in the sunlight.These hair simulation and rendering improvements, hardened by this and other productions, will be landing in the 2023.1 Tech Stream.Many of our tools are already available and are used in productions throughout the world, and we can’t wait to share more with creators everywhere.Lion will demo at SIGGRAPH 2022 during this session at the Vancouver Convention Centre:Lion: A glimpse of the future with Unity Art Tools
Speakers: James Jacobs (Unity Technologies), Anton Blake (Monster Emporium), Julio Cesar (Monster Emporium), Sara Hansen (Unity Technologies)
Wednesday, August 10, 2:15–3:15 pm
West Building, Ballroom C/DJoin us to watch the premiere of Unity’s latest demo, Lion. This production features innovations in real-time technology through content created with Ziva, Wētā Digital, SyncSketch, SpeedTree, and the Unity Editor artist tools. Lion showcases plans to help artists create visuals that push boundaries, as well as foundations for richer creator workflows.Intro to Ziva Face Trainer: Auto-rigging real-time 3D faces
Speakers: James Jacobs (Unity Technologies), Crawford Doran (Unity Technologies)
(available online following SIGGRAPH 2022)
Creating organic environments in Unity 2021 LTS
Speaker: Xiaoxi Liu (Unity Technologies)
(available online following SIGGRAPH 2022)
Artist-friendly features in HDRP
Speakers: Sean Puller (Unity Technologies), Alix Mitchell (Unity Technologies)
(available online following SIGGRAPH 2022)
Ziva for feature animation: Simulation and machine learning-ready workflow
Speakers: Brian Anderson (Unity Technologies)
Wednesday August 10, 9 am–12 pm
West Building, Room 116-117
SpeedTree Cinema: From concept art to VFX asset
Speaker: Sarah Scruggs (Unity Technologies)
Wednesday August 10, 10:30–11:30 am
West Building, Room 116-117
Advances in real-time rendering in games: Part III
Speakers: Natalya Tatarchuk, Francesco Cifariello Ciardi, Lasse Jon Fuglsang Pedersen, John Parsaie, et al.
Thursday, August 11, 2:15–5:15 pm
West Building, Ballroom C/D
Topics covered will include probe-based lighting, the strand-based hair system, and physical hair shading model.
Introduction to Ziva RT: Bringing creature sims into Unity with Monster Emporium and Ziva RT
Speakers: James Jacobs (Unity Technologies), Anton Blake (Monster Emporium), Julio Cesar (Monster Emporium)
Thursday, August 11, 2:15–5:15 pm
West Building, Room 116-117
Visit our site for more information and a complete list of Unity sessions at SIGGRAPH 2022.]]></description><link>https://unity.com/archive/blog/industry/new-real-time-demo-lion-unity-art-tools-in-action-and-the-future-of-weta-digital-for-rt3d</link><guid isPermaLink="true">https://unity.com/archive/blog/industry/new-real-time-demo-lion-unity-art-tools-in-action-and-the-future-of-weta-digital-for-rt3d</guid><pubDate>Wed, 10 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Blockchain technology is changing the gaming ecosystem, but what value does it add for developers?]]></title><description><![CDATA[The blockchain has arrived - transforming the centralized and locked-in Web2 ecosystem we currently use into the decentralized Metaverse and Web3. For game developers, the benefits of joining this movement towards a trustless and open system include interoperability, true user ownership, and game-asset marketplaces which allow for more community engagement. These Web3 features will enable you to leverage decentralization to unlock new ways to monetize, create, and grow your games. Here are four ways the blockchain and its implementation will add value to your games for you.First, what is blockchain technology:As a refresher on what we’ve talked about before, the blockchain is effectively an online registry with its primary selling points being its security and decentralized nature. The blockchain is exceedingly difficult to manipulate and essentially monopoly-resistant - offering a database that is democratic and open while remaining secure. In addition, this technology is interoperable, meaning that the assets stored within it can be easily moved from one application or platform to another that are on-chain. These assets, which are called non-fungible tokens (NFTs), can’t be identically replicated or replaced, each having its own unique signifier and identity. The registry catalogs and stores who owns which assets using smart contracts, users are then able to view and manage their assets through a blockchain wallet.Value #1: Increase in-app purchases through true user-ownershipThe arrival of the blockchain is changing traditional forms of monetization, most significantly through the transformed relationship between users and their in-app purchases.Though the majority of free-to-play games today include in-app purchases, only 5% of users make them. For many users, investment into a casual game feels wasteful - they fear that their progress and stake is wasted if they lose interest in playing. What’s more, user purchases of Web2 in-game assets aren’t truly owned by the user and are still ultimately the developers’ to do with what they will.Moving on-chain helps to ease this user caution. By their very nature, Web2 in-app purchases are unable to generate value for users outside of the play experience, making all in-app purchases ultimately sunk costs. However, the tradability and true user ownership afforded by blockchain technology allows for a marketplace to exist where users can exchange ownership of their NFTs. As a result, users are able to sell their game-assets to other users to recoup their costs if they no longer want to play a game. This has the benefit of offering a safety net to users on their purchases and so further eases users’ wariness of their purchases being sunk costs.But even without the resale value offered through tradability, true user ownership can alone increase the value of in-app purchases for users. Their purchase of in-game asset NFTs isn’t just tied to their lifetime within the game but is forever after theirs. This increased longevity and true ownership for users is an essentially motivating force. With increased value and motivation towards making in-app purchases comes a significant rise in the percentage of users who will purchase in-game assets.Value #2: New monetization opportunities through royaltiesThanks to true user ownership and tradability, not only does the blockchain motivate more users toward purchasing game assets, but it also provides a whole new form of monetization for developers: royalties.Like we mentioned, because users have full ownership of their NFT assets, they’ll be able to trade and sell those assets to other users. As the developer who created these assets, you’ll be able to charge users royalties on the movement of NFTs across marketplaces.Royalties will also lengthen the LTV of your games and their attached assets. While Web2 in-app purchases are essentially one-and-done sales, Web3 royalty fees are charged per transaction. For every NFT trade or sale there is a royalty attached, creating a new way for you to monetize your users across the lifespan of your titles, making those titles generate more revenue and for longer.Value #3: Increase efficiency and retention with user-generated contentThough user-generated content already exists within Web2, users cannot truly own, build, or trade their created content. Blockchain technology allows them to fully own and customize the assets they create. This has multiple benefits for developers.First is the efficiency it adds to development time, since the in-game assets can functionally be crowd-sourced. One of the most time-consuming elements of game development is ideating and building game-assets. Each asset must be designed, built, and implemented before it can be used to fill the game world. True ownership allows users to fully customize and personalize their assets according to their taste. Through users’ ability to customize and personalize assets within a game, game worlds can be partly or completely filled with the ideas of their users. This user-generated content provides a tremendous boost to game development efficiency for you - users can take on the lion-share of building assets, allowing them to build the world they want, while you can focus on the rest of your game.Second is the way user generated content can be used to aid in user retention. A compelling way to prevent user churn is by fostering connection between your users and your game - users are less likely to leave a game’s world if they feel they have an emotional connection to it. Through customization and personalization tools, users have a hand in creating the game world they occupy. This gives your users a reason to see themselves within your game and be a part of the world they helped create. User ownership only makes this bond stronger. Not only will users see themselves within the game, but they will also own a piece of that game’s world.Value #4: Improve user acquisition through interoperability and opennessThe openness inherent to the technology creates new user acquisition opportunities thanks to interoperability. Interoperable assets allow users and you to move both user-generated and developer-created assets from one on-chain game to another. This allows you to leverage the assets that exist within another blockchain game to generate interest on their own - essentially aiding in user acquisition.The most rudimentary example of this is a one-for-one placement of an asset users already own from another game into your own. If a user owns a particular NFT within their wallet, let’s say a weapon within an RPG, you can have it that users can access and use that same weapon within your game. This allows you to entice users from another game to play yours with the assets they have already acquired, offering a new gameplay experience with the game-assets users already own.However, the process of implementing one-for-one placement isn’t so straightforward. It requires careful integration of movement, visuals, and attributes from one game to another. Thankfully, there are also more transformative methods to leverage these user-owned assets.Without needing to directly integrate the game-asset, you can create in-game benefits for users who hold a specific NFT in their wallets. You can grant access to users who hold certain NFTs to exclusive areas and supply them with unique benefits, both in-game and in real life. These tools offer you a unique way to acquire new users and share your already acquired user-base across multiple titles.Blockchain technology offers developers empowerment and value:The blockchain offers a variety of value to developers that they would not otherwise be able to access. By its decentralized nature, the blockchain offers opportunities for monetization, growth and creativity that don’t exist within the Web2 marketplace - where Web2 is closed and locked-in, the blockchain is open and decentralized.Though the story of Web3 and blockchain integration is only just beginning, its value to developers and users alike is already evident. Implementation of the blockchain within mobile games will allow developers to reach new avenues while bolstering their already existing systems. What’s more, the blockchain allows users to share in the value generated by this implementation and in so doing creates a stronger bond between user and developer - and a better bond means better games and a better market.]]></description><link>https://unity.com/blog/blockchain-technology-is-changing-the-gaming-ecosystem-but-what-value-does-it-add-for-developers</link><guid isPermaLink="true">https://unity.com/blog/blockchain-technology-is-changing-the-gaming-ecosystem-but-what-value-does-it-add-for-developers</guid><pubDate>Tue, 09 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity forms new venture to manage China operations]]></title><description><![CDATA[Unity has built a rapidly growing business serving creators in China through its talented local team, robust support for local gaming technology platforms, and by nurturing a highly engaged local community.Today, we are excited to announce that Unity has entered into an agreement with leading partners to form a new regional joint venture, Unity China. Unity China will unlock new opportunities for us to partner with local companies and increase our R&D investment to better serve the needs of the Chinese creator community.To form this venture, Unity’s China-based Create Solutions and Gaming Services businesses will be transferred into Unity China, in which local partners including Alibaba, China Mobile, G-Bits, miHoYo, OPPO, PCI, and Douyin Group will invest at a post-money valuation for Unity China of $1B. They will support Unity’s growth in a number of ways – increasing the adoption of Unity’s solutions in gaming, helping Unity access new industries, and providing marketing support for the company’s products and services. Unity Ads will not be a part of this venture and will continue to be managed by Unity’s global team.In the short term, Unity China will begin building customized local versions of its core products for game developers, including a China-specific version of Unity’s flagship Unity Editor. Unity China will also become the exclusive local reseller of Unity’s global catalog of products and services, ensuring our customers and creator community in the region continue to have access to all of the Unity tools they already know and love.Unity will retain majority ownership and control of Unity China, which will operate solely within the Greater China region and will be overseen by a board of directors composed of Unity executives and major investors. As such, Unity will continue to consolidate Unity China in its financial results. The venture will be led by Unity’s current General Manager for Greater China, Junbo Zhang, who will assume the role of President and CEO of Unity China, and will begin serving local customers and creators later this month.Editor's Note (September 13, 2022): The Unity China venture is now fully operational. Please direct inquiries to Unity China.]]></description><link>https://unity.com/blog/news/unity-forms-new-venture-to-manage-china-operations</link><guid isPermaLink="true">https://unity.com/blog/news/unity-forms-new-venture-to-manage-china-operations</guid><pubDate>Tue, 09 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[‘Screens are the new horsepower’: Leading luxury auto brand innovates with Unity]]></title><description><![CDATA[Unity is partnering with Mercedes-Benz AG to power the infotainment domain of its new operating system, which will roll out across its vehicle portfolio. The first vehicles running MB.OS and Unity hit the road in 2024.Winning the hearts, minds and wallets of today’s drivers requires automotive original equipment manufacturers (OEMs) to not only engage drivers and passengers with larger, more immersive displays, but also redefine how they use and interact with the software in their vehicles. The in-vehicle software experience is paramount to luxury buyers, who demand more visual fidelity and immersive experiences.Software-centered cars require a technology-driven approach. Traditional human-machine interface (HMI) toolchains are not capable of delivering such cutting-edge experiences – but real-time 3D is.This session first aired at NVIDIA GTC 2022. Watch it here: Creating Software for the Most Desirable Cars. Mercedes-Benz AG Chief Software Officer Magnus Ostberg shared a look at the Mercedes-Benz VISION EQXX concept car, whose interior is powered by Unity. Unity's game engine elevates the UI to a new level of digital luxury, with new 3D capabilities and visuals that are like nothing you've ever seen in the car industry. This interior provides a glimpse at what Unity and the automaker will build together in the decade to come.In 2019, Mercedes-Benz Group AG Chief Design Officer Gorden Wagener declared the new battleground in the automotive industry: “Screens are the new horsepower.” This year, the automaker introduced MB.OS – the Mercedes-Benz Operating System – which will perfectly link its vehicles with the cloud and the Internet of Things (IoT), and comprise four central domains: Powertrain, Autonomous Driving, Infotainment, and Body and Comfort Systems.With MB.OS set to debut in 2024, you can get a hint of what’s to come in the Mercedes-Benz VISION EQXX electric vehicle research prototype, which showcases the radically new approach to the UI/UX enabled by Unity.After working closely with Unity to build innovative real-time 3D experiences in its research prototype vehicles, the OEM is now securing its leadership in car software with Unity to power its infotainment system across all Mercedes-Benz AG product lines.Mercedes-Benz AG’s developers will use Unity Industrial Collection to create the UI/UX for the entire digital cockpit, including the instrument cluster and media and passenger displays. Unity was chosen following a rigorous, comprehensive evaluation process against competing real-time 3D and HMI development solutions.Unity delivers stunning graphics and interactivity with speed and performance. Because Unity enables “what you see is what you get” (WYSIWYG) development, Mercedes-Benz’s HMI design group can create visually compelling, highly interactive concepts and designs knowing they will appear and perform as they would in embedded targets.Unity’s leadership in real-time 3D development will help power intuitive and visually engaging experiences - from 3D avatars that serve as “digital butlers” and 3D maps for richer navigation, to augmented reality (AR)-enhanced experiences and AI that adjusts vehicle settings and behaviors to user habits and preferences.Stay tuned for more updates about our groundbreaking work with Mercedes-Benz AG. Keep an eye out for more innovations from Unity that enhance HMI design and development. Learn more about Unity for HMI and contact us to transform your in-car software experience.]]></description><link>https://unity.com/blog/industry/screens-are-the-new-horsepower-leading-luxury-auto-brand-innovates-with-unity</link><guid isPermaLink="true">https://unity.com/blog/industry/screens-are-the-new-horsepower-leading-luxury-auto-brand-innovates-with-unity</guid><pubDate>Mon, 08 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity and Microsoft announce cloud partnership for game developers and beyond  ]]></title><description><![CDATA[Today we are excited to announce that we’ve partnered with Microsoft Azure to bring our Create Solutions to the cloud and develop our cloud infrastructure to better meet your needs and to enhance your games and other experiences. Microsoft and Unity will also work together to make it easier to build and distribute your games on Windows and Xbox platforms.We see many areas where we can partner with Microsoft Azure to build more cloud capabilities for you across our ecosystem of tools and services. We will use these capabilities to improve workflows, deliver new functionality, provide additional reliability and more global access options, and more.We are dedicated to creating native capabilities that unlock our tools for more people than ever so that you can take advantage of the advanced compute, storage and reliability that the cloud offers. We believe that this cloud enablement will make it easy for creators around the world to collaborate seamlessly. It will also allow experiences that wouldn’t be possible if limited to just the local resources of either a creator’s machine or a user’s platform. There are already many cloud powered tools and services here at Unity. From Unity Game Services, Parsec, DevOps, Wētā Digital, Digital Twins and more. Many of our tools are also heavily used already in cloud workflows – from PIXYZ through Unity Headless Rendering. With this partnership, even more of our tools will move to cloud capable, enabling worldwide teams of all scales.Below are just a few examples where we are excited to partner with Microsoft Azure to improve our tools and services for your use.DevOpsproducts such as Plastic SCMand Cloud Buildcan help facilitate rapid iteration cycles, enabling you to catch issues earlier and deliver higher-quality experiences as a result. We’ve been hard at work on expanding the capabilities of our turnkey DevOps services through the cloud. In addition to a revamped web experience, Cloud Build has had its repository limits increased from 25 GB to 40 GB and raised concurrency limits from six to eight. Plastic SCM has continued to improve the in-editor plugin and recently launched a brand new desktop UI. Through this partnership with Microsoft Azure, we’ll continue to scale these services to create an even more integrated creator ecosystem that can support larger and more complex projects.We are also focused on making sure it's easy to access your content, stream that content, and find content wherever you are. Parsec is already available on Azure VMs and within the Azure Game Development VM, but there is much work still left to do to allow individuals and teams to work together regardless of location. We see a future world where you can access your project files quickly regardless of the PC where you’ve been editing.Beyond games, many of the uses of RT3D in Digital Twinsrequire access to models, point clouds, and other data that wouldn’t fit in even the highest end of local devices. We see a need to make it easy for everyone to create, share, visualize, manage and collaborate against rich digital twins through the cloud.One of the biggest challenges that we must all work to solve as more games and experiences are built around full RT3D is the need for extraordinary content. Bringing our Wētā Digital and other art tools like Ziva to Microsoft Azure, so that we can democratize access to advanced machine learning and procedural creation tools for games, media and movies, and many other use cases is one of our most important cloud initiatives.And, for maximum reach and to enable greater success of your games, we will also be further supporting differentiating features across the Microsoft gaming ecosystem including Xbox console, PC as well as the Microsoft Store.Microsoft is already a strong partner with Unity and together we share a commitment to making game and other creators successful. Keep reading to see what our friends at Microsoft said about the partnership in their blog earlier today.Unity selects Azure as its cloud partner; Companies will work together to enable creators to reach their audiences on Xbox and PCAt Microsoft, we have a profound commitment to empowering creators. Throughout the history of Windows, we’ve nurtured developers and fostered their creative innovations. We do the same on our Xbox-branded platforms, supporting developers large and small in more than 90 countries around the world. And our Azure cloud assures developers that they can unleash their imaginations and trust that their work is secure and scalable. Our commitment to creators is something we share with our longtime partner, Unity, a global leader in real-time 3D technology. We’re also committed to expanding the creation and distribution of 3D content, to bringing relevant tools and technologies to a wider range of developers, and to making it easier than ever to bring games to players.That is why today, Unity has selected Azure as its cloud partner for building and operating real-time 3D (RT3D) experiences from the Unity engine. In addition, we’re excited to work together to make it easier for game creators around the world to publish to Xbox consoles and PC so they can reach their communities.The magic of 3D interactive experiences born in games is quickly moving to non-gaming worlds. Unity is building a platform-agnostic, cloud-native solution that meets the wide-ranging needs of all developers from enterprise through citizen creators. By giving creators easy access to RT3D simulation tools and the ability to create digital twins of real-world places and objects, Unity is offering creators an easy path to production of RT3D assets, whether for games or non-gaming worlds. To support this evolution, creators require a technical infrastructure that is as dynamic and innovative as they are. Azure is that solution. Built for security and global scalability, Azure already supports some of the world’s largest games and is bringing those battle-tested learnings to power RT3D experiences for all industries. As the need for real-time simulation becomes central to every industry ranging from e-commerce to energy, manufacturing to medical, and more, Unity and Microsoft are building the creator cloud that empowers 3D artists to build and run those experiences on Azure.Our ambition to democratize development of games and game like experiences around the world and across industries depends on strong partnerships, particularly with game engines like Unity. The partnership between Microsoft and Unity will also enable Made with Unity game creators to more easily reach their players across Windows and Xbox devices and unlock new success opportunities. By engineering improved developer tools, leveraging the latest platform innovation from silicon to cloud, and simplifying the publishing experience, Unity creators will be able to realize their dreams by bringing their games to more gamers around the world.As 3D interactive experiences continue to evolve in both the gaming and non-gaming worlds, Microsoft and Unity are empowering a wave of new creators to define the digital worlds of tomorrow. It is their talent, creativity, and empathy that will not only transform the world but change it for the better.]]></description><link>https://unity.com/blog/news/unity-and-microsoft-announce-cloud-partnership-for-game-developers-and-beyond</link><guid isPermaLink="true">https://unity.com/blog/news/unity-and-microsoft-announce-cloud-partnership-for-game-developers-and-beyond</guid><pubDate>Mon, 08 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Changemakers Showcase: Interviewing Felix Bohatsch of Gibbon: Beyond the Trees]]></title><description><![CDATA[Creators around the world are using Unity to bring their imaginations to life and make the world a better place. The Changemakers Showcase is a place for us to share their stories. We spoke with Felix Bohatsch, Game Director of Gibbon: Beyond the Trees to learn more about how he came up with the idea for this Apple Design Award-winning game, and his motivation for raising awareness of gibbon poaching and rainforest destruction.Felix Bohatsch is CEO of Broken Rules. Indie at heart, he co‐founded Broken Rules right after finishing his studies in 2009. He loves to create games that touch people all around the world and linger in the minds of the players, long after the device has been put down. Lately he was game director on Gibbon: Beyond the Trees and Old Man's Journey, which both won an Apple Design Award.What sparked your interest in real-time 3D?Developing games. The great thing about games is that they are so multidisciplinary. Their mix of visual, interaction, narrative and audio design means you work with a very diverse group of people and have to deal with variations of challenges. It never gets boring, and the real beauty is when it all comes together and the game experience is more impactful than the sum of its parts.How did you network, find communities, and make the connections needed to succeed? Did you run into challenges along the way?Our first game And Yet It Moves came out of a student project and was selected for the Student Showcase at IGF 2007. We were invited to show it at GDC 2007 and that introduced us to the amazing community of independent game developers. This community is friendly, helpful and full of interesting people. Ever since, we regularly visit conferences and showcases and meet both old and new fellow indie devs. Hanging out with them is always great!What made you want to change the world?I think that every game teaches players something and through every design decision, we the developers, communicate with our players."I also know that games are really hard to make and take a lot of time and energy to produce. So, I'd rather use this time wisely and focus on topics that I think are worthwhile for the audience of my games to think about."Please tell us more about Gibbon: Beyond the Trees.Gibbon: Beyond the Trees is a hopeful game about the beauty of wilderness and the destructive force of human civilization. It takes the viewpoint of the gibbon and you play this gibbon through a procedurally generated jungle inspired by Southeast Asian jungles. It’s all about exploring this beautiful world with the movesets that the gibbons have.At its core it’s really about ‘how cool would it be to swing through the jungle like a gibbon?’. And because we were so interested and amazed by gibbons and their habitat – the beautiful jungles – we wanted to show people that this habitat is being actively destroyed and that there are less and less gibbons out there in the world. Of course while our game is really about gibbons and how sad it is that their habitat is being destroyed, they’re kind of a placeholder for all of the other wonderful creatures out there that are losing their habitat and are being driven out of this world into extinction."It’s really about putting our players into the shoes of a gibbon and make them feel what it means to lose your habitat and your fellow creatures."How did you come up with the idea for this game?I get inspired by nature, by animals more specifically, and their movement. I’ve always liked gibbons, they were always my favorite animals in the zoo. I started looking at videos and documentaries about gibbons and really fell in love with their agility and elegance. They jump through the trees, they swing, they brachiate (swing from branch to branch using their arms), and they are really fast. So I really thought ‘this would be cool in a game, can we make a game that gives you the feeling of moving through the jungle like a gibbon?’That was the first spark, and when Clemens Scott (Creative Director of Gibbon: Beyond the Trees) and I started to seriously think about creating Gibbon we started researching and soon found out that they’re an endangered species and their habitat is being actively destroyed. So we thought ‘well we really can’t just do this exotic escapism game where you happily fling through these beautiful landscapes and exotic jungles and everything is lush and nice, while we know that out there, in truth, this part of the world is being destroyed’. It soon became clear to us that we have to make this part of the game.“We also liked it as a design challenge, to create a game that is really about flow-based movement system and getting players into this flow, the beauty and elegance of these movement systems.”And on the other hand, tell a story about the destruction of the gibbons habitats, and make players feel how it could feel to lose your habitat and have those work together.What were your biggest challenges along the way?I think what we really struggled with was portraying the world that gibbons live in – and the humans that live in and around their habitat – in a respectful and truthful manner. Until now we have made games that are inspired by settings that we really know very well, or that were close by. Now we wanted to make a game inspired by Southeast Asia, especially by Borneo – a place we’ve never been to. Of course first we wanted to travel there, but our development budget and schedule was quite tight so it would’ve been challenging, and then COVID hit.“We decided to talk to NGOs (non-governmental organizations) – to people who’ve worked on-site, in the field, with gibbons, or with the destruction of the rainforest there and learn as much as we can.”First we contacted them with the vision of our game, and just listened to their stories. We talked to the Gibbon Rehabilitation Project from Thailand, which focuses on rehabilitating gibbons. We learned why they’re being poached, how it works, how slim the chances are for getting them back into the forest, and also how gibbons live in their natural habitat. We talked with Rainforest Rescue, and from them learned a lot about why rainforests are being destroyed – all over the world, but specifically in Borneo – and that nowadays it’s really not so much about logging but mostly about burning forests for farmland, mostly palm oil farms, and mining.And we talked to the Bruno Manser Fonds, a Swiss NGO that focuses on empowering indigenous people and helping them fight for their land rights and they have a focus on the Penan, who are indigenous people in Borneo. So the first people you meet in Gibbon are actually inspired by the Penan and they’re living in harmony with the jungle.After a year or two we got in contact with the NGOs again and showed them our progress because one of our biggest fears was that we, as Westerners, as Europeans or North Americans playing this game, could be thinking ‘these people in Southeast Asia are destroying the forests’ and that’s really not what we wanted to talk about – we really did not want to blame the destruction of the forests on Southeast Asian people. So there’s a few things we tried to circumvent this, one is that we tried to have all agents of destruction in our game to have all skin colors and different clothing styles so they really looked like they could be from all over the world, and to have all these machines, and farms, and refineries to be really big and huge so you feel like this cannot be done by a local company – this is all globalized industry that is destroying the forests and it’s a global interconnected problem not a local one. Without the help of the NGOs we wouldn’t have been able to do that and at the end of the project we even consulted a culturalization expert to make sure we’re portraying the people and culture of Southeast Asia in a respectful way.What are you most excited about for the future?That more people from outside of the traditional gaming bubble will start to create more diverse, deep, experimental and ultimately more interesting games.What is your proudest achievement?Having a 10" vinyl record produced for the soundtrack of Old Man's Journey.What advice do you have for future Social Impact creators?“The power of games is that you can show your players the world, and its problems, from a different viewpoint.”Through the empathy they feel for the characters they play, and the game world they experience, you can make them feel the problem rather than just being told about it.--Gibbon: Beyond the Trees is available now, play the game today to support Felix Bohatsch and his team and their mission to raise awareness of the destruction of the habitat of gibbons. Follow Broken Rules on Twitter to stay up-to-date with their next release.We believe that the world is a better place with more creators in it, and we’re always excited to hear about the inspiring work they’re doing to make the world more sustainable, inclusive, and equitable for all. Want to join them?Keep learning. Whatever your skill level, Unity Learn has countless free courses and tutorials to help you become a Unity expert.Level-up your Social Impact project. Apply for a Unity for Humanity Grant for the chance to receive support from Unity to kick your project into high gear. And, register for the annual Unity for Humanity Summit to learn and engage with creators of all stripes.Hear more inspiring creator stories. Sign up for Unity’s Social Impact newsletter for regular news and updates about our work, plus stories from creative visionaries.]]></description><link>https://unity.com/blog/games/changemakers-showcase-felix-bohatsch-of-gibbon-beyond-the-trees</link><guid isPermaLink="true">https://unity.com/blog/games/changemakers-showcase-felix-bohatsch-of-gibbon-beyond-the-trees</guid><pubDate>Fri, 05 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[7 ways to earn more revenue from merge games with rewarded video]]></title><description><![CDATA[According to Deconstructor of Fun, puzzle games are one of the biggest mobile genres, and continue to grow at a market rate of 15% every year. For developers to stand out in the competitive genre, the solution is clear: invest in merge games.Merge games are currently one of the hottest subgenres in mobile gaming, and for good reason - in 2021, they experienced 19% growth, generating hundreds of millions of dollars. These games follow a consistent pattern - for players to advance, they must combine two objects on a grid together to create a new one.The premise is simple: each time a player taps on what’s called a “producing object,” they receive a “game object.” Combining two game objects of the same level (e.g. a level 2 strawberry) produces a game object of a higher level (e.g. a level 3 cherry). This differs from match-3 games, which require the player to combine three objects to clear them all off the board.Not only do these games tap into the huge puzzle gaming audience, but they also provide unique opportunities to monetize. That’s because, eventually, players will run out of resources and require some kind of assistance, often in the form of user coins or money. For those uninterested in spending, they can get another, optimal choice: simply watching a rewarded video. Since these players are motivated by unlocking new objects, rewarded videos can also help them to do this faster, allowing them to bypass the waiting game.Anna Popereko, Game Design Consultant at ironSource, explores different merge games monetization strategies, and how to increase revenue while still giving users a positive experience. Let’s get started.1. Offer the ideal amount of energyTo keep the game challenging and help make sure players don't advance too quickly, merge games often limit a resource, like energy. Once players run out of energy, they have two choices: wait or pay for more. But rewarded videos offer a third option: watch this short video.The key here is to determine the ideal amount of energy to offer with your rewarded videos - offering a large amount of energy will motivate players to watch the video, but with too much energy, and players might not face enough challenges to stay engaged with the game. Try running an A/B test or to find the sweet spot - players should be excited to engage with the rewarded video, but still motivated to gain the energy from the next rewarded video.In Merge Mayor, for example, the player has been actively creating items, but after enough time, uses up too much energy. The player has just two options to replenish: use a costly game resource or watch a short video and get an even bigger reward. This setup ensures users can understand the benefit of giving their time, not their resources.2. Create a sense of urgencyLet’s say a user is trying to progress in the game, but doesn’t have the right objects available to merge and beat the level. During the game, a bubble shows up containing the exact object they need, and all they need to do is watch a rewarded video to pop it. It’s a no-brainer, but the clock is ticking - they only have a limited amount of time.Bubbles holding a rewarded video are a great way to excite users - as the player is merging items, these bubble-like pop ups show up on the grid containing something valuable inside (e.g. coins, items). Naturally, the gamer is motivated to “pop” it - they can see that the clock is ticking, and the bubble will soon disappear. In the example below, the user needs to build up game items (e.g. eggplant, broccoli) to combine and level up, so the bubble offers the exact high-level item they need - saving significant time.By creating this sense of urgency, rewarded video bubbles can be a top revenue-generator. While they should be used throughout the game, it’s strategic to get users excited from the get-go, placing more bubbles in the early stages of the game. In order to not tamper with the game economy, bubbles should only offer rewarded videos up to a certain item level.3. Speed up waiting timeTo keep players’ progress at a steady pace, merge games not only limit users by energy, but also by time. If a user’s been playing for an extended period of time, they have to wait for a producing item to replenish itself (and generate more objects the player needs). This period keeps the user from playing for quite some time, often 12 or 24 hours.While it’s important that the player doesn’t advance in the game too quickly, this waiting period provides a unique opportunity to monetize with a rewarded video. You can use a rewarded video ad to offer the user exactly what they want: skipping the waiting period to continue playing. The user can also choose to skip a smaller amount of time and receive more resources from the producing item. It’s a win-win - your user experience stays positive because the player is excited to engage with the ad, and your ads get more exposure, boosting your game’s revenue. In Merge Inn, for example, the producing item has run out, and the player can use two things to expedite this process: their game resources or simply, their time.4. Limit placement lengthYou can also promote rewarded videos in your game by offering a rewarded video ad for a limited amount of time. Like bubbles, your ads can pop up to create a sense of urgency. Because these ads appear outside of the game grid, they are not limited to a specific game page - so you get more flexibility with location and user experience. In Merge Cafe, for example, you can see that the rewarded video is connected with the player’s avatar - the ad is more subtle but also stands out thanks to its unique mobility.Try to A/B test the best places to put these rewarded video ad icons - whether it’s the main screen or a board with other promotions. To excite the player even more, you can make the ad icon move (or “fly”) around the game. But in order to motivate the player to make the effort, offer a higher reward in these ads than in a regular static placement.5. Utilize the shopIf a player is exploring the shop, it’s a great time to capture their attention with a rewarded video - after all, they’re already looking to get more items. It’s best to offer a reward that solves their specific needs (e.g. currency, a gacha chest with items, or a specific desired object).This not only offers players different paths to advance in the game, but if users know they can find free rewards in the shop, it promotes traffic to the store. Even if users start coming to the game shop only for free rewards, they’ll be exposed to different paid opportunities and might eventually become paying players. To maximize the opportunity, A/B test different types of rewards to see which leads to the highest rewarded video engagement.6. Refresh the shopMaybe a player wants to progress in the game more quickly, so they check the shop to get a specific item. This turns out to be unhelpful - none of the options in the shop can help the player solve their current needs.Traditionally, they would have to wait a long period of time for these items to automatically shuffle and update. But a rewarded video can offer another opportunity - instead of offering a specific item, these pop-up ads can offer an automatic refresh of the shop items. There is no guarantee of which new items will pop up, so this is a risk for the user - but it’s more ideal than waiting indefinitely for different items to show up in the shop. In Mergedom, for example, users can see exactly what a shop refresh is worth in coins - making the option to watch a video even more appealing.7. Explore using gachaFinally, you can utilize gacha (a prize vending machine that offers players a random in-game item) to excite users and maximize profit. Gatcha is most often used as a daily bonus activity, but you can place them at any point in the game to motivate users. The premise is simple - by watching a rewarded video, a user can complete a gacha activity (opening a chest, spinning a wheel of options, etc.) and await their free reward.In fact, once the user’s reward is randomly selected, you can capitalize on their engagement by offering them one more offer - watch one more rewarded video, and double this reward on the spot.Thanks to these unique monetization opportunities, merge games continue to grow - both in popularity and profit. Since every new object creates an opportunity for players to progress, rewarded videos are an ideal match. By knowing exactly how to capitalize on these players’ excitement, you can bring your game (and your revenue) to new heights.]]></description><link>https://unity.com/blog/merge-games-rewarded-video</link><guid isPermaLink="true">https://unity.com/blog/merge-games-rewarded-video</guid><pubDate>Thu, 04 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Diversity, interactivity, accessibility: How three studios approach impactful game design]]></title><description><![CDATA[Soft Not Weak, Kitfox Games, and Tribe Games share how they create meaningful experiences that resonate with players.People want to see themselves reflected in the games they play. But how do you design games that truly make an impact? A panel on impactful game design at GDC explored this issue. Hosted by Josh Boykin from Intelligame with Unity’s Kal O’Brien, this talk invited insights from Tanya X. Short of Kitfox Games, Réjon Taylor Foster and Alex Abou Karam of Soft Not Weak, and Charles McGregor from Tribe Games.During the stream, these Unity creators discussed games that made them feel seen, shared what meaningful gameplay and storytelling looks like to them, and provided inspiration for future indie innovators.Soft Not Weak’s Spirit Swap: Lofi Beats to Match-3 To is an upcoming match-3 puzzler inspired by retro games like Tetris Attack and Panel de Pon. The game’s being hailed for its inclusive character designs, queer aesthetic, and unbridled positivity. It’s the result of Soft Not Weak setting out to create a game that truly represents who they are as individuals and as a studio.“Since this was our debut game, I really wanted to do something that I had never seen,” says cofounder and creative director Alex Abou Karam. Spirit Swap’s setting is partially inspired by Lebanon’s architecture and climate, but Abou Karam wanted the game to represent the studio as a whole.“I’m from Lebanon, and I really wanted to put that into the game in the most unassuming way,” they continue. “But because the game is a collaborative effort, it wouldn’t make sense to just make it my vision.”To ensure everyone’s perspective shines through in the final game, Abou Karam asked each team member to design a character. Spirit Swap’s diverse cast of queer witches celebrates a range of body types and backgrounds, and quickly gained a loyal fan base – the game surpassed its initial Kickstarter goal in just 35 hours. “Spirit Swap is very indicative of what everyone on our team looks and feels like, wrapped up in one beautiful and very happy package,” says Abou Karam.Spirit Swap stands out against other queer narratives because it’s focused purely on the positive. “Video games are such a nice escapist medium. A lot of people assume they need to be impactful in this deep, visceral way,” continues Abou Karam. “That’s true, but I also think escapism can be deep and visceral when you see yourself reflected.”As a lo-fi, match-3 game, Spirit Swap appeals to nostalgia – another major draw for players. By incorporating the unique experiences of the team, Soft Not Weak creates a rich, memorable gameworld that already feels authentic in its representation. “We wanted to make a game that feels like home,” says Réjon Taylor-Foster, co-owner and lead UI/UX at Soft Not Weak. “What’s more nostalgic than the people that you grew up with, the people that you love? That’s the most important part for us.”Josh Boykin comments that Spirit Swap: Lofi Beats to Match-3 To succeeds in creating its nostalgic vibe because it doesn’t try to cater to a mass audience. “You told a specific story, you tied into a specific feeling – that’s what made it resonate,” he says. “That pastiche of experiences that you’re all able to bring as team members to the game, that blended flavor, comes out really strongly.”Kitfox Games’ Boyfriend Dungeon gained recognition – including a Games for Impact nomination at the 2021 Game Awards – for its novel blend of dungeon crawling and dating sim mechanics. Players befriend and form relationships with weapons that assume a variety of attractive human forms; as the protagonist grows closer with each weapon, their power increases.Like Spirit Swap, Boyfriend Dungeon is inspired by retro games – game designer and writer Tanya X. Short cites Konami’s Azure Dreams as a major influence – but it features unique approaches to gameplay and storytelling designed to be more engaging for and inclusive of today’s players.“I was always interested in dating sims, but I had trouble getting into them when they were just visual novels,” says Short. “I loved Azure Dreams on PS1 because I could do a little bit of dating and a little bit of something else – fighting monsters, crafting, or something like that.”As enjoyable as her time with Azure Dreams was, Short still felt like there was something missing from the experience. “Even though I had a silent protagonist who didn’t talk, I was still being alienated as myself because I was only allowed to date a certain kind of person,” she explains. With Boyfriend Dungeon, she and the team at Kitfox Games set out to create an experience where players can date any character – and however many of them – they choose.Like Soft Not Weak, Kitfox Games is a diverse studio, and they wanted their game to reflect that. Each team member gave input on things like character design and storytelling, and the studio hired diversity consultants for groups that weren’t represented. “We started asking, ‘How can we make people feel more welcome, more included?’ and not make something that tells someone it’s not for them, that it’s for somebody else,” says Short.The result is a thematically complex game that engages many different relationship topics, from consent to polyamory. The audience response has been positive overall, although some genre purists have claimed that the game “isn’t a true dating sim” because the end goal isn’t finding one singular person to fall in love with.“We’ve seen two kinds of positive responses,” says Short. “One is people saying that they’re able to be themselves in a dating sim, which they’ve never been able to do before. They can be romantic but asexual, they can be polyamorous, or whatever it is that games traditionally lock away.”The game has also provided some players with a space for self-reflection and experimentation. “The other response we’ve gotten that’s been really positive is that they’ve been able to explore more types of love than they normally would,” continues Short. “Even if they’re straight, they’re able to try out something different. That’s been really rewarding for some folks, and I’m glad that we can enable that.”HyperDot made waves when it was released in 2020. This “dodge everything” game is frequently touted as one of the most accessible ever made, and it received a perfect 10 for mobility accessibility from Can I Play That? However, contrary to popular belief, HyperDot wasn’t designed with accessibility in mind from the beginning.“When I was making HyperDot, I had two design principles: minimalism and flexibility,” says Tribe Games’ Charles McGregor. “I wanted players to only have to deal with one thing, movement, and nothing else. No additional buttons.”McGregor wanted to design something simple enough that players could know exactly what was going on from a single screenshot, and which could be played with any type of controller. HyperDot’s accessibility was built in from the beginning, but it wasn’t until McGregor watched a player with reduced vision try to engage with it that he decided to go all-in. “Seeing them physically struggle to play it at all, it was just crushing to me,” he says. “HyperDot is a hard game, but I didn’t want there to be a barrier stopping anyone from being able to play it.”To make the game more accessible for players with reduced vision, McGregor added a high-contrast mode and heavily emphasized the indicators surrounding the levels to make them more apparent and bold.Ordering the levels turned out to be another big opportunity. When McGregor started doing accessibility research with a community of disabled streamers, one low-vision player commented that they couldn’t progress past a certain point. One of the game modes plunges the game into darkness, with the dot the player controls serving as the only light. This section, which happened at a fixed point in the game’s progression, was simply impossible for legally blind players to get past.To address this, McGregor made progression less rigid, allowing players to engage with different game modes in whatever order they wish. “This change ended up giving everyone more flexibility in how they played the game.”By engaging with and consulting different communities, McGregor was able to make HyperDot an exemplar of accessible game design and reach more players as a result. “It’s definitely gratifying to see people being able to play who typically can’t play this style of game,” he says. “Go and talk to the people who really care about these things. Reach out to your community, find out best practices, learn what people don’t like, and ask for other perspectives.”Watch the full Creator Spotlight below for more insights on how to maximize impact through thoughtful game design. You’ll learn what game design can learn from reality TV, why your game should pass “the Single Mom Test,” and how putting yourself into your projects can be one of the most impactful decisions you can make.Visit our indie innovation hub for more stories featuring Unity creators who are making waves in the game industry.]]></description><link>https://unity.com/blog/games/diversity-interactivity-accessibility-how-three-studios-approach-impactful-game-design</link><guid isPermaLink="true">https://unity.com/blog/games/diversity-interactivity-accessibility-how-three-studios-approach-impactful-game-design</guid><pubDate>Thu, 04 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[An inside look at the Japanese mobile economy]]></title><description><![CDATA[Japan emerged from COVID-19 as the third largest economy in the world according to Business Insider, and The International Monetary Fund expects Japan’s economic growth to accelerate faster this year than at any other time in the last 12 years. The growing economy in Japan is also promoting a prosperous mobile industry.Smartphone usage in Japan is booming, with an estimated 85% of the population using a mobile device in 2022 - and this number is only growing, according to Statista. Based on data from the study, the number of smartphone users is projected to reach over 94% of the population, or 115.5 million users, by 2027. With much of the country currently relying on mobile devices and millions more to come, let’s dive into the current state of mobile Japan so you can tap into this valuable user base.The Japanese mobile ecosystem in numbersIn 2021, the telecommunications market size was valued at $119.8 billion (Global News Wire) Mobile game and app revenue reached $18.6 billion in 2021, the second highest in the world and up 18% from the previous year (Sensor Tower) The market size of mobile games is estimated at more than one trillion yen, or over 7.2 billion USD, and is projected to continue growing (Statista) Japan led in per capita spending in mobile apps and games on the App Store and Google Play Store in 2021, averaging $149 per user (Business of Apps) There are over 35,663 apps on the Google Play store from Japanese publishers (42 matters) Almost 97% of households own at least one mobile phone (Statista) Annual app downloads reached over 2.5 billion in 2021 (Business of Apps) Mobile device usage time in Japan tripled in the last decade, coming close to 106 minutes a day, per person (Statista) The number of Japanese mobile phone subscriptions surpassed the number of citizens in the country in 2020 (Statista) Unique characteristics for a Japanese audienceAround 80% of the top grossing apps in Japan come from Japanese publishers according to 42matters, with the rest coming from foreign developers. To ensure cultural relevance, developers from outside of Japan often localize their apps. In fact, a study by AdColony reveals that localized content boosts install rates by 44%. To cater to the needs of Japanese users, there are a couple of characteristics to consider - the dominance of in-app purchases and the importance of Japanese-style creatives.In-app purchases are the dominant monetization modelUsers in Japan contribute more to the app economy through in-app purchases than users from any other country in the world. According to data from Sensor Tower, Japanese users spent an average of $214 per person on in-app purchases and in-app subscriptions from 2017 to 2021. This trend in consumer behavior presents an opportunity for IAP developers to optimize ROAS and scale in Japan.Detailed visuals can grab users’ attentionPopular apps in Japan feature distinctly detailed and lifelike creatives. To engage a Japanese audience, Canva recommends designs that include brush strokes, floral patterns, and circle-shaped icons, all of which are tied to different symbols and emotions in Japanese culture. Kawaii, or “cute culture” is also highly popular and adds personality to the app’s visuals. Finally, while clean and sleek is king in western cultures, this isn’t the case in Japan. Collages and information-dense pages are popular and give designers the opportunity to pack visuals and text into small spaces. Visual appeal has always been important, but given the competitiveness of the market and quantity of ads available today, there has never been a better time to ramp up the quality of your app’s creatives.Popular app genresGamingGaming apps are the most profitable app category in Japan, earning almost $13.4 billion in revenue in 2021 according to Statista. According to Newzoo, role-playing games were the #1 most played on mobile devices in Japan in 2021, followed by puzzle games. In a study done by Meta in 2020, 48% of gamers in Japan reported that puzzle games helped them relieve stress, and 68% of them stated they would go back to playing a puzzle game even if they hadn’t opened it in the last month. This kind of stickiness shows promise for game advertisers looking to acquire Japanese users that will be valuable in the long-term.MangaA survey conducted by Statista highlighted manga, or comics, as another prominent app category. Statista found that in 2020 alone, manga apps collected over $195 million in revenue. The most popular apps for reading manga receive millions of downloads per year and reach two thirds of smartphone users between the ages of 15 and 19. Among high-school age females, the reach is up to 83%. For advertisers looking to get in front of a younger audience, manga offers a significant opportunity to do so.EducationIn 2020, educational apps surged in popularity - time in educational apps increased by 85% according to Hatago Consulting. According to PR Newswire, the e-learning market in Japan generated $1 billion USD in revenue in 2021. Even as schools return to in-person learning, educational apps remain a fixture in classrooms. For example, Kyodo News reported that teachers are increasingly utilizing AI-assisted learning apps for subjects such as English and computer science.Mobile phone carriersNTT Docomo, KDDI Corporation, and SoftBank Corp. are the three largest mobile carriers in Japan. Global News Wire stated that NTT Docomo has 42.5% of mobile phone subscriptions in Japan, which translates to almost 83 million subscribers and 15.2 trillion yen in revenue in 2021. Since the beginning of 2022, NTT has been modernizing and upgrading its 5G network by using independent hardware and software combinations.KDDI is the second largest carrier with 62.11 million subscribers, focused on improving network connectivity on remote islands and in the mountainous areas in Japan, according to Global News Wire. Throughout 2022, users in more remote areas will begin receiving broadband services and high speed internet. This rollout could help KDDI tap into a previously unreachable user base.SoftBank Corp is the third largest carrier, serving around 45.6 million subscribers according to Global News Wire. Since collaborating with Nokia to roll out a shared radio access network in late 2021, they’ve been able to scale their 5G business efficiently.Presence of ad agency culture in JapanSpending on digital advertising in Japan has been increasing steadily since 2017 and is projected to reach $23 billion in 2022, according to Statista. Partnering with agencies that work with tier 1 channels like Google, Facebook, ironSource, and ironSource Aura gives advertisers the best shot at reaching the most users across multiple channels.Industry trendsBudget-friendly plansLow cost plans and SIM carriers have an increasingly large presence in Japan. With lower cost plans, users have flexibility to choose the services and data access they want, often with fewer contracts and fees. These features make them a useful middle ground for welcoming new users into the mobile economy. Low cost plans are offered by KDDI and NTT Docomo, as well as independent brands such as All and eMobile, which rely on the networks of larger carriers.Video adsNow that TikTok has transformed the way people use social media, video ads are becoming more popular as a digital advertising strategy around the globe. In Japan, video ads generated almost $900 million in revenue in 2021, and are expected to generate even more in 2022 according to Statista. While video ads may not be feasible for smaller companies, creating content that can blend seamlessly into TikTok and other short video platforms like Instagram Reels can be an effective way to reach new users.The Japanese mobile ecosystem is as vibrant as ever. It’s critical to stay in touch with the current developments, trends, and needs of consumers so that you can grab users’ attention and stay competitive in the dynamic environment.]]></description><link>https://unity.com/blog/an-inside-look-at-the-japanese-mobile-economy</link><guid isPermaLink="true">https://unity.com/blog/an-inside-look-at-the-japanese-mobile-economy</guid><pubDate>Tue, 02 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[What is programmatic video advertising?]]></title><description><![CDATA[Digital advertising has exploded in recent years. In fact, a 2021 report projected that total digital display ad spending in the US would reach $96.6 billion this year. While digital mediums host just about every kind of advertising imaginable, programmatic video advertising has quickly emerged as one of the most common and powerful forms. The same report forecasts that programmatic digital display ad spending would account for 88.2% of total digital display ad spending in the US, continuing a pattern of consistent growth.Just what is programmatic video advertising, exactly? How does it work, and what are some ways you can put it to work for your business? Let’s start with the basics.In this post, we’ll cover the following:What is programmatic video advertising?How does programmatic video advertising work and what are its benefits?What are some practical uses of programmatic video advertising?App advertisingConnected TV advertisingSocial media advertisingMake programmatic video advertising work for youWhat is programmatic video advertising?Programmatic video advertising is a method of media buying that uses real-time bidding to ensure advertisers reach relevant audiences for the best possible price. That’s where the “programmatic” part of programmatic video advertising comes in, but we’ll explain more about the specifics in a little bit. Suffice it to say for now that programmatic ads account for roughly 54% of US brand and agency budgets.This new way of buying video ad inventory stands in contrast to direct media buying. As the name implies, direct media buying requires advertisers to make direct deals with publishers and platforms on which the advertisement will run. Advertisers who use direct media buying will likely consider the overall reach and demographics of the channel when selecting a partner. Certain channels also offer persona-based targeting, but that’s the extent of an advertiser’s control over their audience.Both methods have their own advantages for advertisers. The programmatic method is particularly powerful for identifying target audiences across multiple supply sources, then allowing for efficient bidding between suppliers.How does programmatic video advertising work and what are its benefits?Let’s start with a hypothetical example. Say you’re playing the hottest new idle game, and you’ve just emerged victorious from a battle. You unlock your completion rewards, and the game offers you even more if you watch a quick video advertisement. As soon as you tap that button, the app registers your request for an in-app ad, and multiple ad networks then bid for that ad impression, taking into account factors such as its placement and what the app’s publisher knows about the user.A third-party mediation solution like LevelPlay by ironSource acts as a go-between for the demand-side platforms and supply-side platforms, increasing the pool of available ads and impartially choosing the highest bidder. Then another third-party attribution platform (also called a mobile measurement partner or MMP) monitors for verified results, such as a completed viewing of the video or attributed install of another app, and ensures the network which ran the ad gets credit.Here are some of the benefits of buying video ads to viewers in this way over traditional alternatives.Real-time bidding allows this entire process to play out within the space of a second, rather than the timeline of weeks or months for more traditional advertising deals.Third-party mediators allow market forces, rather than pre-existing arrangements and relationships, to be the deciding factor in placements.Those same tools allow advertisers to target consumers based on audience data, making it more likely to be effective.Key results of ad campaigns, such as video completion and conversion rates, can be monitored in real time.Adding new supply sources is as easy as checking a box in your DSP’s dashboard.Programmatic video advertising is flexible and easy to implement via solutions such as the ironSource Exchange.That’s a broad sampling of the overall benefits of programmatic video advertising. Based on how and where they’re specifically implemented, you could see even more.Where do programmatic video ads appear?As we mentioned in the bulleted list above, programmatic video advertising is inherently flexible. It can provide a consistently valuable experience for users and advertisers alike even as it shifts to meet the needs of different audiences and use cases. Here are just a few ways video ads can be integrated into different mediums.In-app advertisingAs we mentioned above, mobile apps, especially mobile games, are an ideal home for programmatic video advertising. Building in a mix of rewarded video ads, which let users opt to watch ads in exchange for a bonus, and video interstitials, which always play at set times, promotes steady revenue without overwhelming players.Connected TV advertisingConnected TV ad spending is slated to account for 7.6% of total media ad spending by 2024 according to eMarketer, and it’s closing the gap with the massive industry of linear TV advertising. Ads served via connected TV experiences such as Roku, YouTube, and Hulu go to more viewers who are actually watching, simply by the nature of the medium. They can even build in engaging interactive elements.Social media advertisingFacebook, Instagram, Twitter, TikTok, and more social networks build in means to serve video ads to their audiences, using common methods such as pre-roll ads served before videos or interstitial experiences. Their vast stores of user information make them particularly effective for targeting ads.Make programmatic video advertising work for youServing just the right ads to just the right users through an impartial bidding process that takes a fraction of a second to complete is technologically challenging - but that doesn’t mean it’s difficult to get started. The ironSource Exchange, for example, helps you reach your ideal mobile user and makes sure you only pay for results that matter.Learn more about the ironSource Exchange.]]></description><link>https://unity.com/blog/what-is-programmatic-video-advertising</link><guid isPermaLink="true">https://unity.com/blog/what-is-programmatic-video-advertising</guid><pubDate>Fri, 29 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Understanding Unity’s serialization language, YAML]]></title><description><![CDATA[Did you know that you can edit any kind of asset without the hassle of dealing with serialization languages like XML or JSON in the Unity Editor? While this works most of the time, however, there are some instances where you must modify your files directly. Think of merge conflicts or files being corrupted as examples.That’s why, in this blog post, we will further unpack Unity’s serialization system, and share use cases of what can be achieved by modifying Asset files directly.As always, please back up your files, and ideally, use version control to prevent data loss. Manually modifying Asset files is a risky operation and is not supported by Unity. Asset files are not designed to be manually modified and won’t output helpful error messages to explain what happened if and when errors occur, making it difficult to fix bugs. By better understanding how Unity works and preparing to resolve merge conflicts, you can compensate for situations where the Asset Database API is not enough.YAML, also known as “YAML Ain’t Markup Language,” is part of the family of human-readable data serialization languages like XML and JSON. But because it’s lightweight and relatively straightforward compared to other common languages, it’s considered easier to read.Unity uses a high performance serialization library that implements a subset of the YAML specification. For instance, blank lines, comments, and some other syntax supported in YAML are not supported in Unity files. In certain edge cases, the Unity format diverges from the YAML specification.Let’s explore this by looking at a snippet of YAML code in a Cube Prefab. First, create a default cube in Unity, convert it to a Prefab, and open the Prefab file in any text editor. As you can see in Figure 1, the first two lines are headers that won’t be repeated later on. The first one defines which YAML version you’re using, whereas the second creates a macro called “!u!” for the URI prefix “tag:unity3d.com,2011:” (discussed below).Following the headers, you will encounter a series of object definitions, like GameObjects in a Prefab or scene, the components of each GameObject, and possibly other objects like Lightmap settings for scenes.Each object definition starts with a two-line header, such as the one in our example for Figure 2: “--- !u!1 &7618609094792682308” follows the format “--- !u!{CLASS ID} &{FILE ID}” which can be analyzed in two parts:!u!{CLASS ID}:This tells Unity which class the object belongs to. The “!u!” part will be replaced with the previously defined macro, leaving us with “tag:unity3d.com,2011:1” – the number 1 referring to the GameObject ID in this case. Each Class ID is defined in Unity’s source code, but a full list of them can be found here.&{FILE ID}:This part defines the ID for the object itself, which is used to reference objects between each other. It’s called File ID because it represents the ID of the object in a specific file. Read on for more information on cross-file references later in this post.The second object’s header line is the name of the object type (here, GameObject), which allows you to identify it by reading the file.After the object header, you can find all of the serialized properties. In our GameObject example above, Figure 2 provides details like its name (m_Name: Cube) and layer (m_Layer: 0). In the case of MonoBehaviour serialization, you’ll notice the public fields and the private ones with the SerializeField attribute. This format is similarly used for ScriptableObjects, Animations, Materials, and so on. Please note that ScriptableObjects use MonoBehaviour as their object type, instead of defining their own. That’s because the same internal MonoBehaviour class hosts them as well.With what we’ve covered so far, you can start to leverage the power of modifying YAML for purposes such as refactoring animation tracks.Unity’s animation files work by describing a set of tracks or Animation Curves; one for each property you want to animate. As shown in Figure 4, an Animation Curve identifies the object it needs to animate through the path’s property, which contains the names of the child GameObjects up to the specific one. In this example, we’re animating a GameObject called “JumpingCharacter” – a child of the “Shoulder” GameObject, which is a child of the GameObject that has the Animator component playing this animation. To apply the same animation to different objects, the animation system uses string-based paths instead of GameObject IDs.Renaming an animated object in the hierarchy can lead to one very common issue: The curve might lose track of it. While this is usually resolved by renaming each animation track in the Animation window, there are cases where several animations with several curves are applied to the same object, making it a slow and error-prone process. Instead, YAML editing enables you to correct several Animation Curve paths in one shot using a classic “search and replace” operation on the animation files with the text editor you are most familiar with.As previously mentioned, each object in a YAML file has an ID known as “File ID.” This ID is unique for each object inside the file, and serves to resolve references between them. Think of a GameObject and its components, the components and its GameObject, or even script references, like a “Weapon” component reference to a “SpawnPoint” GameObject in the same Prefab.The YAML format for this is “{fileID: FILE ID}” as the value of the property. In Figure 6, you can see how this Transform belongs to a GameObject with the ID 4112328598445621100, given that its “m_GameObject” property references it through the File ID. You can also observe examples of null references like “m_PrefabInstance” (given that its File ID is zero). Keep reading for more on Prefab instances.Let’s consider the case of reparenting objects inside a Prefab. You can change the File ID of the “m_Father” property of a Transform with the File ID of the new target Transform, and even correct the old parent Transform YAML to remove this object from its “m_Children” array, and add it to the new parent “m_Children” property.To find a specific Transform by name, you must primarily determine its GameObject File ID by searching the one with the m_Name you are looking for. Only then can you locate the Transform whose m_GameObject property references that File ID.When referencing objects outside this file, like a “Weapon” script referencing a “Bullet” Prefab, things get a little more complex. Remember that the File ID is local to the file, meaning it can be repeated in different files. In order to uniquely identify an object in another file, we need an additional ID or “GUID” that identifies the whole file instead of individual objects inside of it. Each asset has this GUID property defined in its meta file, which can be found in the same folder as the original file, with the exact same name plus a “.meta” extension added.For non-Unity native file formats, like PNG images or FBX files, Unity serializes extra Import settings for them in the meta files, such as the maximum resolution and compression format of a texture, or the scale factor of a 3D model. This is done to save extended file properties separately, and conveniently version them in just about any version control software. But aside from these settings, Unity will also save general Asset settings in the meta file, like the GUID (“GUID” property) or Asset Bundle (“assetBundleName” property), even for folders or Unity’s native format files like Materials.With this in mind, you can uniquely identify an object by combining the GUID in the meta file and the File ID of the object inside the YAML, as shown in Figure 10. More specifically, you can see that YAML generated the “bulletPrefab” variable of a Weapon script, which references the root GameObject with the File ID 4551470971191240028 of the Prefab with the GUID afa5a3def08334b95acd2d70ee44a7c2.You can also see a third attribute called “Type.” Type is used to determine whether the file should be loaded from the Assets folder or the Library folder. Note that it only supports the following values, starting at 2 (given that 0 and 1 are deprecated):Type 2: Assets that can be loaded directly from the Assets folder by the Editor, like Materials and .asset filesType 3: Assets that have been processed and written in the Library folder, and loaded from there by the Editor, like Prefabs, textures, and 3D modelsAnother factor to highlight regarding script serialization is that the YAML Type is the same for every script; just MonoBehaviour. The actual script is referenced in the “m_Script” property, using the GUID of the script’s meta file. With this, you can observe how each script is treated, just as an asset.Use cases for this scenario include, but are not limited to:Finding all the usages of an asset by searching the asset’s GUID in all other assetsReplacing all usages of that asset with another asset GUID in the whole projectReplacing one asset with another that has a different extension (i.e., replacing an MP3 file with a WAV file) by deleting the original asset, naming the new one exactly the same with the new extension, and renaming the meta file of the original asset with the new extensionFixing lost references when deleting and re-adding the same asset by changing the GUID of the new version with the old version GUIDWhen using Prefab instances in a scene, or Nested Prefabs inside another Prefab, the Prefab GameObjects and components are not serialized in the Prefab that uses them, but rather, a PrefabInstance object is added. As you can see in Figure 12, the PrefabInstance has two key properties: “m_SourcePrefab” and “m_Modifications.”As you might have noticed, “m_SourcePrefab” is a reference to the Nested Prefab Asset. Now, if you search its File ID in the Nested Prefab Asset, you won’t find it. In this case, “100100000” is the File ID of an object created during the import of the Prefab, called Prefab Asset Handle, which won’t exist in the YAML.Additionally, “m_Modifications” comprises a set of modifications or “overrides” made to the original Prefab. In Figure 12, we override the X, Y, and Z axes of the original local position of a Transform inside the Nested Prefab, which can be identified via its File ID in the target property. Note that Figure 12 above has been shortened for readability. A real PrefabInstance will typically have more entries in the m_Modifications section.Now, you might be wondering, if we don’t have the Nested Prefab objects in our outer Prefab, how do we reference objects in the Nested Prefabs? For such scenarios, Unity creates a “placeholder” object in the Prefab that references the proper object in the Nested Prefab. These placeholder objects are marked with the “stripped” tag, which means they are simplified with only the properties needed to act as placeholder objects.Figure 13 similarly shows how we have a Transform marked with the “stripped” tag, which doesn’t have the usual properties of a Transform (like “m_LocalPosition”). Instead, it has the “m_CorrespondingSourcePrefab” and “m_PrefabInstance” properties filled in a way that references the Nested Prefab Asset and the PrefabInstance object in the file it belongs to. Above it, you can see part of another transform whose “m_Father” references this placeholder Transform, making that GameObject a child of the Nested Prefab object. As you start referencing more objects in the Nested Prefabs, more of these placeholder objects will be added to the YAML.Conveniently, there’s no difference when it comes to Prefab Variants. The base Prefab of a Variant is just a PrefabInstance with a Transform that has no parent, meaning it is the root object of the Variant. In Figure 14, you can see that the “m_TransformParent” property of the PrefabInstance references “fileID: 0.” This means it doesn’t have a father, making it the root object.While you can use this knowledge to replace a Nested Prefab or the base Prefab of a Variant with another one, this kind of modification can be risky. Proceed with caution and have a backup just in case.Begin by replacing all the references to the GUID of the current base Prefab with the GUID of the new one, both in the PrefabInstance object and the placeholder objects. Be sure to take note of the placeholder objects’ File IDs. Their “m_CorrespondingSourceObject” properties not only reference the asset, but the objects inside of it via their File IDs. It’s very likely that the objects’ File IDs in the current Prefab will differ from those in the new Prefab – and if you don’t fix them, you will lose overrides, references, objects, and other data.As you can see, changing a base or Nested Prefab is not as straightforward as one might think. That’s one of the main reasons it’s not natively supported in-Editor.There are several scenarios where stale objects and references could be left in YAML; one classic case would be removing variables in scripts. If you add a Weapon script to the Player Prefab, you’d have to set the Bullet Prefab reference to an existing Prefab, and then remove the Bullet Prefab variable from the Weapon script. Unless you change and save the Player Prefab again, re-serializing it in the process, the bullet reference will be left in YAML. Another example centers on placeholder objects of Nested Prefabs that are not removed when the object is deleted from the original Prefab, which again, could be fixed by changing and saving the Prefab. Finally, re-serialization of assets could be forced via scripting with the AssetDatabase.ForceReserializeAssets API.But why doesn’t Unity automatically prune stale references in the scenarios listed above? This is primarily due to performance; to prevent re-serializing all the assets every time you change one script or base Prefab. Another reason is to prevent data loss. Let’s say you mistakenly remove a script property (such as Bullet Prefab) and want to recover it. You only need to revert the change on your script. So long as you have a variable with the same name as the removed one, your changes won’t be lost. The same thing would happen if you delete the referenced Bullet Prefab. If you recover the Prefab exactly as it was, including the meta file, the reference will be preserved.This is not normally an issue during runtime, given that when Unity builds the Player or Addressables, these stale objects and references become cleared. But even then, there are some cases where stale references can cause issues – namely, using pure Asset Bundles. The Asset Bundle dependency calculation considers stale references, which might create unnecessary dependencies between bundles, loading more than required at runtime. This is worth thinking about when using Asset Bundles. Create or use any existing tool to prune unnecessary references.Although you can completely ignore YAML most of the time, grasping it is useful for understanding Unity’s serialization system. While facing large refactors and reading or modifying the YAML directly with asset processing tools can be fast and effective, looking for solutions based on the Unity Asset Database API is highly recommended whenever possible. It is also particularly helpful for solving merge issues in version control. We recommend that you explore the Smart Merge tool, which can automatically merge conflicting Prefabs, and read more on YAML in our official documentation.]]></description><link>https://unity.com/blog/engine-platform/understanding-unitys-serialization-language-yaml</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/understanding-unitys-serialization-language-yaml</guid><pubDate>Thu, 28 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Norconsult improves collaboration with Unity Reflect Review and Quest 2]]></title><description><![CDATA[To transform your design, project and site reviews with VR and enable better communication and collaboration with project stakeholders, Unity Reflect Review is adding support for the Meta Quest 2 VR headset. With Unity Reflect Review and Meta Quest 2, users get the benefit of real-time visualization for richer viewing environments, greater accessibility with untethered VR, and next-level collaboration to transform the way people, teams and businesses interact in the office or on the jobsite.Companies like Norconsult, a leading Norwegian multidisciplinary engineering and design consultancy, are using Unity Reflect Review and Meta Quest 2 to cover all phases of a project lifecycle, from the earliest pre-investment and feasibility studies, through planning and design, tendering and construction supervision, to project implementation, operations and maintenance.We interviewed Marius Jablonskis, Digital Transformation Leader at Norconsult, about the different ways Norconsult uses Unity Reflect Review and Meta Quest 2 to increase collaboration, save time, and improve workflows.We started our collaboration with Unity three years ago. Our goal was to streamline our extended reality (XR) routines within gamification efforts, automating the manual routines and focusing on custom IP development driving the value for the customers. We have 25 licenses of Unity Reflect Review.We have pioneered our drawingless design and construction approach and have successfully implemented it across different market areas, meaning we produce data-rich integrated digital twins as a contractual deliverable. Unity gets us one click away from taking this data to immersive XR experiences. We use Autodesk Revit as our design tool, but we typically go from Navisworks or BIM 360 to Unity Reflect Review.We use Unity Reflect Review for visual reviews – including stakeholder, design and safety evaluations – on desktop and in VR and augmented reality (AR).We have used a custom-developed application on the Unity Editor where we compiled .apk files that we loaded to untethered Meta Quest 2 devices. The application was used for design review and practical safety evaluations with our safety and design experts, customers, and their operation personnel to evaluate safety aspects of the design and placement of equipment in emergency scenarios.Instead of running a traditional session where everyone looks at the drawings – which would have been a challenge in the middle of a pandemic with capacity and other restrictions – we had several VR operation stations where multiple people could participate at once and the rest could livestream on the screen. That way everyone could participate in a live evaluation and feedback session regardless of their location. Results were directly integrated into our project management system to ensure optimal insight and dataflow so that no disconnected reports ended up in unmonitored folders.Construction work on a new water treatment project has just started. There are many use cases with contractors, operations and maintenance, and loads of potential value for cutting down the time needed to plan and access various sections of the site.Combining Meta Quest 2 and Unity Reflect Review is a true game changer. XR was great before, but it was not for everyone. Hardware-heavy processes, cables, tracking stations, remembering to charge multiple devices, logging in and out to multiple accounts, preprocessing the data, exporting, packing and updating it – all these operations made the XR world an exclusive club. Unity and Meta’s fusion eliminated all the irritating moments and bottlenecks from the process. Now you just have to pop on the glasses and you’re good to go!With Unity, we are 50% faster and 75% more intuitive.Get the Unity Reflect Review application today in the Quest Store to transform your architecture, engineering and construction (AEC) project reviews with VR.]]></description><link>https://unity.com/blog/industry/how-norconsult-improves-collaboration-with-unity-reflect-review-and-quest-2</link><guid isPermaLink="true">https://unity.com/blog/industry/how-norconsult-improves-collaboration-with-unity-reflect-review-and-quest-2</guid><pubDate>Wed, 27 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 tips for quicker and easier creative optimization]]></title><description><![CDATA[The mobile game industry is fast-paced and aggressive - someone is always waiting to replicate your game or your creatives. Maintaining efficiency and speed while testing keeps you ahead of the game as you discover new opportunities for optimization. Using the right technology and approach to testing can help you improve your creative strategy and attract the best kind of users across each channel.Here, John Wright, Head of Customer Success at ironSource Luna, shares his top four testing tips to boost your creative performance as efficiently as possible.1. Automate creative production for more chances of successHaving enough creatives for testing is essential to keep improving performance and finding opportunities for optimization. To make sure you have a big enough bank of ads to keep up the pace of testing, your process for creative production needs to be efficient. Traditionally, this process looks like a UA manager requesting ads from the creative team. After they’re designed, the UA manager manually uploads the creatives to each channel, lets them run to gather data, analyzes performance, then adjusts their brief for new ones to be built - and then the process repeats. This limits production speed because you’re testing 3 creatives every 2-3 days, then manually pausing, uploading, and reviewing them. In the end, it can take you three weeks to test just 20 videos on an SDK network.To design more creatives faster, you can automate the process. Technology like dynamic creative optimization by Facebook lets you automatically create versions of different video creatives that are optimized based on what’s performing best. So instead of three weeks to test 20 videos, automation lets you test upwards of 100 creatives per week.Playworks meanwhile has a dynamic playable optimization feature that applies this automation technology to playable ads. Your creative team can design one playable file, upload it to Luna, then let the platform do the work to test different versions and optimize them based on which had the highest IPM.For example, GameJam increased their creative output by 4x in 48 hours using Luna Playable. With the tool, they ran multivariate tests on 73 playable concepts and 1200 variations quickly, easily, and entirely in-house. This led to a 15% increase in IPM and drove over 2 million installs for their game.2. Test macro concept changes and micro iterationsStarting at the macro level before diving into the micro helps you squeeze the most juice from your creatives and identify more opportunities for improvement. Taking this approach is an excellent starting point for honing in on what you should be iterating on, instead of trying to test everything at once.As you begin testing, zoom out first and try many different concepts (that’s the macro) - this often results in a big impact on performance. For example, Codigames tested two concepts for their playable ad tutorial. One featured a barbershop environment and another included a sleeping character that showcased obvious emotions. The version featuring the sleeping character had a 60% engagement rate, compared to 54% for the other concept - it went on to achieve over 100 million impressions.Once you identify the top-performing concept, you can start iterating on the details and refining your creative (that’s the micro). Testing features like the background, color, and length can help optimize performance. Since these are often small changes, it’s important to test many variations quickly to identify what elements move the needle and to shorten the learning curve.Tastypill used Playworks to increase their concept testing capabilities - within one month, they produced at least 20 Elements-built playables each day. Applying the learnings from each iteration to the next let them keep improving performance and identify a top-performing playable that drove 33M impressions and had an ER of 65%.3. Visualize and compare dataAlways use creative KPIs to drive decision-making. This can seem like a no-brainer, but I’ve seen many examples of situations where studios spend a huge budget on creatives that seemed to attract a lot of users. But many of these users churned quickly once they installed the app - this led to a very low ROAS and in the end, they paused the ad. However, visualizing and comparing metrics from the entire funnel (like CTR vs. ROAS) from the beginning would have shown that these types of creatives led to low retention despite having high click rates. This way, you can identify which ads are performing better before you get to that point.Measure user quality by looking at lower-funnel metrics like:- Retention rate- ARPU- ARPDAU- ROASAnd look at top-of-funnel metrics to analyze the effectiveness of the ad, like:- CTR- Time to engage (TTE)- Engagement rate (ER%)- Number of engagements (#E)- Experiences completed- CVR- IPMCompare metrics from both the upper and lower parts of the funnel to get a full view of creative performance and spot opportunities for optimization.These metrics higher up the funnel confirm the performance of the ad itself so you can identify the themes and features that work best. Then you can look at the data further down the funnel to see how tweaking each of these elements affects user quality. Analyzing creative testing performance by looking at KPIs across the entire funnel ensures you’re taking a data-backed approach to optimization - and doing so with as much efficiency and as little wasted ad spend as possible.Using Luna Control, Ludia aggregated their UA campaign data from all channels into one place so they could easily pull their creative insights and compare campaigns to spot opportunities for improvement. Having all of their metrics easily accessible helped them identify key optimization opportunities - and risks they should avoid.4. Allocate your budget wiselyHow and where you spend your budget is incredibly important. For starters, you want to allocate enough budget when testing - the more you spend, the faster you’ll be able to understand what’s performing (or not).Once the ads are live, you can quickly re-allocate spend for these creatives across your marketing channels. Get a comprehensive view of your creatives across all (yes, all) channels so you can clearly compare which ones are worth the spend and which aren’t. Then you can adjust spend accordingly and get the most out of your budget.For example, cocone used Luna Control to pull performance data from multiple UA channels, analyze metrics based on specific features, and get actionable insights - all in one platform. As a result, they reduced the time they spent analyzing creative data by 50%. WIth a clearer and more comprehensive view of performance, they re-allocated their budget which helped them exceed their CPI goal by 20%.Succeed across channelsEach UA channel will perform differently because they have different characteristics and audiences. End cards, for example, tend to perform well on SDK networks since they automatically appear at the end of a creative. But they usually don’t have high conversion rates on Facebook because users need to click through to see it - it adds another step to the funnel and increases friction.No matter the channel, though, testing is always the best approach to optimize your creatives. Keep the tips in mind above and adapt them for each channel to boost creative performance more quickly and easily.]]></description><link>https://unity.com/blog/4-tips-for-quicker-and-easier-creative-optimization</link><guid isPermaLink="true">https://unity.com/blog/4-tips-for-quicker-and-easier-creative-optimization</guid><pubDate>Sun, 24 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The what, why, and how of cross promotion]]></title><description><![CDATA[Cross promotion is set to become increasingly important this year. It’s the reason why major game companies are buying ad networks - and more are likely to follow. Eric Seufert also emphasizes the importance of cross promotion on his blog, predicting that the strategy is more essential now than ever because of the diminished efficiency of user acquisition in the face of the iOS 15 privacy updates. So what’s with all this hype about cross promotion?Scale newly launched apps effectively. The users already actively using your app represent an engaged audience that have already proven to have high LTV. Showing them ads for your new title is an opportunity to bring these high-quality users to the app at scale Always have access to your target audience. Cross promotion lets you gather more learnings about your campaigns and what’s resonating with your target users. You can use this information to optimize both your monetization and user acquisition strategies so you continue to reach the right, high-value usersReduce churn to competitors. Getting to users first by showing them ads for other apps in your portfolio as they’re already engaged with one of your apps can improve portfolio-level retention. The users in your portfolio already are likely familiar with you and more likely to install from your ad than an unknown competitor’s Address the obstacles to UA transparency presented by the iOS updates and ATT framework. Cross promotion can maximize the value of users already in your portfolio and inform your UA strategy based on the learnings gathered from the campaigns To help you take advantage of cross promotion and maximize portfolio-level retention, revenue, and scale, below are three ways you can get started, along with their pros and cons.1. Tailor-made in-app placements2. Utilizing an ad network3. ironSource cross promotion tool1. Tailor-made in-app placements (native placements)You may decide to design and place cross promotion ads within your own games, for example placing an ad for Game A on the loading screen of Game B. It works a bit like arbitrage - you buy users inexpensively, then shuffle them through your portfolio, and wait until they monetize.The positive is that you don’t need to pay for your own real estate, and you can control placements easily. But this approach requires an extensive time commitment.The positive is that you don’t need to pay for your own real estate, and you can control placements easily. But this approach requires an extensive time commitment, since the solution effectively replaces the duties of an ad network - quality assurance, ad rendering, and attribution instead need to be done internally. Also these placements historically have very low engagement rates, and therefore little conversion, limiting the possibilities for significant scale.2. Utilizing an ad networkAnother option is to use an ad network in order to manage your cross promotion campaigns by buying your own supply - doing so just like you would any other campaign. This solution provides you with access to network optimization and therefore to higher quality users.The thing is, networks take a sizable margin (often 20% - 40%) on ad revenue so you're paying the same price for your existing users as you are your new users. There’s also a transparency issue - on the publisher side, you can’t get insights into the unique performance of the cross promotion campaigns, since cross promotion and other network campaigns are delivered blended together inside of each instance. As for advertisers, you’re essentially competing with other advertisers over the same instance, which drives up the price on your own inventory.3. Your own bidding ad network: ironSource's cross-promotion bidder solutionThere’s no need to buy your own ad network like Zynga or other players in the industry who are snatching up bidders - ironSource’s tool acts like a dedicated bidding network that’s set up for your cross promotion campaigns exclusively. It’s also the only tool available on the market today that helps optimize both sides of your operation - monetization and user acquisition.From the monetization side of things, this solution gives you full visibility, transparency, and control into the performance of your cross promotion efforts. Serve cross promotion ads inside a dedicated bidding network and use all of the advantages that come along with automated in-app bidding.From the demand side, you're able to run campaigns on a CPI basis, utilize the ROAS optimizer, and have access to all of the same controls from the regular UA platform including dynamic suppression. Furthermore, access to ironSource’s data science makes sure that cross promotion ads are shown to the right users at the right time and maximizes both scale and quality. To confirm that the cross-promotion tool actually works, we have a methodology for analyzing performance that uses ROAS to prove profitability - just like your other UA campaigns.ironSource’s tool is the only one available on the market today that helps optimize both sides of your operation - monetization and user acquisition.For example, Amanotes used the cross-promotion tool to improve both the monetization and UA sides of their cross-promo campaigns. Using it like any other bidding network, they quickly set up and started running campaigns that automatically optimized their waterfall to boost KPIs on both sides of the operation. On the monetization side, they experienced a 22% increase in ARPDAU and 24% increase in eCPM. And on the UA side, being in the right place in the waterfall and reaching more sources led to 12x more installs and 2x higher IPM - all while decreasing CPI by 50%.ironSource's cross promotion solution was designed to solve the biggest challenges you’re facing in the industry today: retaining users and maximizing value despite having less transparency into UA performance.]]></description><link>https://unity.com/blog/ironsource-cross-promotion-solution-unique</link><guid isPermaLink="true">https://unity.com/blog/ironsource-cross-promotion-solution-unique</guid><pubDate>Fri, 22 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Animation Curves, the ultimate design lever]]></title><description><![CDATA[This is the third blog post by Christo Nobbs in his series for game designers. The series expands on his contributions to The Unity game designer playbook, a 100+ page in-depth guide that instructs game designers how to prototype, craft, and test gameplay in Unity. Links to Christo’s previous blog posts are included at the end of this piece.In Unity, there are several “types” we can use to store data that are just as beneficial as design levers for balancing systems, gameplay, character settings, vehicle profiles, and so on. Animation Curves are one such component type that offers game designers and creators interesting possibilities, especially when prototyping. Use them in your project, for instance, within a particle system to control animated variables, or within the audio source component to manage roll-off and other properties.A curve is a line graph that shows the response (on the Y axis) to the varying value of an input (on the X axis). Unity uses curves in a variety of different contexts, specifically in animation. Curve Editors have a number of different options and tools that you can leverage.This post will focus on working with Animation Curves via the Unity API, with the variable type AnimationCurve. In this way, they can be used to capture and store data, which is helpful for analyzing results. Curves are also compatible with ScriptableObjects, which, as discussed in the playbook, are great for editing gameplay data.Animation Curves can be edited within the Inspector either as public variables, or when serialized. You can save, export, or load them in Edit mode or at runtime. Editable tangents make it possible to control the shape of the curve between the keys.You can add keys, alter their tangents, and manipulate handles in the curve to find the shape that will deliver the desired results.A visual design lever like an Animation Curve makes it possible for game designers to finesse gameplay without having to write complex math or easing functions.One way to use Animation Curves is in a timeline, to add nuance and detail into linear motions. Take the example of a character closing a car door. The action starts with a wobble as the hand grasps the lever to close the door. The door closes slowly at first, but the motion speeds up as the door swings shut, and then ends with an abrupt stop; perhaps with a small bounce or click. All of these motions can be saved within the same curve for the sequence.As this example shows, Animation Curves are beneficial for changing an object’s properties over time to create natural-looking movement. Other use cases center on how an object moves or rotates, a character accelerates or decelerates into or out of a sprint, or an engine delivers power to a car controller.When you create an Animation Curve to edit in the Inspector, you’ll be able to evaluate the curve by passing a parameter, referred to as time in Unity. Later in this post, we’ll look at why the position is more descriptive when not using the X axis for time.Let’s examine how you could use an Animation Curve to control the power output of a vehicle’s engine. You can create a “pseudo” motor torque curve to return the force applied to the vehicle based on the current engine RPM (revolutions per minute). This increases over time if the player presses down on the accelerator.Rather than map the full RPM range for each gear and vehicle, you can “normalize” or set the RPM between 0 and 1. The “torque” curves you create can then be saved and reused for other vehicles and gears.Set this value by dividing your raw or current value by the max value:normalisedCurrentRPM = currentRPM / maxRPMThe output power (Y axis) will also be used between 0 and 1 to keep the Curve Editor manageable, and the curves themselves reusable. This value can be added into the movement force for the vehicle, to move the vehicle Rigidbody forward on the Z axis.You can create various results with the same setup for other vehicles by staying between the values of 0,0 and 1,1 on the curve.Adding a basic gear-ratio equation to your car’s engine can result in realistic-looking vehicles that move and rock as you go through the gears and hit different power curves, or the same curve at different points. This requires the car to be a Rigidbody. As you add other Rigidbodies in the boot or back seats of the car, the car will have impacted movement, which can be fun for timed delivery missions.If you don’t want to use Unity’s physics system because you have a custom car controller, you can create unladen and laden variants of your curves, and swap these curves at runtime to get the vehicle to drive the way you want it to.Although you won’t use this often, you can add keys, modify keys (which removes and adds new keys), and remove keys entirely on curves at runtime via the Unity API. This gives you more control over modifying your curves, which can also include smoothing tangents as needed.Animation Curves enable you to create excellent abstractions of more complex systems that you can control in a visual format. In the example of the engine, you can add power over time when accelerating with the curve shown above (which represents the “pseudo” gearbox) to create the feeling of the car changing gears – adjusting its pitch up as power is delivered, then down again as the power rolls off at the top of each gear. This is ideal for prototyping a vehicle’s movement by placing all the car power on one curve that maps all the gears, from the start of the first gear at x0,y0 to the top of the fifth gear at x1,y1.RPM usually accumulates over time when accelerating, so essentially you are plotting values over time, much like adding linear movement to a moving object. Read more about this in the section on timing and animation in the Game designer playbook.Let’s take another example; the suspension and motion of a car when it drives over uneven terrain, around corners, or when power is delivered at the wheels. Better steering, control of lateral forces or tire slip can all be managed with Animation Curves to create lifelike results that you can refine visually.When creating raycast-based mechanics for a vehicle, whether a hover vehicle or wheeled, a common choice for creating the effect of “suspension” in the engine is an upward force applied on each ray and a PID (proportional–integral–derivative) controller algorithm to control the bounce, or in some cases, Hooke’s law for damping. An instance of this can be seen in Unity’s Hover Racer Live 7/21 Cycle 4.2, alongside an example further down in this post using a PID based on it.A PID controller algorithm is a control loop feedback mechanism, or a controller, used in many industries, including game development, when responsive correction is needed. The PID controller calculates an error value as the difference between a measured process variable and a desired set point, and in relation to elasticity (or our given example), it can be used as an alternative to Hooke’s law. A PID in games is also practical for:Making a vehicle regulate a target speed in cruise control mode, while being unpredictably subjected to other factors like carried mass, player input, or terrain angulation.Controlling how much accuracy enemy AI agents have when shooting back at your players, while they avoid getting hit.Latency prediction in multiplayer games.PIDs can be used anywhere in game development, especially in sandboxes and simulations that require “accurate and optimized automatic control”. Kerbal Space Program by Squad uses PID to keep a spacecraft heading in a single direction.According to this study, “PID regulation is the most mature and widely used technology of continuous systems” outside of game development. See this Control System lecture: Introduction to PID control for additional information.PID controller algorithms might not take much time to make, but they do require time to balance; time that is multiplied depending on how many vehicles you have. However, when prototyping, you can use an Animation Curve instead to save time or avoid the technical challenges of implementing and balancing multiple PID controllers (you’d eventually want to replace the curve solution with a PID for ultimate control).Curves are ideal for prototyping because they can be used to visually match real-world target reference examples. When it comes to space, this is “mathematically perfect” in a game engine, with no opposing motion forces unless they are added or default gravity is enabled. So it is often easier to use a simple curve to control change and yield strong results.In the case of creating suspension for a vehicle, you can use Animation Curves to inform how much opposing force is applied based on the compression level of the spring, (normalized between 0 and 1), rather than using a PID controller to create damping. Combined with a Rigidbody and a small amount of drag, the bounce oscillation is suppressed and the vehicle’s suspension reacts to increased or decreased load.To determine the spring compression, you need to subtract the ray hit distance from the spring length from 1.0f. Regardless of its length, when the spring is at 25% compression, the compression value will be 0.25. Set this compression value as the X value on the Animation Curve, multiply it by the desired spring force (because you are working with normalized values), and then use it in AddForceAtPosition to apply the upward force at each point in a loop, based on the number of suspension points. No additional downward forces are needed other than Unity’s default gravity at -9.81f.Here’s the formula:upwardsForce = forceMultiplier * forceCurve.Evaluate(springCompressionNormalized);rigidBody.AddForceAtPosition(hitNormal * upwardsForce, point.transform.position);Using a 13:110 mass:force ratio and the below curve.The vehicle settles at approximately 50% compression using suitable values for mass, upward force, and small amounts of linear and angular drag to suppress oscillation. This allows for the vehicle to bounce and settle – but not bottom out, unless dropped from an extremely high height or overloaded by the player adding mass.To find good values, start with a y = b^x curve (which looks similar to a quarter of a circle). Keep the drag low and set the vehicle’s mass to what it is in reality. The upward force is then adjusted until the vehicle sits at approximately 50% spring compression. Drop the vehicle a few times to check if it bottoms out and see where it settles after the bounce. Using this approach for the suspension of vehicles that drive over uneven terrain, where each point of traction can be gained or lost, makes for a quick and controllable suspension system.The use of Animation Curves for your suspension model can ensure varied motions for vehicles – cars, vans, or trucks with bad suspension – namely those that bottom out all the time, bounce like those in arcade games, or roll around corners and wobble when you accelerate and brake. Curves can be used in combination with existing systems if you’re not already using Unity’s Rigidbody system or your own suspension method. You can use curves for steering, or to amplify engine power, suspension, drag, tire slip, braking force, and more. Animation Curves are such a handy and versatile tool in Unity for adding design levers to each vehicle to control their characteristics visually in the Inspector.The row of spheres in the image above was created by positioning a sequence of Rigidbodies in a row and constraining their X and Z Freeze Position properties. An upward force was then applied using an Animation Curve based on the compression upward force, but with different curves for each sphere, positioned side-by-side for better visualization. You can use this technique to find the desired level of bounce for an object, or to tweak existing bounce to balance out characteristics. As a designer, being able to manipulate the characteristics of the upward force can help you create abstractions of more complex functions.Curves are a powerful XY chart data type, and though not technically perfect, they can help you prototype speedy damping solutions that can be visually edited in the Inspector and saved as presets at runtime. In this blog on the art of damping, Alexis Bacot highlights all the things that “depend on good damping. Camera, animation, movement, color gradients, UI transitions, and many many more… it’s used everywhere! Understanding damping is key to achieving great polish. Damping alone can make the difference between a bad or good experience.”In the same post, he demonstrates how Unity’s SmoothDamp can be used to create a beautiful ease in and out, and reacts to the target changing accurately. But it does not bounce like an “advanced spring damper that can oscillate, which is great for car suspension or fake ball physics” – an example of where Animation Curves provide a powerful advantage.Of course, curves have more uses than as an XY data type to manipulate gameplay. They can also be treated as an evaluation tool to capture data visually using AddKey via the Unity API. For evaluating a position over time, such as damping in the vehicle suspension example, or the falling spheres, use AddKey(elapsedTime, currentSpringCompression) in a method, and then call that method and pass captureResolution as the repeating rate via InvokeRepeating. A capture resolution of 0.1f means that, at every 0.1s, a key is added to the curve. View the mini result in the Inspector, or open the graph up to see the complete data.Let’s take one last look at the falling van. The Animation Curve dictates how much force is applied based on the spring compression, and creates a result close to the target, which would have a little more oscillation on the third bounce. You can compare the suspension created with an Animation Curve to that of the PID controller, using the PID in Unity’s Hover Racer Live 7/21 Cycle 4.2. The only difference is that the PID result is multiplied by the hover force instead of the Y value of the Animation Curve.After implementing the PID and a lot of balancing, the vehicle’s suspension feels closer to the target with less trailing oscillation, and less drag needed for suppression. Unfortunately, the PID needs to be balanced for each vehicle if they have different mass values, which takes a long time. For prototyping purposes, this can be done quickly and visually with Animation Curves, and the plotted results of the motion can be analyzed. To evaluate the PID implementation, again, you can use a curve to plot the result to a blank curve. The result is much better, with a slightly exaggerated second bounce, but providing the motion and appearance you want for a big buoyant van.To recap, use Animation Curves when developing vehicle motion to:Plot the output of a vehicle’s engine power and produce smooth power progression.Create realistic braking motions, like when the brake force is quickly applied and then reduced over time to simulate braking a real car; or, in a game such as iRacing, where the driver brakes on the tire limit so that the car slows down in a short amount of time without spinning out of control.Simulate a suspension system that provides the upward forces for the car.Simulate lateral traction, with lateral counterforce calculations that keep the car from sliding too much to the left or right.Simulate steering when using a controller (steering is usable near the middle, around -0.5 to 0.5, but gets progressively faster when the stick position approaches -1 or 1).In addition to vehicle physics, Animation Curves can be used as design levers for prototyping player movement, hit damage over time, and more. As a powerful prototyping tool, Animation Curves empower game designers to test the application of varying force, and identify the right “feel” for mechanics, without having to write complex algorithms or physics calculations.For more guidance and inspiration, check out the Game Designer Playbook available to download for free.]]></description><link>https://unity.com/blog/games/animation-curves-the-ultimate-design-lever</link><guid isPermaLink="true">https://unity.com/blog/games/animation-curves-the-ultimate-design-lever</guid><pubDate>Thu, 21 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[ironSource expands LevelPlay with Ad Quality product]]></title><description><![CDATA[ironSource’s Ad Quality tool is now available on the LevelPlay platform and free to use for all developers using LevelPlay. Ad Quality empowers developers to control the ads users see in their app in order to ensure the best user experience possible. The tool is the latest to be added to LevelPlay, which hosts many products for developers to manage and grow their app business. With Ad Quality, you get:An overview of the ads being shown in your app, including both content and user experienceAd-level performance metrics, such as impressions, revenue, and clicks to see how users are engaging with each adAll of your ads and metrics displayed by app - so you can understand where each ad is performing bestA notifications system you can set up if a specific unwanted creative, advertiser, or category shows in your appTop developers like Jam City and Pikpok are already using Ad Quality to boost CPMs, reduce negative feedback, and more. Now every developer using LevelPlay can do the same. The integration is simple - once a developer downloads and integrates the SDK, any developer using LevelPlay now has easy access to Ad Quality on the platform, and will have access to the many new features to come.To learn more about Ad Quality, get in touch with your account manager for a demo. Stay tuned for more products coming to LevelPlay designed to help grow your business. ]]></description><link>https://unity.com/blog/ironsource-ad-quality-levelplay</link><guid isPermaLink="true">https://unity.com/blog/ironsource-ad-quality-levelplay</guid><pubDate>Thu, 14 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Welcome, ironSource!]]></title><description><![CDATA[Unity announced today that it has entered into an agreement to merge with ironSource, harnessing the company's tools, platform, technology, and talent to form an end-to-end platform that enables creators to more easily create, publish, run, monetize, and grow live games and RT3D content seamlessly.We continue to believe that the world is a better place with more creators in it. Over the past year, we’ve been making sure we have the right tools and focus that are delivering the most value to our user community, particularly as the industry evolves. Today, games don’t launch - they live. Players want connection - they want to play with each other, and be social. And we see that these trends are extending beyond gaming.As a result, we have focused on fine-tuning our platform of tools, solutions, and services that deliver and accelerate value to creators - regardless of what engine they choose to build on. From the general availability of Unity Gaming Services to our recent acquisitions of Parsec, SyncSketch, Wētā Digital, and Ziva Dynamics, to the work we continue to deliver in the core Unity tools and in Operate, we are focused on delivering outsized value for creators.Our vision is to provide creators with a powerful, flexible engine that they can realize their visions through - quickly and beautifully - while introducing the tools that help them learn and better understand their audiences, helping them to more quickly iterate and improve to build a robust and scalable business from. As we move closer to this vision today, we couldn’t be more excited about bringing ironSource into the Unity family.If you don’t know ironSource, they bring a proven record of helping creators focus on what creators do best – bringing great apps and user experiences to life – while enabling business expansion in the app economy. ironSource’s suite of tools and solutions provides the majority of the world’s top games and many of the leading non-gaming apps with the monetization, marketing, analytics, and discovery capabilities they need to build and run scalable app-based businesses. The combination of both companies will accelerate Unity’s growth as a software company powering the creator economy end-to-end. For our community, it will drive tighter integration between Operate and Create solutions and deliver the best potential combination of value to creators, publishers, and advertisers - in games and beyond.We believe that ironSource’s enhancements for Unity’s Operate Solutions will instantaneously yield immediate benefit to creators. Operate’s mission is to enable the success of our creators to deliver the best player experiences and build robust businesses. An important tool for this is Unity Ads - our monetization solution for mobile games that enables game developers to monetize their entire player base. Advertising has long been and we believe will continue to be the economic engine for mobile games, driving players into their games and driving revenue at scale. Although advertising is facing some temporary challenges right now due to macroeconomic factors, this is a business that has proven itself resilient despite the many ups and downs of economic cycles and regulatory changes. By joining forces with ironSource, the right opportunity presented itself for Unity to go bold and further our mission to be the economic engine/driver for our creators' success so creators can continue their craft of making games. It also reinforces our strong conviction in the long-term strength and growth of the in-game advertising business. Unity and ironSource’s complementary data and product capabilities will give creators access to better funding for user acquisition (UA) and monetization to successfully scale their games and accelerate their economic performance.ironSource will also help creators expand cross-channel discovery, UA, and monetization channels for creators through Aura, and yield new creative and analytics capabilities through Luna. Moreover, the combined reach of Unity & ironSource’s 3B+ monthly active users (MAUs) provides scale and data benefits that will deliver better performance for customers, including improved return on ad spend (ROAS) for ad buyers and monetization for publishers.With ironSource, Unity will take the linear process of making games and RT3D content and experiences and make it an interconnected and interactive one - creating the opportunity to innovate and improve at every step of the cycle.What if that process was no longer "first create; then monetize?” What if creators had an engine for live games that by default enabled them to gain early indicators of success for their games through user acquisition of their prototype, and gave them a feedback loop to improve their games based on real player interactions as early in the process as possible? Unity and ironSource’s combined offerings will uniquely position the combined company as the only game creation and growth platform for creators.This tighter integration between Unity’s Create and Operate means a more powerful flywheel and data feedback loop that further supports creators’ success and understanding of what’s working between gameplay, design and their monetization efforts. With the addition of SuperSonic, ironSource’s publishing solution, the combined company will also break down the barriers to publishing directly through the engine.Unity provides the engine that takes ideas from inception to being viable businesses. This is an engine that negates the need for developers and the industry at large to reinvent the wheel each time a game is created. The gears of this include the tools to create, publish, run, monetize, and grow. It is this integration with ironSource, and the resulting interactivity and interoperability across the game lifecycle, that makes Unity + ironSource unique. It is our combined knowledge and passion for game developers that keeps us innovating to meet their needs today and in the future.We succeed only if creators succeed and with ironSource joining the Unity family, we will make it easier for them to do so in one centralized, integrated platform.Join the discussion on the Unity Forums.---Cautionary Statement Regarding Forward-Looking StatementsThis communication includes forward-looking statements. These forward-looking statements generally can be identified by phrases such as “will,” “expects,” “anticipates,” “foresees,” “forecasts,” “estimates” or other words or phrases of similar import. These statements are based on current expectations, estimates and projections about the industry and markets in which Unity Software Inc. (“Unity”) and ironSource Ltd. (“ironSource”) operate and management’s beliefs and assumptions as to the timing and outcome of future events, including the transactions described in this communication. While Unity’s and ironSource’s management believe the assumptions underlying the forward-looking statements are reasonable, such information is necessarily subject to uncertainties and may involve certain risks, many of which are difficult to predict and are beyond management’s control. These risks and uncertainties include, but are not limited to the expected timing and likelihood of completion of the proposed transaction, including the timing, receipt and terms and conditions of any required governmental and regulatory approvals of the proposed transaction; the occurrence of any event, change or other circumstances that could give rise to the termination of the merger agreement; the outcome of any legal proceedings that may be instituted against the parties and others following announcement of the merger agreement; the inability to consummate the transaction due to the failure to obtain the requisite stockholder approvals or the failure to satisfy other conditions to completion of the transaction; risks that the proposed transaction disrupts current plans and operations of Unity and ironSource; the ability to recognize the anticipated benefits of the transaction, including anticipated synergies; the amount of the costs, fees, expenses and charges related to the transaction; Unity’s expected stock buyback occurring as planned or at all; and the other risks and important factors contained and identified in Unity’s and ironSource’s filings with the Securities and Exchange Committee (“SEC”), such as Unity’s Annual Report on Form 10-K for the fiscal year ended December 31, 2021 and subsequent Quarterly Reports on Form 10-Q and Current Reports on Form 8-K, and ironSource’s Annual Report on Form 20-F for the fiscal year ended December 31, 2021 and subsequent Current Reports on Form 6-K, any of which could cause actual results to differ materially from the forward-looking statements in this communication.There can be no assurance that the proposed transaction will in fact be consummated. We caution investors not to unduly rely on any forward-looking statements. The forward-looking statements speak only as of the date of this press release. Neither Unity nor ironSource is under any duty to update any of these forward-looking statements after the date of this communication, nor to conform prior statements to actual results or revised expectations, and neither Unity nor ironSource intends to do so.Important Information for Investors and StockholdersIn connection with the proposed transaction, Unity expects to file with the SEC a registration statement on Form S-4 that will include a joint proxy statement of Unity and ironSource that also constitutes a prospectus of Unity, which joint proxy statement/prospectus will be mailed or otherwise disseminated to Unity’s and ironSource’s respective securityholders, as applicable, when it becomes available. Unity and ironSource also plan to file other relevant documents with the SEC regarding the proposed transaction. INVESTORS ARE URGED TO READ THE JOINT PROXY STATEMENT/PROSPECTUS AND OTHER RELEVANT DOCUMENTS FILED WITH THE SEC IF AND WHEN THEY BECOME AVAILABLE, BECAUSE THEY WILL CONTAIN IMPORTANT INFORMATION.Investors and securityholders may obtain free copies of the registration statement and the joint proxy statement/prospectus (if and when it becomes available) and other relevant documents filed by Unity and ironSource with the SEC at the SEC’s website at www.sec.gov. Copies of the documents filed by the companies will be available free of charge on their respective websites at www.unity.com and www.is.com.Participants in SolicitationUnity, ironSource and their respective directors and executive officers may be considered participants in the solicitation of proxies in connection with the proposed transaction. Information about the directors and executive officers of Unity is set forth in its proxy statement for its 2022 annual meeting of stockholders, which was filed with the SEC on April 20, 2022. Information about the directors and executive officers of ironSource is set forth in its Annual Report on Form 20-F for the fiscal year ended December 31, 2021, which was filed with the SEC on March 30, 2022. These documents can be obtained free of charge from the sources indicated above. Additional information regarding the participants in the proxy solicitations and a description of their direct and indirect interests, by security holdings or otherwise, will be contained in the joint proxy statement/prospectus and other relevant materials to be filed with the SEC when they become available.No Offer or SolicitationThis communication is not intended to and shall not constitute an offer to sell or the solicitation of an offer to sell or the solicitation of an offer to buy any securities or a solicitation of any vote of approval, nor shall there be any sale of securities in any jurisdiction in which such offer, solicitation or sale would be unlawful prior to registration or qualification under the securities laws of any such jurisdiction. No offer of securities shall be made except by means of a prospectus meeting the requirements of Section 10 of the Securities Act of 1933, as amended.]]></description><link>https://unity.com/blog/news/welcome-ironsource</link><guid isPermaLink="true">https://unity.com/blog/news/welcome-ironsource</guid><pubDate>Tue, 12 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[SerializeReference improvements in Unity 2021 LTS]]></title><description><![CDATA[In the latest LTS release, polymorphic serialization offers improved user collaboration and API access, plus more granular handling of missing types.With the SerializeReference attribute, you can serialize an object assigned to a field as a reference, instead of serializing it by value. The objects being referenced are called “managed references.” Fields with the SerializeReference attribute serve to support polymorphism and null values – and most recently, Unity 2021 LTS introduced Stable IDs for managed references, which provide granular handling of missing types and improved API access. In this blog, we share more about these changes and how they can benefit you directly.Managed references are saved within the serialization data of their host, where the host is a Unity object (such as a class derived from MonoBehaviour or ScriptableObject). To do this, we assign a unique ID to each managed reference object.A field with the SerializeReference attribute is serialized by saving the ID of the referenced object. The managed references themselves are saved in a list called the ManagedReferenceRegistry, which is included within the host’s serialized data.In Unity 2019 and 2020 LTS, IDs were assigned at save time via a depth-first traversal of the content. The main drawback of this approach is that small actions, like reordering the elements of an array, could result in a significant change in the affected file. Large changes within the files could thereby lead to merge conflicts, which are difficult to resolve when working in a collaborative environment.That’s why we introduced Stable ID. Stable ID ensures that once an object is assigned its own unique ID, then that same ID is retained through successive save and load cycles. In other words, changing the field assignment of managed references on the host, and then saving again, won’t alter the ID.To illustrate the value of Stable ID, consider the following example:This example creates an array of managed reference objects, populated with interleaved instances of the Sandwich and Fruit class. You can view the contents of the array by inspecting the LunchBox1.asset file.Moving the first entry to the end of the list will result in a change in the underlying asset file. The following screenshots from a diff tool demonstrate how simple the diff from 2021.3 is, as the objects in the array now have IDs that are independent of the array ordering.2020.3:2021.3:In addition to reducing changes within Unity files, the Stable ID feature is designed to address common collaboration challenges. In previous versions, two users who added managed reference objects on the same host would end up with the same ID, making it difficult to merge (especially since a single managed reference object can be referenced by more than one field). As of Unity 2021, IDs are now virtually guaranteed to avoid such a conflict, because they are generated based on a hash of time and system information. For more advanced scenarios, you can even override the default ID assignment system by calling SerializationUtility.SetManagedReferenceIdForObject.SerializeReference includes support for polymorphism, which means that a field can be assigned to an instance of a class that derives from the field type. In fact, we support the field type as “System.Object” which is the root base class of every C# class. But this opens up the possibility of a successfully compiled project missing the definitions of classes that were previously available and had been saved into a scene or asset file. In some cases, classes can go missing when source files are removed, classes are renamed, or classes are moved to another assembly.When loading a SerializedReference host object, the fully qualified type name of each managed reference object is examined and must be resolved back to a valid class type in order to instantiate it. In previous versions of Unity, missing classes could put the entire “host” object into an error state without loading any of the valid managed reference objects. So if you had a “host” with an array of 15 managed reference objects, but a single object could not be resolved, then you would not see any of them in the Inspector. There would be an error logged in the console – even though the host object was not visually marked as being in an error state when inspected – and all the edits made would be silently discarded.In Unity 2021, we now instantiate all loadable managed reference objects and replace the missing ones by null. This gives users an opportunity to see more of the state of the host object, and to facilitate the resolution of missing types. Meanwhile, if the missing type is restored while the host object is loaded, then the triggered Domain Reload will restore the managed reference objects, and all fields referencing it will be updated properly.This is an example of how objects with missing types appear in the Inspector:In 2020.3, the Fruit class is missing yet the Inspector does not show any array elements, and there is no indication of an error:In 2021.3, the Inspector warns you that the missing Fruit objects appear as null entries, whereas the Sandwich objects continue to be displayed:The error messages in the console related to missing types have also been updated so that they’re less repetitive – they simply identify which host objects have missing types.Here’s an error message in 2020.3:Compare it to this warning message in 2021.3:Leveraging those improvements to IDs, plus changes made to managed reference objects in Prefabs are now sticky to those managed reference objects. In the past, PropertyModifications targeted fields based on the first property path leading to that field. This meant that if the path changed (by reordering an array, for instance), then the PropertyModification would lose track of the intended managed reference and fail to resolve properly. As of Unity 2021, there are PropertyModifications that reference managed reference objects using a path incorporating the Stable ID, i.e., managedReferences[12345].myString. This ensures that a managed reference object maintains its overridden values, no matter where you move it on the host.A new class, SerializationUtility, has been added to the Unity API to expose functionality related to SerializeReference. For example, SerializationUtility.ClearAllManagedReferencesWithMissingTypes() can be used to remove references to missing types, such as removing the warning state from a host if no recovery is planned for a missing type.We’ve refined the API for working with managed references in the context of CustomEditors, including the option for read access to SerializedProperty.managedReferenceValue.The reference for the new methods also offer sample code, and we’ve incorporated more detail for the reference topics related to serialization.Your existing projects that use SerializeReference should load smoothly in the new version of Unity, as the serialization code is compatible with the older managed reference format. Often, the use of SerializeReference does not require in-depth knowledge of the Stable ID concept, or the new API methods. However, even when left “under the hood,” these improvements are beneficial for typical usage, especially in a collaborative environment.We hope that this article will encourage you to further explore the feature. As our serialization team continues to enhance capabilities for all Unity users, we appreciate your ongoing feedback and discussion on this dedicated forum thread.]]></description><link>https://unity.com/blog/engine-platform/serializereference-improvements-in-unity-2021-lts</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/serializereference-improvements-in-unity-2021-lts</guid><pubDate>Mon, 11 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Reimagining community with digital twin technology ]]></title><description><![CDATA[By bringing models into 3D, architects and urban planners are better equipped to solve challenges around shifting landscapes, climate change, transportation, and more.While a digital twin by definition is any virtual copy of a physical asset, process or system, an urban digital twin is a virtual representation of an entire urban environment’s physical assets. Urban digital twins play a critical role in the larger global movement toward smart cities. A “smart city” is a community that uses electronic means to collect valuable data surrounding the use and performance of its utilities, mobility patterns, and infrastructure by using tools like Internet of Things (IoT) sensors to record activities and changes in the urban environment. Urban digital twins often serve as the systems within which this data is represented and visualized. They are created by aggregating large sets of map and model data, visualized in real-time.Because of this, urban digital twins offer an ability to look at the future state of an urban environment in a more accurate context than a collection of traditional building models would allow. They are also helping designers reimagine and further democratize the planning process. According to ABI Research, more than 500 cities around the globe will have deployed digital twins by 2025. Currently, many cities are actively making the effort to digitally replicate their urban landscapes and explore the roles digital twins will play in their communities.One of those cities is Trondheim. The fourth largest city in Norway, Trondheim is located on the shore of Trondheim Fjord. Founded by Viking King Olav Tryggvason in 997, the city has a rich Nordic history. Like many cities around the world, Trondheim’s geographic features necessitate densifying the existing urban landscape to allow for growth. This presents a notable design challenge, especially when coupled with the effort to preserve the city’s longstanding beauty and charm.In 2020, local architects went to work on modeling a vision for the future of their city in the Trondheim 2050 competition. The competition was a part of the city’s larger effort to create comprehensive strategic plans for its growth across the next several decades, by inviting different perspectives and increasing public engagement with the planning process.To model what Trondheim might look like in 2050, Martin Vitsø, Geodata Specialist for the City of Trondheim, turned to Unity.Vitsø led the effort to bring a collection of the teams’ SketchUp models as well as critical geographical information system (GIS) data into Unity Pro to create an accurate and interactive look at the potential future of Trondheim.Coordinating this effort across architecture teams that use different technical solutions is no small task, and cities face the same challenge on a much larger scale when creating cohesive models. “For this project, we used SketchUp almost exclusively. Teams were given SketchUp models of parts of the city that they would work on, and given instructions to place their own models into these SketchUp models first.”Martin decided to independently experiment with Unity a few years ago and this was his first effort to use it at this scale and in a public format.“Unity was able to handle a big data load,” says Vitsø. “I really liked having the ability to program scripts to take screenshots with high-level resolution and different projections, even 360 degrees.”The result was a detailed digital view of the city, a 3D vision of Trondheim that allowed viewers to see each team’s proposed buildings and infrastructure changes in context.Vitsø was also interested in finding ways the Unity models could increase public engagement with the Trondheim 2050 project and invite comments from residents. He experimented with ways to make the existing public maps of Trondheim more interactive and easier to navigate. “The backgrounds in the public response map are all high-resolution single isometric images from Unity. The virtual tour with virtual reality (VR) support is also made from 360-degree images from Unity.” Below you can see where he aggregated comments into a heat map overlaid onto a 3D version of the public map, so teams could easily identify areas of peak interest or concern to the people of Trondheim.The city’s planning team arrived at a definitive list of residents’ top concerns and aspirations to incorporate into their strategic plans. Residents highlighted where they would like to see increased greenery, public seating, pedestrian zones free of cars, and better access to the Nidelva river that runs through the city.Responses to the project from both the city and the public were very strong. “City staff members were very happy to bring 3D, VR and an interactive response map into the public participation mix. Generally, community involvement was mostly analog, consisting of public meetups and drawing on printed maps,” Vitsø says.“This way of doing things can hopefully bring a more diverse crowd to participate in the planning process. City planners have told me that many of the people who participate in conventional means of information sharing already know the process well and would have offered feedback anyway.”For Trondheim, the 2050 project was only the beginning. “We did not really use the term ‘digital twin’ prior to this project – we’ve always made 3D models of small or big areas in the city when needed. Consequently, we had put more energy into having an effective means of making fresh 3D models from fresh map data instead of keeping and updating a digital twin.”Vitsø is hopeful that more streamlined data and model sharing is the next wave in the movement toward digital twins and smart cities.“From my bureaucratic point of view, I’d like to be able to easily share up-to-date contextual digital twins with other municipal, state or private actors. Today, this can require a lot of manual processing, making models a certain way, then combining model data with certain columns in certain databases to fit the need for one specific project. There are efforts being made nationally with regards to 3D modeling and the storing of building information in databases that will concern all municipalities.”Vitsø and his colleagues in Trondheim are still hard at work looking for new ways to leverage data and propel Trondheim into the future.“The purpose of a comprehensive digital twin would be to expand the use of a 3D city model to include live sensor data along with select attributes from data registries. For instance, an energy usage analysis for a city might require a 3D city model and a bunch of extra information related to each building. We have all this information, but it’s spread across several databases and requires acrobatics to combine.”With Unity, users can consolidate their data in one place. Designers and city planners around the world are quickly discovering the power digital twins offer to visualize the impacts of future plans, inform data-driven decisions, and engage the public for remote collaboration.“I see Unity as the platform for making the visualization products we want to show the public,” says Vitsø. “An engine like Unity offers unique capabilities.”Want to learn more about how you can leverage Unity’s digital twin solutions? Contact our team.]]></description><link>https://unity.com/blog/industry/reimagining-community-with-digital-twin-technology</link><guid isPermaLink="true">https://unity.com/blog/industry/reimagining-community-with-digital-twin-technology</guid><pubDate>Fri, 08 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Looking to boost your game’s LTV? Try an on-device advertising campaign]]></title><description><![CDATA[To maximize LTV - the holy grail of mobile game KPIs - most game developers start by making in-game adjustments, such as improving the onboarding experience or adding rewarded videos. But when, where, and how you first reach users on the user acquisition side also has an effect on LTV. For example, on-device advertising, a channel that enables advertisers to meet users the moment they activate their new phones, tends to have longer LTV curves than traditional channels.That said, here are three strategies for boosting your game’s LTV with on-device advertising campaigns.Get discovered early on in the device lifecycleBy getting in front of users before they even have the chance to browse the app stores, while they’re setting up their brand new devices for the first time, you’re reaching users in prime “discovery mode.” That’s because when users are getting used to a new phone, they’re more willing to test new games they didn’t have the chance to try on their previous devices. Users who install your game on day one of their new devices are likely to choose your game time and time again, becoming high value, long-term users.On-device channels give you the opportunity to reach users at this moment, during device setup, as a native part of the device experience. For example, Aura’s app discovery unboxing experience puts you front and center during device unboxing. This means you win the first device install of your app category and get ahead of competitors who are sticking to traditional channels. By doing so, you increase the chances that the users you acquire will stick to your app for the long haul and in turn increase your game’s LTV.Looking down the funnel, on-device advertising channels can help you boost LTV by reaching a more precise audience.Utilize deep insights to reach the right audience70% of parents say they play mobile games on a typical day and 86% of Gen Z use mobile as a gaming platform, according to Tapjoy research. With everyone being a ‘gamer’ today, knowing your core audience’s demographics is just a starting point. Finding your high LTV players means digging deeper into their motivations.Ultimately, users are attracted to games that are similar to what they’re already playing and enjoying. Determining your audience by gaming preferences and demographics, rather than their demographics alone, is a much stronger way to attract the right users. This makes a user’s home screen indispensable.On-device advertising channels rely on partnerships with premium OEMs and carriers, meaning you get an inside look into the apps users engage with. Utilizing these channels, you can recommend your app to users based on what they’re interested in, a unique way to ensure they’ll play your game time and time again. On top of that, through these partnerships, you get access to a user base that games don’t usually have access to - device owners - and you’ll reach 100% of users on those devices.You may know your audience is females aged 30-40, but that's a big sample size. If you’re looking to improve LTV, reaching users based on preference through on-device advertising is a good place to start.Put your game next to the hottest appsPositioning your game as an option among a diverse mix of apps, especially on a reputable OEM or carrier, can also help you acquire high LTV users that are downloading their favorite banking, social, or entertainment app. Think about it - banking and social apps are essentials and users rarely delete them, which means users have long-term value in mind when downloading them.On-device advertising channels have the ability to present your game as an option among the hottest samples from other categories. For example, Aura’s App Discovery Unboxing experience and App Discovery In-Life experience show your mobile game alongside the essentials. Utilizing these channels, you position your app as a part of the entire app economy and as an essential piece of your long-term app collection.On-device advertising channels ensure you’re reaching users at the right times, in the right places, and in the right ways. Overall, taking app discovery into consideration is just as important to increasing LTV as is making in-game changes.With Aura’s Game Spotlight, users are shown relevant recommendations for a starter pack of games they’re likely to enjoy playing. From there, they can opt-in to receive relevant recommendations every week.]]></description><link>https://unity.com/blog/boost-game-ltv-on-device-advertising-campaign</link><guid isPermaLink="true">https://unity.com/blog/boost-game-ltv-on-device-advertising-campaign</guid><pubDate>Tue, 05 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The first 30 days of an on-device campaign]]></title><description><![CDATA[Just 53% of users open their apps within the first 7 days of installing them from an on-device campaign. By day 30, that number jumps to over 90%, according to ironSource Aura. That wait may seem long compared to most other marketing channels, but the long-term value of on-device campaigns is worth the wait.When a user installs an app the moment they unbox their phone, they might not open it immediately, but eventually it will become their app of choice. The user, for example, won’t open the travel app on their phone until they plan a trip - but for every trip after that, they know exactly which travel app to use. That’s why on-device campaigns, by nature, generate higher ROAS over time, resulting in a longer LTV curve. So when measuring on-device performance, it’s essential to give the campaign at least 30 days to mature.What’s happening during the on-device campaign for those first 30 days, and what should you, as the advertiser, be measuring? Let’s dive in.Day 1: The unboxingLet’s set the scene. It’s Christmas and someone just received their new device and can’t wait to start setting it up with their favorite apps. Since the device is equipped with the latest app recommendation technology, Aura, setting up their new phone will be a breeze.The user sees the setup wizard, which recommends a bundle of apps to choose from. It’s based on contextual information, so the apps are tailored to them. For example, a young person living in New York City is recommended social media, dating, and food delivery apps. On the other side of the country, when a middle aged person living in San Diego unboxes their phone, they get suggestions for their favorite news, sudoku, and sports apps.From here, the user makes their choices and downloads the apps they need for their new device - social media, food delivery, fitness, transportation, shopping, dating, travel, language-learning, and news.Behind the scenes, the campaign starts to collect delivery data - impressions, how many users chose to install your app, install success, CPI, and more. Eventually, once the user opens the app, the campaign starts collecting data about in-app events (e.g. how many people are using the app). Soon, with all of this combined data, you start comparing this campaign with your preset goals and KPIs and begin optimizing your campaign.Day 2-7: Starting with the basicsOnce the weekend rolls around, the user realizes they’re out of groceries, which is a great reminder to open the food delivery app they installed on Day 1 for the first time.As they plan this year’s New Year’s resolutions, they decide to get back into their fitness routine. Thankfully, they already have their fitness app downloaded and ready to use. That weekend, their friends invite them out, but they’re running late - they remember that they downloaded a rides haring app during device setup so they call a cab. Travel apps tend to pick up nicely within the first 7 days and thanks to their usability, they continue to have long-term usage.During the user’s spontaneous life moments, there’s an app for it - rather than needing to download competitors’ apps, the user already has all the apps they need, ready to be opened.During this early period, the campaign is still collecting initial delivery data and starting to collect in-app data for the apps that were opened. By now, 53% of users have opened an app. Patience is key here - this percentage will continue to grow as the campaign continues. Additionally, the campaign needs to gather enough data to understand user conversion patterns (e.g. what percent of users started using the app).Day 7-15: An app for everythingAfter the first week, the user is still finding reasons to open apps they downloaded during device setup. For example, maybe their mom’s birthday is coming up, and they want to send her a new dress. They decide to use their favorite shopping app downloaded during setup and ship her new dress to her house.At this point in the on-device timeline, the user probably receives some notifications to open their apps for the first time. These gentle encouragements help boost the app open rate by reminding the user what’s already on their phone. In fact, by day 14, 66% of users have opened their pre-downloaded apps - a 25% boost from the week before.Once two weeks have passed, the on-device campaign has collected enough data to start seeing user trends. For example, to quickly understand your app’s popularity, you can see its take rate (how many users downloaded the app), or just see how quickly users downloaded it. To have a relative understanding of how your app is performing in this campaign, you can now compare these metrics to the original goals you set.Still, it’s early in the device lifecycle, so if you start to make conclusions too soon, you might think your campaign is underperforming. It won’t be long - the campaign still needs more time. The longer you wait, the more installs you’ll gather, and the higher your LTV will be.Day 15-30: When opportunism strikesAt two weeks in, the user is naturally re-engaging with the app, and is really starting to understand its long-term value. For example, once they’ve successfully used a transportation app to order one taxi, they’ll happily continue using the same app to order more taxis. This acceleration in engagement across apps is reflected in the post-install metrics - accounting for the steepest increase in the LTV curve.At this point, the numbers speak for themselves - by day 30, the usage rate jumps by 22%, so 81% of users have opened their apps. Since you’ve allowed the campaign time to mature, now only has ROAS boomed, but you can also start using campaign data to determine how to optimize. On the Aura dashboard, for example, you can view delivery and in-app data, and analyze performance by country, campaign, and more.To start optimizing, you can compare take rates between countries, comparing them to ideal benchmarks. If one country has a high conversion rate, it’s worthwhile to focus on that campaign. If data from another country seems promising, but you don’t have enough to get a conclusive result - you can focus your campaign to get the full picture."The natural discovery process with on-device campaigns ensures a gradual engagement process. Since the apps are well-trusted and already installed, that natural engagement grows beyond day 30"Day 30+: Keeping the door openEven after 30 days, there’s always opportunities to open new apps. In fact, 2 months into the campaign, the number of apps opened grows to 90% and beyond.Users are equipped with the apps they need to live their life - maybe not to use immediately, but likely within the first 30 days after unboxing. By waiting 30 days, you’ve had time to fully understand the campaign’s long-term value. In fact, after being patient, we can see that the campaign is likely beating the expected goal.It might have taken a user time to open this app, but now, once they’ve started using it, they will continue to use and engage with it and its value will continue to grow.At this point, one month later, you’ve got ample data about delivery and post-install events to adjust their campaign goals and KPIs as needed. You can understand which apps perform best in which circumstances and just how to fine-tune your campaign to ensure continued success - far past 30 days.As we’ve seen, the natural discovery process with on-device campaigns ensures a gradual engagement process. Since the apps are well-trusted and already installed, that natural engagement grows beyond day 30 - which is when you could see your LTV and ROAS grow even more than traditional channels.Learn more about running an on-device campaign with Aura today.]]></description><link>https://unity.com/blog/aura-the-first-30-days-of-an-on-device-campaign</link><guid isPermaLink="true">https://unity.com/blog/aura-the-first-30-days-of-an-on-device-campaign</guid><pubDate>Thu, 30 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile performance optimization with Adaptive Performance 4.0]]></title><description><![CDATA[Download Unity 2022.1 Tech Stream and discover Adaptive Performance 4.0. Push Android performance even further on Samsung devices with four more scalers that cover physics, decals, customization, and layer culling – plus support for visual scripting to optimize app performance.Unity 2022.1 provides early access to innovative new features that will inform the next Long Term Support (LTS) release. In this verified package, Adaptive Performance 4.0 comes with some great new additions to expand the scaling of your app and enhance its overall performance.At GDC 2022, we shared the latest updates to Adaptive Performance 4.0 during our talk with Samsung, Unfolding your gaming potential with Galaxy GameDev. Read on for the rundown.With our visual scripting integration, just about anyone can leverage Adaptive Performance to scale their app and extend battery life. Upon installing Adaptive Performance 4.0, Unity’s visual scripting system will provide units so you can access Adaptive Performance metrics without implementing anything in C#.In other words, once you install the visual scripting package, Unity automatically activates the Adaptive Performance units. You can then add Adaptive Performance to a project with existing visual scripting graphs, but you must recompile the units. For a detailed demonstration and best practices, check out the Adaptive Performance sample documentation.As Unity regenerates Adaptive Performance units, you can add new units to your graph by right-clicking the background of any script graph. Go to the Adaptive Performance submenu to locate the units.Particles in Boat AttackHere’s an example of how to use Adaptive Performance in visual scripting. The image below represents a slice of Boat Attack, where all particles are disabled on “throttling imminent” and enabled if there are no warnings present. We scale effects such as water waves splashing, boat engine smoke, and paraglider trail formation, as they are heavy on the CPU and GPU. This improves performance with minimal changes to the game itself.Whenever there is a thermal warning change, we get the Particle System to iterate over it, then stop the Particle System or restart it again. Of course this can be adjusted to the needs of the game. For instance, instead of disabling the effects completely, you can scale the emitter numbers or the quality of the source images.All Adaptive Performance APIs are reimagined in visual scripting. A full list of APIs and their related information can be found in the visual scripting integration documentation.In addition to the many scalers already available, we added four new scalers to Adaptive Performance 4.0:Layer culling scalerDecals scalerCustom scalerPhysics scalerThe benefits of the indexer system, and all the scalers built on top of it, include:Frame rate stabilizationMinimal throttlingRescue from throttlingAutomatic content scaling during runtimeScaling without recompiling source on millions of devicesSimple integrationHigh qualityLow maintenanceThe custom Adaptive Performance Unity Profiler module shows you how scalers change so you can see if they’re doing their job well or if you need to tweak them. The example below comprises Boat Attack running on a Samsung Fold3 in unfolded mode, which uses a rather high resolution.Boat Attack starts off with plenty of scalers engaged by the menu scene, which was stabilized before the capture was done. In this example, the temperature rises quickly and the device goes into throttling.Adaptive Performance tries to stabilize the situation and reduce effects on the GPU, as this is clearly the bottleneck. The shadow scalers thereby reduce quality rapidly – but because that’s not enough, both the view distance and resolution decrease as well. The frame rate then stabilizes and the temperature drops. The game is rescued from throttling and its frame rate raises to 60 fps.Layer culling scalerWith the layer culling scaler, you can dynamically adjust layer cull distances at runtime.This feature uses the indexer system to make certain decisions, like when and how much to increase or decrease layer cull distances for optimal performance and thermal stability.The sample we ship with Adaptive Performance loops in medium CPU load until it reaches critical frame rates and then decreases the cull distance of layers. The result of this is that the cull distance for layers changes depending on the CPU and GPU load.You can set a different value for the culling distance of each layer so that they scale proportionally. This helps you determine which objects to cull earlier to save performance. For details on how to do this, see the following code sample.Adaptive decalsAdaptive decals target visual effects. In Amazing Adventures of Dr. Arm, there is a boss fight scenario that uses many particles and decal projectors. When the mobile device gets hot and throttling is imminent (or already occurring), the number of particles emitted scales down. In this case, less visually important emitters, things like the leaves blowing in the wind, tiny sparks, and other such elements, turn off completely. The scaler also reduces decal distances.No warningsThrottlingEven more, collisions are disabled on some particles. Once the thermal load decreases, we can scale these effects back up.Custom scalerThe custom scaler implements a fog scaler, and even helps you to create your own scalers when we don’t offer them directly. The custom scaler increases fog and reduces the view distance when the thermal load increases. This action decreases the load on the system so that it can recover.Post-processing can quickly become one of the most expensive parts of the frame to render. Though not crucial to gameplay, they can add more ambiance and enhance the art that the development team works so hard on.Adaptive Performance provides the benefit of including the game’s post-processing effects in full range, but also scales back effects that are not needed in moments of peak demand from the device. When throttling is underway, we turn off specific effects in Amazing Adventures of Dr. Arm that were included mainly to enhance the mood of the scene, without substantially impacting gameplay. Fog, Bloom, Depth of Field, Screen Space Ambient Occlusion (SSAO), and Motion Blur are some excellent examples of visual effects that can add a lot, but are not necessary for gameplay. These tweaks enable significant performance improvements in the game.No warningsThrottlingAdaptive PhysicsAdaptive Physics changes the fixed delta time at which the physics engine updates. If you use it for other systems, those will be scaled as well. But if you use the fixed delta times in other systems, you might want to create your own physics scaler to employ more detailed settings instead of the fixed delta time.See the above comparison of an original Time.fixedDeltaTime value and a scaled-down version. The average frame time of the original is 28 ms and the average frame time of the scaled-down version is 21 ms.Our Adaptive Performance team is constantly working to extend the package and its platform reach, and we’re excited about the new providers coming in the future. As always, we welcome your feedback on our Adaptive Performance forum. Please don’t hesitate to reach out!]]></description><link>https://unity.com/blog/engine-platform/mobile-performance-optimization-with-adaptive-performance-40</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/mobile-performance-optimization-with-adaptive-performance-40</guid><pubDate>Wed, 29 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The app CMO manifesto: Why unified marketing is the best way forward]]></title><description><![CDATA[Since 2008 when it first emerged, the app economy has evolved to include some of the biggest brands in the world - and one thing these successful app-based businesses all have in common is a strong marketing strategy. Just look at the marketing spend from some top brands across industries:Bumble spent over $60 million in Q4 2021 aloneLyft’s marketing and selling expenses exceeded $411 million for all of 2021Dog-walking service app Wag! spent over $10 million on marketing in 2021, a drastic increase from $3 million in 2020As marketing channels continue to be dynamic and evolve with consumer behavior trends and industry shifts, app businesses must adapt to stay up to date and ahead of the competition. New platforms, features, and placements, like TikTok and Instagram Reels, are emerging constantly - it’s up to the CMO to design an internal structure for finding opportunities for scaling on existing and new channels, all while managing your budgets as efficiently as possible.Unified app marketing is the best way to tick off these boxes. Like the name suggests, a unified app marketing strategy aggregates all UA campaigns across channels into a single platform. Here, I’m discussing three benefits of this strategy for app CMOs, including what I’ve seen work to drive growth for app businesses and manage ad spend as effectively as possible.1. Improve team collaboration, engagement, and communicationApp marketing teams can consist of many roles, including:- UA managers- Ad operations- Analysts- Creative designers (internal or external)However, in many app-based businesses, each team is often siloed - they’re doing their roles then handing it off to the next person in the chain. The creative designers, for example, build the creative then send along to the UA managers for deployment. They then look to the ad operations team for adjustments before it’s handed off to the analysts for reviewing performance. The creative team never learns about how their ads performed or have any insight beyond their initial responsibility.But no matter the size of your marketing squad, unifying them gives everyone transparent access to data and closes the loop between creatives and optimization. Often, an aspect of your role as CMO is building an ideal team structure - enhancing collaboration and communication is part of this, as is giving all teams access to a single dashboard. For more tips on improving your creative team, check out this piece my colleague Dan Greenberg wrote about growing ironSource’s creative studio and hiring, creating an efficient structure, and optimizing our work culture.Unifying your marketing team gives everyone transparent access to data and closes the loop between creatives and optimization.A unified marketing approach can also promote greater engagement internally because team members feel more involved and invested in the success of campaigns. Going back to our earlier example, when you let the creative team get insights into how their ads performed from the analysts, they’ll likely strive to improve and start building an internal database of best practices as they make changes and track the results. When your team and processes improve over time, you become more efficient, too. You spend less time managing each team as their own silo and more time scaling the business and focusing on higher-level operations.2. Shorten the learning curve and improve efficiencyFor many app CMOs, a key goal is achieving and sustaining growth across new and existing channels. But a major challenge to this is the operational overhead and knowledge it takes to run successful cross-channel campaigns. Each channel behaves differently, and your team is responsible for replicating success on each one, while adapting the strategy to suit its unique behavior. The more UA campaigns that your organization is running, the more the team needs to track, adjust, and optimize - that takes a lot of manpower.The learning curve can also be steep when you’re expanding into new channels that your team has never run on before. Your marketing team should use the same platform to monitor campaigns so they’re all viewing performance within the same context. If your growth manager is only looking at campaigns on one channel without any point of comparison, they’re missing out on opportunities to apply learnings from other platforms and make optimizations. Giving them a view of campaign performance across channels lets them analyze performance more quickly and easily. And improving your team’s efficiency makes your role as CMO easier, too - you’ll be able to extract the insights you need about channel growth in a clearer and faster way.3. Spot trends and themes more quickly and easilyWhen running large-scale marketing campaigns, there’s a lot of information your team is looking at to draw correlations and spot opportunities. There’s data from sources like your MMP, the channels themselves, and your own BI systems. Currently, many marketing teams use separate platforms for aggregating each metric, like LTV predictive platforms that require users to pull data from each channel to get a result. It all gets even more complicated the more channels you’re on. For your team, they need to crunch the numbers on each platform and analyze increasingly more data. And for you as CMO, it’s then more difficult to spot the high-level trends and make the correlations that are essential to your role.By unifying your campaigns - and their data - into one platform, it’s a lot easier for both you and your entire team to extract insights and connect the dots that expose trends. Part of your role is ‘decoding’ the creatives - essentially adding meta data that enriches your analysis and helps you trace the origins of the ad. So including labels for information like which team created the asset and the marketing theme, then consolidating this onto a single platform can help you better organize campaigns and get a clearer birds-eye view of what’s working.Consolidating the meta data of your creatives onto a single platform can help you better organize campaigns and get a clearer birds-eye view of what’s working.Managing, optimizing, and extracting insights all becomes more efficient when cross-channel campaigns are aggregated into one place, and this usually leads to better performance.Managing the future of app marketingUnifying your app marketing is key to staying agile and dynamic as the mobile advertising industry continues to shift. That's why when building ironSource Luna, we considered the needs of all teams involved in app marketing - from creative production to managing cross-channel campaigns. With a single platform that allows your team to create, monitor, manage, and optimize campaigns across channels, you can make more accurate and impactful decisions that drive your app’s growth forward and reduce wasted spend.Analyzing further, we understood that different team members look at the same data through different angles. This is how we came up with Luna Views, which lets CMOs and their teams customize their own dashboards, so they can visualize their most important metrics with greater ease and clarity. While most dashboards are built for the UA managers and operations teams, this is customizable for everyone, including the creative teams. Improving accessibility and efficiency for your team while making it easier for you to extract high-level insights leads to better performance you can sustain and scale over time. Going forward, bringing all of your app marketing channels onto a single platform should be the new normal - it benefits your team, your own role, and your organization as a whole.]]></description><link>https://unity.com/blog/the-app-cmo-manifesto-why-unified-marketing-is-the-best-way-forward</link><guid isPermaLink="true">https://unity.com/blog/the-app-cmo-manifesto-why-unified-marketing-is-the-best-way-forward</guid><pubDate>Mon, 27 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making the most of your in-app advertising campaigns: Q&A with Liftoff]]></title><description><![CDATA[ironSource sat down with Matt Fisher, Group Product Manager at Liftoff, a one stop shop to programmatic user acquisition and re-engagement, to get his input on making the most of your in-app advertising campaigns. Read on to learn some best practices for optimizing your success with this strategy.How do most app marketers optimize their user acquisition campaigns? How has it evolved over time?Many advertisers optimize campaigns according to in-app purchase (IAP) revenue to meet their ROAS goals, but this approach does not holistically value each user. IAP campaigns miss out on a user’s potential ad revenue contribution because they only optimize for users who have a high propensity to make a purchase.To maximize profitability of your UA campaigns, you should optimize for both IAP and in-app advertising (IAA), instead.Up until a few years ago, it was impossible to gain semi-real time access to per-impression revenue. Before that, ad revenue was only available at the end of the month or not at all, making that data impossible to use for optimization. Now that networks like Liftoff and ironSource have access to impression level revenue data, it’s exciting to see advertisers reaping the benefits of ROAS campaigns running on a combined IAP and IAA optimization strategy.How does IAA optimization improve ROAS campaigns?Optimizing your UA campaigns to drive users who view a lot of ads will maximize your ROAS. In early testing, our team at Liftoff drove a larger cohort of highly engaged users who viewed a lot of ads, increasing overall ad monetization. We also saw that IAA optimization can drive 20-30% cheaper installs while maintaining ROAS.And because IAA optimization is based on the volume of ads and their subsequent impressions - both stable and predictable metrics - campaigns running IAA optimization saw ROAS stabilize and become less reliant on spiky, whale-driven purchases.When is IAA optimization most effective?In general, the more an app relies on IAA monetization, the more valuable and effective it is to directly optimize for those events.For example, developing countries tend to monetize more heavily from ads versus purchases. Likewise, Android users tend to make fewer in-app purchases than iOS users. Both of these scenarios increase the importance, value, and overall effectiveness of IAA optimization.What, if any, are the drawbacks of IAA optimization on ROAS campaigns?While including IAA events in ROAS optimization should improve overall ROAS, there is a limit to how much ROAS can increase; there are finite limitations to how many ads users can view and how valuable each impression is. Optimizing for IAP, on the other hand, is limited by nothing other than a user’s bank account.IAA, like almost all other forms of KPI optimization, is also impacted by SKAN attribution since SKAN changes how we attribute conversion back to the supply source. The best alternative would be to identify events that are highly correlated to ad revenue and use the conversion values to record those events.That said, there are few risks in experimenting with IAA optimization if your app monetizes on ads. If you do see degraded performance, you can always turn off this postback stream and return to IAP-only optimization.What do I need to do to maximize ROAS with IAA optimization?It all starts with data - you need to be able to pass IAA revenue data back to your marketing partners so they can include the data in their optimization models. This is now made simple through partners like Appsflyer, Adjust, and ironSource LevelPlay mediation. Please talk to your MMP and meditation partner to learn more about other integrations that may exist.Otherwise, if you’re unable to pass IAA postbacks to your marketing partners, you’ll need to use a proxy event that is highly correlated with IAA revenue. To do this, we suggest you partner with your BI/DS team to define or identify app events that are most correlated with total ad revenue.]]></description><link>https://unity.com/blog/making-the-most-of-your-in-app-advertising-campaigns-qa-with-liftoff</link><guid isPermaLink="true">https://unity.com/blog/making-the-most-of-your-in-app-advertising-campaigns-qa-with-liftoff</guid><pubDate>Tue, 21 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Detecting performance bottlenecks with Unity Frame Timing Manager]]></title><description><![CDATA[Creating a standout experience that runs smoothly on a variety of devices and platforms can be challenging. That’s why we continue to refine our tools, such as our improved Frame Timing Manager, for optimization across the board. Read on to discover how the Unity 2022.1 update provides enhanced platform support for this feature, enabling you to collect more data than previously possible.The Frame Timing Manager is a feature that provides frame-level time measurements like total frame CPU and GPU times. Compared to the general-purpose Unity Profiler and Profiler API, the Frame Timing Manager is designed for a very specific task, and therefore comes with a much lower performance overhead. The amount of information collected is carefully limited as it highlights only the most important frame stats.One main reason for leveraging the Frame Timing Manager is to investigate performance bottlenecks in deeper detail. This allows you to determine what curbs your application performance: Is it bound by the main thread or render thread on CPU, or is it GPU-bound? Based on your analysis, you can take further action to improve performance.The dynamic resolution feature supports fixing detected bottlenecks on the GPU side. You can then increase or reduce rendering resolution to dynamically control the amount of work on the GPU.During development, you can even visualize timing in an application HUD, which allows you to have a real-time, high-level mini Profiler built right in your application. This way, it’s always readily available to use.Lastly, you can use the Frame Timing Manager for release mode performance reporting. Based on collected information, you can send statistics to your servers regarding your application’s performance on different platforms for better overall decision-making.The Frame Timing Manager API provides a set of useful CPU and GPU measurements per frame as the FrameTiming struct. Here’s a list of them:cpuFrameTime refers to the total CPU frame time. It is calculated as the time between the start of the frame and the next frame on the main thread.cpuMainThreadFrameTime is the main thread’s work time, or the total amount of time between the start of the frame and the main thread finishing its job.cpuRenderThreadFrameTime refers to the render thread’s work time, or the total amount of time between the first work request submitted to the render thread and the time when the Present() function is called.cpuMainThreadPresentWaitTime is the duration the CPU spends waiting for Present() to complete during the frame.gpuFrameTime is the GPU’s work time, or the total amount of time between the work submitted to the GPU and the signal indicating that the GPU has finished the job. See relevant limitations in the “Supported platforms and limitations” section below.Note that the cpuMainThreadPresentWaitTime is the sum of shown “[wait]” blocks, and includes waits for Present() and target fps. It’s harder to show GPU work time, as it starts somewhere in the middle of “Scene rendering” and finishes on the next frame’s sync point with the previous frame.First, it’s worth noting that the Frame Timing Manager is always active in development builds. If you plan to use it only in development, you don’t need to complete any additional steps – you can just use the Frame Timing Manager C# API or its counters.For release builds, you need to explicitly activate the feature before you can use it. There are multiple ways to do this. One straightforward approach is to tick a checkbox in Project Player settings. In this case, you can read data using the C# API. Unfortunately, however, it is the least efficient method. If you enable the feature in settings, it’ll remain active whether or not you need it at a specific point in time.Alternatively, you can read Frame Timing Manager values using the Profiler Recorder API. The benefit of the Profiler Recorder API is that the Frame Timing Manager measurements are only taken when you attach a recorder to the counter, giving you dynamic control over the feature and its overhead.Data provided by the Frame Timing Manager can be used for bottleneck detection. In the most simple variant, you can compare the main thread CPU, render thread CPU, Present Wait, and GPU time to determine which one is the largest and most probable cause of frame rate limitation. For example:The Frame Timing Manager can be used as a simple onscreen Profiler, useful for assessing application health. Its most basic form might look like this:The Frame Timing Manager supports all platforms that are supported by Unity with the following exceptions:On Linux platforms when the OpenGL API is used, no GPU time is provided.On the WebGL platform, no GPU time is provided.On iOS and macOS when the Metal API is used, it’s been reported that GPU time could potentially be higher than the total frame time under heavy GPU load.The important implementation specifics of the Frame Timing Manager are:Frame Timing Manager produces results with a fixed delay of four frames. This means that you get results for a frame that is four frames behind (not for the current frame). The Frame Timing Manager provides time measurements synchronized for the same frame for both CPU and GPU. Due to platform and hardware limitations, GPU timing results aren’t immediately available on most platforms.Frame Timing Manager doesn’t guarantee that the GPU will be available for all of the frames. The GPU might fail to return results on time, or return any results at all. In these cases, the GPU Frame Time is reported as zero.On platforms that don’t allow GPU timestamping, Unity computes the Frame Complete Time value rather than measuring it. More specifically, Unity computes Frame Complete Time as First Submit Timestamp + GPU time. If the GPU fails to provide GPU time, Frame Complete Time is automatically set as equal to Present Timestamp.On GPUs that use tile-based deferred rendering architecture, like mobile platforms, results are less precise because GPU execution is deferred, and the execution of rendering phases might be done separately. The Frame Timing Manager can only measure overall duration.For advanced users, the Frame Timing Manager provides timestamp information that can be used for frame timeline visualization or calculating deltas with other markers.The timestamps provided are:frameStartTimestamp: The CPU clock time when the frame first startsfirstSubmitTimestamp: The CPU clock time when the initial work is submitted to the GPU during the frame (platform and API dependent); different platforms submit at different times.cpuTimePresentCalled: The CPU clock time at the point Present() is called for the frame. It’s the time when Unity finishes submitting objects for rendering and informs the GPU that the frame can be presented to the user.cpuTimeFrameComplete: The CPU clock time at the point when the GPU finishes rendering the frame. On most platforms, this value is calculated and equals First Submit Timestamp + Frame GPU time.We hope that these improvements will help you measure and understand your application’s unique performance story. These benefits are now in your hands with Unity 2022.1.If you’re wondering what’s next for our profiling tools, check out our roadmap here. Otherwise, please feel free to reach out to the team on our forum. We would love to hear your thoughts and see how we can further improve Unity’s performance features and tooling.]]></description><link>https://unity.com/blog/engine-platform/detecting-performance-bottlenecks-with-unity-frame-timing-manager</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/detecting-performance-bottlenecks-with-unity-frame-timing-manager</guid><pubDate>Thu, 16 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creating games for everyone: Introducing Unity Learn’s new accessibility course ]]></title><description><![CDATA[Creating a game means creating a shared experience. Whether it’s a small personal project or a global commercial release, a game is an invitation for players to connect with and respond to your ideas as a creator. And, when you make that game more accessible, you’re extending the invitation to a wider and more diverse audience.How should you go about prioritizing accessibility as an emerging creator? If you’ve never done it before, it might feel overwhelming – but we’re here to help!Practical Game Accessibility is a new, free online course for intermediate creators. It’s an introduction to creating games that more players can enjoy. As you work through the course, you’ll learn about prioritizing accessibility while building a game guided by an inclusive design approach.To support this learning journey, we created Out of Circulation – a small, vertical slice of a point-and-click narrative adventure game. You’ll use Out of Circulation as an example case study to explore and expand upon throughout the course.“You’ll work it out, Sureswim,” Old Smalt reassures you as she passes you the apanthometer and sends you on your way. Surely the benevolent tech-witch and her gadgets will help you solve the mystery surrounding the local library. While your sidekick Wink is an expert in eavesdropping, you’re going to need all the support you can get!Not working on a game? No problem! Although Practical Game Accessibility uses games and game development as its core example, you can also apply much of what you’ll learn to other non-game projects, such as simulations, visualizations, and other real-time applications.The gaming community is diverse. A huge number of people enjoy playing games, and this includes players with disabilities. By working directly with these players as you develop your game, you’ll create a better, more inclusive experience for a broader audience.Prioritizing accessibility is critical to supporting players with disabilities, but it’s also just good design practice. When you center accessibility as a design pillar from the very start of a project, it’s not extra work – it’s just part of making the best game that you can.Already in the middle of making a game? It’s never too late to try and make your game more accessible. Even relatively small changes can have a big impact on your players’ experience.In Practical Game Accessibility, you’ll start with an introduction to accessibility and inclusive design. After that, you’ll work through pre-production for your own game idea, prioritizing accessibility each step of the way.When you get to the production stage, you’ll explore a range of focused tutorials on the Out of Circulation case study to help you bring your game to life.Finally, you’ll reflect on the overall experience and identify your next steps as a creator who prioritizes accessibility.By the end of the course, you’ll be able to:Apply an inclusive design approach to your work as a creatorIdentify critical accessibility requirements for your projectsImplement accessibility review and feedback cycles throughout developmentDesign and develop features using an inclusive design approachMaintain a focus on accessibility while adapting to constraints and emerging project needsPractical Game Accessibility is available for free on Unity Learn. Now’s the perfect time to get started on your journey to creating more accessible digital experiences!]]></description><link>https://unity.com/blog/games/creating-games-for-everyone-introducing-unity-learns-new-accessibility-course</link><guid isPermaLink="true">https://unity.com/blog/games/creating-games-for-everyone-introducing-unity-learns-new-accessibility-course</guid><pubDate>Thu, 09 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[World Oceans Day: RT3D projects make waves and encourage conservation]]></title><description><![CDATA[Not just a source of natural beauty, oceans are critical to all life on earth – and they’re at risk. Riddled with plastic and facing oil spills, overfishing, and increasing global temperatures, these ecosystems are in real danger. Read on to learn about World Oceans Day and why protecting our oceans is essential.Today is World Oceans Day, a time for the planet to unite and take action to protect our oceans. This year’s focus is raising awareness and support for the 30x30 movement, which asks world leaders to commit to protecting “at least 30% of the world’s lands, waters, and oceans by 2030.” You can join the movement by writing to your nation’s leader.Oceans provide more than just incredible views and untapped areas for exploration. They also play a key role in our survival.A breath of fresh air. It’s estimated that between 50–80% of the world’s oxygen originates from oceans.The building blocks of life. In addition to fish, oceans provide many other foods, vitamins, and minerals that we rely on.Climate control. Oceans absorb over 90% of the world’s heat and much of the carbon dioxide we produce, which means they’re integral to preventing climate catastrophe.Unlimited natural energy. It’s clear that we can’t keep exploiting non-renewable energy resources. Fortunately, electricity can be generated by waves – and the oceans have plenty!Pollution“Human activities are threatening the health of the world's oceans. More than 80% of marine pollution comes from land-based activities.” – National GeographicPollution of any kind can have devastating impacts on delicate ocean ecosystems. We’ve all seen images of marine animals afflicted by plastic straws, grocery bags, and beer rings, but did you know that air pollution can find its way into the oceans, too? According to National Geographic, air pollution makes up a third of the toxic contaminants that enter the ocean. This, plus the runoff of pesticides from agricultural land, factory sewage, and oil spills, is destroying marine life, contaminating food sources, and depleting vital oxygen supplies.Climate changeThe planet’s rapidly increasing temperatures are one of the biggest threats to the oceans. As the planet warms, so do the oceans, which can be deadly to marine life. Currently, 75% of coral reefs are at risk due to rising temperatures which can kill them.Accumulating carbon dioxide in the atmosphere can also lead to a process called ocean acidification, which involves increasing pH levels in ocean waters. Among other risks, this can dissolve the shells of marine creatures like lobsters and oysters.Healthy oceans are essential for the survival of all life on Earth, so we need to protect them. We’re committed to ocean conservation as part of our ESG (environmental, social, and governance) efforts to build a more sustainable future and invest in our planet.Here are some exciting projects using Unity to celebrate the planet’s oceans, educate audiences, and encourage action:An Otter Planet by Habithéque is an in-progress PC game designed to teach players about water and help them understand its importance to all life on earth. In addition to raising awareness through play, An Otter Planet will raise money for charities to support water-related protection and revitalization efforts through in-game purchases and charitable donations.Raft, a PC game developed by Redbeet Interactive, highlights the incredible vastness of the open ocean. Players wake up adrift on a raft and then fight for survival by crafting, growing food, and avoiding shark attacks. Experiencing this game provides a new appreciation for the danger, stillness, and mystery of the oceans.The Hydrous is an innovative project that designs science-based augmented and virtual reality experiences to engage audiences with the wonders of ocean life. The creators’ goal is to provide “equitable access to ocean exploration,” which in turn builds understanding of beautiful and threatened marine ecosystems.--We believe that the world is a better place with more creators in it, and we’re excited to see the inspiring work being done to realize a sustainable, inclusive, and equitable world for all. Want to hear more inspiring creator stories? Sign up for Unity’s Social Impact newsletter for regular news and updates about our Social Impact work.]]></description><link>https://unity.com/blog/news/world-oceans-day-rt3d-projects-make-waves-and-encourage-conservation</link><guid isPermaLink="true">https://unity.com/blog/news/world-oceans-day-rt3d-projects-make-waves-and-encourage-conservation</guid><pubDate>Wed, 08 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Profiling in Unity 2021 LTS: What, when, and how]]></title><description><![CDATA[Developing expertise with Unity’s suite of profiling tools is one of the most useful skills you can add to your game development toolbox. Thorough profiling can massively boost the performance of your game, so we want to help you get started with key tips from our newly released e-book, Ultimate guide to profiling Unity games.Every game creator knows that smooth performance is essential to creating immersive gaming experiences – and to achieve that, you need to profile your game. Not only do you need to know what tools to use, and how, but when to use them.Our hot-off-the-press, 70+ page guide to advanced profiling was created together with both internal and external experts. It compiles advice and knowledge on how to profile an application in Unity and identify performance bottlenecks, among other best practices.Let’s look at some helpful tips from the e-book.Profiling is like detective work, unraveling the mysteries of why performance in your application is lagging, or why code is allocating excess memory.Profiling tools ultimately help you understand what’s going on “under the hood” of your Unity project. But don’t wait for significant performance problems to start showing before digging into your detective toolbox.The best gains from profiling are made when you plan early on in your project’s development lifecycle, rather than just before you are about to ship your game. It’s an ongoing, proactive, and iterative process. By profiling early and often, you and your team can understand and establish a “performance signature” for the project. If performance takes a nosedive, for instance, you’ll be able to easily spot when things go wrong, and quickly remedy the issue.You can also make before-and-after performance comparisons in smaller chunks by using a simple three-point procedure: First, establish a baseline by profiling before you make major changes. Next, profile during the development to track performance and budgeting, and finally, profile after the changes have been implemented to verify whether they had the desired effect.You should aim to profile a development build of your game, rather than profiling it from within the Unity Editor. There are two reasons for this:The data on performance and memory usage from standalone development builds is much more accurate compared to results from profiling a game in-Editor. This is due to the Profiler window recording data from the Editor itself, which can skew the results.Some performance problems will only appear when the game is running on its target hardware or operating systems, which you’ll miss if you profile exclusively in-Editor.The most accurate profiling results occur by running and profiling builds on target devices and using platform-specific tooling to dig into the hardware characteristics of each targeted platform.While Unity ships with a range of free and powerful profiling tools for analyzing and optimizing your code, both in-Editor and on hardware, there are also several great native profiling tools designed for each platform, such as those available from Arm, Apple, Sony, and Microsoft. Using a combination provides a more holistic view of application performance across all target devices.For a full overview of the tools available, check out the profiling tools page here.Unity’s profiling tools are available in the Editor and Package Manager. Each tool specializes in profiling various parts of the process (a holistic “sum of all parts” workflow). Familiarize yourself with the following profilers so they become a part of your day-to-day toolbox:The Unity Profiler is where you want to start and spend most of your time. It measures the performance of the Unity Editor, your application in Play mode, and connects to the device running your application in Development mode. The Unity Profiler gathers and displays data on the performance of your application, such as how much CPU time is being used for different tasks, from audio and physics to rendering and animation. Check out this course on profiling to begin.The Memory Profiler provides an in-depth analysis of memory performance to identify where you can reduce memory usage in parts of your project and the Editor. The Memory Profiler is currently in preview but is expected to be verified in Unity 2022 LTS.The Profile Analyzer aggregates and visualizes both frame and marker data from a set of Unity Profiler frames to help you examine their behavior over many frames (complementing the single-frame analysis already available in the Unity Profiler). It also allows you to compare two profiling datasets to determine how your changes impact the application’s performance.The Frame Debugger lets you freeze playback for a running game on a particular frame, and then view the individual draw calls used to render that frame. In addition to listing the draw calls, the Debugger lets you step through them one at a time, so you can see how the scene is constructed from its graphical elements.The Profiling Core package provides APIs for adding contextual information to Unity Profiler captures.Steve McGreal, a senior Unity engineer and the co-author of our advanced profiling e-book, put together the following high-level overview. Please feel free to use it as a reference sheet.While the detailed explanation on how to use the tools can be found in the e-book, this flowchart illustrates three main observations to consider for your workflow:Download the printable PDF version of this chart here. For more, see the linked resources on how to use each of the profiling tools at the end of this post.A common way that gamers measure performance is through the frame rate, or frames per second. However, it’s recommended that you use frame time in milliseconds instead.For example, you might have a game that renders 59 frames in 0.75 seconds at runtime, with the next frame taking 0.25 seconds to render. The average delivered frame rate of 60 fps sounds good, but in reality, players will notice a stutter effect since the last frame takes a quarter of a second to render.Strive for a specific time budget per frame when profiling and optimizing your game, as this is crucial for creating a smooth and consistent player experience. Each frame will have a time budget based on your target fps. An application targeting 30 fps should always take less than 33.33 ms per frame (1000 ms / 30 fps). Similarly, a target of 60 fps leaves 16.66 ms per frame.Most modern console and PC games aim to achieve a frame rate of 60 fps or more. In VR games, a regularly high frame rate is actually more important to avoid as it can cause nausea or discomfort to players. Mobile games might also require restrictive frame budgets to avoid overheating the devices they run on. For instance, a mobile game might target 30 fps with a frame budget of only 21–22 ms so that the CPU and GPU cool down between frames.Use the Unity Profiler to see if you are within frame budget. Below is an image of a profiling capture from a Unity mobile game with ongoing profiling and optimization. The game targets 60 fps on high-spec mobile phones, and 30 fps on medium/low-spec phones, such as the one in this capture:This is a game running comfortably within the ~22 ms frame budget required for 30 fps without overheating. Note the WaitForTargetfps padding the main thread time, up until VSync and the gray idle times in the render thread and worker thread. Additionally, observe the VBlank interval by looking at the end times of Gfx. Present frame over frame draws up a timescale in the Timeline area or on the Time ruler up top to measure from one of these to the next.If you’re within the frame budget, including any adjustments made to the budget to account for battery usage and thermal throttling, then you’ve successfully finished performance profiling until next time – congratulations! Now look at memory usage to see if it’s within budget as well.That being said, if your game is not within frame budget, the next step is to detect the bottleneck. In other words, find out whether the CPU or GPU is taking the longest. If it’s the CPU, determine which thread is the busiest – therein lies the bottleneck.The point of profiling is to identify bottlenecks as targets for optimization. If you rely on guesswork, you can end up optimizing parts of the game that aren’t bottlenecks, resulting in little or no improvement. Some “optimizations” can even worsen your game’s overall performance.The main thread is where all of the game logic and scripts perform their work by default; where features and systems such as physics, animation, UI, and rendering take place.See the screenshot below for an example of what a project that is main thread-bound looks like:Although the render and worker threads look like the previous example that’s within frame budget, the main thread here is clearly busy with work during the entire frame. Even if you account for the small amount of Profiler overhead at the end of the frame, the main thread is busy for over 45 ms, meaning that this project achieves frame rates of less than 22 fps. There is no marker that shows the main thread idly waiting for VSync; it’s busy for the whole frame.The next stage of investigation is to identify the parts of the frame that take the longest time, and pinpoint any underlying causes. Use both the Unity Profiler and Profile Analyzer to evaluate and address the biggest costs. Common bottlenecks often derive from physics, non-optimized scripts, Garbage Collector (GC), animation, cameras, and UI. If the source of the issue is not immediately obvious, try enabling Deep Profiling, Call Stacks, or using a native CPU profiler.In our 95-page performance optimization guide, we collected a list of common pitfalls you can encounter and prepare for.During the rendering process, the main thread examines the scene and performs Camera culling, depth sorting, and draw call batching, to compile a list of things to render. This list is passed to the render thread, which translates it from Unity’s internal platform-agnostic representation to the graphics API calls required to instruct the GPU on a particular platform.In the Profiler capture shown below, you can see that the main thread waits for the render thread before it begins to render on the current frame, as indicated by the Gfx.WaitForPresentOnGfxThreadmarker.The render thread still submits draw call commands from the previous frame, but isn’t ready to accept new draw calls from the main thread. The render thread spends time in Camera.Render.The Rendering Profiler module shares an overview of the number of draw call batches and SetPass calls for every frame. The best tool for investigating which draw call batches your render thread issues to the GPU is the Frame Debugger. Common causes of render thread bottlenecks include poor draw call batching, having multiple active cameras in the scene, and inefficient Camera culling.Being bound by CPU threads, besides the main or render threads, is not that common of an issue but it can arise in projects that use the Data-Oriented Technology Stack (DOTS) – especially if work is moved off the main thread into worker threads using the C# Job System.Here’s a capture from Play mode in-Editor that highlights a DOTS project running a particle fluid simulation on the CPU:As you can see, the worker threads are packed tightly with jobs. This suggests a large amount of work being moved off of the main thread. Note that the frame time of 48.14 ms and the gray WaitForJobGroupID marker of 35.57 ms on the main thread indicate that the worker threads are doing more work than can be realistically achieved within a single frame on this CPU.WaitForJobGroupID shows that the main thread has scheduled jobs to run asynchronously on worker threads, but it needs the results of those jobs before the worker threads have finished running them. The blue Profiler markers beneath WaitForJobGroupID depict the main thread running jobs while it waits, in an attempt to make the jobs finish sooner.The jobs in your project might not be as parallelized as in this example. Perhaps you just have one long job running in a single worker thread. This is fine, so long as the time between the job being scheduled and the time that it needs to be completed is long enough for the job to run. If it isn’t, you will see the main thread stall, waiting for the job to be complete, as in the above screenshot.You can use the Flow Events feature in the Timeline view of the CPU Usage Profiler module to see when jobs are scheduled and when their results are expected by the main thread. For more information on writing efficient DOTS code, see our DOTS best practices.You might notice that your main thread spends time waiting for the render thread (as exhibited by Profiler markers such as Gfx.WaitForPresentOnGfxThread). But at the same time, your render thread might display markers such as Gfx.PresentFrame or <GraphicsAPIName>.WaitForLastPresent. This means that your application is GPU-bound. You will therefore need to focus your optimization efforts on GPU bottlenecks to improve overall performance.The following capture was taken on a Samsung Galaxy S7 using the Vulkan graphics API. Although some of the time spent in Gfx.PresentFrame in this example might be related to waiting for VSync, the extreme length of this Profiler marker proves that the majority of time is spent waiting for the GPU to finish rendering the previous frame.If your application appears to be GPU-bound, you can use the Frame Debugger to gain a quick understanding of the draw call batches being sent to the GPU. However, this tool can’t present any specific GPU timing information. It only reveals how the scene is constructed.To carefully investigate the cause of GPU bottlenecks, examine a GPU capture from a suitable GPU Profiler. The tool that you use depends on the target hardware and chosen graphics API.Common causes of poor GPU performance include inefficient shaders, expensive post-processing effects, transparent overdraw (often from particle effects or UI), large or uncompressed textures, meshes with excessively high polygon counts, and excessive output resolutions (i.e., rendering at 4K).Performance optimization and profiling are massive topics. If you’re looking for more information, check out our recently released e-book, Ultimate guide to profiling Unity games. You’ll get more than 80 pages of tips and tricks created in partnership with multiple experts, including those on our Integrated Support services team.In fact, some of these experts also helped put together our 100-page guide on performance optimization for mobile and PC/console – packed with actionable tips on how to avoid creating bottlenecks in the first place. For additional resources, take a look at our previous blog post series on physics, UI, and audio settings, graphics and assets on mobile or console, and memory and code architecture.If you’re interested in learning how your team can gain direct access to engineers, expert advice, and project guidance, peruse Unity’s Success Plans here.Tune in to our new Ultimate profiling tips webinar featuring experts from SYBO Games, Arm, and Unity for tips on how to identify common performance challenges in mobile games, using both Unity and native profiling tools.This webinar will cover:Key considerations for creating lean, performant code and optimized memory usage for smooth performance across low- and high-end devicesManaging thermal control to conserve precious battery cycles on mobile devicesProfiling strategies at all stages of game development and how to test them to build a solid methodologyExpert insights on Android profilingJoin our roundtable and live Q&A on June 14, 2022 at 11:00 am ET / 8:00 am PT.We want to help you make the most of your Unity applications. If there’s any optimization topic that you’d like us to further explore, please let us know in the forums. We’d also like to hear about the formats that you prefer so we can improve our e-books and other learning materials.]]></description><link>https://unity.com/blog/engine-platform/profiling-in-unity-2021-lts-what-when-and-how</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/profiling-in-unity-2021-lts-what-when-and-how</guid><pubDate>Wed, 01 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[P2E vs. P&E: Models for using blockchain technology in gaming]]></title><description><![CDATA[Games that use blockchain technology are rapidly gaining popularity, and now’s the time to get acquainted with what this technology is and how to start building your own games using the blockchain. In the first part of this series, we gave a high-level introduction of blockchain technology and its key benefits for improving retention and opening up new opportunities for monetization.Here in the second part, Gal Fisheloviz, Director of Business Strategy, Blockchain Gaming at ironSource, and Etai Koren, Director of Blockchain Games at ironSource, dive deeper into use cases for the technology in gaming by discussing the two main frameworks currently in play. These are:Play to earn (P2E)Play and earn (P&E)Keep reading to learn more about these models and where the future of blockchain gaming lies. Let’s start by talking about play to earn.Play to earnP2E blockchain games are pretty much like they sound - users play them to earn currency. For example, players complete challenges like quests or battles to earn tokens they can add to their crypto wallets or spend in the game.This is one of the earliest models of blockchain gaming, and continues to be popular today but has changed over time. Early P2E games let users start playing with minimal investment - back then, users had to purchase an NFT from a limited collection, which meant they already had to have a certain level of understanding and competency with cryptocurrency. But often, these players purchased one or more NFTs from the limited amount available for the sole purpose of making a profit instead of for the enjoyment of the game itself. As more users joined these games and the NFTs and tokens they earned grew in value as they became more scarce, the rewards became more lucrative and the cost of playing became higher. This priced out many average users who couldn’t afford to play and led to the creation of guilds. Guilds are groups of players or investors that buy high-value NFTs then rent them out to users so they can play the games and earn tokens. Users pay the guilds back with their tokens in what essentially functions as a revenue-share. Though they’re now highly influential within the game economy, guilds function outside of these ecosystems - meaning the resources they earn usually don’t get spent back within the game.With the value of assets increasing exponentially, play-to-earn games started launching quickly with little entertainment value and with the sole purpose of attracting high-value investors and guilds. These users created an exchange ecosystem where players would rent NFTs, earn tokens, then sell some of these tokens back in hopes of continuing to earn more profit. This pattern led to higher user churn - players were only chasing a profit so left a game for one with a better earning opportunity. In these cases there was more value leaving a game than entering it - resources weren’t redistributed in the game because users earned their rewards then sold them off to players for a profit, often outside of the game instead of using their rewards to buy in-game assets, like upgrades.Given the imbalance of resources entering and leaving the game - and users failing to retain for a long time, it becomes very challenging to build a sustainable economy under the play to earn model. To have a healthy game ecosystem, a blockchain gaming model needs new users to constantly enter and invest their resources back into the game. This maintains the value and profitability of the assets in the game, which makes them appealing for users.P&E or play and earn games came into the space to solve the concerns of user churn and an unsustainable game ecosystem.Play and earnThe P&E model evolved from the P2E framework and puts the focus back on providing real entertainment value to create a sustainable, open game economy. Like P2E games, users of play and earn games can win NFTs and tokens that get added directly to their crypto wallets. But, unlike their predecessor, many P&E games are free to play - players can then earn rewards by either being highly skilled or purchasing assets, like NFTs and tokens.Play and earn games aim to build value with their gameplay. Providing a high entertainment value encourages players to keep playing, and to do so, they’ll want to get rewards they can spend in the game to improve their gameplay experience.For example, in a P&E game, players can earn tokens to buy a character NFT that unlocks special powers. While the NFT can still be used on a secondary market or sold outside the game, it’s more likely to be spent for in-game bonuses or upgrades to make it more enjoyable and rewarding to play the game. As rewards get spent back in the game instead of exchanged for profit outside of the game, the game economy runs more smoothly and sustainably than the P2E model.A functioning game economy is based on the flow of assets - you need to offer rewards at a rate that’s balanced with spend so prices remain accessible to users. And, players need to earn enough rewards to remain engaged and maintain demand levels. Basically, the inflow and outflow of assets need to be balanced. This is more likely to be the case with P&E than with P2E.
The future is play and earnThe direction of play to earn games is heading towards an unsustainable ecosystem - and future. Prices continue to keep many users from playing, and as a result more guilds and investors are staking their claim. A market for play to earn blockchain games will likely remain - many developers are trying to solve the challenge of the game economy and make it more sustainable. However, unless they start prioritizing entertainment and focus on giving users a truly enjoyable gameplay experience, P2E is likely to remain niche.As many agree, the fundamental purpose of games - including those on the blockchain - is to be fun and engaging, which is why play and earn games are likely to become the next dominant model of games using blockchain technology. They provide entertainment value along with the benefits of ownership from being on the blockchain, which drives demand higher to spend assets within the game. This creates a virtuous ecosystem that lets players earn rewards they fully own while encouraging in-game spending to improve their gameplay experience.When executed correctly, these well-oiled game economies of the P&E framework can create more doors of opportunity for game design, monetization, and marketing. Whichever model you choose, using blockchain technology for gaming now sets you up better to improve both user engagement and your monetization strategy as this technology likely gains more popularity.]]></description><link>https://unity.com/blog/p2e-vs-pe-models-for-using-blockchain-technology-in-gaming</link><guid isPermaLink="true">https://unity.com/blog/p2e-vs-pe-models-for-using-blockchain-technology-in-gaming</guid><pubDate>Wed, 01 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Metaverse Minute: AWE Auggie Awards finalists using Unity to build the metaverse]]></title><description><![CDATA[Each year we keep our eyes peeled to see who will make the AWE’s prestigious Auggie Awards list of finalists, and 2022 boasts a variety of Unity applications that are helping build the metaverse. These products and solutions, nominated by the AR/VR industry, were voted on by the public and will be judged by a panel of experts. The winners will be announced at AWE USA 2022 on June 2.Before we dive into this exciting list we want to acknowledge that we may have missed some Auggie finalists that used Unity. If you are one of these, please let us know (just read to the end to find out how). Now onto the finalists!Big Rock Creative caught our attention last year with their Auggie nomination for BRCvr, an official virtual Burning Man experience. This year Big Rock Creative captured our attention with the Breonna’s Garden Immersive Experience, a touching virtual reality (VR) tribute to Breonna Taylor in collaboration with Lady Phoenix who won the Societal Impact Auggie last year for her augmented reality (AR) app. The sanctuary honors the life of Breonna Taylor and tells a story of grief, hope and healing. Additionally, we were blown away by Big Rock’s Burning Man (VR Experience) back for a second year. With 200 unique worlds and over 3500 hours of programming, this experience was driven by a desire to connect the Burner Community amid the pandemic.We are thrilled to have not just one but two projects nominated this year for an Auggie Award. Big Rock Creative brings creators together from many different facets to collaborate on all our projects. It's not just one person, but a grand communal effort to make participatory experiences that are radically inclusive.



– Athena Demos, CEO and Cofounder, Big Rock Creative



The Groove Jones team uses Unity to create a diverse set of experiences. Nominated for Best Consumer App, the NAEC’s Nose Art Gallery App allows visitors of the National Aviation Education Center to fly through the air with WWII planes and witness aircraft nose art up close. Nominated for Best Healthcare & Wellness Solution, VIST Neuro-ID uses a VR headset to test cognitive abilities and detect concussions. Designed for wildly different purposes, Groove Jones clearly has the ingenuity to serve many audiences.Groove Jones leverages the power of real-time render 3D to help our clients bring to life exciting programs for internal training purposes, interactive marketing engagements to connect with their customers, and innovate solutions for health and wellness. Unity Pro is a platform that allows us to break through barriers and develop across any screen imaginable.



– Dan Ferguson, Cofounder, Groove Jones



The Magnopus team truly united the digital and physical worlds earlier this year with its Expo Dubai Xplorer. This real-time connected experience allowed millions of onsite visitors to enjoy augmented reality spectacles aligned to real-world locations and allowed remote visitors to access the same AR content from their home.Expo Dubai Xplorer is a a great example of what the future holds for new and better ways people and places can be united across the physical and digital worlds. This project was a massive chance for us to flex our creative and tech muscles and learn loads along the way. We're now using that knowledge to help others create similar large-scale experiences, without having to develop the technology to drive it.



– Daisy Leak, Executive Producer, Magnopus



With Volu, you can record a video with your own device, and then the app’s AI algorithms perform a volumetric reconstruction, transforming your video into a 3D experience – all powered by Unity’s library and enhanced by Unity’s shaders. The team has plans to build plug-ins that will allow anyone to integrate “volograms” captured with Volu into Unity to create games, AR/VR experiences, and more.We are very happy to see our amazing AI tech recognised with an Auggie nomination. We have made a great effort to bring volumetric video capture to the smartphone, which will power user-generated content in the Metaverse.



– Rafael Pagés, CEO, VologramsUsing 2D static images to explain how the human body’s myriad complex systems work together is like painting a sunset to describe the solar system. With Unity, Octagon Studios created an interactive AR app that helps you understand the details of human anatomy through exploration. Humanoid AR+ has immense educational potential.Humanoid AR+ offers children and young adults an immersive exploration of the human anatomy, in detail and up close. Utilizing high-quality 3D visualization and powerful developer tools such as Unity, we thrive to provide the best interactive educational apps, as we believe that augmented reality (AR) is the future of learning experiences.



– Chitra Ananda, CMO, Octagon Studio



Imagine being able to speak things into existence. That’s the idea behind Anything World. With AI, voice computing, and 3D rendering, this tool is a fast and easy way for anyone to create 3D experiences. This type of genius deserves recognition, not just for the product but for the impact it’s making on creators around the world. After all, the world is a better place with more creators in it.“We bring 3D worlds to life using machine learning and have over 5,000 creators building out wild experiences with us in Unity right now! We allow people to create living worlds without modeling, rigging or animating anything. We have an incredible team that has made the really-actually-should-be-impossible possible, and we're just getting started. Why not jump in and try and make things fly at anything.world!”



– Gordon Midwood, Cofounder, Anything World



There is a massive opportunity for industrial applications of VR, and the Immerse team is making these experiences easy to create with their SDK. This Unity-based free-to-use extended reality (XR) tool gives anyone the ability to create enterprise-grade VR. The tool also supports desktop and untethered VR, Android mobile, desktop applications and webGL.Built for Unity, the Immerse SDK helps developers get up and running quickly while simplifying and solving the common technical and production challenges of building, hosting and distributing measurable and scalable VR applications. Together with the Immerse Platform, the SDK helps organizations realize the full potential of virtual reality and provides a means through which enterprises can easily scale their own applications and content. For content creators, it also has the added benefits of an upsell path for existing customers and referral opportunities.



– Justin Parry, COO, Immerse



The sequel to the smash hit I Expect You To Die is just as fun as the original. I Expect You To Die 2: The Spy and the Liar built on what made the first game so fun – with new puzzles, missions, and, of course, more ways to die. Schell Games is noteworthy as one of the studios that is pushing VR games forward.We are honored I Expect You To Die 2: The Spy and the Liar advanced to the finalist round in the “Best Game or Toy” category for the 2022 Auggie Awards! Shoutout to the development team who worked on the original game and the sequel. Thanks to your hard work, we created a VR experience that places players in the heart of intrigue and espionage. We'd also like to thank everyone who voted for our entry during the public voting phase and all the secret agents who supported The Agency over the years. We couldn’t have gotten this far without your enthusiasm and love for the game. Stay sharp, agents!



– Charlie Amis, Project Director for IEYTD2, Schell Games



What the Blaston team achieved with Passthrough API is the perfect example of what is possible when mixing the physical and virtual worlds. With the API, players were able to transform their personal spaces into dueling arenas. As XR technology continues to advance, more game experiences will enrich the physical world with digital content.The mixed reality arena we’ve added to Blaston is just the beginning. At Resolution Games, we’ve invested in a dedicated AR division to continue building reality-bending experiences for the next generation of AR devices.



Unity has been a crucial part of our VR and AR toolkit; its flexibility gives us the room we need to innovate and be first-to-market with a variety of exciting new products in the games space – and Blaston is a true showcase for that. Not only did it accelerate our ability to become the first game developer to bring an experience to the Quest Store using Passthrough API, but its multiplatform support also helped us solve another problem for the XR community: giving influencers and esports organizers the ability to stream VR gameplay in an way that’s optimized for broadcast with the recent release of the Blaston Spectator app on PC.



– Paul Brady, President and Cofounder, Resolution GamesNot one, not two, but all of the experiments housed in the Petricore AR Experiments app were created using Unity’s AR Foundation. This whimsical collection of activities includes taking a family photo, petting a virtual dog, mixing paint colors from the real world, and more. This eclectic app is a celebration of AR.The AR Paint Bucket game is one of our experiments where a player places an AR paint bucket and has to grab colors from the real world to mix and match a given target color. Our inspiration for this was the TikTok trend of people trying to guess the color of mixing paint. We used Unity to develop the Paint Bucket game, relying primarily on AR Foundation. AR Foundation/Unity made it really easy to jump in and build something that’s fun quickly, which was our goal with these experiments.



– Oliver Awat, Lead Designer & Senior Developer, PetricoreFitness doesn’t have to be boring. With Audio Trip, players are invited to dance across 84 different levels and unleash their inner fitness fanatic. The visual and audio experience is so much fun, you forget that you are burning calories. Besides, we have a soft spot for indies.Being a finalist for the “Best Indie Creator(s)” Auggie award is a tremendous honor for us at Kinemotik Studios. Audio Trip has been a labor of love for the two of us for the past four years. And in that time we’ve had the privilege of bringing the joys of music and dance to the world through VR on a wide array of platforms. For a tiny team of two, only one of whom is an engineer, porting to and supporting so many platforms ourselves while still developing the game would have been impossible without Unity. By doing most of the heavy lifting, Unity has made it possible for us to bring Audio Trip to a much wider audience. We’ve been able to accomplish much more than a team of only two normally would have.



– The Audio Trip Team



If you’re an Auggie Award finalist using Unity, give us a shoutout on Twitter so we can celebrate you! Tag @DigitalTwin with a brief description and the link to your finalist page.All of this year’s Auggie Award finalists, made with Unity or not, astound us and inspire us. Our world faces so many problems today, and we need creators to help solve them. Keep creating, and we will see you at AWE.—June 19:35 AM | Keynote: Getting beyond the fiction and seeing the reality in the metaverse11:30 AM | Faster iteration in AR using UnityJune 21:00 PM | Revolutionizing the e-commerce shopping experience in real-time 3D4:25 PM | Real-time 3D changemakers: Solving the world’s biggest problems through techJune 31:30 PM | Augmenting reality with AI 2:05 PM | XR input using Unity: What’s new and what’s next]]></description><link>https://unity.com/blog/industry/the-metaverse-minute-auggie-awards-edition</link><guid isPermaLink="true">https://unity.com/blog/industry/the-metaverse-minute-auggie-awards-edition</guid><pubDate>Thu, 26 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 myths about cross promotion]]></title><description><![CDATA[In the webinar “How to Scale Your App Portfolio with Cross Promotion,” ironSource Growth Strategy Manager, Omer Katzburg, walks you through cross promotion and debunked misconceptions about its use.First, Omer explains the gist of cross promotion - it’s a form of user acquisition where you can promote your games to users already playing your other games. It’s a hit with top developers - since you already have user data, this means not only greater targeting capabilities but also greater knowledge of the audience, which can also help ease a game launch. Also, utilizing users in multiple games ensures that you can save high quality users in your portfolioNext, Omer broke down four of the main misconceptions about cross promotion. Let’s dive in:Misconception #1: Cross promotion is only for hyper-casual gamesCross promotion has a big impact - it contributes to 20-50% of leading developers’ user acquisition activity. According to Omer, this is not only true for hyper-casual developers, but also casual developers, and professionals producing games of many different genres.Finding success in cross promotion is not related to the game genre, but rather the size of the developer’s portfolio. A developer with at least 2 games in their portfolio is good to go - but the more games you have, the more significant the cross promotion activity. The cross promotion tool is a win-win - by keeping your users in your portfolio, you’re making the most out of quality users and also preventing them from potentially leaving to competing games.Misconception #2: High value players will lose their value in different genresToday, Omer explains, there’s no reason to put users into boxes - many gamers are playing different genres simultaneously. Even if you have a diverse portfolio of different types of games, cross promotion can be a huge help. It’s true - not every game genre combination might work together well, so utilizing and understanding your first-party data is crucial to figure out which games pair best.If you don’t necessarily have this data yet, trial and error is key. Utilize your regular user acquisition data - if you have a puzzle game, and you’re getting high quality users from a lucky reward game, you can assume that cross promotion is a good fit. For example, the ironSource data below displays additional game genres that lucky reward players installed (alongside playing lucky reward games).Developers can dig deeper to understand user trends by mapping it out - in this case, laying out the correlation between game categories based on IPM or any important KPI. Let’s say you want to know where to advertise your casual game - you can see that mid core games advertised in casino games have very high IPMs. Mid core games advertised in sports games don’t have the same success, so you can tailor your advertising accordingly. You can also assess the mapped data for ARPU or any other KPI that is relevant to determine your best cross promotion strategy. Note: The mapping presented here is high-level mapping - make sure to go more granular and to create and test this mapping specifically for every game you have.Misconception #3: Cross promotion will cannibalize my revenueCannibalization is an important concern, but in the context of cross promotion, you can lower this risk. The key to limiting cannibalization is simple: find the balance between user churn from the publishing game and user engagement with the advertised game. Note: if you’re a hyper casual publisher, it’s even less of a concern - hyper casual gamers are exposed to many competitor ads and usually have low retention rates anyway.According to Omer, the more similar the published and advertised games are, the higher chance of cannibalization. This is because users won’t usually play two similar games at the same time - if a user installs a new similar game, the probability that he will churn from the former game is higher. Let’s say you’re advertising a mid-core RPG game in a published mid-core RPG game, you’re increasing the risk of cannibalization. On the other hand, if you advertise a slots game in this mid-core RPG game, scaling up would be a challenge because the genres have low IPM correlation.Reducing cannibalization is not only about the type of game, but also the users themselves. You can use your first-party data to find the right user segments for cross promotion - then combine this segment with your genre mapping (or any other method). This strategic combination should lead to a solid understanding of how to maximize your cross promotion strategy. Even if you need to keep testing for a while to find the sweet spot, the potential for scaling up is always there.Misconception #4: I should only cross promote low quality segmentsFinally, it’s essential to recognize exactly which user segments are best for cross promotion. If you only cross promote your low value (generally non-paying) segments, they’re less likely to budge and actually start paying. It’s not so easy to convince someone who never pays for games to start paying. As Omer quotes: “once a non-payer, usually a non-payer.”So the solution is to find the highest payers, right? Not quite. Engaged and paying users tend to act the same no matter the game genre. But still, it’s best not to cross promote all of your highest paying segments. For example, big spenders are likely to be very loyal to the game, but if they move to another game, their loyalty toward this new game might not be replicated. To maximize your impact using cross promotion, it's essential to use your first-party data and find segments somewhere in the middle: open to paying, but not so loyal that you’re losing a great customer.We can see how the common myths about cross promotion shouldn’t hinder you from trying it out. Demystifying concerns about cross promotion allows us to utilize its many benefits, strategically using first-party user data and carefully crafted research to make the most informed and profitable decisions to increase your user acquisition. To learn more, watch the full webinar below.]]></description><link>https://unity.com/blog/4-myths-about-cross-promotion</link><guid isPermaLink="true">https://unity.com/blog/4-myths-about-cross-promotion</guid><pubDate>Thu, 19 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity and .NET, what’s next?]]></title><description><![CDATA[We’ve recently started a multiyear initiative to help you write more performant code faster and deliver long-term stability and compatibility. Read on to find out what we’re doing to update the foundational tech stack behind your scripts.The .NET ecosystem is dynamically evolving in a number of beneficial ways, and we want to bring those improvements to you as soon as we can. Our internal .NET Tech Group works on continuous improvement of our .NET integration, including newer C# features and .NET Standard 2.1. But we’ve recently kicked things into a higher gear to improve your developer experience across the board, based on your feedback.This blog post introduces the issues we’re working on. We’ve also discussed this topic at the Unity Dev Summit at GDC 2022. You can watch the full session here.The story starts 17 years ago, when our CTO started leveraging the Mono .NET runtime with C#. Unity favored C# due to its simplicity, combined with a JIT (just-in-time) compiler that translates your C# into relatively efficient native code. The remaining and much larger parts of the Unity engine have been developed using C++ in order to provide well-balanced and controlled performance.For many years, Unity had been running with a specific fork of the Mono .NET runtime and C# language (2.0). During that time, we’ve added support for additional platforms. We’ve also developed our own compiler and runtime, IL2CPP, to enable you to target iOS and some console platforms.In the meantime, the overall Microsoft .NET ecosystem has evolved, with new licensing and support for non-Windows platforms. This evolution has allowed us to upgrade the Unity .NET Mono Runtime in 2018 and embrace more modern C# language versions (7.0+). The same year, we also released the first version of the Burst compiler, pioneering fast native code generated for a subset of the C# language. This breakthrough allowed Unity to envision a world where we could extend the usage of C# in the other critical segments of the engine without having to develop these parts in C++, leading to the development of the DOTS runtime.Unity 2020 LTS and Unity 2021 LTS brought newer C# language versions and new .NET APIs. In parallel, we have seen tremendous performance improvements be delivered in the .NET ecosystem, as well as a more friendly development environment with the introduction of SDK style csproj and the flourishing NuGet ecosystem.As a result of this long evolution, the Unity platform includes a very large C++ codebase that interacts directly with .NET objects using specific assumptions inherited from the Mono .NET Runtime. These are no longer valid or efficient for the .NET (Core) Runtime.Furthermore, there’s a complicated custom compilation pipeline bound to the Unity Editor that doesn't rely on MSBuild and thus cannot easily benefit from all standard features.We’ve also been talking to many of you over the past few years, both in interviews and on the Unity forum, to see what we could improve to better enable your success. What we’ve heard is that you want to use the latest C# language, the .NET runtime technology, and third-party C# code from NuGet. When it comes to using the Unity platform, you told us you wanted to get the maximum out of the target hardware with high-quality C# testing, debugging and profiling tools, and good integration between standard .NET API and the Unity API. As a C# Unity programmer, you want Unity tools that seamlessly work with the rest of your toolbox and enable rapid iteration so that you can achieve best-in-class runtime performance.Getting there is going to take us several years. We’ll keep you in the loop with frequent blog and forum updates on the technical challenges that we encounter along the way.Our first step on this initiative was to huddle with all the internal people passionate about C# and .NET in Unity to form a C#/.NET Tech Group to drive this effort.We want to build on top of the .NET ecosystem instead of developing custom solutions. To enable you to take advantage of the performance and productivity improvements that come with the latest .NET SDK/Runtime and MSBuild, we want to migrate from the Mono .NET Runtime to CoreCLR, the modern .NET (Core) Runtime.This initiative is also bringing you innovation beyond the existing .NET universe, with the goals of delivering faster .NET iteration cycles on your C# scripts. We’ll be working on converging the JIT and AOT (ahead-of-time) solutions – IL2CPP and Burst – to offer the best balance between compile time efficiency and CodeGen quality.Externally, we’re working with partners in the industry like Microsoft and JetBrains to ensure that Unity creators are using the latest .NET technology. We’re also ramping up our participation in open-source communities. We’re going to break down this endeavor into several steps. Let’s see what’s coming next.This year, the teams are planning to work on the following tracks.Iteration time remains our top priority since we know that you want to get more out of your time. Here are a few examples of what we’re doing to improve this.As part of the compilation pipeline, we’re improving the time spent by the IL Post Processing which is responsible to modify the compiled .NET assemblies after your C# has been compiled. We are now using a persistent process to run the IL Post Processing after the compilation phase, and this can shave off a few hundred milliseconds.With the Burst compiler being used more frequently, we’re improving the granularity of detecting code changes with a transitive hashing algorithm. This lets us identify which Burstable code we need to compile more quickly. We’re working on moving the Burst compiler out of process so that it can compile your code faster thanks to running in a separate .NET 6.0 executable.We’re also making improvements to the domain reload by improving the reflection data built behind the scene whenever the TypeCache is used.We’re going to add tests and validation to better track iteration time regression for packages and Project templates.For the migration to MSBuild, the first step is to decouple our compilation pipeline from the Unity Editor and move it to a separate process. This is a complicated operation because there are years of legacy code with thousands of lines of C++ and C# code that we need to untangle in order to achieve this – while also staying backward compatible. You won’t see changes from your point of view, but it’s going to pave our path to MSBuild and simplify maintenance.We’re also going to improve the C# IDE debugging experience with Burst by introducing a mode that will automatically switch the debugger to managed debugging when a breakpoint is set on a codepath running with Burst. This means you won’t have to manually remove the [BurstCompile] attribute on codepath being debugged.The work involved in the migration to .NET CoreCLR runtime has already started, and it’s a very challenging journey. In order for us to successfully deliver this migration, we’d like to tackle the problem gradually and make sure that we can release pieces in a way that maintains stability of existing Unity projects.So, we’re planning to deliver this migration in multiple phases:First, we’ll provide support of .NET CoreCLR for standalone players on desktop platforms. You’ll be able to select this runtime in your player settings alongside the existing Mono and IL2CPP backend. This first phase should help us to migrate the core part of the Unity Engine (which is much smaller than the Editor part), and will hopefully solve a good chunk of the technical challenges involved for this migration. You will still access the .NET runtime through the .NET Standard 2.1 API, and we aim to release this new runtime during 2023.Secondly, we’ll be porting the Unity Editor to .NET CoreCLR and removing support for the .NET Mono runtime at the same time. This second phase will challenge how we are going to reload your scripts in the Editor without using AppDomains and complete the switch to .NET CoreCLR. It will also involve upgrading IL2CPP to support the base class libraries from the dotnet/runtime repository. You will finally have access to the full .NET 7.x or 8.0 API. We hope to release this new Editor during 2024..NET Standard 2.1 support in Unity 2021 LTS enables us to start modernizing the Unity runtime in a number of ways. We are currently working on two improvements.Improving the async/await programming model. Async/await is a fundamental programming approach to writing gameplay code that must wait for an asynchronous operation to complete without blocking the engine mainloop.In 2011, before async/await was mainstream in .NET, Unity introduced asynchronous operations with iterator-based coroutines, but this approach is incompatible with async/await and can be less efficient. In the meantime, .NET Standard 2.1 has been improving the support of async/await in C# and .NET with the introduction of a more efficient handling of async/await operations via ValueTask, and by allowing your own task-like system via AsyncMethodBuilder.We can now leverage these improvements, so we’re working on enabling the usage of async/await with existing asynchronous operations in Unity (such as waiting for the next frame or waiting for a UnityWebRequest completion). As a first step, we’re improving the support for canceling pending asynchronous tasks when a MonoBehavior is being destroyed or when exiting Play mode by using cancellation tokens. We have also been working closely with our biggest community contributors, such as the author of UniTask, to ensure that they will be able to leverage these new functionalities.Reducing memory allocations and copies by leveraging Span<T>. Because Unity is a C++ engine with a C# Scripting layer, there’s a lot of data being exchanged between the two. This can be inefficient since it often requires either copying data back and forth or allocating new managed objects.Span<T> was introduced in C# 7.2 to improve such scenarios and is available by default in .NET Standard 2.1. In recent years, you might have heard or read about many significant performance improvements made to the .NET Runtime thanks to Span<T> (see improvements details in .NET Core 2.1, .NET Core 3.0, .NET 6, .NET 6). We want to leverage its usage in Unity since this will help to reduce allocations and, consequently, Garbage Collection pauses while improving the overall performance of many APIs.We hope that you’re all as excited as we are about these changes and features.Let us know what you think about our plans on the forum. We’re also going to be regularly updating the engineering section of the Unity Platform Roadmap, and you can share your feature requests and prioritization suggestions with us there.Editor's note: This article was last updated in February 2023.]]></description><link>https://unity.com/blog/engine-platform/unity-and-net-whats-next</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-and-net-whats-next</guid><pubDate>Wed, 18 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ambitious art: How Mistwalker fulfilled their magnificent vision for FANTASIAN]]></title><description><![CDATA[Mistwalker founder Hironobu Sakaguchi, the creator of the iconic Final Fantasy series, had an ambitious vision for his latest production FANTASIAN. By importing photos of over 150 miniature handcrafted dioramas and innovating photogrammetry techniques, his team set out to create stunning sets and character effects for mobile.We sat down with Sakaguchi and Takuto Nakamura, the director and main programmer of FANTASIAN, to peek behind the curtain at Mistwalker. In this blog, they share insight on how the team brought such a behemoth of an artistic vision to mobile. Check out our recent case study to delve even deeper into Mistwalker’s incredible achievement.FANTASIAN sounds like a true passion project. Where did the ideas for the story and visual style originate?Mr. Sakaguchi: It all started when I wanted to use dioramas to make stop-motion characters for the Terra Wars project. At that time, I also created the background using dioramas, and had the actual dioramas on hand. I was looking and imagining what it would be like if CG characters were adventuring, and playing RPGs on them.The story is a different expression of the cycle of life and the stars, which I have cherished since the days of Final Fantasy. I came up with a theme that overlaps with the contradictions of modern society, such as the fact that the most chaotic things are born out of the most orderly living things. I also focused on multiple worlds, and knowing that emotion equals energy, sought to fill the player’s heart with a warm feeling.Though often seen on film, the use of dioramas has not been as common in game creation. Seeing how well it worked for FANTASIAN, what did you learn by combining these approaches?Mr. Sakaguchi: Visuals are one of the most critical elements of a game. It’s not easy to innovate, and ever since the introduction of CG in Final Fantasy VII, I hadn’t been able to come up with a fresh idea. Then I was reminded of the handmade detail of dioramas, and I chose the novelty of this visual expression, even though it might not be so compatible with game creation.As a result, we feel that the effect was even better than expected. It made me realize, once again, that the idea of a new visual expression, no matter how big or small, is an essential one.What were some of the unexpected differences you encountered developing for mobile platforms compared to the previous games your team worked on?Nakamura: Many of our members have experience in both console and mobile, so we didn’t really have any difficulties with mobile devices. However, it was challenging to make controller and touch controls coexist, especially in the menu area. Some bugs occurred with the controller; this area was more costly than expected.From menus to exploration to combat, tell us about the design process for user interaction and user interface for mobile. How was it different from the approach you would have taken for a PC or console game?Nakamura: With FANTASIAN, we didn’t think of it as a mobile game. We designed the interface as if we were making a console game. We then made several minor adjustments to the design to accommodate screen resolutions for mobile devices.The most challenging part of the game in terms of user interaction was the combat. In combat, you have to curve your magic trajectory to aim at multiple enemies. We had to go through a lot of trial and error to find the best angle for the camera to aim at, adjust the trajectory of the curve so that it engulfs the enemies quickly, and achieve a pleasing player experience by defeating many different enemies.Were there any unexpected aspects of mobile gamedev that required a change to the creative vision for FANTASIAN?Nakamura: We never gave up on the game, mainly because it was mobile. The game’s characteristic diorama method was designed to work well with mobile processing power.Its backgrounds are essentially photographs, which means that the background model is a 10,000 to 30,000 polygon model used for depth and photo projection. There’s no lighting, so the cost of drawing the background was relatively low. This allowed us to spend more money on the characters and post-effects, which resulted in a stronger overall picture.Tell us about the Dimengeon system and how you worked on the design. At first glance, it seems to be a great innovation for random encounters. But after looking more closely, it appears specifically useful for mobile players, who wouldn’t typically be able to engage in long or complex battles.Nakamura: This was Sakaguchi’s idea. In FANTASIAN, if you touch a treasure chest in the distance where you can’t see the route, NavMesh will automatically take you there. We talked about how new and exciting this was, but the problem was that it became stressful when interrupted by encounters along the way. So we came up with the idea of a dimension system, where encounters are stored.This system was initially created for field exploration. Still, it led to the exhilaration of defeating many enemies at once by curving magic trajectories in battle. It also made the humble task of leveling up more efficient. I think it’s a very unique and innovative system.How did you ensure that the visual effects, lighting, and shadows would work with the data captured from the dioramas to maintain your artistic style?Nakamura: The most effective way to achieve harmony centers on the texture of the characters and the atmosphere.First of all, for the characters, we tried to create a figure-like texture that’s not entirely realistic. I adjusted this until the end to fit with the miniature, handmade feel of the diorama. The lighting was also handled with a stronger ambient to bring out this figure-like feel.We added a customized vignette post-effect to create a natural atmosphere. Vignetting is an effect that darkens the corners of the picture, but in FANTASIAN we used it to add color to the image’s corners, as if it were a fog. It’s easier to add color in 2D than in a fog that depends on the diorama’s depth.As FANTASIAN uses photographs, the depth of information is not perfect. That’s why we aren’t as good at depth-based post-effects like fog or depth of field (DOF).Do you have any tips to share with Unity developers looking to create their own JRPG-style games?Nakamura: JRPGs are simple in structure, but they tend to be significant in volume. We needed many assets, so the most important thing was to manage them effectively.For FANTASIAN, we set up rules for naming and folder structure and then used import scripts to automate the process to a certain extent. This helped us manage the assets.Debugging is also essential. The simplicity of the structure means that crash bugs are unlikely to occur, but bugs such as flagging errors that prevent the story from progressing are more likely. It’s a good idea to have debugging tools in place to detect and reproduce such bugs.Lastly, we would love to know if there are any fun facts or secrets behind the game to share with fans and other developers?Nakamura: Sakaguchi is quite flexible and open to individual ideas. Many of the storylines and characters have been changed based on the opinions of our team members. For example, we didn’t have a female character named Valrika at first, but the artist wanted to create a mature female character, so we added her in. He also agreed to make one character a triplet at the end of the game to make the battle more exciting, and even made Tan a cat lover. However, Sakaguchi was less open when it came to Ribbidon because he designed the character himself, and was very keen to keep his vision for the 3D model. Ribbidon, despite his appearance, can speak in a philosophical way. The artists and game designers had a lot of trouble with this, but it turned out great.Sakaguchi’s production style is to play first, then make requests and adjustments. In other words, we needed to implement and then have people play. This provided us with detailed recommendations on the user experience to improve the quality of the game.On the other hand, if the game wasn’t interesting enough, it would have needed to be redesigned and revised in a significant way. Ultimately, we chose to prioritize speed. The faster we could get the implementation done, the better we could determine what we needed to focus on for the project.At the same time, we didn’t make it too flexible. If you build to be flexible, you’re likely to end up with more recklessness and changes than you can handle. We always look for easier ways to achieve a similar experience.Thank you both so much for your time and behind-the-scenes insight. It’s been a pleasure chatting with you.Mr. Sakaguchi and Nakamura: Thank you very much.]]></description><link>https://unity.com/blog/games/ambitious-art-how-mistwalker-fulfilled-their-magnificent-vision-for-fantasian</link><guid isPermaLink="true">https://unity.com/blog/games/ambitious-art-how-mistwalker-fulfilled-their-magnificent-vision-for-fantasian</guid><pubDate>Mon, 16 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 myths about playable ads that are ending here and now]]></title><description><![CDATA[Playables are incredibly effective for driving higher engagement, boosting conversion rates, and giving unique insights to optimize your entire UA strategy. But many myths about their cost, complexity, and performance still exist. That’s what this article is all about. Here, John Wright, Head of Global Growth Partnerships at Luna, discusses 5 common myths about playable ads and uncovers the truth for each.Myth 1: My video creatives are performing well, so I don’t need playablesIt’s easy to think that if your video creatives are performing well, there’s no room for playables - but it’s important not to limit your creative strategy. Using a wider variety of ad types creates more opportunities to test and improve performance, which is a benefit no matter your game or genre.Different ad sources - from SDK to social channels - reach different audiences, which means playables could resonate better with some users compared to video across different sources. You’re not stealing traffic from your video creatives - this scale represents incremental growth.In other words, it’s not a “one or the other” choice when it comes to your creatives. In fact, you can turn your top-performing playables into winning video creatives. Finding a hero creative set that translates into both interactive and static creatives expands your opportunities to reach more users and maximize growth.Video is largely a black box when it comes to analytics, but playables have in-ad events that give you greater transparency into the user journey.One of the reasons why playables tend to perform better is that they give you access to in-ad events. Video is largely a black box when it comes to analytics, but playables have in-ad events that give you greater transparency into the user journey. You can set up events like clicking the tutorial and showing an end card that let you track crucial KPIs like engagement rate, time to engage (TTE), and user dropoff. Then you can use these learnings to optimize your creative.Myth 2: I need to know Javascript or hire someone who doesThere’s a common assumption that it takes expert coding skills to build playable ads - that you need to build a playable ad in Javascript (JS). Or that you need someone to build the playable utilizing a JS game development library, like Phaser. But there are several solutions available that don’t require hiring a JS developer, like template builders and Unity. If your game is built in Unity, for example, you can build playables using the assets and code from your game. The platform uses the same engine as your game so you don't need to recode anything in JS.With Elements, you don’t need any coding abilities to design a high-quality interactive creative. Instead, you use your existing game assets and choose from a selection of customizable templates to build and launch a high-impact playable ad in minutes. For example, Kakao Games used Elements to start designing interactive creatives and improve their entire UA strategy. Within 11 days, they found their new hero creative set that generated 6.8x more impressions and had a 3x higher IPM than the creatives they used when working with an external agency.Myth 3: Playable ads are expensive to buildThis cost myth traces back to the fact that many studios think outsourcing playable production is the best option. But to outsource playables comes at a high price - anything from $3K to $10K per playable, depending on location. Since many studios end up paying an external organization for multiple projects to find the one that works, the costs for each playable quickly add up. Plus, there’s no guarantee that buying a playable from an agency or vendor means it’ll be successful.Having an internal developer build your playables addresses the concerns around cost, time, and performance. They’re a member of your team who’s been part of the game’s development from the start and can work closely with other teams to build and optimize playables. This usually results in a much shorter feedback cycle and more accurate, better-performing playables than outsourcing. The shorter time spent in this feedback loop, the lower the costs.And having a dedicated developer working with other teams can improve your organization’s internal knowledge-sharing. Building a database of best practices now can shorten the time it takes to find winning creatives later, which reduces the costs associated with testing and development.Myth 4: If I build a playable, I’m guaranteed to get higher-quality usersThe idea of “build it and they will come” doesn’t apply to almost anything in UA - and that extends to playables. You need to design playable ads intentionally and use data to back up your decisions and optimize your strategy.It’s true that playable ads can lead to higher LTV and user engagement. These creatives give users a taste of your gameplay - if they like the experience, they’ll likely download your game and keep playing. But if your playable is misleading, then users will be surprised when they download and start playing the game, which can lead to high user churn and low LTV.If your game is a match-3, for example, and your playable only highlights simulation elements like the story or narrative, users won’t understand the mechanic. They’ll be shocked that it’s actually a match-3 game when they install it, and many are likely to leave shortly after starting to play.Your playable doesn’t need to be a 1-to-1 depiction of actual gameplay, but it should still highlight the core mechanic and concept so users won't be shocked after they install your game.Your playable doesn’t need to be a 1-to-1 depiction of actual gameplay - the goal is to reach your target audience, and showing gameplay that’s a slight departure from the original can help attract the right users. Just be sure you’re still highlighting the core mechanic and concept so users are hooked for the right reasons and won’t be unpleasantly surprised when they start playing your game.The quality of your playable matters, too - this is your chance to get users hooked on your game. But a low-quality playable creates a poor user experience that will likely fail to hook users and can reflect poorly on your game. For tips on building high-quality playables in-house, check out this eBook. Some key tips include:- A/B test each part of your playable - the tutorial, gameplay, and CTA- Tap into the user psychology of your game’s genre- Set up custom events to track the user funnel and optimize your creative strategyMyth 5: Any end card is a playable adMany studios think a GIF or one-click experience at the end of a creative is a playable ad - but this isn’t the case. A GIF as an end card is fine for some mobile creative strategies, but it doesn’t make the same impact as having a standalone playable ad or playable end card. The depth of the experience has a big impact on user quality, and these two examples often mistaken for interactive ads aren’t as deep as the real thing.Interactive creatives give users a taste of your game and encourage greater engagement in a way that just watching a GIF or a video - or tapping one time on the screen - does not. You should approach building, testing, and optimizing Interactive end cards (IECs) differently than any other ad unit - even from playables. 8SEC, for example, was relying on GIFs as end cards for their game Hero Squad. But using Luna Elements, they easily created high-quality IECs that helped their title achieve over 74 million impressions and improve overall CVR by 30%.They’re just as important for reaching and engaging new users, though, which brings us back to the earlier advice of not limiting yourself to certain types of ad units. Test IECs, playable ads, and other versions of end cards to make sure you’re not missing out on either incremental users or a hero creative set.Expand your creative horizonsSo there you have it - consider the 5 most common myths about playable ads officially dispelled. Designing playables in-house is a key way to achieve incremental growth and optimize your UA, all while saving on costs, time, and resources. Put the truth about playables into action and start building your own ads today so you can enjoy all of the advantages these interactive creatives provide.]]></description><link>https://unity.com/blog/5-myths-about-playable-ads-that-are-ending-here-and-now</link><guid isPermaLink="true">https://unity.com/blog/5-myths-about-playable-ads-that-are-ending-here-and-now</guid><pubDate>Sun, 15 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Expanding the robotics toolbox: Physics changes in Unity 2022.1]]></title><description><![CDATA[Simulate sophisticated, environment-aware robots with the new inverse dynamics force sensor tools. Explore dynamics with the completely revamped Physics Debugger. Take advantage of the performance improvements in interpolation, batch queries, and more.The Physics Debugger is an essential tool for understanding the inner workings of the physics engine, as well as for making sense of the particular behavior observed in a project. A good debugger is a critical tool for authoring convincing, modern, rich physics. With that in mind, we completely reworked the user interface (UI) and added some interesting features.To fit more information into the same space, we grouped the properties into tabs and then expanded them with the newly added properties.Before, both Rigidbody and ArticulationBody components had a collapsible “Info” section in the Inspector that you could expand to view additional information, such as the current linear velocity. Once expanded, however, the overall performance of the Editor degraded significantly. In addition, it was previously complicated to compare parameters of different bodies, as you needed to open two Inspector panels. To address these issues, we moved all of the properties to the “Info” tab of the Physics Debugger window, where the properties are displayed for each of the selected objects, so you can easily compare them side by side.Contact points can now be visualized, alongside the contact normal and the separation distance.Physics queries, such as Physics.Raycast or Physics.CastSphere, are normally part of some custom physics behavior, such as custom character controllers or vehicle controllers. They’re invisible and tricky to debug. To help with that, this release offers optional visualization of the physics queries.Until now, Unity had tools that supported only what is called forward dynamics: given a set of objects and the forces applied to them, calculate their trajectories. While this is incredibly useful, we wanted to expand our robotics toolbox. So, Unity 2022.1 adds support for inverse dynamics: given an object and a desired trajectory, calculate the forces that cause that trajectory when simulated.This effort will span multiple releases, as we build it out iteratively. In Unity 2022.1, we’re exposing a set of functions to calculate the components of the current total force applied to ArticulationBodies that should be counteracted before applying the external force to drive them along the desired trajectory. Further interesting concepts will be exposed in later releases, such as the joint force required to counteract the impulse applied by the solver. We invite you to try this out and let us know what you think on the forum.In particular, the new functions are:get the current force applied to the body by the drive. It’s an indication of how hard a drive is trying to reach the desired drive target. It depends on the stiffness and damping of the drive, as well as on the current delta target position and delta target velocity;get the joint forces required to counteract the gravity, Coriolis and centrifugal forces acting on the body; andget the joint force required to reach the desired acceleration.Rigidbody uses both interpolation and extrapolation to give an impression of smooth motion while simulating at a comparatively low frequency. Internally, this is implemented by calculating the transform poses every update. In the case of interpolation, the last two simulated poses are used to calculate a new transform pose for this frame. In the case of extrapolation, the last simulated pose and velocity are used instead. Since it is designed to be lightweight, however, we don’t communicate these poses back to the physics engine. The poses are only presented to the systems outside of physics (e.g., graphics and animation). Because of that, for instance, a raycast won’t detect a body at the interpolated pose.To keep physics from noticing the transform changes, the mechanism was to have a Physics.SyncTransforms() call each update right before pose write, followed by an internal method call to clear all transform updates for physics. That caused two classes of problems:If a scene has at least one interpolated body, all the transform changes to all the physics components were synced with the physics engine each update (even though they’re mostly needed once per FixedUpdate); andIf a change was made to a transform that had a Rigidbody component with interpolation on it, interpolation for this object broke because the user-made transform change was propagated to the physics engine and effectively changed the last simulated pose (the pose is not stored separately – it’s just the pose that the physics engine uses currently).To address these problems, we updated the interpolation code so that it doesn’t need to sync all transforms for each frame. This change also improves performance; the new interpolation code runs faster than before (depending on the scene complexity).A section of the forum is dedicated to discussing various experimental previews of physics tech, and some of the changes implemented in this release originated there:Many projects, especially larger ones, often use many GameObject layers, so the matrix that describes the layer combinations and produces contact pairs for physics becomes quite large too. In this release, we’re highlighting the currently selected row and column so that it’s easier to use.A joint is used to link two Rigidbodies, and it defines the constraints on their relative motion. Starting in Unity 2020.2, a joint can also be used to link a Rigidbody to an ArticulationBody. To make that possible, each Joint class received an additional property that is shown in the Inspector. Linking to both Rigidbody and ArticulationBody at the same time is impossible, so displaying both options when one has already been set takes up vertical space for no reason. Now, only the property that was set is displayed.A kinematic Rigidbody is a special type of body that can influence other bodies, while not letting anything else affect it. In that regard it’s analogous to a static collider, with the exception that it’s intended to be moved frequently. Typical use cases are character controllers, animation driven physics, virtual reality (VR) simulation of wrists, and so on. It is controlled by setting a kinematic target that the body will reach in just one simulation frame. The main difference with the static collider here is that the kinematic target is reached not by instant teleportation (pose change), but by calculating the linear and angular velocities required to reach the goal in one frame, and passing them to the solver afterwards. That way, the movement can contribute to the constraint Jacobian matrices correctly, and thus any attached joint chain will react properly (no glitches). In this Unity release, we expose a new method to set both position and rotation of the kinematic goal in one operation.Contact modification, introduced in Unity 2021.2, enables changing the contact point details as generated by the narrow phase, right before they’re used to create contact constraints for the solver. In this release, we’re adding new getters for body velocities in a contact pair, for advanced use cases such as this example of custom anisotropic friction.The PhysX version was updated to 4.1.2, the latest in the 4.x line to date. It’s a minor release, so it only addresses critical bugs and crashes. Release notes are available here.When a dynamic body overlaps a collider, the solver aims to find a corrective impulse that pulls them apart while satisfying all the constraints. Internally, this impulse is computed per each contact point in a pair, but we had only an aggregate value that returned a total sum over all points. With this release, we’re exposing a new property of the ContactPoint structure that allows retrieving impulses for each contact point.We’re closely watching the feedback about the ArticulationBody component coming from the robotics community. To facilitate creating and tweaking the behavior of some smaller robot parts, we anchored the joint limit handles in screen space so that they will no longer occlude colliders in the scene.Physics batch queries were the result of a Unity hackweek and shipped directly to enable certain use cases, but with minimal functionality. They continue to evolve, with new functionality to enable even more use cases, such as those with more sophisticated threading patterns, and the types of queries are more diverse. In this particular release, we’re enabling the batch queries to be run on any physics scene, and we’re adding one new batch query type (Physics.ClosestPointCommand).For a mesh to be usable with MeshCollider, it has to be baked first. Baking is an expensive process of producing the spatial search structures required for collision detection. Normally, it happens implicitly every time a MeshCollider’s mesh property is changed, and it runs on the main thread, blocking any further work until complete. In Unity 2019.3, we exposed a thread-safe method to perform bake off the main thread on demand. The intent was to enable more sophisticated procedurally generated meshes, since one could now jobify content generation and mesh bake, gaining much higher thread utilization. However, one particular disadvantage of this function was that it only supported baking with the default cooking options. In this release, we correct it by exposing a new variant of Physics.BakeMesh that supports baking with any cooking options.We can’t wait to see what you create with the new Inverse Dynamics APIs and the revamped Physics Debugger! Download the latest Unity 2022.1 build today and join the conversation on the robotics forum and the physics previews forum.]]></description><link>https://unity.com/blog/engine-platform/expanding-the-robotics-toolbox-physics-changes-in-unity-20221</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/expanding-the-robotics-toolbox-physics-changes-in-unity-20221</guid><pubDate>Thu, 12 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2022.1 Tech Stream is now available]]></title><description><![CDATA[Today, I’m happy to share that the new 2022.1 Tech Stream is available for download from our releases page. Tech Stream releases give you an opportunity to go hands-on with early features, provide feedback, and engage in dialog on how we build tools that work harder for you. Tech Streams are released twice a year and ensure that when the LTS releases in 2023 that you’re already familiar and ready to incorporate all of the functionality into your new project.This first major release of our new lifecycle was informed by your feedback and suggestions on where to invest Unity’s engineering resources. Your 7,600 notes to the roadmap, over 5,000 forum threads with direct product feedback and insights, and hundreds of individual conversations with us have resulted in more than 280 feature improvements, including over 70 new features. All shaped by you.In this post, we’re sharing just a few of the most impactful highlights that cover key focus areas, including unified UI, artist usability, iteration speed, and platform enhancements. You can always get more detail in the official release notes.Your team’s needs are unique, and we want to give you an extensible Editor that can flex to your workflows, so everyone can work faster together.UI Toolkit is a unified solution for both authoring runtime UI and extending the Editor with custom tools. In 2022.1, we’ve added even more features for tool developers looking to customize the Editor for their teams with UI widgets and custom shapes. We’ve also added the TreeView with multi-column support, new vector drawing APIs to customize the UI element appearance, and we’re progressively making Property Drawers and Property Attributes available, starting with the most commonly used. Connect with us in the forums and let us know how we can help make UI Toolkit even better for you.We’ve heard you tell us how important Splines are in our forums, and it’s one of the most requested features on our public roadmap.“I have been researching spline tools… but I don't know if any of them will provide exactly the functionality that I need and it would become quite costly to buy a bunch just to experiment. So a good built-in spline tool is incredibly important to my project.”In this release, a new Spline authoring framework is available as a package. It’s designed to create and manipulate Splines in-engine, above all by letting programmers extend functionality with tools and custom components such as instantiating geometry and moving along a Spline. It can also work alongside the new Edit modes, and edit Spline points and tangents using the standard editing tools and shortcuts. Keep letting us know what you think in our forums, and see what’s next on the roadmap.We’ve also improved the procedural creation of materials. For creators using code to generate materials, we extended the Material API to all material properties, now supporting keyword states, HDRP’s diffusion profiles and IES lights, enhancing procedural material usage in-Editor or at runtime.Finally, we’ve added a new API for Unity File System, enabling you to create tools for Asset Bundle visualization and analysis that help your team optimize performance.Rapid iteration is a key element of any creative work – it’s what makes game development so much fun. We’re optimizing the core of the Unity Editor so that you can iterate quickly through the entire lifetime of your productions, from importing assets, through working in the Editor, to building and deploying a playable game.At the same time, we’ve heard through our graphics forum that technical artists are looking for additional Editor tools and APIs to help them bring their vision to life more quickly. So, based on the feedback, we’ve added new options that will help any creative team get more done in less time.As the HDRP and URP renderers mature, we’ve heard that you’re looking for even more ways to achieve your visual fidelity goals at a faster pace.One of the most highly requested feature cards from our Rendering & Visual Effects public roadmap was Material Variants. We’ve heard that you often reuse base materials numerous times across different projects, scenes, or locations in an environment, which can lead to authoring issues when materials are changed out of the context of their implicit hierarchy.“This is a critical feature for any bigger project if we want to control all shader/material for the game. Been waiting for years for this.”Material Variants offer an integrated and powerful workflow to reduce iteration and authoring mistakes when reusing materials in teams where artists manage large amounts of assets. Now available in both HDRP and URP, Material Variants allow you to create material hierarchies, where children can share common properties with the parent material, and override only the properties that differ. Changes to common and non-overridden properties in the template material will automatically be reflected in the variant material, saving you time and making material changes that much easier.You’ve shared that finding the right items in your project can be time-consuming, particularly as you scale. That’s why we’ve introduced visual search queries to help you find what you’re looking for faster. Additionally, you can also build more complex queries and leverage the Editor object picker for more precise selections for object fields.For 2D creators, there are plenty of productivity improvements. In this release, we’ve focused on speed-improving enhancements to foundations, import, animation, and physics.For starters, the Sprite Atlas v2 is now the default for all new projects bringing support for Accelerator and for folders as packable objects, a productivity boost that is much-loved by 2D creators. Working with Photoshop for 2D is enhanced by support for importing files with the PSD extension. Alongside this, we’ve added layer management in the 2D PSD Importer to give you more control over which layers get imported. The Sprite Swap feature now has streamlined keyframing and previews, making sprite swapping for 2D animation more intuitive.To help with 2D physics, we’re introducing Delaunay tessellation. Often, polygons can be too thin or small and are filtered out by the physics engine. Delaunay tessellation not only stops producing polygons that are too thin or small but also produces fewer polygons to cover the same area. Check out some of the samples and our roadmap to learn more.We’re also continuing to improve the Package Manager to help you get working on your project faster. In this release, you’ll find the ability to select multiple packages at once so you can manage them in bulk, along with the option to control the location of Package Manager caches.To further boost productivity in another part of your workflow, the IL2CPP scripting backend will now always generate fully shared versions of all generic methods. This allows programmers' use of generic-type combinations that are not present at compile time to avoid a whole class of difficult-to-detect errors that can occur only at runtime.There are so many quality-of-life improvements to the Editor that we can’t list them all here, but a few highlights include:Faster to get in and out of Play mode, import textures and small files (by up to 60%), and create buildsBetter UI on undo and redo operationsCancel button for the project open progress windowShortcut manager improvementsWe know that profiling your games and projects to get insights about their performance is critical to your success. So, in 2022, we’ve continued to enhance our profiling tools and analytics to give you comprehensive information that you can act on.In this release, we’re delivering the Frame Timing Manager for capturing and accessing GPU and CPU frame timing data and timestamps at a granular level. The Frame Timing Manager is available in-Editor and lets you target and adjust performance bottlenecks in your project, regardless of platform, with more information than ever before about how individual frames are performing. Together, these features let you build tools to profile and report on your projects on any platform. Connect with the performance team or get even more detail on the forums.When building up or modifying a scene or if you’re improving or optimizing content, it’s important to understand how the frame budget is spent. We added a Frame Stats Profiler to the Rendering Debugger, available both in-Editor (Play mode only) or in a built Player, for all Scriptable Render Pipelines. This tool isn’t just intended for developers; it’s for anyone who wants to identify whether a scene is CPU- or GPU-bound and get a breakdown of the frames’ timings.Finally, let’s talk about the breadth of platforms that you deploy to each and every day. It’s one of the primary reasons many of you choose to develop in Unity, and it’s why we continue to optimize platform support for new features and the latest APIs to power your creativity.For those looking to push Android performance even further on Samsung devices, you can now take advantage of Adaptive Performance 4.0. With that, you get four more scalers that cover physics, decals, custom, and layer culling – many of which include samples. One major benefit is the support for visual scripting that further simplifies scripting with Adaptive Performance.For Android games targeting devices with Arm chipsets, we’ve heard that you want to optimize even more. With Unity 2022.1, you can access low-level performance data with the System Metrics Mali package, exposing metrics that provide insight into what impact your changes produce on the hardware level. Install the Read GPU Metric sample that ships with this package to see how GPU metrics can be accessed at runtime. On the iOS platform, we’ve enabled the latest incremental build pipeline, which ensures that you only rebuild the parts of the application where there have been changes since the previous build.Continued improvement of the console development experience includes enhanced overall stability, as well as added support for the incremental build pipeline for Xbox.Check out the release notes and Unity Manual for details about what’s new. You can download Unity 2022.1 from the Unity Hub. If you’re curious about what’s coming or want to share your feature ideas with us, visit the Unity Platform Roadmap page.Each Tech Stream release is supported with weekly updates until the next one, but there is no guaranteed long-term support for new features. We recommend using the more stable, better-supported Unity LTS release for projects in production. Remember to always back up your work before upgrading it to a new Unity version. See the Upgrade Guide for advice on bringing your project to Unity 2022.1.We’ve just begun the Unity 2022 journey, but we’re excited to continue collaborating to help our Editor and tools make you as productive as possible. Your feedback is essential, so download the new release, use the new features, and tell us what we’re getting right and where we should go next.You can share any general feedback about the new release in the announcement forum post, while specific insights about key features are always welcome in dedicated forum groups for different areas, such as render pipelines, UI Toolkit, or Frame Timing Manager – you can find the full list of these groups here.This release is just the first stage in our 2022 development cycle. Building on these great improvements, we’ll also deliver on several other key areas, including improved rendering pipelines, artist usability, and netcode. Check out our roadmap overview from GDC for more details. Thank you for partnering with us, and we can’t wait to see what you create.]]></description><link>https://unity.com/blog/engine-platform/unity-20221-tech-stream-is-now-available</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-20221-tech-stream-is-now-available</guid><pubDate>Tue, 10 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Upgrading from Legacy Analytics to Unity Gaming Services Analytics]]></title><description><![CDATA[In October 2021, we launched Unity Gaming Services (UGS) – an end-to-end platform with flexible solutions to help you build, manage, and grow your game. Alongside this launch, we also announced that we rebuilt and re-envisioned our standalone Legacy Analytics tool to be integrated within the platform.Our new Analytics (beta) solution is a data visualization and dashboard tool to help you understand and analyze all of your game data in one place. It works as a standalone tool (similar to the Legacy version) or you can use it with other Unity Gaming Services offerings to make it more powerful.Today, our new Analytics offering is free while in beta. Upon full release, it’ll have a free tier and a pay-as-you-go pricing model that scales with your usage – learn more about Analytics pricing here.Analytics sits within the Unity Gaming Services Dashboard and can be used as a standalone service or with other services to make it more powerful. Analytics has been redesigned to take the best of both of Unity’s pre-existing solutions: Legacy Analytics and deltaDNA to deliver a powerful, intuitive end-to-end analytics solution.Analytics delivers all the value of our Legacy Analytics plus more functionality. See how we’ve upgraded the experience below:Fresh data: One hour data processing time, down from eight hours on Legacy Analytics.Unlimited events: We’ve removed the strict event and parameter limits on Legacy Analytics so you can track what you need with no limits.Designed to work out-of-the-box: Pre-built dashboards, Standard Events, and Audiences give you quick insights so you can get started quickly.Built with flexibility and depth: We’ve added incremental tools to give you all the power to customize what you need for your studio. Custom Events, Custom Audiences, Custom Dashboards (coming soon), and SQL Data Explorer let you capture and analyze all the data you need.Built to work with other UGS tools: We’ve designed Analytics to operate within the platform, so there are use cases supported across our individual tools. Use Remote Config and Analytics together to run A/B tests, change variants within your game using Remote Config, and understand which variant performs best with Analytics.A dynamic platform for all: We’ve prioritized a simple UI and built-in tools for non-technical users, with robust, deep functionality for the most technical members of your team. We’ve taken learnings from both of our platforms to improve the user interface, increase data transparency, and build new use cases and workflows that weren’t previously possible.Better quality control and oversight of your data: A new event validation step has been introduced during event ingestion to prevent invalid events from polluting your dataset. You can also now use Environments to separate development and production data and config.Funnels: Our Funnels feature has been improved to ingest historical data so you can see and analyze your game progression immediately.New and improved functionality: Our new tool is already an upgraded version of Legacy Analytics but we’re continuing to invest in more functionality.SQL Data Explorer (new):Now you can write your own queries using SQL, so you can aggregate and visualize any data needed for your game.Acquisition Channel Tracking: We know how important it is to see your monetization data with the rest of your game. Now, you can bring data from your attribution provider into Analytics. Use this to identify your best performing campaigns or start to build an LTV model.Custom Dashboards (coming soon): Soon you’ll be able to create custom dashboards that will let you view the data and charts most important for your studio. This also allows you to create side-by-side comparisons.To put more resources into our upgraded Analytics platform, we will stop investing in Legacy Analytics with the aim of fully replacing the product with Unity Gaming Services Analytics. It is advised that new projects are created with the new Unity Gaming Services Analytics platform and we also recommend using this guide to migrate existing projects over.Transitioning a live game to a new Analytics solution can be difficult, so we’ve designed a data pipeline so you can run Analytics and Legacy Analytics in parallel. The Core Events data (from July 2021 onwards) from your Legacy Analytics integration will be automatically imported into the new Analytics solution.Metrics such as DAU, MAU, session length, revenue, and others will be populated in the new Analytics solution for a trial of the product ahead of implementing the SDK.Please note that this does not cover any Custom Events that you have defined; these will need to be redefined both in your game code and the dashboard – see the tech docs guide for more information.Note: No duplication or double counting will occur, standard events being triggered by the Analytics package will take precedence over imported data for each individual player.Want to learn more about Unity Gaming Services Analytics? Register here for our free UGS Analytics bootcamp on May 17 at 12 PM EST/ 9 AM PST and get a live overview of everything you need to know for your next project.If you have any concerns or questions, please contact our support team here or reach out to your client partner and we’d be happy to help you through this transition.]]></description><link>https://unity.com/archive/blog/games/upgrading-from-legacy-analytics-to-unity-gaming-services-analytics</link><guid isPermaLink="true">https://unity.com/archive/blog/games/upgrading-from-legacy-analytics-to-unity-gaming-services-analytics</guid><pubDate>Fri, 06 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Our biggest e-book yet: 2D game art, animation, and lighting for artists]]></title><description><![CDATA[Our most comprehensive 2D game development guide is now available to download for free. Over 120 pages long, it covers all aspects of 2D game development for artists. This includes roundtripping between Unity and your digital content creation (DCC) software, sprite creation, layer sorting for level design, camera setup, animation, lights, plus many optimization tips along the way.2D games don’t have the same constraints as 3D, which empowers artists to produce cartoonish and fantastical art that looks great on any device. Let’s learn how.Unity’s suite of 2D tools provides creators with endless possibilities. This guide unpacks key decisions to tackle at the start of your project, as well as best practices for leveraging Unity’s 2D toolset. It’s specifically tailored to developers and artists with intermediate Unity experience who want to make high-end 2D games, independently or collaboratively with a team.The e-book was written by Jarek Majewski, a professional 2D artist, Unity developer, and creative director of our 2D demo, Dragon Crashers, together with input from several Unity 2D experts, such as Rus Scammell and Andy Touch.If you’re unfamiliar with Unity’s tools for 2D creation, see our 2D page to get an idea of what’s supported by Unity. There’s native support for games of all styles and genres, ranging from pixel art to immersive animated experiences.Then get inspired by our latest 2D sizzle reel, which showcases stunning 2D games made with Unity.Get the full range of expert tips in our free e-book. Topics covered in this guide include:The art of your game and technical considerations before beginningHow to choose the perspective and resolution of your assetsIn-depth explanations and guidance on level design, 2D animation, and 2D lightsTechnical breakdowns of advanced visual effects and post-processingFor further inspiration and pointers around creating 2D games with Unity, check out the Level up your 2D skills reading list that our team put together.Seeking additional support? We recommend that you visit the forum thread to follow up and provide any other feedback you might have.]]></description><link>https://unity.com/blog/games/our-biggest-e-book-yet-2d-game-art-animation-and-lighting-for-artists</link><guid isPermaLink="true">https://unity.com/blog/games/our-biggest-e-book-yet-2d-game-art-animation-and-lighting-for-artists</guid><pubDate>Thu, 05 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Inside Sweatcoin's ad monetization strategy]]></title><description><![CDATA[There's a growing trend toward implementing ad monetization into apps beyond games - but Sweatcoin's been there from the start. Having built a robust rewarded video strategy already back in 2017, Sweatcoin's all but perfected their ad monetization.ironSource sat down with their team to learn a bit more about how they got started in ad monetization, their top tips for apps looking to do the same, and their experience with ironSource LevelPlay as a mediation partner.Tell us a bit about Sweatcoin and what your app business is all about.Sweatcoin is a free app which rewards your daily steps with a new-generation currency you can spend on cool products, donate to charity or convert into crypto. Why? Because when you look after your health, you benefit society. You are more productive. You help save billions of dollars in healthcare. Your movement has real value and you deserve a share in it.Sweatcoin relies heavily on ad monetization as a revenue stream - at what point did you start implementing ads into your app and why?Sweatcoin originally implemented rewarded video ads in 2017, with the introduction of a Daily Rewards feature. This placement allows each user to watch up to three rewarded video ads every day in exchange for a randomized amount of Sweatcoin currency.The aim was to increase engagement by giving users a tangible reason to return to the app on a daily basis, and given the popularity of the Daily Rewards placement in the present day, that was definitely a success!You recently switched to ironSource LevelPlay mediation. What qualities do you look for in a mediation partner and why?The considerations around choosing a mediation partner are pretty unique and the wrong choice presents a fair amount of risk compared to say, the decision to choose an additional network partner.With that in mind, we have tried to keep the principle of de-risking prominent in our decision making. That meant looking at each major provider and assessing duration and track record in the marketplace of serving publishers well, but also the strength of our relationships and where we felt valued as partners.We also needed to be sure that we would be choosing a product feature set that facilitates us reaching our potential in ad monetization. For Sweatcoin, that means access to the strongest possible selection of potential network partners, a quick and easy way to A/B test new setups, and an analytics package that is fast and easy to use on a day to day basis.What type of internal processes do you have in place to support ad monetization? Team setup? Optimizations? Automation?Our product team works closely alongside a consultant to manage the ad monetization. Weekly calls and monthly performance reviews allow us to assess our current trajectory and plan appropriate development time to adapt to industry developments. We periodically review and test new network partners, as well as conduct experiments on the user experience that are designed to create greater user engagement with the Daily Rewards feature.What are some tips you have for other app developers looking to get started with ad monetization?If there is currently no obvious way to introduce rewarded video in your app, consider whether forging a path towards that is worth the resource. Sweatcoin has found that introducing rewarded video has not only created another hugely significant revenue stream for the app, but it also provided a sustained uplift to our other key performance metrics."Introducing rewarded video has not only created another hugely significant revenue stream for the app, but it also provided a sustained uplift to our other key performance metrics."Spend more time choosing your mediator than any single network partner. The risk/reward relationship associated with your decision to choose a mediator is very different because it will affect the utility of ALL your network partners.Develop an A/B testing process that continually searches for incremental performance improvements. A singular A/B test may yield only a minor improvement, but repeating this process over time will have a massive compounding effect.What are the biggest challenges you’ve faced when it comes to ad monetization? How did you overcome them?A big part of what we think makes Sweatcoin unique is our brand. We want to have complete awareness of what campaigns our users are being exposed to, and we look to avoid being affiliated with anything that we feel is not aligned with our brand. This can be a challenge when you are serving ads at scale to a global audience, but we have found that being swift and proactive when it comes to shutting off inappropriate campaigns has been a good defense against this.Another ongoing challenge is balancing the desire to increase our revenue yield with protecting the user experience inside the app. This means that we do not consider showing our users system-initiated ads. Instead, we continue to overcome this challenge by finding creative ways to increase engagement with our existing opt-in placement. We can be sure that when users interact more with this placement, it does not harm other key performance metrics, but actually improves them.Which ironSource LevelPlay mediation products are you eager to start using?AdQuality by ironSource is something that we are really excited about using. We are hoping the insights we get from the tool can be factored into our future product development cycles to further improve how we provide value to our audience."AdQuality by ironSource is something that we are really excited about using."The Direct Deals functionality that ironSource LevelPlay offers is also very attractive to us. Sweatcoin is in somewhat of a unique position amongst mobile publishers, in that we already possess the infrastructure to serve some advertisers directly; the Marketplace area of the app facilitates this. The possibility of also offering these advertisers access to our audience through the rewarded video placement allows us to increase the value that we can offer them as partners.What’s your favorite part about working with ironSource?ironSource has been a great partner for Sweatcoin and we are delighted to be expanding that partnership to work with their mediation platform."What we enjoy about working with ironSource is their consistency; they always deliver what they promise"What we enjoy about working with ironSource is their consistency; they always deliver what they promise. We really feel that they have valued the relationship that they have with us from day one.]]></description><link>https://unity.com/blog/ad-monetization-qa-with-sweatcoin</link><guid isPermaLink="true">https://unity.com/blog/ad-monetization-qa-with-sweatcoin</guid><pubDate>Mon, 02 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Customizing performance metrics in the Unity Profiler]]></title><description><![CDATA[Optimizing your application requires being able to accurately measure how your project consumes hardware resources. Extending the Unity Profiler with your own performance metrics enables you to better understand your application’s unique performance story. In this post, we will cover new Profiler extensibility features in Unity 2021 LTS.Our new Profiler counters provide a lightweight mechanism for adding your own performance metrics to your Unity applications and packages. You can also now visualize your metrics directly in the Profiler window by adding your own Profiler Modules. Read on for more details on how to use these features to improve the performance of your Unity project.The Unity Profiler is a tool you can use to get detailed performance information about your application. It tracks a large number of performance metrics across a range of categories, such as memory, audio, and rendering. These metrics are visualized in the Profiler window, and in some cases they may also be queried from script. Using this information, you can gain insights into how your Unity application uses the available hardware resources of the target platform, which can help you pinpoint where optimizations might be made.Profiler counters track, measure, or count metrics in your Unity application that are useful for performance analysis purposes. For example, Unity defines a built-in Profiler counter to track the total number of bytes of memory used by your application, called “Total Used Memory”. This is a useful statistic to gauge your app’s memory footprint on the target device. You can see this value displayed over time alongside other memory-related metrics in the Profiler window’s Memory module, shown below.By adding your own Profiler counters, you can expose performance metrics unique to your own systems and applications. These metrics can be displayed in the Profiler window alongside other performance data, including built-in counters. This enables you to view the performance characteristics unique to your application, in context, directly in the Profiler window.In the example below, a custom Profiler counter has been added to track the number of active creatures in a scene. It is shown alongside the built-in Profiler counter, Batches Count, which tracks the number of rendering batches processed each frame. This allows us to easily correlate between the two metrics and see the impact of our creature count on the number of batches the renderer must process.Additionally, all of your Profiler counters are available in Release Builds, as well as some of the built-in ones where specified. Release Builds are more representative of the real-world performance of your application than Development Builds.However, the Unity Profiler cannot be attached to Release Builds for optimization reasons. Therefore, you can selectively monitor important metrics in Release Builds by using Profiler counters and querying them from script. For example, you might do this in Continuous Integration testing to detect performance regressions. Or, you might display some key performance metrics via an in-game debug user interface using one of Unity’s UI systems, such as in the lower-left corner of the example below. Please see the Profiler Recorder documentation for more information.If you want your Profiler counters to be present only in Development Builds, you can exclude them from Release Builds by wrapping them in the DEVELOPMENT_BUILD scripting symbol, as described in the Conditional Compilation documentation.Our Profiler counters are available in the Profiling.Core package, released in Unity 2021 LTS. The package is bundled with Unity 2021 LTS but not installed by default, so please follow the installation instructions in the package documentation to add this package from the Package Manager by name.Once you have the package, you can create a Profiler counter, referred to in the API as a ProfilerCounter or ProfilerCounterValue, and update it as follows.Please see the Profiling.Core package documentation for more information.A Profiler module presents performance information for a specific area or workflow in the Profiler window, such as memory, audio, or rendering. Each Profiler module aims to provide insight into the performance profile of its domain. For example, the Memory Profiler module shown below displays seven key metrics relating to memory usage over time. Below that is the module’s detailed section showing the distribution of memory in the selected frame.In Unity 2021 LTS, the Profiler window can be customized with your own Profiler modules. This enables you to present the performance metrics of your own systems directly in the Profiler window. It also provides the opportunity for custom visualization in your module’s detailed view, allowing you to present your system’s performance data however you wish.Profiler Module EditorThe Profiler Module Editor is recommended for quickly creating temporary Profiler modules for your own use. For example, you might use it to quickly create a Profiler module to verify a new Profiler counter. Profiler modules created via the Profiler Module Editor are local to your Editor and are not available for other project users.For more information, please see the Module Editor documentation.Profiler module APIThe Profiler module API allows you to add your own Profiler module to the Profiler window for all users of a project or package. When a Profiler module is defined in a project or package using this API, it automatically becomes available in the Profiler window for all users of that project or package.If you are an Asset Store publisher or a package developer, you can now distribute custom Profiler modules with your package. When a user installs your package, your Profiler modules will automatically become available in the Profiler window for your users. This enables you to expose your package’s performance metrics directly in the Profiler window.Several teams within Unity have already been using this API to distribute custom Profiler modules with their packages, including the Netcode for GameObjects, Adaptive Performance, and Mali System Metrics packages.How to use itTo add a Profiler module using the Profiler module API, create a ProfilerModule script in your project or package, as shown below.The module will be displayed automatically in the Profiler window for all users of the project or package.For more information on using the Profiler module API, please see the Manual and API documentation.The Profiler module API includes the ability to draw a custom visualization of your performance data for the selected frame using one of Unity’s Editor UI systems, such as UI Toolkit.For example, the Adaptive Performance package’s Profiler module uses this API to present detailed performance information in the selected frame, as well as contextual information such as Bottleneck and Thermal Warning indicators. These indicators can help a user of the Adaptive Performance package to clearly see when they may be encountering thermal throttling, for example. You might use this API to present a bespoke visualization of your Profiler module’s performance data.For more information, please see the Manual and API documentation on creating a custom Profiler Module Details view.You may wish to visualize additional, more complex data in your Profiler modules alongside your Profiler counters. For example, you might wish to display a screen capture of the current frame in your Profiler module’s detailed view to give more context to the performance data, as shown below.To send additional frame data to the Profiler, such as an image, and subsequently retrieve it from the Profiler capture, you can use the Frame Metadata APIs, Profiler.EmitFrameMetaData and FrameDataView.GetFrameMetaData.If you have additional data that only needs to be sent once per profiling session, such as configuration data, you can use the Session Metadata APIs, Profiler.EmitSessionMetaData and FrameDataView.GetSessionMetaData.Please see the documentation linked above for examples of how and when to use these features.In this post, we covered how to extend the Unity Profiler with your own performance metrics. We looked at adding custom metrics with our new Profiler counters, available in the Profiling.Core package. Then, we explored adding custom Profiler modules to the Profiler window with both the Profiler Module Editor and the Profiler Module API. Finally, we covered sending additional complex data to the Profiler, such as an image, to provide more contextual information.We hope these Profiler extensibility features added in Unity 2021 LTS enable you to better measure and understand your application’s unique performance story. Please feel free to reach out to the team via our forum page. We would love to hear your feedback and learn how we can improve Unity’s performance tooling for you.]]></description><link>https://unity.com/blog/engine-platform/customizing-performance-metrics-in-the-unity-profiler</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/customizing-performance-metrics-in-the-unity-profiler</guid><pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The secret to more efficient playable production]]></title><description><![CDATA[Bringing playable production in-house can result in greater control, speed, and affordability - so finding ways to improve efficiency and enjoy all of these advantages should be a priority. Unlike video or static creative production, the workflow for designing playable ads includes handing off responsibility to a developer and incorporating them into the feedback loop. With this in mind, it’s important to know the best practices for communicating with your playable developers to make production more efficient, accurate, and easy.Here, Ori Ben-Moshe, Creative Manager at Luna, sheds some light on what you should be sharing with developers before starting to build your playable ads. Even if you’re running a lean team (or just a team of one), this detailed walk-through can help keep you organized and take your playable concept to the next level.1. Create a storyboardOnce you’ve got your playable concept, design a storyboard of the creative that explains the idea on a high level. This will help you visualize the flow of the playable and address questions before they arise.Looking at the example above, users can upgrade their character to run faster by pressing the button on-screen before taking them to an actual race against others. Including a specific explanation and visual mockup of this upgrade in the storyboard clarifies this feature for developers - they can then build an accurate version from the start.2. Write a game design documentGame design documents (GDD) are the foundation of the entire design and development process - they describe playable production and expectations at each step in a clear and concise way. Whether you’re part of a large or small studio - or even a one-person show - at least one part of a GDD can work for you. Having to explain your playable often leads to useful questions, can help improve the production process for current and future creatives, and lead to a better-performing final product.Now let’s talk through each part of the GDD so you know what’s important to highlight at each stage.Highlight the hook of the tutorialThe tutorial of a playable is the crucial moment where you can catch the attention of users and encourage them to engage. From this introduction, they need to know how to play and why - what’s the hook that compels them to interact?From the tutorial of your playable, users need to know how to play and why - this is your chance to catch their attention and encourage them to engage.The GDD is your chance to explain clearly and simply what should be included in the tutorial and how to show the hook. For example, playables for hyper-casual games often use a “ghost” of the action in the tutorial that shows users what’ll happen when they start interacting. Explain this in your GDD by showing a quick mockup or example of a ghost in a tutorial and describing the action and instructions to appear on-screen.Looking at the example of the playable below from Join Numbers, we can say how you shouldn’t and should describe the tutorial in your GDD:Don’t: Only say “show the numbers 0 and 5 on the screen”Do: Describe the tutorial screen as “show the number 0 in yellow in the center of the track and a gray ghost number further up the screen. Have a gray ghost of the number 0 slide up to meet the number 5 so it creates the number 50 and highlights it in yellow”. Alternatively some teams that have an animator prefer to enlist them to create a video that shows - instead of tells - developers how they want their playable to look.Be specific in describing the visuals and mechanics of gameplayProviding exact descriptions of each part of gameplay can help both one-person teams and studios with dedicated developers build a playable more quickly and accurately. We suggest covering the following details in this part of your GDD:Number of interactionsDistances Speed and timing Decide on in-ad events and A/B testing setupWhile describing gameplay in the GDD, also mention the in-ad events you want to track, like clicking on the end card or completing the tutorial. In-ad events are snippets of code developers can set up that give you unique insights into the user journey and how they interact with your playable so you can make data-driven optimizations. They’re a crucial tool for improving your entire UA strategy, so consider which are likely to provide the most valuable insights then inform your developers.In-ad events are a crucial tool for improving your entire UA strategy, so consider which are likely to provide the most valuable insights then inform your developersYou don’t need to have every single detail figured out as you work on the GDD, but make note of what you haven’t thought through or want input on during the kickoff meeting. The Luna team built this template for you to use as a starting point - adapt it for your needs by using only some of the slides or opting for a more visual approach.Also use this section to describe the A/B tests you want to run for each part of your playable’s gameplay, like trying a new object for a match-3 game or increasing the speed of play in a runner game.Confirm how users win or lose your playableDescribing the different scenarios you want to try in your playable ahead of production encourages you to think about user motivations and streamlines the process of building the playable. Each game genre attracts different audiences that tend to prefer either easier or more challenging gameplay. Gathering information by testing different versions, following user behavior in your game, and previous marketing efforts can tell you the type of gameplay your users prefer - then you can apply this to your playable.Maybe you run test campaigns and discover that CTR is higher when users win your playable - so you make gameplay easier to encourage more win scenarios. As is the case with the other parts of the GDD, the more specifically and clearly you can describe the criteria for win/lose scenarios, the better for your developers:Don’t: Be vague and say “users need to reach the finish line first”Do: Describe the scenario as “to win 1st place, users must reach the finish line while getting past all obstacles, like swimming and climbing, before all other players”3. Put your playable into productionAfter you’ve completed the GDD, it’s time to put it to the test and start building the actual playable. To improve speed and efficiency at this stage, there are three actions we recommend taking:Schedule a kickoff with the developerGet a version from the developer halfway through productionImprove operations with best practices, tools, and resourcesGet aligned on a kickoff meetingScheduling a kickoff with team leaders like the UA manager, creative manager, and lead developer ensures your entire organization is aligned on expectations for the project and is the best opportunity to confirm milestones together. Even if you’re a lean operation, this is the chance to take a step back and consider the timeline and project as a whole.Scheduling a kickoff ensures your entire organization is aligned on expectations for the project and is your chance to take a step back and consider the timeline as a whole.In the meeting, review the GDD and discuss any details that you didn’t include - maybe you weren’t sure of the animation to show in the tutorial or you were choosing between a few A/B tests and wanted to get the feedback from other team members. Other people in the kickoff could offer new ideas and suggestions that fill in the blanks or improve upon your concept. As you make decisions, update the GDD - this is a working document that you can (and should) adapt as production moves forward.Check in halfwayWe suggest requesting a version of the playable in the middle of production - what’s known as a mid-version - to review the progress and provide feedback before the final result. This helps improve accuracy and ensure production is on the right track and can be handled as easily as in a short meeting with a shared screen. At this stage you’re able to make any tweaks that could improve the final product and correct mistakes before they get bigger.For teams of all sizes, once you have a working version of your playable, hand it off to a test group of users to play through it and collect their feedback. We’ve found that getting an objective perspective can reveal parts of your playable that should be improved - then addressing these earlier on in the production process saves time and resources later.Optimize the workflowReviewing your operations and introducing new tools and practices can help optimize the production process so it’s more efficient:Open a dedicated channel: We’ve seen that using a tool to communicate with the stakeholders involved in the playable saves time instead of coordinating calls or sending endless email threadsStay on track with deadlines: When we ask for deadline estimates for each milestone, we’re able to keep production on track and hold each other accountableKeep updating the GDD: As you make changes like altering the game flow and changing due dates, update the GDD.Creating a process for playable productionA game design document (GDD) is like a product requirement document (PRD) for product managers - you’d never design a successful product without one. Similarly, a GDD goes into the details and explanations needed to end up with a high-performing playable. Developing playables using a GDD and the tips above lets you build a knowledge base of best practices that turns production into a standardized and efficient process - this is key for building more creatives faster and improving performance. Standardizing playable production is a win-win - you get high-impact playables and your developers get clear instructions and understand expectations.The goal is making playables more accurately, efficiently, and easily. The best way to do this is aligning expectations at every step with all those involved in whatever way works best for you.Get the GDD templateClick here to download]]></description><link>https://unity.com/blog/the-secret-to-more-efficient-playable-production</link><guid isPermaLink="true">https://unity.com/blog/the-secret-to-more-efficient-playable-production</guid><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Metaverse Minute: 3 ways XR is helping to tackle climate change]]></title><description><![CDATA[When our team at Unity says, “We believe the world is a better place with more creators in it,” it isn’t just a catchy tagline – we mean it. To effect change at scale, we need to come up with solutions across a wide array of sectors, fueled by creative thought. And this is especially critical in the case of climate change.Climate change is a global threat that we believe real-time 3D creators can play a paramount role in combating. For Earth Day, we want to spotlight Unity’s digital twin technology and how its application is mobilizing communities and motivating change. We’re excited to showcase the way that Unity’s platform is empowering the business community to take action on climate change across three key industries: construction, fashion, and events.The construction industry is one of the biggest consumers of raw materials and natural resources. The World Green Building Council estimates that it produces 39% of the world’s carbon emissions. That said, the industry is certainly due for some innovation, which is why we’re pumped to see how Mortenson, Zutari, and Sitowise are promoting change.It is an honor that Mortenson decided to coordinate the construction of the Climate Pledge Arena with Unity Reflect. Plans for the arena aim to create the first International Living Future Institute certified Zero Carbon arena in the world. To achieve the Net Zero Carbon certification requires that new renewable energy is used to offset 100% of the energy that operates the building. Additionally, all embodied carbon emissions associated with the project’s construction will be disclosed and offset.With Unity’s real-time 3D development platform, Zutari is changing the way that large-scale solar projects in South Africa are designed, created, and operated. Not only does Zutari complete sun tracking and shading for each solar panel, they can optimize solar sites and install as many panels as possible to increase the energy output – all within Unity. Zutari is also using Unity to explore additional sustainable energy facilities. We can’t wait to see what else they accomplish.Unity’s real-time 3D development platform recently enabled Sitowise to create a digital twin of the Port of Oulu in Finland. This dynamic and interactive digital twin serves to reduce the environmental impact of transport and logistics flows in the city.McKinsey research has shown that the fashion industry was responsible for 2.1 billion tons of greenhouse gas emissions in 2018, and is on a trajectory to continue this level of output without the necessary countermeasures in place. Fortunately, there are brands like DressX, Lablaco, and Deckers working toward a greener fashion future.DressX strongly affirms that the amount of clothing produced by the fashion industry far exceeds human needs. Their solution? Digital-only fashion. By using Unity’s XR capabilities, DressX hopes to keep consumers in fresh looks, but with a much smaller footprint on the earth.The Circular Fashion Summit (CFS) by Lablaco supports the United Nations (UN)’s Sustainable Development Goals 2030. Created to accelerate the transition toward a newly sustainable fashion ecosystem, attendees were encouraged to embrace art, design, science, and engineering to collectively come up with sustainable solutions. This summit, built with Unity, took place entirely in the Spin universe, Lablaco’s metaverse platform.Unity’s RestAR, with its photorealistic 3D renderings, has helped Deckers on their path toward reducing their environmental footprint. Thanks to a streamlined production lifecycle, the necessity of physical samples has been eliminated, helping to decrease the amount of shipping and travel required by the company. This endeavor has reduced their overall carbon footprint as Deckers strives for a greener future ahead.Statistics reported by the Sustainable International Travel Organization reveal that travel produces 8% of the world’s carbon emissions. As such, adopting more virtual experiences like those produced by Magnopus and Emissive can give the events industry a serious boost.Traveling to major events consumes an abundance of energy. Nature found that transitioning from in-person to virtual conferencing can reduce an event’s carbon footprint substantially and going hybrid can slash energy use by two-thirds. This is where Magnopus has the opportunity to improve sustainability. With Magnopus’s Expo 2020 Dubai experience, for instance, event attendees could enjoy the expo’s magic directly from their couch, no travel required.What if you could participate in more than just events from home? What if you could visit (and revisit) historical sites and landmarks worldwide? Well, Emissive is creating immersive travel experiences to ensure that history lives on. They preserve what they can today so you can continue exploring for years to come.The future of humanity depends on significantly reducing and reversing carbon pollution to mitigate the impacts of climate change. Many people worry that there aren’t solutions, or don’t know where to begin in addressing the climate crisis. By amplifying the stories of creators who leverage real-time 3D for their sustainable initiatives, we hope to inspire more action across sectors in the business community. If you are one such creator, we encourage you to join our Unity for Humanity Community to collaborate with other likeminded individuals. Now’s the time to empower each other to foster a better world.P.S. Whether you’re a creator or an executive our new series of talks and workshops are designed to help guide your metaverse journey. Learn more about the Road to the Metaverse seriesFollow Unity for Digital Twins on Twitter, LinkedIn and Instagram.]]></description><link>https://unity.com/blog/industry/metaverse-minute-3-ways-xr-is-helping-to-tackle-climate-change</link><guid isPermaLink="true">https://unity.com/blog/industry/metaverse-minute-3-ways-xr-is-helping-to-tackle-climate-change</guid><pubDate>Thu, 21 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 ways to scale and optimize your app's UA strategy, backed by data]]></title><description><![CDATA[Today, a third of users say they find new apps through in-app ads according to Tech Jury. With advertisers fighting to get discovered through this channel, now's the time to start optimizing your UA campaigns to gain an edge when users are searching for new apps. This means reevaluating your strategies to ensure you’re getting the most for each dollar.The problem? There are many choices to make for each campaign, such as which app categories and games you want to run on, the ad units you’ll utilize, and so on. Frank Dawson, Director Business Growth at ironSource, shares tips based on performance and success stories so that you can make data-driven decisions when optimizing your UA campaigns.1. Don’t limit spend to your app categoryIt’s common for app advertisers to only run campaigns within their own category - for example, a finance app may only run campaigns in finance apps. However, today, you can find high-quality users in nearly every app category, which means you can find success and drive incremental growth by spending in categories outside of your own.1. App functionality has advanced significantly and, today, app-based or app-first businesses have become leaders in fitness, communications, finance, and more. 2. Users with varying levels of tech awareness are comfortable relying on apps and playing mobile games. 3. For a large portion of the market, users have grown up with smartphones, meaning apps are the first place they look for solutions. .Finance apps, for example, have increased their advertising spend in apps as they’ve expanded into new verticals (crypto, P2P, etc.), spending mostly in social apps - likely because finance apps now support social interaction, allowing you to engage with others financially to split costs. Entertainment apps are looking to get in front of as many eyeballs as possible, which makes hyper-casual games with a broad range of user demographics a valuable supply source.With high quality users across the app ecosystem today, it’s valuable to test your ads in a range of app categories to see where you could be driving incremental growth. Once you’ve decided where to run your ads, the next step is deciding what type of ads to run.2. Gamify your playable adsThere’s a strong case to be made for gamified creatives - no matter the app category. In fact, we’ve found that gamified apps, and creatives, show higher IPMs on gaming supply - it makes sense that users would be more inclined to download apps that have similar features to the game they’re playing, especially when the creatives are gamified as well. For example, a well known fitness app offers badges and rewards when you hit your goals or meet your daily targets, triggering a sense of achievement, similar to that of puzzle, match 3, word or solitaire games. The creative for this app triggers these same emotions. Gamifying the creatives for apps that are not already gamified may not be so intuitive, but these ads can also perform incredibly well in games. Ads that are interactive and personal are more engaging - rather than staring at a screen as your ad plays, you’re enticing users to play a direct role in the creative process. Let’s look at some examples.Calm, a leading wellness app, partnered with ironSource to grow their user base using the ironSource network and creative solution. ironSource helped them develop a playable ad that gamified relaxation by letting users mix paint on-screen, a cathartic and interactive break from digital overload. The gamified, playable ad generated massive scale and 106% increase in installs for Calm.In addition, a well-known fast food restaurant created a playable, gamified ad where their most popular food items cycle across the screen and the user has to “catch” or stop the screen when they see the french fries. This ad invokes a sense of achievement and reward similar to that of games. The gamified ad generated a 50% higher IPM.Gamifying your creatives is a surefire way to increase your installs. If you aren’t already reevaluating your ad strategy to instill interactivity and achievement, now's the time to start. Beyond gamification, there are more ways to maximize the success of your ads, such as running questionnaire videos.3. Run questionnaire video creativesQuestionnaire video creatives can make users more comfortable entering your app and, in turn, answering questions.For apps beyond gaming that may require personal information from users, such as banking apps, to generate a personalized experience, highlighting how seamless the process is and how little input is actually needed is important for getting users comfortable with your app. To make users comfortable as early as possible, run questionnaire video ads, which function as mini tutorials guiding users through the beginning stages of the app journey. These creatives also help users understand the app functionalities that align with their specific interests. Many apps beyond gaming have a diverse offering of services and questionnaire creatives can educate users about which are relevant for them.For example, a leading weight-loss app developed an interactive creative that asks users about the necessary criteria to build out their fitness plan, mimicking the onboarding experience of the app itself. Users are asked about their gender, body type, and age before being directed to their personalized fasting plan. This short questionnaire video shows users how easy it is to get their own personalized weight-loss plan and encourages them to get started.Similarly, a well-known finance app created an interactive ad that takes users through the process of customizing their own debit card. Without asking any personal or private questions right off the bat, the finance app eases the stress users may have sharing their information with a digital bank.Diving deeper, coupling your questionnaire video with a carousel endcard is a great way to maximize the performance since interactive end cards enhance user engagement and drive more meaningful connections. They have the ability to set expectations for what different types of user experiences will look like once they enter your app.While each app category appeals to a different type of user, and the ads you choose to run should reflect your audience’s typical behavior, it’s still important to diversify your app growth strategy.4. Turn on CPE campaignsFirst, advertisers started diversifying their in-app advertising strategies by running interstitials and rewarded video alongside banner ads, broadening their ad strategy into full screen creatives. Seeing success from these ad units, advertisers have started running offerwall to expand their reach even further, and it’s proven to be a valuable addition.Offerwall uses the CPE (cost per engagement) pricing model, which means you choose a post-install event and only pay for users who engage in that specific event (for example, when the user posts an update or uses a certain photo filter). This makes CPE incredibly cost-effective while offering immense scale.With CPE campaigns, you’re able to optimize towards events that better predict long term user value and stickiness versus an install, ensuring you’re only paying for high LTV users.On top of that, these events can occur at down funnel points in the app that can take a while for users to get to, encouraging users to engage with down funnel events to get their reward.Finance, entertainment, and shopping apps have generated the most success for CPE campaigns because these app categories often have high-value events deep in the funnel that often result in long term app usage. For example, subscribing, depositing money, transferring money, linking a bank account.Getting started with offerwall: why it's important and how to succeedIn-app advertising, especially for apps beyond gaming, is a hot topic in user acquisition today, which means it’s crucial for you to focus on optimizing and perfecting your strategy to gain a competitive advantage. These four tips, backed by examples and data, are a good starting point.]]></description><link>https://unity.com/blog/4-ways-to-scale-and-optimize-your-apps-ua-strategy-backed-by-data</link><guid isPermaLink="true">https://unity.com/blog/4-ways-to-scale-and-optimize-your-apps-ua-strategy-backed-by-data</guid><pubDate>Thu, 21 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 KPIs to watch when A/B testing your ad placement strategy]]></title><description><![CDATA[If you’re looking to improve revenue, your ad placement strategy is a great place to start. Every aspect of ads - placements, reward amount, frequency, and more - influences user engagement, which dictates earnings. Tweaking an ad placement is a strategic process, but A/B testing makes it more straightforward - any change to ads can be tested and evaluated before deciding if it’s worth any potential risk.However, before you can A/B test anything, you need first to know the context of how your business is performing according to KPIs. These KPIs provide a necessary story about every aspect of your game performance, including the effectiveness of a your ad strategy.Here are the 3 KPIs you should monitor and suggestions for ad placement A/B tests to run.KPI #1: Engagement rateThe first KPI to pay attention to is engagement rate. Let’s explore what you can decode from both high and low engagement rate and how this can inform which A/B tests to utilize. As a reminder, engagement rate is the percentage of users who engaged with the ad unit - how many users saw an ad out of all daily users.Low engagement rateRewarded videosFor rewarded videos, low engagement rate can signify a couple of issues. First, it’s possible that players never noticed the traffic driver. This can be solved by attracting more players to the button - you can A/B test different traffic driver positions and colors, different buttons, or just general designs in the area. Generally, if you want your button to be noticed, it needs to be different from all the other buttons in the game. For example, using contrast can help the players more easily identify the button with their eyes.Second, perhaps the user simply didn't see the value in the reward. It’s not easy to predict how many resources a user will need at a certain point in the game, so it’s tough to accurately predict what specific amount of reward would excite users. In this case, it’s best to A/B test different kinds of rewards (e.g. different currency) or the actual reward amount. Here, it’s critical to know your players and what they want during their game process - it tells you what rewards are most exciting at any given moment.InterstitialsIf your interstitials have a low engagement rate, perhaps players aren’t reaching the point where the interstitial is starting. For example, let’s say that a game sets interstitials to pop up on the main page, but doesn’t present this page until after the player completes the first level - if many players get frustrated and log out before completing this level, they would miss the interstitial completely. Here, you can A/B test placing interstitials in a more populated location based on players’ behaviors, such as between levels, when users are most eager to continue playing.Another explanation for a low engagement rate might be that players are being segmented out and don’t see as many interstitials as other players in different segments. If you are segmenting out paying players from interstitials, do so wisely. For example, if your game has a subscription model, players shouldn’t be seeing interstitials unless the subscription runs out.High engagement rateRewarded videosIt’s not just low KPIs that tell a story - you can learn and optimize performance from a high engagement rate too. If engagement is high for rewarded videos, you can assume that these placements were a great fit for players. You should continue to A/B test placements with similar value and currency in different parts of the game. However, if you’re ever adjusting currency, it always needs to work with the game economy - for example, if you’re increasing reward, you need to adjust the game economy to give less of this currency in the rest of the game.InterstitialsPositive engagement rate for interstitials reflects that many players are viewing interstitials. This is great, but it’s worth considering that too many interstitials might overwhelm users, potentially decreasing the amount of daily active users. It’s best to A/B test placing interstitials based on player behavior (e.g. noticing which pages/areas they most often visit) and increasing capping/decreasing pacing - all while being mindful of player retention.KPI #2: Usage rateNext, let’s understand what causes low and high usage rate (how many ads an engaged user is seeing per day) and how you can optimize this information with A/B testing.Low usage rateRewarded videosLow usage rate for rewarded videos indicates that not many users are engaging with ads - likely players don't recognize the value in the reward, or maybe just don’t see its value in the moment. Try A/B testing a different kind of reward to switch things up or reward with a different value to see whether players might be more interested.InterstitialsWith interstitials, a low usage rate hints that the user is simply not being shown enough interstitials. This might be an indication that interstitials should be placed in the game more often. You can A/B test this to determine whether decreasing pacing (showing interstitials on a more consistent basis) can increase usage rate without sacrificing the player’s user experience or engagement with the game.High usage rateRewarded videosIf you’re seeing high usage rates with rewarded videos, that’s great! It seems like players are enjoying the placement of the video to the maximum amount. Why not use A/B testing to test the limits? You can test decreasing the pacing to see whether these users would still be as engaged if they were being offered fewer rewards. This way, players could also be watching more videos, and in turn increase ad impressions. Again, it’s essential to be conscious of the game economy - any increase in rewards must be balanced to ensure it keeps its value.InterstitialsSimilar to rewarded videos, high usage rates with interstitials reflect that a large amount of players are viewing interstitials, and the ad placement is high quality. A/B testing other placements and capping/pacing to increase exposure to interstitials will ensure that you’re finding the right balance - players should regularly see ads but shouldn’t be overwhelmed in the process.KPI #3: Impressions per DAULet’s also explore the meaning of impressions per [tooltip term="daily-active-users"]DAU[/tooltip], both low and high, and how this should factor into A/B testing decisions. As a reminder, impressions per DAU is the average impressions per user on a given day - the total number of impressions divided by the number of active users.Low impressions per DAURewarded videosIf you’re finding low impressions per DAU for rewarded videos, check the usage rate - if it’s still high, it’s likely that players aren’t noticing your traffic driver (and the only ones finding value in it are the ones who notice it). You should A/B test making the traffic driver pop more - for example, making the button the only animated part of a page automatically makes players notice it and engage with it more often. When impressions per DAU are low, exposure is crucial - this includes placing drivers in popular locations and pages, and locations that are easy to find and click.InterstitialsWith interstitials, low impressions per DAU collects many of the similar problems from low engagement and low usage rate. It implies that players aren’t visiting places in the game with the interstitial, might be segmented out, and generally aren’t seeing enough interstitials. Like the other KPIs, A/B testing recommendations include: placing interstitials in more popular locations, segmenting more carefully, and decreasing pacing so players can see more interstitials.High impressions per DAURewarded videosHigh impressions per DAU for rewarded videos, like high usage rate, indicates that the ad placement is a great fit for players. Similarly to high usage rate, it’s best to first A/B test increasing the capping and decreasing pacing to see whether you can show players more ads and retain their engagement.InterstitialsHigh impressions per DAU is confirmation of great interstitial placements. It’s recommended to A/B test ad placements and modifying capping and pacing, but it's important to keep in mind that high amounts of interstitials can cause churn - lowering the amount of daily active users. This KPI captures all players, so you should be mindful that your A/B testing isn’t sacrificing retention.Informed by these KPIs and many more, A/B testing turns data into an actionable plan, so it’s essential to know how to use and utilize it for your business. In fact, ironSource’s A/B test tool has simplified this process, so now you can split users into two groups to test ad monetization strategies - all within a few clicks. Check out more.]]></description><link>https://unity.com/blog/3-kpis-to-watch-when-a-b-testing-your-ad-placement-strategy</link><guid isPermaLink="true">https://unity.com/blog/3-kpis-to-watch-when-a-b-testing-your-ad-placement-strategy</guid><pubDate>Wed, 20 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 A/B tests you should run to increase your revenue]]></title><description><![CDATA[A/B testing is a core part of any successful developer's monetization playbook. To improve your KPIs, you should test just about everything - from rolling out new ad units and optimizing waterfalls, to determining your ad strategy using capping and pacing. By A/B testing changes in your monetization strategy, you can make data-driven decisions, minimize risk, and increase revenue. Here are 5 of the most important A/B tests you should run.1. Test a new ad networkLooking for higher fill rates and even higher [tooltip term="ecpm"]eCPMs[/tooltip]? Integrate as many ad networks as possible so increase the amount competing for your inventory. The best way to know the value of adding a new network is by testing it out first. It’s important to assess whether the ad network would cause any technical issues, and whether the benefits are worth the effort.
The key metric to look for when A/B testing a new ad network is [tooltip term="arpdau"]ARPDAU[/tooltip]. You should also keep a close eye on metrics like eCPM, [tooltip term="engagement-rate"]engagement rate[/tooltip], and [tooltip term="app-retention-rate"]retention[/tooltip].You’ll be able to find these KPIs in the reporting dashboard of your mediation platform, and even run the A/B test inside the platform, too. For example, ironSource’s quick A/B test tool helps you come to a fast decision about your monetization strategy, with minimal effort. This means you can start increasing revenue as soon as possible, without wasting time on operational overheads.Use ironSource’s A/B test to test a new ad network2. Test waterfall optimizationBidding is quickly becoming the default for monetization, but the industry is still operating in a hybrid mode that combines bidding with traditional waterfalls. Making sure your waterfalls are fully optimized is crucial for maximizing revenue - and A/B testing is the best way to achieve this outcome.There are numerous waterfall settings that you can A/B test, such as testing a new waterfall for a country, different instance pricing, adding or removing instances, waterfalls for segments, and groups. Groups allow the flexibility to control your waterfall based on country and user segment - or a combination of both.These settings can have a significant impact on your bottom line. Testing a new waterfall setup, for example, could bring in an influx of highly relevant demand for your ad space, so changing your price points on the instances in your waterfall could help increase competition for your inventory, bringing higher eCPMs and ARPDAU.The quick A/B testing tool’s biggest pull is its ease of use: it simplifies what is often a complicated and time-consuming process, and lets you change anything you want from your mediation management page.“Using the A/B test tool, we tried the new waterfall configuration before switching over completely. Doing so proved the waterfall suggested by ironSource performed better - in fact, that waterfall had a 52% higher ARPDAU.”



Alper Reka, Head of Monetization at Ruby GamesUse ironSource’s A/B testing tool for optimizing waterfalls3. Testing different capping and pacingA/B testing capping and pacing can also bring a revenue boost since it helps you find the ad settings that best maximize revenue. For example, if you see that users are highly engaged with a rewarded video placement that’s presented every 6 hours, A/B test the pace and present this placement every 4 hours. Because they were highly engaged with the ad placement, you can test showing the users more ads without sacrificing their user experience - ultimately increasing revenue.Similarly, you can A/B test increasing the capping, or the number of ads shown in a session. If users are highly engaged with interstitials, you can test increasing the cap - they’ll see more ads and you’ll increase your game’s income. This process should be gradual, because increasing interstitials is a tricky balance - you want revenue, but too many ads can bother users and affect retention.4. Test banner refresh rateAdding [tooltip term="banner-ads"]banners[/tooltip]to your strategy ensures you’re monetizing every user, not just the ones who engage with rewarded ads. To maximize banner performance, A/B test the refresh rate. A 5 second refresh rate will allow for many impressions, but it might not have a successful outcome - it might move too fast to understand the ad content or distract users from focusing on the game. Also, refreshing too often might cause the banner to fail to load properly for the user.Why not lengthen the banner rate? Users would more likely be more engaged and click on the ads, but then impressions would be minimal. Using the A/B testing tool, you can make specific and intentional changes that will slowly but surely find the sweet spot that keeps the user experience positive, while maximizing your revenues.Use ironSource’s A/B testing tool to update your banner refresh rate5. Update rewarded video reward amountFor rewarded videos, the A/B testing tool helps you determine the ideal reward amount - ensuring that you’re maximizing profits in your game by knowing just what to adjust. For example, if players aren’t engaged enough with a specific placement, it could be because they don't see enough value in the reward. To increase engagement, test a different reward amount or even a different type of reward, as long as you’re making one change at a time. Here, you should be most closely monitoring changes in ARPDAU engagement rate, and user retention.On the other hand, users who are actively engaged can also be seen as an opportunity to generate revenue. You can A/B test adding more placements similar to these popular ones and find the sweet spot where you maximize revenue and retain high engagement. It’s essential to be mindful of the game economy - if you’re offering more rewards, make sure they still retain their same amount of value.Use ironSource’s robust A/B testing tool for testing new ad contentA/B testing is the easiest way to evaluate every type of change in your growth strategy. With ironSource’s A/B testing tool, the tech does the heavy lifting, automatically and randomly dividing traffic 50/50 into two groups, with the data presented on the monetization platform so users can view and analyze it all at once. Performance KPIs are totally transparent and can be broken down from day one, so you can track your results and end the test as soon as you’re convinced.Learn more about our A/B testing tool here.]]></description><link>https://unity.com/blog/five-a-b-tests-to-increase-revenue</link><guid isPermaLink="true">https://unity.com/blog/five-a-b-tests-to-increase-revenue</guid><pubDate>Sun, 17 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Unity 2021 LTS]]></title><description><![CDATA[Unity 2021 LTS delivers powerful improvements to workflows, rendering capabilities, and platform support to help you realize your creative ambitions. New enhancements prioritize quality, productivity, and performance for any platform, genre, or artistic style.Today, we’re excited to announce that Unity 2021 LTS is available to download and use. This release represents more than a year of focused development across the entire Unity Editor and underlying foundational features. In 2021, we continued our commitment to putting quality first in order to make your experience working in Unity more stable, productive, and efficient than ever before.The LTS release combines the features we rolled up in our Unity 2021.1 and Unity 2021.2 Tech Stream releases with an additional six months of quality polish. This means you can choose the Long Term Support version with confidence that you’ll experience highly dependable workflows and incredibly stable games that hum on any platform you target.LTS releases are published annually, with two full years of support and biweekly updates to ensure you have the absolute latest fixes when you need them.Want to know more? Check out the Unity 2021 LTS feature pages for programmers and artists, or watch the GDC Developer Summit Roadmap session.We focused Unity 2021 LTS development on four key areas.First, we focused on offering more accessible workflows for all creators, regardless of their role in the project. This enables you to build immersive experiences more quickly by taking advantage of the improvements we’ve made on how you work in-Editor.Integrated visual scripting is available in Unity 2021 LTS. Easily the most exciting feature in the release, this approach can benefit anyone, from non-coders who want more autonomy to seasoned programmers quickly prototyping new functionality. Most Unity scripting processes can be replicated through a visual drag-and-drop interface that allows you to create and prototype without having to write a line of code.We’ve also improved how quickly assets are imported into the Editor and made it easier to manage PSD imports for 2D game components. Get through your worldbuilding phase faster with updates to Terrain Tools, and discover improvements to VFX Graph, Shader Graph, and Cinemachine.Next, we wanted to give you the ability to iterate faster and produce higher-quality experiences for your players. We’ve upgraded workflows across the board, provided better Editor usability, and enhanced our testing tools.Minimize time from design to hands-on creation by leveraging Feature Sets, which gather all the packages you need to start a project in a one-click bundle. Find what you’re looking for faster with improved search capability, and experience an added zippiness in common operations you use regularly.Make sure your code is clean, performant, and high-quality with a new Mono upgrade, improved C# 8 support, and incremental builds that compile your project as you create it. A comprehensive Memory Profiler allows you to profile with multiple Players simultaneously.Follow up that quality coding experience with tools that facilitate an equally high-quality output. In Unity 2021 LTS, you’ll find a mobile Device Simulator to check for compatibility on multiple devices. Use the production-ready Code Coverage package with the Test Runner to export code coverage data and reports from your automated tests. Additionally, the Code Coverage package offers a Coverage Recording feature that allows you to capture coverage data on demand for manual testing or when there are no automated tests in the project.Our third area of development was to couple all the work on the Editor with an equal focus on improving graphics capabilities for your projects. Craft stunning visuals with a collection of powerful rendering solutions, all supported by a comprehensive ecosystem of graphical tools.Our Universal Render Pipeline (URP) is optimized for maximum platform reach so your players can enjoy fantastic graphic fidelity regardless of their device. In Unity 2021 LTS, you’ll find upgrades to URP for Point Light shadows, Lens Flares, and decals.If you’re looking to get the maximum performance for a specific platform, the improvements we’ve made to the High Definition Render Pipeline (HDRP) include realistic cloud definition with Volumetric Clouds and Static Shadow Casting.Craft stunning visuals with powerful rendering solutions supported by an ecosystem of tools. Push the limits of high fidelity with HDRP performance upgrades and features like NVIDIA DLSS for desktop and AMD FSR native support in URP.Be where your players are with support for innovative new platforms and technologies. Expand your development capabilities with ChromeOS and macOS-based Apple silicon support, and achieve even more impressive results on the latest generation of PlayStation 5 and Xbox Series X|S consoles. Develop for augmented and virtual reality worlds with OpenXR and Oculus enhancements, or create for mobile by optimizing with Samsung Adaptive Performance 3.0 and tap into seamless publishing with Android asset bundling.Wherever you are in your production process, we offer the resources to help you bring your project to the finish line and beyond with Unity 2021 LTS. See all the news in the release notes and in the Unity Manual, and then download Unity 2021 LTS from the Unity Hub.We also prepared a series of upgrade guides to help you transition from Unity 2020 LTS or Unity 2019 LTS to Unity 2021 LTS. For complex productions with a high number of dependencies, contact Unity Support and Services for help to make the upgrade process smoother.Unity 2020 LTS is now the legacy version. It will be updated monthly until it reaches the end of its support cycle in mid-2023. Please note that Unity 2019 LTS is approaching its end of life, and the last supported update is scheduled for release in the beginning of June.We work with the belief that the world is a better place with more creators in it. That drives us to always look for ways to make the platform better for you. Give us feedback on how we’re doing, what you think of the Unity 2021 LTS release, and what you’d love to see next in our forums.We can’t wait to see what you create next.]]></description><link>https://unity.com/blog/engine-platform/introducing-unity-2021-lts</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/introducing-unity-2021-lts</guid><pubDate>Tue, 12 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unpredictably fun: The value of randomization in game design ]]></title><description><![CDATA[Learn how to inject randomization into your game to keep players engaged and eager for the next scene. This is the second post by Christo Nobbs in his series on designing systems, expanding on his contributions to The Unity game designer playbook. Check out the e-book for more on how to prototype, craft, and test gameplay in Unity.In his earlier blog post, Christo touched on how designers can create systems in their games that result in intriguing and unexpected gameplay. In this post he delves deeper with examples on how to set up randomization.You can entice players into further exploring your game world’s systems, and devise unique experiences for them, with visual prompts. The previous post, Systems that create ecosystems: Emergent game design, outlined a sandbox space wherein everything is made and constructed from wood with the possibility of unpredictable fire propagation. Let’s build on this example by giving players the ability to cut down trees with an axe.Assume that the landscape where players stand is flat. They don’t know which direction the tree will fall in when they chop it down. What if some trees were “snags” – meaning they’re dead but still standing? They could fall at any moment. An unpredictable element like this in the game will startle the players and intensify their play environment.You can add any number of visual cues to show players that falling trees are dangerous in this world and keep them on their toes. The clues will help players spot differences between the more dangerous snag trees and those that are healthy and less threatening. They will have to choose how to weigh the risks: Would it be wiser to scavenge for firewood from trees that have already fallen and avoid being injured by the dead trees waiting to fall?As a designer, be sure to map out where these systemic chain reactions occur, and design into them, supporting when players set them off, such as trees falling unpredictably, catching fire, and thereby spreading delightful chaos.The Random scripting class in Unity is a static class that provides you with approaches for generating random data in a game. This class has the same name as the .NET Framework class System.Random and serves a similar purpose, but differs in some key ways – one being that it’s 20% to 40% faster than System.Random.Below are the static properties and methods available with the Random class:Static propertiesinsideUnitCircle: Returns a random point inside or on a circle with radius 1.0 (read-only)insideUnitSphere: Returns a random point inside or on a sphere with radius 1.0 (read-only)onUnitSphere: Returns a random point on the surface of a sphere with radius 1.0 (read-only)Rotation: Returns a random rotation (read-only)rotationUniform: Returns a random rotation with uniform distribution (read-only)state: Gets or sets the full internal state of the random number generatorvalue: Returns a random float within [0.0..1.0] (range is inclusive) (read-only)Static methodsColorHSV: Generates a random color from HSV and alpha rangesInitState: Initializes the random number generator state with a seedRange: Returns a random float within [minInclusive..maxInclusive] (range is inclusive)The previous blog post explored the role of design levers and the use of ScriptableObjects to store those values. You can replace those values with appropriately designed ranges using Unity’s Random.Range, which returns a random float within [minInclusive..maxInclusive] (the range is inclusive). Any given float value between them, including both minInclusive and maxInclusive, will appear about once every 10 million random samples.With this approach you can draw a value from the set range for your result. You’ll have to test several ranges to find the one that works for your gameplay goals, but again, ensure that you design for the defined range you’ve set.Randomness makes for better immersion. For example, let’s say that each tree has a fixed health count of 100, and each axe strike takes 25 points off a tree’s health. This task will soon become predictable, and therefore, boring. Even if you give the trees a health range of 76 to 100, any given tree will be four strikes away from falling. But trying a smaller range of, say, 75 to 76 provides a greater variety of gameplay outcomes, as a tree will take between three and four hits to fall.Another way to make this scenario interesting is to indicate health changes through clear visual cues instead of health bars. Doing this will allow the player to learn, through gameplay, approximately how many axe swings it’ll take for a tree to fall. Visual cues add some limited unpredictability that can be balanced and adjusted for the target gameplay. Using the Random class instead of a fixed value enables you to transform a monotonous task into a fun one.To expand on this example, you could choose to remove a random value between 15 and 25 health points for each axe swing. Doing this makes it so that players can’t easily predict how many swings it’ll take to cut down a tree. They’ll need to rely more closely on visual clues to gauge when a tree will fall; clues like the size of chunks flying from the tree or cracks forming up the trunk, branches falling, sound effects, and so on.They won’t know precisely when each tree will fall, but over time, as players chop down more trees, they can make educated guesses, ultimately improving their chances at survival.Randomness aims to give players unpredictable challenges that push them to calculate risk and manage the result.Let’s look at a few more examples of how to use the Random class.Imagine a card game with an AI enemy that plays its card solely based on the player’s move. This event would quickly become predictable without randomness as it would return the same result each time.Even setting probability at 50% is too simple a randomization and would soon become obvious to the player. Instead, try adding layers of randomness based on player actions. Doing this will create intricate systems that offer something more dynamic than choosing between two cards in a pool, or whether or not that card is chosen over one of many from the existing pool.You can add levels of difficulty to the card table by making the enemy favor certain cards over others; decisions predicated on a value it’s been given, or how complete its composition is before attacking, for instance. A boss’s card can multiply its damage ability when played with other power cards, so the enemy waits until a certain variety of power cards are in hand to ramp up the difficulty for the player. You can add “weight” to such a composition by increasing or decreasing the probability of the boss card being played with certain other power cards.You can use randomness in different forms for your games. Perlin noise, for example, has natural qualities and generates gradient noise from a seed. Try using it in Cinemachine to create a more organic camera feel for third-person follow cameras.To try Perlin noise, check out the Starter Assets – Third-person Character Controller, or Gaia packs on the Asset Store, along with documentation on how to use Mathf.PerlinNoise.In an interview, Chris Butcher, one of the lead engineers on Halo 2 by Bungie Studios, discussed the game’s AI, saying, “The goal is not to create something that is unpredictable. What you want is an artificial intelligence that is consistent so that the player can give it certain inputs. The player can do things and expect the AI will react in a certain way.”With that in mind, how should you set up AI agents to keep your game feeling unpredictable and alive?One way to experiment with this is to combine Starter Assets with AI tools from the Asset Store, such as A* Pathfinding Project Pro, a tool that lets you move an AI agent to a given point.Once the AI agent moves toward the player, the player expects to be attacked. But what if it starts a conversation instead? What about adding more NPCs that move around and blend into the space for a more lively feel? These NPCs could choose points given to them linearly, one by one, or better yet, pick logical points based on a set of rules using the Random class.Let’s say you have an AI agent that shoots at the player with a weak bow and arrow. Unfortunately for the AI agent, it has to be a certain distance from the character because the maximum range for firing is 10 meters. The AI gets into position in front of the player, 10 meters away, and shoots. It’s not an exciting or ideal setup, especially if you add a second shooter fighting for the same position on the NavMesh.For a more interesting scenario, choose an area where the enemy should approach the player. Do this by using Random.insideUnitCircle, passing the vector2 result into a vector3 for X and Z axes, and then harness RandomRange for both to get an area with a minimum and maximum radius around the player.The AI agent should choose a point within an acceptable range around the player and shoot, rather than closely approach the player. To add more excitement to the game with minimal coding, apply this to all AI agents so that they attack the player from multiple angles. The AI action is predictable up to a point because you know that the agents need to be a certain distance away to attack, but you can’t predict the angles from which they will strike.You can build on this example by giving your AI agents the ability to attack in a melee. Use the same random point from the player with a tighter radius. This way, the AI agents choose from a pool of attacks when it’s time to strike.The player knows that they can be attacked by a melee formation, but from what direction? Would there be an overarm top-down strike? Or a wide swing from left to right? They would have to read the telegraphing on the animation to determine what’s coming their way.This scenario can get complex if you have multiple enemy NPCs meant to attack the player at the same time. But if you look at Far Cry 2 by Ubisoft, for example, the player is not attacked by all the enemies at the same time. Different enemies will attack at different times, in random ways. You can learn more about this example and other AI scenarios in this video from Game Maker’s Toolkit.If you attempted to realistically replicate the results of actions taken from the real world into your game, it would require complex, multifaceted equations or a well-trained ML agent. In the end, it might all look out of place, take a lot of time and technical overhead to implement, and still be difficult to balance and control with understanding, if poorly architected.Yet by using Unity’s Random class, game designers can create believable results for their scenes with tight control over excitement levels, in less time than it would otherwise take. Randomness, of course, is not always appropriate. Predictability remains essential. But if placed in the right areas, at the most opportune moments, you can deliver unique experiences to your players that make them want to play again and again.]]></description><link>https://unity.com/blog/games/unpredictably-fun-the-value-of-randomization-in-game-design</link><guid isPermaLink="true">https://unity.com/blog/games/unpredictably-fun-the-value-of-randomization-in-game-design</guid><pubDate>Mon, 11 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity and Urban Arts are creating brighter futures for underserved students]]></title><description><![CDATA[Join us in congratulating Urban Arts (UA) on 30 years of life-changing excellence. Since its inception, UA has served more than 250,000 students across 150 New York City public schools. Unity is proud to be one of UA’s key partners, helping students from low-income communities explore their creativity and harness technology to defy the odds and achieve their dreams.Over the past year, Urban Arts has served over 8,000 students, with more than half coming from Title I schools. Unity CEO John Riccitiello was the guest of honor at UA’s Color Ball in New York City on April 7, 2022, in recognition of a partnership that’s bringing high-quality RT3D education to the next generation of creators.UA’s School of Interactive Arts (SIA) uses Unity to teach video game design and related skills like coding, animation, and story development. Through this training, students develop the abilities and confidence to pursue careers in a variety of creative and technical fields.Working with Unity tools, UA students have created games that address the COVID-19 pandemic, climate change, and other social issues, alongside more lighthearted projects like smoothie mixing, card-based magician duels, and DJ sets. Some students have even taken their games to crowdfunding platforms like Kickstarter, flexing both their artistic and marketing skills.Beyond real-time development, Urban Arts helps its students with AP and SAT exam preparation, financial aid applications, and college application fees. They also connect students with mentors and internships, ensuring they emerge as highly skilled and career-ready leaders.Over the past six years, School of Interactive Arts students have earned over $7 million in scholarships and gone on to attend first-rate colleges and universities including Stanford, Columbia, USC, Hunter, and Rutgers.Unity is proud to support Urban Arts in providing equitable STEAM education that prepares tomorrow’s innovators, creative thinkers, and entrepreneurs for success.Learn more about Urban Arts.]]></description><link>https://unity.com/blog/news/unity-and-urban-arts-are-creating-brighter-futures-for-underserved-students</link><guid isPermaLink="true">https://unity.com/blog/news/unity-and-urban-arts-are-creating-brighter-futures-for-underserved-students</guid><pubDate>Mon, 11 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting started with offerwall: why it's important and how to succeed]]></title><description><![CDATA[For over a decade, apps have found success monetizing with offerwalls, an in-app advertising unit that acts like a mini-store, listing multiple “offers” that users can complete in exchange for receiving an in-app reward. The user gets full control over which offers they engage with and how often. Today, developers see record earnings from this ad unit - eCPM in the US can reach $1,500 and average $400 across genres. Per user, monetization rates range from $0.07 to $0.33 according to MarTech Series.Only recently, however, have apps beyond gaming realized the importance of this sort of value exchange. Offerwalls drive revenue and engagement by allowing users to get value from your app without having to pay for an in-app purchase or subscription, meaning your app should already rely on a functioning virtual economy. The offers, after all, function as sources of hard currency without the price tag.Read more about how to implement a virtual economy into your app.Dan McAdams, Sr. Director, Developer Relations at Tapjoy, shares his insights on why apps should implement an offerwall and how you can maximize the success of the ad unit.Why implement the offerwall in your appImplementing an offerwall has a proven positive impact on engagement and revenue, and delivers high eCPMs for apps. The ad unit ensures you’re monetizing each and every user in your app, but how?Users may be resistant to pay, but not to engage with adsWith a free-to-play or subscription monetization model, users expect to gain free entry into your app before being hit with some sort of cost requirement. Users also understand that a lot of premium features will be behind the subscription wall, and they don’t always intend to spend money for access. Users do, however, expect to be able to engage with ads in exchange for rewards or additional content. Enter the offerwall.Offerwalls are completely opt-in and require users to actively seek out the ad unit, meaning it doesn’t disrupt the user experience, but gives each user the opportunity to enhance their journey through your app whenever they want to. With hundreds of ad engagements, or “offers,” to choose from at any given time, users have everything they need to continue interacting with your app when they run out of coins, lives, etc. This means users can remain in your app in the long-term, without dropping a dime.With users familiar with cash back incentives in the real world, users are comfortable and prepared to engage with the offerwall.Users are familiar with cash back rewardsOfferwalls resemble cash back incentives as seen in the real world, which means users are familiar with the monetization tactic and comfortable engaging.It’s no secret that reward shopping is a concept most users can get behind. Many people are members of some sort of reward program, such as the well-known initiatives at CVS, Starbucks, airlines, or even through a credit card. The offerwall is no different - you get rewards for your engagements and interactions.As users engage more frequently with your offerwall and get access to premium features, they may decide to pay for the in-app purchases. It’s important to note that users who convert on ads and users who engage with in-app purchases are not mutually exclusive groups. Once you get a free, special edition frappuccino as a Starbucks reward and love it, you’re likely to just pay for it the next time, but that doesn’t stop you from collecting more rewards.The offerwall is a valuable revenue stream, allowing you to monetize the users who opt-in while encouraging them to eventually convert to paying users. Once you’ve decided to implement an offerwall, there are key tactics to keep in mind.6 tips for optimizing the offerwall to maximize revenueWith the offerwall functioning as a non-paid virtual economy, the key to maximizing its potential means mastering your offers, or currency, and how it flows through your app. With a virtual economy already in place, here are some key tactics for optimizing the offerwall to maximize revenue.1. Ensure your currency generates valueYour app’s hard currency can be simple, such as credits, points, or cash, or even tied directly to your existing in-app purchase offerings. They can also be related to the app experience itself, such as minutes or months of free ads. The main goal is to determine the currency generating value in your app and to use that as your starting point. Whatever currency exchange rate (i.e., 100 credits = $1) you put in place, be sure it uses a similar exchange rate as your virtual shop. Keep in mind that you can always A/B test your exchange rates to ensure they’re incentivizing.2. Foster a sense of achievement through gamificationOne of the many reasons mobile gaming is so appealing is because it gives players a feeling of internal accomplishment, which is often facilitated by virtual economies that make it easier for users to progress. The best way to mimic this same sense of achievement through your offerwall is by gamification - placing value on currency that leads to progression or challenging users to reach goals, for example.A well known shopping app where people bid on products allows users to earn “points” through offerwall, which are transferred to a wallet. The more points in their wallet, the faster users can bid and win products, instilling a competitive mindset.3. Make sure the offerwall traffic drivers are visibleTraffic drivers, buttons that lead users to your offerwall, should be visible, accessible, and easy to find. One way to ensure they’re seen, is to show them at multiple places throughout the app, such as the home screen, in the store, or at the top or bottom of the screen. The call to action button should also be clear and direct, such as complete, view, buy, claim, etc. This is a great place to A/B test different options.4. Create urgency around your offersShowing offerwall traffic drivers when users are in need of a boost is important for maximizing engagement. For example, if a user runs out of coins in the middle of a session and needs more coins to save a photo without a thumbnail, they’re likely to open offerwalls. You can also offer limited time sales to incentivize engagement - for example, for a limited time, you can allow users to get more coins in exchange for a less important task. Similarly, if a user is looking to purchase items in the virtual store, you can offer a product that costs more than the user can afford. You can then direct them to offerwall to get more coins.5. Serve the offerwall to groups of users differentlyIt’s no secret that user groups are going to respond to offers differently, which makes segmentation a critical part of your offerwall strategy. You can segment users by paying/non-paying, advanced users/new users, geo, and more. For example, you can increase currency exchange rates to serve different users, based on the user’s familiarity with your app. For example, you could set $1 = 100 coins for early users and $1 = 300 coins for advanced users. You may also want to consider how often you show the offerwall traffic driver to subscribers or users who interact heavily with the existing virtual economy. The last thing you want to do is encourage those users to stop spending real money.6. Brand your offerwall pageYour app has a unique look and feel, and your offerwall should mimic that. When an offerwall is in line with your app’s branding, users won’t see it as an ad but a native part of the device experience, making them more likely to engage.If you've already invested into developing a virtual economy for your app, it may be time to consider the offerwall as a new revenue stream. You don’t want to miss out on the opportunity to give your users another touchpoint to engage and add value to your monetization strategy.]]></description><link>https://unity.com/blog/getting-started-with-offerwall-why-its-important-and-how-to-succeed</link><guid isPermaLink="true">https://unity.com/blog/getting-started-with-offerwall-why-its-important-and-how-to-succeed</guid><pubDate>Thu, 07 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[2021 Unity U.K. binary gender pay gap report]]></title><description><![CDATA[Unity is committed to building a fair and equitable workplace, which includes compensating our employees fairly.Today marks the release of Unity’s first U.K. Binary Gender Pay Gap Report. This U.K. government-mandated report outlines the difference between the average earnings of men and women across the U.K. as of April 2021.The U.K. reporting requirements look at the pay gap, defined as the difference between the average earnings of men and women across a U.K. workforce.As required, hourly pay is calculated for anyone employed in the U.K. on April 5, 2021, who received their whole month’s salary (503 employees), and the data includes the month of April only. This value includes 1) base pay, 2) allowances (such as Cost of Living Adjustment, car allowances, and shift premium), and 3) bonuses paid. All calculations are made after salary sacrifice for pension.Bonuses are calculated for anyone employed in the U.K. on April 5, 2021 (507 employees), and the data includes the 12-month period prior to April 5, 2021. A “bonus” is defined as: performance-based, incentive, commission, and long service awards with a monetary value (cash, vouchers or securities). Non-consolidated (one-off, non-pensionable) bonuses are also included. The value of vested RSUs and options exercised during the reporting period are included.A gender pay gap is a reflection of multiple factors, including representation and pay parity. Representation examines how people are distributed among high-paying roles, while pay parity explains how people doing similar work are paid for those roles. In 2021, Unity’s median U.K. gender hourly pay gap was 19%, which is a reflection of lower representation of women in senior, higher paying roles in the U.K. However, a review of pay equity by level and by job in the U.K. indicate no statistically significant difference in base pay by gender (1.39%).Although we have made progress in increasing the representation of women in leadership roles across Unity – going from 28.8% in 2020 to 30.9% in 2021 – and our U.K. mean pay gap is similar to other tech companies in the market, we have work to do to increase diverse representation of leaders both in the U.K. and more broadly at Unity.The results in more detail are examined in the report, which is linked below.2021 Unity U.K. binary gender pay gap report]]></description><link>https://unity.com/blog/news/2021-unity-uk-binary-gender-pay-gap-report</link><guid isPermaLink="true">https://unity.com/blog/news/2021-unity-uk-binary-gender-pay-gap-report</guid><pubDate>Thu, 07 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[What's the next big thing for brands? Interactive end cards for in-app advertising]]></title><description><![CDATA[Interactive video ads can increase the time customers spend watching or engaging with your ad by 47% compared to regular video ads according to Magna Global. After all, in a mobile-first world where our devices are intertwined with the real-world, “interactivity can build organic connections between viewers and branded messages” according to Chad Stoller, EVP of Universal McCann.One such interactive ad unit is interactive end cards (IECs), which can be paired with your existing in-app video ads to enhance user engagement and drive more meaningful connections.Interactive end cards appear at the end of regular 15-30 second video ads and function as mini playables or interactive units that customers can t engage with if they choose. These rich creatives give customers an opportunity to connect with your brand in a unique way while raising awareness for your offerings. For example, if your regular video showcases information about your brand’s clothing, the interactive end card can go a step further and let customers design their own outfit.Interactive end cards are a valuable way to drive deeper customer engagement with your brand from the onset, setting the stage for more quality interactions in the future. Here are 3 reasons why you should consider running these ad units in-app.Leave a lasting positive impression on customersCustomers are in control of the experience and have the option to interact with IECs after watching a full video ad, which means those who choose to engage are doing so for some extra bit of fun and on their own terms, leaving a powerful, unique impression on viewers. Rather than just sitting back and staring at an ad as it plays, customers can learn something new about your brand they may have otherwise ignored, which will ultimately drive greater recall.In fact, regardless of whether consumers interact or not, these ad units are 32% more memorable than non-interactive ads according to Magna Global. Interactive ads also make customers more excited about brands, 6% more excited according to Magna Global.For example, movie studios develop interactive end cards for customers to build a personal connection with characters and get moviegoers invested in the plot. One movie studio working with Tapjoy, an ironSource company, created an IEC where users play hide and seek with the main character. This way, they anticipate meeting the main character on the big screen. Another movie studio working with Tapyjoy developed an IEC where users collect objects while avoiding the villain. This leaves them intrigued to find out whether the villain or protagonist wins in the end.IECs are a commitment-free, fun way for customers to learn about your brand before clicking to your website. There’s significant growth potential by collapsing the funnel and allowing users to interact and take action with your brand before leaving the ad unit.Even better, interactive end cards allow you to start your dialogue with customers before they enter your website or landing page, reducing friction.Cultivate the customer-brand relationshipWith 96% of consumers saying customer service is an important factor in their choice of loyalty to a brand according to Microsoft, it’s important for people to feel heard and acknowledged as early in the funnel as possible, even before they enter your website.You can foster an open dialogue the first time users interact with your brand through interactive features. There are software solutions and in-app networks that provide countless resources to help you create rich interactive end cards. Pro tip: Use Luna, a product by ironSource, to produce unlimited ad variations.For example, your interactive end card could be a poll or survey asking customers what they thought of a feature mentioned during your standard video ad, giving customers a voice while giving you an opportunity to optimize your creative strategy. If customers thought your ad was disruptive or inappropriate, they can let you know right away through the poll, which will show them you care about customer service.You could also use polls to ask customers about their preferences to show you care about their individual experiences. This will also help you get a stronger idea of what customers are looking for in a new offering. For example, a clothing brand could ask customers whether they care more about free returns or free shipping. This is a great way to determine how to allocate your budget and put emphasis on what’s important to customers.Even if you aren’t using polls and surveys, asking customers to interact with your brand in a fun way is a good start to cultivating the customer-brand relationship before they enter your website. Fostering this dialogue earlier in the funnel will also contribute to encouraging customers to convert to engaged customers.Convert customers to drive action with your brandCustomers remain excited and continue their dialogue with your brand beyond the interactive end card, ultimately driving action, whether it’s a purchase, visit, download, etc. By collapsing the funnel - allowing users to learn about your brand and start a conversation before they enter your website - you can achieve strong outcomes. In fact, ​​interactive ads are 9x more impactful on purchase intent than non-interactive ads according to Magna Global.For example, a well-known political campaign wanted to reach more users at home and encourage them to go out to the polls. They developed an interactive end card to play after the informational video where users drive the candidate’s car to the final destination, which resulted in a record-breaking 9% click-through rate, demonstrating higher-than-average intent to vote.The same goes for purchases. A well-known CPG brand developed an IEC that prompts customers to swipe to match popular snacks. If a customer hasn’t tried one of the snacks before, the ad is intended to pique customers’ interest about the new flavor and encourage them to buy a bag. If they like it, they’ll remain customers in the long-run.IECs are a surefire way to expand your consumer reach and convert users to drive action with your brand. Being exposed to a new product and learning about its value through a fun, engaging ad before the website puts your brand in a great position to see customers start their journey with your brand.Interactive end cards encourage brand awareness and brand engagement early-on in the funnel. After all, with most well-known brands utilizing the same approaches to customer engagement, IECs are an innovative way to cut through the noise.]]></description><link>https://unity.com/blog/whats-the-next-big-thing-for-brands-interactive-end-cards-for-in-app-advertising</link><guid isPermaLink="true">https://unity.com/blog/whats-the-next-big-thing-for-brands-interactive-end-cards-for-in-app-advertising</guid><pubDate>Wed, 06 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Your UA strategy could be better - here’s why it needs playable ads]]></title><description><![CDATA[The mobile advertising industry is shifting, and all signs are pointing towards playable ads becoming the next big thing. In fact, playable ads became the most used ad format last year by mobile users, outperforming interstitials, video, and banner ads. On Facebook’s News Feed, users who downloaded an app from a playable ad were 6x more likely to make an in-app purchase and to engage with the app 60% more often. It could be that in an age where a new generation of users are growing up with a digital-first mindset, playable ads offer them a more interactive and immersive experience than other formats. Or it could be that playables give UA managers unique insights into their campaign performance, which is particularly helpful in a post-IDFA era where there’s limited transparency into how users interact with your creatives.There are many explanations for why playable ads are on the rise - and why you should include them in your UA strategy. To break this down further, John Wright, Head of Global Growth Partnerships at ironSource Luna, shares the top 5 reasons your campaign needs playables.1. Achieve incremental scale by diversifying your creativesWith any UA strategy, you need to avoid pinning all of your hopes and resources on one type of creative. There will usually be a particular creative that performs best and helps you attract more traffic than other types, but if you look at any of your campaigns, you’ll notice that one type of creative doesn’t take 100% of traffic. Each brings its own traffic that represents incremental scale. Other types of creatives can also bring value in the form of higher user quality - different ad units resonate with certain audiences, so can yield higher ARPU.Playables give you the opportunity to diversify your creative strategy to attract more scale and reach high-quality users who tend to engage more with this ad type. Users interacting with playable ads tend to drive higher LTV because they get a feel for your app before installing it, so they’re more likely to retain. This ad unit can also perform better on certain networks and platforms - the better your creative performs, the higher your eCPM, and the more incremental scale you can achieve on top of the traffic you’re already generating from your other ads.Hero Squad by 8SEC used to rely only on video creatives and GIFs. Using Replay, they increased their video production and testing abilities, then began using Elements to turn these video creatives into high-quality playables. Improving their video creatives and expanding into playable production helped the 8SEC team diversify their UA and start reaching high-quality users at scale. Their game achieved 74 million impressions and increased CVR by 30% with the creatives built using ironSource Luna.2. Optimize more effectively with unique access to in-ad dataPlayables present a unique opportunity to gather in-ad data not available in other ad units. In contrast to video ads which only have impression and click data, setting up in-ad events in playables lets you measure user behavior, like engagement-rate, time to engage, and completing an action (e.g. completing the tutorial). You can then use these metrics to optimize your in-ad experience - knowing how users interacted with your playable can help you adjust your creative strategy to appeal to other users more effectively.Your developers can also use this data to make sure that the flow from pre- and post-install feels seamless. When users get a smoother experience going from the creative to playing the game itself, they usually retain for longer. If you’re seeing high user dropoff right after installing, for example, your playable needs to be optimized to more accurately represent gameplay.Getting a full view of the user funnel in your playable can also benefit the game design itself. Let’s say you see the win rate of your playable is very high, but CTR is low. This could mean users find the creative too easy and aren’t tempted to install your game and keep playing. You make gameplay in the playable more challenging, which lowers win rate, and you see CTR increase. This indicates your users prefer more challenging gameplay. You then use a snippet of your playable as a video creative, which helps the entire creative set perform well.3. Combat ad fatigue by making many, quick variations of your creativeDesigning more versions of your creatives can overcome the major obstacle of ad fatigue. The more times users see the same creative, the less likely that they’ll convert - showing them the same ad doesn’t make them more tempted to install your game. Trying new creative concepts lets you reach the users that didn’t download the first time by showing your game in a new light. The more variations you create, the more chances you have to find a twist that hooks these users. With playables, you have the ability to quickly try out new creative components and make optimizations without having to go through the recording and editing process of videos. This makes it faster and easier to build many versions of your ad so you can reach users in new ways and encourage them to download your game.For example, Tastypill used Elements to concept-test more playables. Within one month, they built and tested 20 playable ads - within three months, this increased to 172 Elements-built playables. Overall, they doubled their ability to concept-test, which helped boost the IPM for their game Bottle Flip 3D by 115% and drive 33 million impressions. They also no longer needed to rely only on their Unity developers for playable production, which gave this team 3x more time to devote to game improvements and live operations.4. Stay ahead of competitorsYour UA team should be following - and, more importantly, testing - new and innovative strategies. And playables are among the latest innovations in mobile marketing. Before, static interstitials were the most popular ad unit until video took over. While video remains a majority of the market, there seems to be a shift towards more user-friendly and intricate creatives, like playables. Younger users have grown up with videos and even playables as their first introduction to mobile advertising. With the major platforms like TikTok, Facebook, and Snap now offering playable ads, users get these immersive experiences where they spend much of their time.Now, 28% of app marketers cite playables as their most effective in-app ad format, but we’re expecting this to increase. Get into the game and ahead of your competitors before you end up as a late-comer.In addition to the ones we’ve already gone over, Sunday, a studio that once wasn’t running any interactive ads, used playables to stand out from the saturated game market and achieve incredible success. They used Luna Playable to start building them internally with the development team they already had in place. Doing so improved the efficiency of their creative workflow without using more resources - for their game Cat Escape, they created 16 playables that helped increase IPM by 55% so they could scale into the top 10 within 10 days.5. Test a new game feature before you build itUnlike video where you need to record footage from the game itself, you can build playable experiences that aren’t necessarily available in the game at that stage. This gives you a unique opportunity to test game features, like new characters or mechanics, without actually integrating them into your build first. That’s a big advantage because changes to your build can affect in-game metrics - playables let you test the feature first so you prevent any negative impact to retention, playtime, and user quality. It also ensures you’re making game design changes based on actual data.You can see how a new element performed in a playable ad then test it in your build to confirm it moved the needle for your in-game KPIs.Running with playablesEvery UA strategy can benefit from playables. These are five of the top advantages, and you could discover even more once you start running with this ad type. Getting started with in-house playable production can be simple. Using a tool like Luna Create Hub you can build playables without any coding or use Unity to design immersive experiences from your game’s existing assets. Stay ahead of the curve and see for yourself the impact playables can make on your UA campaigns, and on your entire operation.]]></description><link>https://unity.com/blog/your-ua-strategy-could-be-better-heres-why-it-needs-playable-ads</link><guid isPermaLink="true">https://unity.com/blog/your-ua-strategy-could-be-better-heres-why-it-needs-playable-ads</guid><pubDate>Thu, 31 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Supporting the next generation of game developers in Pakistan]]></title><description><![CDATA[In October 2020, Unity launched its Charitable Fund in association with Tides Foundation. The purpose of this fund is to support nonprofit organizations and social impact creators who are making a positive difference in the world.Generation is on a mission to transform education-to-employment systems and help prepare, place, and support people into life-changing careers that would otherwise be inaccessible. They’re not only a Unity Social Impact grantee, but a valuable partner in pushing our inclusive economic initiatives forward. Through the Charitable Fund, Generation was granted $250K to run a Unity training bootcamp in Pakistan with the goal of upskilling and placing at least 80% of participants into jobs within 90 days. They’re on track to exceed this target! Read on to learn more about the program and its outcomes.“The curriculum was designed well. I enjoyed using the Unity Learn platform, working with the course instructors and getting to know the other learners. It was an amazing experience, so thank you” - Muhammad AsadTogether, we launched the three-month Junior Unity Developer bootcamp in October 2021, welcoming 95 learners from 39 cities across Pakistan. Our learners came from Tier 2 and Tier 3 universities where the chance of landing a job within the tech sector is highly competitive.The program combined technical elements from the Unity Essentials and Junior Programmer Pathways on Unity Learn with Generation’s curriculum on behavioral and career success skills. Due to the COVID-19 pandemic, our curriculum design teams worked closely together to provide the best possible virtual learning experience. Generation provided devices to learners without adequate equipment.Unity Learn is Unity’s online education platform, designed to give learners the resources they need to become confident Unity creators. With over 750 hours of free live and on-demand learning content for all experience levels, Unity Learn makes it easier for aspiring developers to reach their goals.For this initiative, we leveraged the Pathways courses as well as the functionalities that Learn provides. Learners were able to track their progress, earn XP and unlock assets by completing Units, and submit their projects for feedback. Learners also had access to live instructors to help guide them through the curriculum and provide support when working independently.As part of the bootcamp, learners took part in employer site visits to get a taste of the working world. Through these excursions, learners benefited from:Exposure to professional working environments and in-progress projectsIndividual practice projects to give them a sense of the work they’d be doing in their future careersFeedback from employers to help them improve and prepare for the job marketThroughout the program, participants also had access to personal and professional support. This included wellness mentors, to help with their emotional and behavioral needs, and employability coaches, who provided insight and advice for finding roles in the real-time 3D industry. Mentors supported each learner for the duration of the bootcamp and will remain available for their first six months on the job.We recently had the opportunity to host a roundtable discussion with nine of the bootcamp’s graduates. This gave us the chance to ask them about their experience and if they felt prepared for jobs in the industry. The responses were overwhelmingly positive. Below are a few quotes from the graduates:“The course improved my Unity skills, but also focused on our personality and built up our professional skills. It wasn’t just Unity – it was also how to deal with challenges and solutions that we would face in the real-time industry.” - Farwar Bashir“I was one of the learners that came from a non-coding background. This bootcamp was well-designed in that it allowed me to learn Unity on the most basic level, especially on the Unity Learn platform. It was the first time I was able to make a car move because I wrote some code, and it worked! It really gave me a boost.” - Ahmad Khan"When I came out of the interview room, I had the biggest smile on my face, and I knew in my heart that yes I got the job, I got the job! I received a call the day after the interview, 'yes you got the job, please come to our office for negotiation of your salary'." - Humaira SalamatAt the end of the three-month bootcamp, we achieved:An over 85% graduation rate between both cohortsAn 87% participant job placement rate within 75 days of graduatingA total of 14 female graduates, with 13 placed into relevant jobsAn average salary increase of 163% among all placed graduatesA majority of graduates now working as Junior Unity Developers or Associate Software EngineersA majority of our graduates were from smaller cities where access to employment opportunities in the Real-time 3D industry are scarce. Along with this we had a sizable portion of learners with no educational background in Computer Science or associated fields, who would've otherwise found it very difficult to land a job within the Real-time 3D industry without the necessary experience and educational background. Needless to say, this trial bootcamp was a success!This is only the start of our partnership with Generation. We’re currently supporting two more cohorts in Pakistan set to graduate in spring 2022. We’re also planning to replicate this initiative in Colombia. There’s still much to do to ensure everyone has a fair and equal opportunity to pursue the career of their dreams, however, organizations like Generation are helping us move toward that goal.The work we’re doing with Generation is one of several ways in which we are making an impact and empowering communities to foster positive social change. In 2021, we:Awarded more than $4M in grantsSupported 983 global causes and volunteered 3,240 hoursPrepared 18K learners to access entry-level real-time 3D jobsEquipped 560K students and educators to access RT3D curriculum and trainingDonated over $1.2B in software grants to schools, students, and educatorsLearn more about our Social Impact work.If you’re a non-profit organization interested in our Social Impact grants, get in touch.]]></description><link>https://unity.com/blog/news/supporting-the-next-generation-of-game-developers-in-pakistan</link><guid isPermaLink="true">https://unity.com/blog/news/supporting-the-next-generation-of-game-developers-in-pakistan</guid><pubDate>Tue, 29 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Dealing with latency in your multiplayer game]]></title><description><![CDATA[This latest guide covers key tricks and patterns to deal with latency in your multiplayer game.Everyone hates laggy gameplay when playing online, but it shouldn’t be seen as an unavoidable part of multiplayer gaming. There is actually quite a lot that you can do to help your players have the smoothest experience possible.However, distance between server and clients, packet hops, a server’s tick and update rate, and a plethora of other issues, developers can get buried in technical issues and your players may suddenly find out they were clocked in the head by something they thought was half the map away.Many multiplayer game genres require low latency, as it can literally mean (in-game) life or death.In our latest guide, we cover key strategies to dealing with latency in your multiplayer game.An overview of network latency and what causes itA comparison between server and client authoritative games and how they affect latencyStrategies to solve for latency issues in your multiplayer game[View the guide]Network latency is the amount of time between a cause and its visible, in-game effect. For example, it’s the time between clicking your mouse button and your in-game gun firing a shot at an enemy.High network latency results in a poor gaming experience for players. That’s why it’s important to understand latency so you can work to reduce its effect in your game.Network latency management is the practice of implementing different strategies and techniques to deal with latency – either reducing it or covering it up from the player experience.To successfully address latency problems, you need to consider the priority and relationship between the following elements:1. Security 2. Reactivity 3. Accuracy and consistencyNo solution is perfect, and every way to approach latency issues has strengths and weaknesses. The key is to find the way that works best for your game and this guide will help you understand how to make that decision.Building a multiplayer game is a challenging endeavor, but also an exciting one. Whether you’re building the next battle royale smash hit, or a cozy online co-op, understanding the nuances of latency and how to manage it is essential in providing a smooth gameplay experience for your players.Access our guide in three ways:View the network latency web guideDownload the e-bookView the guide on our documentation siteCheck out Unity’s Netcode for GameObjects solution and documentation to get started with your next multiplayer project today.]]></description><link>https://unity.com/blog/games/dealing-with-latency-in-your-multiplayer-game</link><guid isPermaLink="true">https://unity.com/blog/games/dealing-with-latency-in-your-multiplayer-game</guid><pubDate>Tue, 29 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Announcing our 2022 Unity for Humanity Grant winners]]></title><description><![CDATA[We believe creators are the key to driving change. That’s why we launched the Unity for Humanity Grant, a program designed to support and empower social impact creators using real-time 3D to make our world a better place.To help storytellers and solutionaries drive their projects forward, we provide grantees with funding, mentorship, and technical support. This year, we also partnered with award-winning artist and activist Common to create the Imagine Grant, given to the project that best inspires audiences to ‘imagine a better world.’Our 2022 grant received over 200 applications which were reviewed by a team of 59 Unity judges based on vision, impact, inclusion, and viability. Finalists for the Imagine Grant were additionally vetted by Common and his team.Today, we are thrilled to introduce the four winners of the 2022 Unity for Humanity Grant and the winner of the Imagine Grant.Imagine Grant winnerImmigrating to a new country is rarely easy, especially for children. Songs of Cultures is a gamified learning experience that aims to help by playfully introducing kids to new languages and customs.Developed in partnership with educators and parents, Songs of Cultures uses AR to turn familiar environments into fantastic musical worlds, facilitating the social integration of children and migrant families. With an emphasis on fun, the app encourages kids to learn about cultural differences, appreciate their own roots, and expand their horizons through the joy of music.Songs of Cultures was created by A.MUSE, a female-founded interactive design studio producing mixed reality experiences at the intersections of art, design, technology, and social entrepreneurship. They’re on a mission to realize a more diverse and compassionate future through empathy, creativity, and community.Inspired by her own immigration experience and Common’s song “Imagine,” A.MUSE cofounder Prof. Binh Minh Herbst hopes Songs of Cultures will “connect the young and old, strengthen family bonds, create joyful memories, and bring cultural awareness to daycare centers and elementary schools. By merging virtual spaces with the real world, we want to bring different ways of life together.”Now that Songs of Cultures has won the Imagine Grant, the A.MUSE team hopes to use the momentum to increase accessibility and bring their game – and its important lessons – to more people around the world.Learn more about Songs of Cultures.Hospitals can be scary places, and pediatric cancer patients often feel anxious before and during their radiation treatments. Augment Therapy set out to change that, developing Augment Adventures to demystify the radiotherapy process and make it less daunting.The experience uses AR to familiarize children with radiation treatment rooms and machines ahead of time, easing their anxieties. And, on the day of their appointment, Augment Adventures guides young patients through exercises designed to reduce stress and help them relax.Having worked with hundreds of children over her 20-year career, physical therapist Lindsay Watson teamed up with cofounder Steve Blake to create Augment Therapy and tackle the unique problems within pediatric care. The company began creating telehealth and remote monitoring-enabled AR exercises for the rehabilitation industry in 2017. In 2021, they were selected to participate in KidsX, the largest pediatric digital health accelerator in the world. From there, they joined forces with Children’s Hospital Los Angeles (CHLA) on a shared mission to leverage RT3D technology in improving healthcare experiences.With their Unity for Humanity Grant funding, Augment Therapy hopes to integrate more diverse avatars, grow their collection of relaxation exercises, and create more custom treatment space renderings.Lindsay says Augment Therapy’s goal is to create “a world where healthcare treatments can be accessed by children and their families without fear. Though many aspects of a child’s healthcare journey are unavoidable, we dream of using technology to make the experience better.”Find out more about Augment Therapy.How does someone with depression perceive the world? Darkening is an interactive VR film that shows you, following director and protagonist Ondřej Moravec through shadowy images of the mind. Combining stylized, immersive animations of Ondřej’s environment and emotions, viewers experience the realities of depression while discovering strategies for coping with it.Ondřej knows that the stigma behind depression needs to change. Since being hospitalized for depressive disorder at age 20, he’s been committed to sharing his story and raising awareness of mental health issues. “I imagine a world where people understand that if you have depression, it's not just a sad day. Depression is an illness. Everybody wants to be seen as the one who is simply ‘okay’, but sometimes we’re not, and that’s not a bad thing.”To promote this kind of understanding, Darkening leverages audience input to reinforce the film’s ideas and convey useful approaches to healing. For example, viewers are encouraged to hum or shout to change scenes – a nod to the important role voice therapy has played throughout Ondřej’s journey.Having won a Unity for Humanity Grant, the Darkening team now plans to promote their unique VR experience by mounting a large-scale distribution campaign.“We think that a film on depression that is also hopeful is very important for everyone, whether they are struggling with mental illness or not. We’re excited to see the reactions of our audience and open important discussions with them.”Learn more about Darkening.There’s no doubt that the climate crisis is one of the most pressing issues we face, and Clément Le Bras is taking a novel approach to securing a sustainable future.Clément is the creator of My Lovely Planet, an eco-friendly mobile game where players’ actions are duplicated in the real world. Plant a tree or tidy up ocean waste during gameplay, and the same actions are taken on Earth! The game’s innovative concept is made possible by leveraging advertising and in-app purchases, which allow My Lovely Planet to fund essential NGO projects around the world.For Clément, technology and games have incredible potential for driving ecological preservation. “Imagine a game that unifies millions of players across the world with one mission in mind: protecting the environment. Where everything you do in the game has a positive impact in the real world.” He’s hopeful that by combining play with tangible action, gamers can be a sizable force in efforts to safeguard our planet.Now that they’ve won a Unity for Humanity Grant, Clément and his team will focus on building community support for their mission of planting and protecting one billion trees, cleaning one million tons of plastic from the ocean, and protecting vital biodiversity.“I’ve seen what wonderful things people can do when you give them the tools to do it. I’ve also always been passionate about gaming, and how games and storytelling can really inspire people.”Learn more about My Lovely Planet.The African population is expected to grow significantly in the coming decades, likely representing a quarter of the world's total population by 2050. To successfully welcome this growth and provide job opportunities for African youth, TOGUNA founder Pierre-Christophe Gam sees the need to imagine a reality beyond the limitations of Africa’s present.A digital and mixed media art installation that envisions a bright future, TOGUNA fuses beautiful dreams with practical solutions to address the issues facing Africa today. The project is rooted in the idea of an African renaissance – an economic, social, and spiritual restoration that can provide a more sustainable model for the whole world by 2070.Inspiration for the project draws from the traditional meeting places of the Dogon people in Mali. For them, togunas are where communities gather to exchange and discuss ideas. TOGUNA aims to emulate the qualities of those spaces to create a modern, interactive public forum for pan-African conversation about the future of the continent.Pierre-Christophe says that “in order to build the future, we first need to imagine it. I see this practice as a continuation of the great tradition of pre-colonial West African griots – the guardians of community memories, which they passed on through initiation songs and stories.”Now that TOGUNA has won a Unity for Humanity Grant, Pierre-Christophe is eager to realize his vision and build an engaged intercontinental community. Working with U.K.-based executive producer Crossover Labs, he has project unveilings scheduled in London and Lagos, and can’t wait to see the public’s response and the conversations that will follow.Learn more about TOGUNA.–Congratulations to all of our winners, and thank you to everyone who submitted their projects for the 2022 Unity for Humanity Grant and Imagine Grant.To connect with us, check out our recently launched Unity for Humanity Community on Discord – a gathering place for social impact creators. There, you can meet like-minded people, locate resources for projects, and stay up-to-date with Unity for Humanity news.Together, we can all imagine a better world.]]></description><link>https://unity.com/blog/news/announcing-our-2022-unity-for-humanity-grant-winners</link><guid isPermaLink="true">https://unity.com/blog/news/announcing-our-2022-unity-for-humanity-grant-winners</guid><pubDate>Mon, 28 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Unity’s latest sample game, Gigaya]]></title><description><![CDATA[*UPDATE: Production of Gigaya has been discontinued. There are currently no active plans to publish it, but it will remain as an internal resource at Unity. We want to thank you for your support and excitement for this project. You can find more information on our forums and feel free to ask any related questions there, we will do our best to answer them where we can: https://on.unity.com/3uZ9UrcAt GDC 2022, we highlighted a glimpse of our upcoming puzzle-platformer sample game, Gigaya. Gigaya is still in active development, but when it’s done, it will be a free downloadable project designed to help developers learn from its creation process.The sample game was created using an ecosystem of Unity tools and features. Throughout the project, you’ll find real-world examples of how these systems work, not just as standalone features but operating in parallel to offer a high quality development product for your games.The community has been asking Unity to make our own games as a way to validate product workflows, and the Gigaya development team is doing just that. The team consists of 15 creators spanning an array of talents, including programmers, artists, designers, and producers.Situated alongside Unity core engineering groups, the Gigaya team is not bound to any specific product or feature. This unique structure gives us perspective into the challenges that indie and mid-sized studios face while trying to ship successful games. This arrangement allows for exploration of tools, features, and best practices, which we then use as feedback to improve the Unity development process as a whole.The Gigaya team isn’t just focused on the technical aspects of game development. Like many studios, the team uses a hybrid of in-office and remote developers who are located around the globe. We face challenges in communication, collaboration, and planning in the same way many modern development studios do. Using this approach, we’ve adopted workflows such as additive scene loading, which allows developers to work in parallel scenes and avoid merge conflicts. These types of workflow solutions help us highlight game production as a holistic process and share that knowledge with Unity developers.Like past demo projects, Gigaya will eventually be free to download and experiment with, serving as both a point of inspiration and as a learning opportunity. Gigaya will also be the first-ever Unity demo to go through the full product life cycle and be published as a free sample game on Steam.By having the project go through the full journey from concept to release, we’re finding new perspective on the development process and identifying strengths and weaknesses. The ultimate goal in releasing Gigaya on Steam is not to compete with other developers but to help identify their pain points and offer solutions to help level up creators of all sizes.Render pipelines are always a hot topic among developers, and Gigaya is no exception. The production team debated which render pipeline would be best for the project, ultimately deciding to use the Universal Render Pipeline (URP) for its cross-platform portability and popularity. Since then, Gigaya has been developed to showcase how URP can be used to create a stylized and unique visual experience that works across a wide range of platforms.Using URP features, our artist and designers have been able to work together to create a world that tells a story in itself. We’re striving for the environment in Gigaya to feel like a real place with a backstory that’s shaped the land into what it is today. To implement this world, our artists have been working with such features as decals, Shader Graph, VFX Graph, and post-processing effects, to name just a few. The result is a world that feels alive and vibrant.Having our in-game hero, Wondu, feel responsive is a key element of Gigaya, and a great deal of effort has gone into creating a robust and modular character controller. Outfitted with a jetpack and arm blaster, Wondu faces the challenges of the game’s world while providing an example of many Unity features working together. The character controller highlights ScriptableObjects, Rigidbody physics, and animation to achieve an optimal platforming experience.We will continue to develop Gigaya over the coming months with an expected release in 2022. Once completed, the sample game, including its assets and source code, will be free for all Unity users to download and experiment with. Steam gamers will also be able to download the build for free from the Steam Store.To hear about the latest developments, visit the Gigaya landing page.]]></description><link>https://unity.com/blog/games/introducing-unitys-latest-sample-game-gigaya</link><guid isPermaLink="true">https://unity.com/blog/games/introducing-unitys-latest-sample-game-gigaya</guid><pubDate>Wed, 23 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Enemies: The latest evolution in high-fidelity digital humans from Unity]]></title><description><![CDATA[Advancing the foundational work they did on The Heretic – seen by four million viewers – our award-winning Demo team now presents Enemies, a brand-new cinematic teaserfeaturing major advances for photorealistic eyes, hair, skin, and more – all rendered in real-time and running in 4K resolution. See it live at Game Developers Conference (GDC), March 21–25.Creating and rendering a believable digital human character is one of the most difficult problems in computer graphics. But in recent years we have also seen substantial advances in many areas of technology, which fuel a lot of excitement among developers to imagine the opportunities that lie ahead. Unity’s own core technology has been constantly evolving to meet creators’ growing expectations for high visual quality and realism, including when it comes to digital humans.As part of our efforts to prepare Unity to run and render realistic digital humans, some time ago our Demo team pioneered The Heretic demo, and now has expanded the work with the creation of Enemies.The Heretic was a foundational step for us on the road to Enemies. We learned so much, developed new technology that laid the groundwork for further development, tried various approaches, made our fair share of mistakes and learned from them. When the project was done, we released the tech to the community in the Digital Human package, but had so many ideas about where to take it next and what else we could do. In a way, the Enemies project almost defined itself.In close alignment with the roadmaps and development efforts of Unity’s engineering teams, the Demo team adopts all the relevant new technologies from a very early stage. It also fills the gaps between the various roadmaps by making improvements and fixes and contributing them, and develops new technologies when needed.With Enemies, our efforts went in three directions: Developing a solution for hair, improving the realism of the face, and doing all that in the context of a real content piece.This means that all the new, in-progress, and existing graphics and core Unity features were pushed to the max, including smooth interoperation, in order to raise overall image quality. More specifically, Enemies uses the entire feature set of Unity’s High Definition Render Pipeline (HDRP), Screen Space Global Illumination (SSGI), the new Adaptive Probe Volumes, ray tracing, NVIDIA’s Deep Learning Super Sampling (DLSS), and every other feature, big or small, that is relevant for our goals.A person of different ethnicity and with different facial features provides a set of additional challenges that we didn’t tackle with the character Gawain in The Heretic. For Enemies, we chose an actress in her 40s, someone who fit the role from a narrative perspective and presented a new level of technical challenges.To start, lighter skin is more transparent and the blood flow has a more visible effect on her skin as she moves and talks, so we developed tension tech to drive it. The wrinkles are more pronounced and need special attention from a shading and lighting perspective. Eyes present their own subset of challenges, some of which we had solved, but we boosted the realism by adding a caustic. Facial “peach fuzz” or vellus hair adds subtle but important realism to the shading of the skin, and we made it possible by moving the Skin Attachment system to the GPU. And last but not least, we gave her long hair.We developed an all-new Unity Hair solution that comprises three parts, together creating the natural look and movement of the protagonist’s hair:The Hair system (with strand-based hair simulation) is an integrated solution for authoring, skinning, strand-based simulating, and rendering of hair. This system works with any authoring tools that output data in the Alembic format, so you can create your grooms in the tool of your choice. For Enemies, we used Maya XGen for the hair groom, and we are currently validating the pipeline with Weta Barbershop as well. The Hair system will work with the shader of your choice, depending on the render pipeline you use. It supports HDRP, Universal Render Pipeline (URP), and the Built-in Render Pipeline.To enable realistic looking hair and fur, Unity developed Hair shading in HDRP, which is similar to a model often used in live-action and animated films (e.g., Marschner / Disney). This allowed us to create heightened visual results in any light condition without needing to change parameters for good performance.Hair rendering lets us render very thin hair strands efficiently and reduces the amount of aliasing caused by strands not getting properly rasterized when they are too small on screen. In Enemies, we use a multisampled visibility buffer to reduce the aliasing from very thin strands and the shading is done in a separate shading atlas, decoupling the visibility from the shading.As with previous projects, the Demo team will be sharing the technology developed for Enemies with the community to try out in their own Unity projects.In a month or two, we’ll release a Digital Human 2.0 package that contains all of the updates and enhancements we’ve made since the version we shared for The Heretic.We will also release a package containing the strand-based Hair system on GitHub, which allows us to collect feedback and make updates before it becomes an officially supported feature. Keep an eye on Unity’s blog and social media to make sure you’re alerted when these packages are available.Most of the improvements in Unity that originated from the production of Enemies, or were directly adopted in it, are already in Unity 2021.2 or will be shipping in 2022.1 or 2022.2.If you’re attending GDC in person, be sure to drop by the Unity booth to see the demo directly in the Unity Editor.We also encourage you to attend our presentations, led by Mark Schoennagel, senior developer advocate at Unity, who will be diving into various technical aspects of the project directly in Unity.In person: Inside Unity’s new flagship demo, Thursday, March 24, 10:00–11:00 am PT, Moscone, West Hall 2020 (GDC Sponsored Session)Streamed online: The making of Unity’s latest flagship demo GTC: Thursday, March 24, 7:00 am PT (GTC – free registration)GDC NVIDIA Sponsored Session: Friday, March 25, 3:00 pm PT (GDC – paid registration required)You can learn more about our GDC sessions on the Unity at GDC 2022 page.Assisted by our guest hosts Cinecom.net and Lars Stranden, Mark Schoennagel will be leading a breakdown session on Twitch. Join them for Unity’s new real-time cinematic: Enemies onFriday, March 25, 9:30 am PT / 17:30 CET.As we continue to create and publish additional behind-the-scenes content and details about the project, all the information will be collected on this dedicated webpage: unity.com/enemies.]]></description><link>https://unity.com/blog/news/introducing-enemies-the-latest-evolution-in-high-fidelity-digital-humans-from-unity</link><guid isPermaLink="true">https://unity.com/blog/news/introducing-enemies-the-latest-evolution-in-high-fidelity-digital-humans-from-unity</guid><pubDate>Mon, 21 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Celebrating women trailblazers in technology]]></title><description><![CDATA[Women’s History Month is an annual celebration of women’s often-overlooked contributions to history, culture, and society.In honor of Women’s History Month, we interviewed four trailblazing women – Karen Williams, Gayatri Parameswaran, Kat Cizek, and Susanna Pollack – who are using technology to change the world. Below, they share their experiences navigating prejudice, advice for breaking into the real-time 3D and technology space, and where they’ve found inspiration along the way.Karen Williams, is a game developer and founder of Hiccup Interactive, an award-winning indie game studio based in Atlanta, GA.When asked about her experience as a creator, she shares that her journey into programming began just before college. This may seem like an early career start, but at the time, Karen felt like she was behind in comparison to her peers – and she kept meeting other women who felt the same way. She decided to do something to challenge those feelings of inadequacy and promote inclusivity. “Now, I try to be as vocal as possible about what I do. I show my growth, encourage other women in the industry, and reach out to Black youth, as well,” she says. This inclusive approach has stuck with her. “Whatever my passions direct me towards, I bring others to grow along with me.” She also creates intentionally and loudly, “so that maybe someone sees their passion in something they hadn't considered before and gets started on it right away.”When it comes to real-time 3D, Karen advises women interested in the space to be patient with the learning process. “The beautiful thing about development is that there are a million ways to approach any problem, which can feel overwhelming when starting out. Give yourself time to grow and understand what your options are before scope creep sets in. Start small, ask questions, and look for others on the same path.”Karen credits her supervisor at work as a huge inspiration for her in the games industry. “My supervisor is the only other Black female developer at my company, and she’s an amazing developer and leader in our department. I felt like she embodied the confidence and skills that I always hoped I would obtain. Seeing her directly owning her skills made me feel less intimidated in an industry I just broke into, like I could make mistakes and grow without feeling put down or left behind.” Both Karen and her supervisor have put inclusion into practice, and we’re so glad they’re championing other future leaders in tech and real-time 3D.Gayatri Parameswaran is an impact-driven creator and immersive director. She, along with her partner, Felix Gaedtke, cofounded NowHere Media, an award-winning studio in Berlin that designs virtual and augmented reality experiences. Their portfolio includes Teenbook India, an AR experience that helps educate teenagers in India about sexual health.Gayatri’s advice for others who are interested in creating at the “juicy intersection of art, technology, and social impact” is that “you’ll need to always ask yourself these questions: Why are you creating the work? Who should benefit from it? What value are you adding to the current landscape? Answers to these questions may not always be easy to find, but they can guide the creative process.”When it comes to being a woman creator in the tech space, Gayatri says she has experienced prejudice. “I am slowly beginning to reach a level of confidence and comfort being a female artist in the tech world. It has been a conscious fight to get heard.” Gayatri works with her partner, Felix, and has noticed subtle but meaningful differences in how they are both treated as creators. “Often, I enter into creative and technical meetings with Felix. And often, we notice there's so much prejudice in the room. When it comes to talking about technical things, people subconsciously or unconsciously turn their gaze towards Felix, and for ‘softer,’ non-technical themes, address me. It's so deeply ingrained in our systems and behaviors.” She finds that calling out these discrepancies in a professional setting helps face these prejudices without shame and creates a safer work environment.Gayatri believes in building a fair, equitable, and sustainable world – the world she would like to inhabit. She blends those values into her creative output by “working with marginalized and underrepresented communities, choosing diverse teams and perspectives to have a say in creative processes, and making sure the end result leaves a positive impact on the planet we all share together.”When asked about a woman that Gayatri looks up to, she shares, “On a deeply personal level, I look up to my mother. I've learned a great deal from just being raised by her: how to offer support in difficult moments, how to find a balance between being protective and allowing independence, how to draw energy from your surroundings and how to channel the same energy back into your community, how to handle all aspects of your work with care, how to respect yourself and those around you, how to be honest and authentic in your approach, and so much more.” In her work, Gayatri is also inspired by “the careers of thought leaders like Arundhati Roy, Gayatri Spivak, Ursula Le Guin, Donna Haraway, Margaret Atwood, Virginia Woolf.” Women who, like Gayatri, are using their work to make a difference.Kat Cizek is a Canadian documentary filmmaker and director of the MIT Co-Creation Lab. Her career has spanned many types of media, but she’s especially interested in the collaboration required to create meaningful and impactful work.Throughout her career, Kat shares that she has “experienced a lot of male toxicity in the industry, especially in the technical silos of the work. Those were the lonely and scary times. But I’ve also had the immense pleasure of having formed and worked in many collectives and incredibly tight teams. That is the work I love best: full-on team work. Co-creation.”To other women interested in getting into tech or real-time 3D specifically, she recommends courage. “Don’t be afraid or intimidated by anything. You can fly and be grounded at the same time, in RT3D and IRL!” Kat shares that she has always been inspired by her grandmother, who lived with her growing up. “She was the first woman professor of medicine – and of almost any field – in what was then Czechoslovakia in the 1950s. She was so self-assured and dedicated, both to clinical work and to research in pediatric endocrinology, which was cutting edge science at the time. After she retired and came to Canada, she volunteered for Planned Parenthood in the ‘70s. Imagine!” It sounds like the drive to create and give back to the community runs in Kat’s family.As for what’s next, Kat is focused on the Co-Creation Lab, which has been “tracing the many contours of what collective creation can look like. Documenting it and giving it legitimacy. Giving it a place.” In fact, Kat and her colleagues have a book, Collective Wisdom: Co-Creating Media for Equity and Justice, coming out with MIT Press later this year. We’ll put it on our reading lists!Susanna Pollack is a tech industry leader and President of Games for Change, “a not-for-profit rooted in the games and tech space at the intersection of social impact.”Susanna brought her experience working in film and television to her work in interactive media, having fallen in love with its potential. “The more I learned about games, the more I saw the future for me. Games are truly the storytelling platform for the 21st century.” Susanna is especially interested in XR for Change – a G4C initiative launched in 2017 – because she sees it as “an opportunity to affect change at scale with the use of immersive technology.”When it comes to advice for women interested in creating at the intersection of technology and impact, Susanna says it’s key to love what you’re doing. “Focus on your passions when picking projects. You may not necessarily be an expert, but you have to be passionate in order to lead others. It’s a long road to creating just about anything using tech, and being passionate helps maintain the tenacity to get things done!”You can see this philosophy in action through Susanna’s work with Games for Change. She has also recently executive produced two exciting projects: Minecraft: Education Edition with the Nobel Peace Center, which teaches students about four Nobel Peace Prize laureates to encourage them to become active changemakers, and On the Morning You Wake (to the End of the World), a VR documentary that explores the threat of nuclear violence through the first-hand experiences of the people of Hawai’i, who received a false missile alert in 2018. On the Morning You Wake was produced by award-winning creators Atlas V and Archer’s Mark, and has been shown at Sundance and SXSW.Susanna says another essential part of making impactful work is valuing people and relationships. “I’m a firm believer that the best way to make change is through partnerships. To me, connecting with people – cultivating and nurturing relationships – can lead to outcomes beyond expectations. I try to take that approach with everyone I speak with.” For her, each conversation is a new opportunity to make a difference.–Thank you to Karen, Gayatri, Kat, and Susanna for sharing their collective wisdom with us, and for championing other women in technology.]]></description><link>https://unity.com/blog/news/celebrating-women-trailblazers-in-technology</link><guid isPermaLink="true">https://unity.com/blog/news/celebrating-women-trailblazers-in-technology</guid><pubDate>Fri, 18 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[7 questions to ask yourself when evaluating a new user acquisition channel]]></title><description><![CDATA[Having a diversified mix of user acquisition channels is key to ensuring incremental growth and dominating within the competitive landscape. While it's important to attract the low hanging fruit from traditional channels, it’s equally as important to reach new, high quality users from new channels that would be otherwise inaccessible.However, choosing a new channel can be daunting - there are tons of channels to choose from (social media, SDK networks, search, on-device) and even more sources (Facebook, Google, ironSource).So, how do you select the right channels for your app and what criteria should you focus on? Start here.Set your user acquisition budget: You want to find the right balance between investing in user acquisition and investing in other areas of your business, such as product. Before allocating your budget across channels, first, set an overall user acquisition budget based on a cost-benefit analysis (whether the amount of users you’ll acquire is worth the cost).Measure your risk: Next, decide how much money and time you’re willing to risk in adding new channels and how aggressive you’re willing to be. This way, you can make stronger decisions about adding new, uncertain channels to your mix. With a distinct understanding of your user acquisition strategy - how much you’re willing to spend and the risk you’re willing to take - it’s time to start researching new channels.Here are 7 questions Dor Isseroff, Senior Director of Sales and Partnerships at Aura, gets asked about whether or not to buy users on a new user acquisition channel. Scroll down to find out the answers for Aura, ironSource’s on-device advertising channel.1. Does the channel fit my target audience?Be aware of the demographics and psychographics of the users on the channel to ensure they fit your target audience, or, at least, see whether they could represent a new opportunity for your app.For apps that attract many different types of users, such as males and females ranging in age from 20-60, you’re more likely to test a new channel to see whether the audience will convert, rather than paying close attention to audience fit right away. For example, hyper-casual games attract all different types of users, which means they take on less risk testing out new channels with distinct audiences, such as LinkedIn, before making a final decision about audience fit.For apps that attract users with very specific demographics and psychographics, it’s crucial to make sure your audience is reachable through the new channel. For example, an app for photo or music creators will most likely not find their users on a professional networking channel like LinkedIn that typically attracts members of corporate America.2. Does the channel have global reach?If you aren’t thinking about your worldwide footprint, you’re missing out on potential new users. This is why you should also consider whether the channel has global reach and in which countries it’s strongest. This is where your research comes in handy - you can determine the strength of each channel globally by reading case studies, talking to contacts, or even asking nitty gritty questions in the sales pitch.First, determine your target countries according to which countries your app is localized in - this will help you make more informed decisions about the best channels for your app by geo. If your app hasn’t been localized for Spain, for example, advertising on a channel that performs best in Spain may not drive great results.Keep in mind that less global reach may make sense for your UA strategy, too. For example, if your US-based food delivery app is in the process of expanding into Europe but doesn’t have enough delivery drivers yet, it may not be the right time to reach users in that geo through a global channel.3. Is there an overlap between my current channels and the new channel?With an understanding of audience and reach, the next step is comparing this criteria to the channels you’re currently running on. After all, to see incremental growth from a new set of users, you want to make sure you aren’t reaching the same set of users on a few different channels.For example, if you’re already running a campaign on a video sharing platform, such as TikTok, it’s likely those same users will also be on a photo sharing platform, such as Instagram. Ultimately, it’s important to consider whether you want to dedicate cost and resources to a channel where the users overlap with a channel you’re already running on.4. What is the cost commitment?Many channels have hidden fees (setup fee, management fee, etc.) and require large, upfront cost commitments. While you may be prepared to pay the price, it’s still important to know how much of your budget will be allocated to a new channel. In general, it’s best to find channels that allow you to start with a conservative approach before going all in.5. Is the channel a self-serve or managed service?There are benefits to both a self-service and managed service - a self-serve channel means you have full control and transparency into your data and a managed channel means you get personalized recommendations for optimization. Nevertheless, be aware of how much time and resources you’ll have to put into optimizing your new UA channel. If the channel is self-serve - meaning it’s entirely your responsibility to optimize the channel and analyze data - you can then determine whether the channel is worth your time commitment based on the above criteria (users, cost, reach, etc.) Many social and search channels are self-serve, while SDK networks can be as well.If the channel is managed, the account managers at the channel are responsible for working with you to maximize potential and drive stronger performance. You’ll get personalized recommendations without losing control of your strategy. On-device channels, like Aura, are often managed services, as well as SDK networks like ironSource.6. Is the channel integrated with major MMPs?Whether or not the channel is integrated with major MMPs is one of the most important criteria to keep in mind when adding a new channel - since you want to ensure data accuracy, efficiency, and transparency. Being integrated with the top players, such as AppsFlyer, Adjust, Kochava, Singular, Branch, also signifies the channel has a good reputation.7. Are there creative guidelines?Each UA channel will have guidelines for the types of creatives you need and what you’ll be responsible for providing - such as, design specifications and technical requirements for different ad units and placements.This is less of a make or break and more of an important criteria to keep in mind in terms of the resources you’ll need to put into the channel. Many channels rely heavily on creatives while others, like on-device platforms and search solutions, don’t need rich visual ads.Adding a new channel doesn’t have to be daunting if you know what criteria to look for. Ask yourself these 7 important questions before going all in on a new channel and feel confident in the decisions you make for your UA strategy.The Aura answer keyNow let’s apply this approach to Aura. If you were in a demo with Dor, these would be his responses.1. Does the channel fit my target audience?Because every type of demographic owns mobile devices today, you can reach your specific demographic on more than 1B devices.2. Does the channel have global reach?Connect with users on more than 1B devices across 77 countries, through partnerships with premium manufacturers and carriers like Samsung, Vodafone, Orange, and Boost.3. Is there an overlap between my current channels and the new channel?While different audiences prioritize different platforms - for example, Gen X uses Facebook as their leading social platform and Gen Z uses TikTok - the common denominator is that everyone reaches their social channels on their phones. With Aura, you can reach a diverse audience in one place, which leads to less overlap from specific demographic platforms such as TikTok or Snap.4. What is the cost commitment?Aura doesn’t require an up-front payment and has no hidden costs, which means you can test out the channel before going all in. With Aura, you pay on performance.5. Is the channel a self-serve or managed service?Aura is a managed service, which means you’ll get personalized recommendations and support from the Aura team about which touchpoints you should be leveraging. That said, you also get real-time campaign analytics on a dedicated advertiser dashboard.6. Is the channel integrated with major MMPs?Aura is integrated with all the major MMPs - AppsFlyer, Adjust, Kochava, Singular, Branch, and more.Further, looking at MMP reports such as the latest Singular report or AppsFlyer performance index, you’ll see Aura in many top spots. Some notable achievements from Singular’s ROI Index 2022 are top 5 global ad partner, top 5 non-gaming ad partner, and top 5 gaming ad partner.7. Are there creative guidelines?Aura uses the traditional assets used on Google Play, requiring no extra effort from you on the creative side.]]></description><link>https://unity.com/blog/7-questions-to-ask-yourself-when-evaluating-a-new-user-acquisition-channel</link><guid isPermaLink="true">https://unity.com/blog/7-questions-to-ask-yourself-when-evaluating-a-new-user-acquisition-channel</guid><pubDate>Fri, 18 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 analytics reports to optimize your monetization strategy]]></title><description><![CDATA[At ironSource’s “Setting Up, Analyzing, and Optimizing Your Ad Monetization” webinar, our growth strategy team leader, Elyse Krumholz, guides you through how to best analyze and optimize your monetization strategy. Let’s take a look at what she discussed.First, she noted that ad monetization is made up of two parts: your ad implementation strategy and ad network strategy. Ad Implementation strategy is all about deciding how to incorporate ads into our game, while ad network strategy decides which ad networks to work with and how to best utilize them. The best way to optimize our strategy? A/B testing.In the webinar, Elyse wants to check out whether a new rewarded video placement is generating incremental ARPDAU, without sacrificing retention - so she runs an A/B test and sets two groups: one group with the new rewarded video placement and one group without it. Following the A/B test, here are five reports you’d need to analyze performance and choose the test winner.Performance reportsTo start, Elyse guides us through performance reports, which show us KPIs like revenue, eCPM, fill rate, and impressions. We can filter here by metrics, or, in this case, by groups A or B to check out results of our A/B test.Elyse filters by rewarded video (this is the ad unit we care about) and then breaks up A vs. B. Look at that – revenue and impressions are higher for group B (our test group with the new rewarded video placement). Great! But, according to Elyse, that’s not the whole story. What does this mean in the context of ARPDAU?User activity reportsNext up: user activity reports. Here we can understand ARPDAU, DAU, DEU, engagement rate, impressions per DEU (usage rate), impressions per DAU, and sessions per DAU.Using this report, Elyse compares the ARPDAU of A vs. B groups - and finds that ARPDAU for group B is higher by 25%. But why? Perhaps our game is engaging more users with ads than before, or maybe users are watching rewarded videos now. To find out, let’s check how the engagement and usage rate (number of impressions/DEU) differ by A vs. B.As it turns out, the engagement rate didn’t change – in other words, no new users are engaging with rewarded video ads. However, usage rate in group B is 5, compared to 4 in the A (control) group. Basically, engaged users in your game are now watching 5 rewarded videos per day instead of 4. Finally, we see what leads to the increase in ARPDAU - more rewarded videos watched per session. But we’re still trying to figure out what increases ARPDAU without hurting retention. So let’s investigate further: how is this new rewarded video placement affecting our retention and LTV?Cohort reportsTo understand the effect on retention and LTV, we need to move to cohort reports. This way, you can group users who started the game on the same day (a cohort) and measure specific KPIs for these groups over different timeframes. Breaking down our results by A vs. B, we can understand if users who are now watching more rewarded video ads because of the new placement are also still sticking around to play our game.Going to the cohort report, we filter for the time period of the test, break by A/B group, and see the results – a feature exclusive to LevelPlay. We find that a higher percentage of users in the test group also had higher D7 retention, compared to the retention rate of the control group. We’re getting higher ARPDAU due to higher impressions and higher usage rate, and those users tend to play our game for more days.Real time pivot reportsFinally, we can dive even deeper into our data with real time pivot reports - which let us analyze nearly all the KPIs we just walked through, all in real time. So, from the minute we start the A/B test, we can examine changes in user behavior and ad network performance. Most importantly, we can react quickly to these results.Beyond the A/B test, we can also optimize our game according to real time data, track live performance after updating our mediation stack, know about network drops right away, and monitor the stability of new app versions. We also have a compare mode, where we can compare KPIs side-by-side on one screen and easily compare KPIs all at once. We can also understand changes between different time periods very easily.Ultimately, we can see how performance reports, user activity reports, cohort reports, and real time pivot reports work together to enhance our monetization optimization strategy. Using all of these reports together, we can dive more deeply into the data, to not only understand “how,” but also “why” – and in doing so improve our monetization strategy. To learn more, watch the full webinar below.]]></description><link>https://unity.com/blog/how-to-analyze-and-optimize-your-monetization-strategy</link><guid isPermaLink="true">https://unity.com/blog/how-to-analyze-and-optimize-your-monetization-strategy</guid><pubDate>Thu, 17 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Metaverse Minute: 9 women who are building the metaverse]]></title><description><![CDATA[Despite the efforts of many forward-thinking organizations, women are still severely underrepresented in technological fields. In honor of Women’s History Month, this Metaverse Minute features nine stories of wonder women building Web3 and the Metaverse. Find out how they #BreakTheBias (this year’s theme for International Women’s Day) in moving us toward a gender-equal world that is diverse, equitable and inclusive.Being a self-taught programmer, Antonia is a firm believer that anyone interested in virtual reality (VR) or augmented reality (AR) can learn. “Coding isn’t like maths or physics; it’s more like learning a foreign language.” Having studied zoology, Antonia got the immersive reality bug when she was working in a science center and 3D planetarium in the U.K. She learned Unity to create astronomy content for the 12-meter dome, as well as for VR headsets. “Being an XR developer feels like magic!” Her activist spirit has led her to develop projects like the world’s first LGBTQ+ VR museum, a virtual space to showcase stories and artifacts from the queer community and record marginalized histories that would otherwise be lost. As a thought leader, she has been asked to speak at many events, including a TEDxBristol talk that reached more than 150,000 people.Follow @AntoniaRForster on TwitterAlisia is a user experience designer and developer who loves to tell engaging and immersive stories. Over the past five years, she’s been working with the likes of Volkswagen and Meta to see how mixed reality and spatial computing can allow us to see things from new perspectives. On the side, she develops VR interactive narrative games with friends and is currently working on a project titled Lift: The Last Days of the Westwind. If you’re also dreaming of a full-dive VR system, you should connect with Alisia.Follow @alisiamartinez_ on TwitterBorn without stereoscopic vision, Elizabeth initially had a compromised perspective of the world. Traditional thinking might view this as an impairment, but it inspired Elizabeth. Her stereoblindness helped her “see” the importance of ultra-high-definition visualization. A veteran of the Ford Motor Company, Elizabeth invented the Ford immersive Vehicle Environment (FiVE) process, which allows teams to leverage high-definition rendering in VR. This collaboration tool enables design and engineering to experience a holistic vehicle in real-time. Her unique view of the world also allowed her to understand how the concept can be applied to other industries for digital storytelling – taking her down a new career path of developing interactive and immersive experiences for Unity.Connect with Elizabeth Baron on LinkedInLynette was recently named by Future Travel Experience, an independent advocate driving positive industry change, as a top innovator in her field and for good reason. With Lynette’s leadership, the Vancouver International Airport was the first major flight facility to build a comprehensive digital twin. The resulting data integration and system optimization has fast-tracked the airport’s operational improvements – from terminal layouts for COVID-19 to reducing greenhouse emissions. Lynette is a true futurist who challenges her peers.Connect with Lynette DuJohn on LinkedInLet’s be real. What Kai Frazier is doing at Kai XR is extraordinary. Kai XR uses metaverse technologies to prepare students for a highly technical future by exposing them to global educational opportunities. The organization aims to give one million kids access to metaverse technologies by 2030. Through VR, Kai is taking young minds to the Great Pyramids of Egypt, the cobblestone streets of Paris, and beyond. Kai XR’s curated library of diverse, accessible, and safe experiences is encouraging students to dream big. We hope that more educators will follow in Kai’s footsteps and start reimagining their curriculum with interactive technology.Follow @__Ka1 on TwitterIf you’re looking for leaders powering the industrial metaverse, keep an eye on Sarah. With a rich background in simulation workflows, computer vision, and even autonomous visual navigation, Sarah manages a robotics-simulation product team at Unity. Sarah is passionate about developing better tooling to simulate real-world scenarios.Connect with Sarah Gibson on LinkedInAt Varjo, Anna makes sure immersive solutions are designed with the user in mind. “The future is created by our actions today.” She looks at Varjo’s human-eye resolution hardware and software product designs from the customers point of view and makes sure that each stage of development is focused on the user experience. Anna is proud to be building a new reality that’s grounded in the real world but comes with the superpowers of the virtual world. Clients like Volvo, Boeing, Kia Motors, and Siemens are already leveraging Varjo’s solutions.Connect with Anna Nilsson on LinkedInHow can emerging technology be integrated into our everyday life without controlling it? That’s the question this futurescaper, author, TED speaker, and creative explores in her practice. Through her consultancy Future Memory Inc., Galit helps the likes of Microsoft and Gartner consider how digital/physical world-melding affects cultures, behaviors, and interactions. “Immersive tech will allow us to experience the world in more meaningful and imaginative ways.” Fellow creative explorers, Vulcans and Trekkies: give Galit Ariel a follow.Follow @galitariel on TwitterAt Niantic, Tricia helps developers bring their AR apps to life using the Lightship AR Developer Kit. She’s inspired by AR’s ability to enhance the world around us and add magic and beauty to everyday moments. Tricia believes in an ecosystem that inspires movement, exploration, and connection at a global scale.Follow @triciaabecker on TwitterTake part in this year’s IWD theme and celebrate your story on social with the hashtag #BreakTheBias. Raising awareness is a critical first step to forming a more inclusive world. Together we can break the bias.]]></description><link>https://unity.com/blog/industry/metaverse-minute-9-women-building-the-metaverse</link><guid isPermaLink="true">https://unity.com/blog/industry/metaverse-minute-9-women-building-the-metaverse</guid><pubDate>Tue, 15 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile multiplayer 101: Your ideal tech stack]]></title><description><![CDATA[This blog takes a look at the impact of the pandemic-driven growth in multiplayer games, what players want to see in a game, and the tech that studios need to think about to support that.When it comes to multiplayer games, the industry, players, and developer needs have grown and changed drastically over the last few decades:In the mid-1990s, multiplayer gaming started out as LAN parties and couch co-op in basements.In the 2000s, multiplayer gaming experiences moved off the couch and out into the world – connecting individual players across vast distances.By the 2010s, most of the population had powerful gaming devices right in their pockets – their mobile phones. Players who wanted to game on the go no longer needed a separate device for their portable gaming adventures.Now, in 2022, the category has changed again and so have the needs of developers in order to meet new player expectations. Read on to explore all the tools you need to build your ideal mobile multiplayer tech stack.The most popular multiplayer genre on mobile today is the casual kind – with puzzle (55%) and card games (53%) reigning supreme. However, there is also strong demand for all the other genres you expect to see on console and PC storefronts.For example, 46% of all gamers who play a MOBA game play on their mobile device. Similarly, 39% of RTS gamers play on their mobile as well.So gamers want multiplayer mobile experiences. The real question is – how do you deliver them?At Unity, we think about the multiplayer tech stack in three core pillars:Creation of your multiplayer game.Connection of your players.Empowering player communication.First, you need to ideate and build a game and that’s where the multiplayer stack begins: Creation. This category includes all the tech and solutions you need to actually build fresh multiplayer experiences for gamers.Critical solutions in the creation pillar include an engine to actually build your game, and a netcode solution to handle the networking.As multiplayer games are becoming a more popular avenue to connect with others (even those who wouldn't have traditionally considered themselves gamers), crossplay has become more of a priority to developers and players alike.We believe that platforms should not be a barrier in providing accessible social experiences for people – but instead be a gateway for those experiences.And so, developers like you need sophisticated technology to connect their players not only across the globe, but across the platform divide as well.The key solutions in the connection pillar include a hosting solution to connect your players – either a relay or a dedicated game server based on your game’s needs – and a way for the players to connect in-session, with a matchmaking or lobby solution.Let’s take a quick look into how your game might choose which options are best.For hosting, a relay server is a great choice for games that:Are relatively small-scale, with around 2–12 players per game session.Are cooperative rather than competitive as relays have little in terms of cheat mitigation.Have a smaller budget, as this is a more cost-friendly option to connect players as you don’t have to pay for hosting.A dedicated game server, on the other hand, is a great option if your game:Has a wide range of player scale, supporting anywhere from single digits to dozens of players at a time.Is cooperative or competitive as it has more cheat mitigation.Has a larger budget to cover hosting costs.In terms of connecting players in-session, there are two major options: A matchmaking service or a lobby service.A lobby is a player-driven way to create gaming sessions – one player makes a lobby, shares an invite code to others or joins an open lobby list, and other players can join at their leisure. Think games like Jackbox or Among Us.Alternatively, a matchmaking solution does more behind the scenes – evaluating things like player skill and region to automatically match players for a game session. This is a more popular route for FPS games.With the rise in popularity of games over the decades came the rise of in-game communication, with more than three-quarters of multiplayer gamers using tech to communicate with other players in the session. Unfortunately, there has also been a parallel growth of toxic behavior in online gaming communities.As more people started playing multiplayer games this last year, 68% of gamers expressed that they felt there was a surge in toxic behavior, with a majority of gamers either witnessing it or experiencing it themselves.But a big part of multiplayer gaming is the social connection it provides, and so the challenge appears to promote positive and accessible communication in your multiplayer games.To do this, you’ll need technology solutions to empower positive player communication and grow engaged and healthy online communities.This stack above shows the “MVP” of a mobile multiplayer tech stack – how to create your game, connect your players, and allow them to communicate.But we’re not done yet.Putting together any kind of multiplayer is one thing – but what about delivering a truly greatmultiplayer experience? That opens our stack up to a new category – solutions built to improve the player experience. Things like friends lists, anti-toxicity software, leaderboards, and more.In late 2021, we ran a study that asked gamers to tell us their must have features in a multiplayer game, and here’s what we found:36% of gamers want quick matchmaking35% want the ability to join a match or party with friends30% want a cheater-free environment29 % want to form a party with people met in-game27% want no harassment or griefingBased on the above stats, you may want to add services like friends lists, in-game parties, and anti-cheat software to your game to improve the player experience. Ultimately, it’s up to you to find the right mix of tools and services to deliver the player experience you want for your game.There’s a lot that happens behind the scenes that can be improved and streamlined by developer-focused solutions. For example, an analytics tool to monitor the player experience and figure out what content to build next to keep your audience engaged.That opens the door to a content delivery system, which will help you roll out your new content for players – like seasonal gear or special events.And how can you keep building this new content? By funding your efforts. That’s where monetization services come in to help support you while you bring your vision to life.If this is starting to feel like an unwieldy tech stack then don’t worry, lots of providers bundle their solutions into helpful categories that will help keep you from juggling too many vendors. That was the idea behind launching Unity Gaming Services – to provide a one-stop platform that's free to get started and has all the solutions you need to build your game.One of our main goals at Unity in 2022 is to invest more in building out the ideal tech stack for multiplayer game developers – which is why we’ve launched a few new products within our Multiplayer Suite, like Relay and Lobby.We’re excited to see where mobile multiplayer gaming goes next and ensuring that our solutions are viable, useful and accessible for mobile developers is core to all of our multiplayer tech stack work in 2022.These services flesh out our existing suite of Multiplay (dedicated server hosting) and Vivox (player communication) to empower creators of all sizes. If you’re interested in checking out any of these services, head to our multiplayer suite page to learn more.]]></description><link>https://unity.com/blog/games/mobile-multiplayer-101-your-ideal-tech-stack</link><guid isPermaLink="true">https://unity.com/blog/games/mobile-multiplayer-101-your-ideal-tech-stack</guid><pubDate>Mon, 14 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to leverage on-device advertising to create a frictionless install experience]]></title><description><![CDATA[On-device advertising solves the critical problem of getting your app noticed by quality users at the right time - that is, directly on their device at moments triggered by contextual information. Once noticed, the next challenge is making sure users commit and install your app - enter friction-to-install.Friction-to-install refers to the resistance a user faces on the journey from noticing your ad to downloading it and opening it (at least once) - through the conversion-to-install funnel. With traditional user acquisition channels like social and search, the funnel to install is set in stone - users are redirected to app stores to download your app. On-device advertising, on the other hand, allows users to skip the app store and download your app directly onto their devices. The tricky part is balancing too much and too little friction.Let’s discuss the pros and cons of a frictionless install experience and how you can optimize your first experience with a frictionless OEM and carrier campaign.Pros and cons of a frictionless install experienceIt takes about 6 clicks for a user to install an app, and with each click, you lose about 20% of your users, according to an article by Eric Elliott, co-founder of DevAnywhere.io. Seems daunting, but contrary to what you may think, a frictionless install experience also has its challenges.Con: Harder to weed out the less committed usersThe shorter the install funnel, the less hoops a user has to jump through to get access to your app - meaning you can’t ensure the users who eventually install are highly motivated and committed.Take a survey, for example. If a survey is super long, the number of users who will complete it will be low, but the ones who put in effort to answer all of the questions will be incredibly valuable to the data analysts. Often, a fewer amount of higher-intent users generate more profit than a high amount of lower-intent users.Pro: Spend less on each installThat said, if the funnel is shorter, more users will reach the conversion event and the bids can be lower. This is because the majority of bidding algorithms are designed to optimize towards maximizing the publisher’s revenue. With a shorter conversion funnel and more users entering your app, you’ll pay less for each conversion/install event.Though with less friction, you can’t always ensure that the users entering your app will be high-intent initially, that doesn’t mean they’re any less relevant or loyal in the long term. Ultimately, less friction means you’ll pay less for users that could end up bringing a lot of value to your app.Pro: Devote more time to your productWith a frictionless experience, you have more time and resources to spend maximizing the effectiveness of your upper funnel, such as your creatives and app store page, so that users can’t find any reason to drop the conversion funnel to install your app.Because users don’t have to visit the app store to download your app, time spent on app store optimization (ensuring your app icon, description, and images are encouraging users to install) can be seriously cut down. This means you can invest more resources into your app product itself, optimizing performance for the long term and keeping users engaged.Pro: Get users to try your app without the hassleA frictionless experience also means users get a taste of your app without the hassle, encouraging them to stick around. Take a trip to the supermarket as an example. When you go to buy groceries, you’re likely to choose the same brand you always do, even though there are tons of options on the shelf. After all, you don’t want to put in effort to cook a new type of pasta you may not like. However, if there’s a testing station for a new pasta and you like it, you’re more likely to switch to that brand. It’s the same experience for apps. With a frictionless experience, users are inside your app and engaging in no time. They get the chance to test out your product without any hassle, and if they like it, they’re likely to become long term users.This is especially important for app categories that are more intuitive and easy to use. For example, almost everyone has spent time in a video streaming or travel app - they know how to use them but can’t speak to the quality of the user experience once they get inside. The biggest barrier for these types of apps is getting on users' phones, and a frictionless experience is the best way to get there.In most cases, however, the friction-to-install experience is rigid - you don’t get to choose the length of the conversion funnel. With on-device advertising, however, you get a frictionless install experience. If you choose to test out this unique strategy, here’s how to maximize its potential.Optimizing the user’s first experienceUsers acquired through traditional channels have already interacted with an informative and detailed ad that encouraged them to download your app and engage. On these channels, you can invest more into your creatives and your app store page than the first experience in your app.On the other hand, with frictionless OEM and carrier campaigns, users interact with your app directly rather than rich creatives. Think about it this way - your first experience is the ad your user never saw and your one shot at selling your app.Start with an app tutorialFirst, rather than jumping directly into asking users to set up an account, you should give them a tutorial for how to use your app and what it is all about, a common practice in gaming. The last thing you want is for new users to enter your app and have no idea how to engage. For example, when you open a well-known news app for the first time, the first screen (after asking for push notification and location permission) shows you how to swipe through news categories and pick your favorite topics. Keep in mind that this tip is more important for apps with unfamiliar user experiences, such as a shopping app with a unique buying process - most users know how to use a streaming app, for example.Help users understand your value propositionSecond, make sure users understand your value proposition and how they can “win” with your app’s features. Consider what users may already know about your app to determine the most effective way to show value. For example, a well-known meditation app doesn’t need to tell users what the app is all about. To portray value, the first screen asks users to “take a deep breath.” From the moment users enter the app, they are reaping the benefits. On the other hand, a less well-known app may want to start with their word-for-word value proposition. If users don’t know how your app will benefit them within the first few minutes of engaging, they’re more likely to churn quickly.Directly after the tutorial and value proposition, you can engage with users instantaneously by sending a notification or starting a chat message, something you can’t do with ads. You can even ask users to rate the tutorial or offer advice for the first time experience so that you can optimize your strategy.Getting users to commit and install your app is the second most critical step in user acquisition after getting noticed. While holding a negative rep, friction during the conversion-to-install funnel can offer both advantages and disadvantages for your app. It’s crucial to be aware of the pros and cons, as well as how to optimize a frictionless experience.]]></description><link>https://unity.com/blog/how-to-leverage-on-device-advertising-to-create-a-frictionless-install-experience</link><guid isPermaLink="true">https://unity.com/blog/how-to-leverage-on-device-advertising-to-create-a-frictionless-install-experience</guid><pubDate>Mon, 14 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Raising your game with Burst 1.7]]></title><description><![CDATA[The latest version of the Burst package comes with some great improvements to both iteration time and the Burst Inspector. In this post, we’ll look at what’s changed and how our High Performance C# (HPC#) compiler technology can now help you improve performance on all platforms with even greater ease.While our DOTS technology stack leverages Burst to provide highly optimized code, Burst is a standalone package, available in the Package Manager for Unity 2019.4 or newer. Thousands of your projects on all the major desktop, console, and mobile platforms are already taking advantage of Burst.In previous Burst releases, we made significant strides in improving the day-to-day experience of working with Burst. In Burst 1.7, we have continued that trend by focusing on improving iteration time. What do we mean by iteration time? We mean the “inner loop” of development – you make a change to a C# script, switch back to the Editor, wait for script compilation to finish, wait for Burst compilation to finish, and then enter Play mode to test your change.In Burst 1.7, we have dramatically reduced the amount of time you’ll find yourself waiting for Burst, for the common scenario of making a few changes to your game code and testing it in Play mode. Burst compilation now occurs earlier in the pipeline (immediately after the script compilation pipeline has finished compiling .NET assemblies), so that in many cases it is finished by the time the resulting code needs to be run. Instead of compiling each Burst entry point separately, as happened in previous versions of Burst, Burst entry points (e.g., a job or function pointer) are now batched together to improve compiler throughput and reduce the number of libraries that the Editor needs to load.Burst 1.7 also includes a major improvement to Direct Call performance. Direct Call is a feature that we added in Burst 1.5 that permits managed C# code to directly call a Burst-compiled method, without going through BurstCompiler.CompileFunctionPointer. During a domain reload, there is some initialization work that needs to be done to wire up direct call methods, and in Burst 1.7, we have made this initialization up to 33 times faster.As a last note on the topic of iteration time, we looked at the cost of SharedStatic initialization. SharedStatic is a mechanism that allows the sharing of data between managed C# and HPC#. In Burst 1.7, we have made the SharedStatic initialization up to 13 times faster.The following graphs show the performance improvements in Burst 1.7, compared to Burst 1.6. The measurements were taken in a large customer project. The first graph below shows timings taken with a stopwatch (an actual stopwatch, not System.Diagnostics.Stopwatch) observing the Editor, so they should reflect the sort of improvements you can expect to see in day-to-day usage.The second graph below just focuses on Burst, so it excludes anything else that may be occurring in the Editor. For this particular project and modified file, Burst 1.7 is faster than Burst 1.6 in all three timings:Cold cache - Burst has not yet cached any compilation results for the code in your project.Warm cache - Burst has already compiled the code in your project and needs to load the cached compilation results from disk.Change one file - After one file is changed, Burst checks to see which entry points need to be recompiled and compiles those. Note that the amount of improvement in Burst 1.7 is, in general, dependent on which file is changed. For example, if you change a method that is used by all Burst entry points, then the difference between Burst 1.6 and Burst 1.7 will be smaller. In this example, the entry point method itself was changed.Burst Inspector (accessible via Jobs > Burst > Open Inspector…) is an incredibly useful tool for optimization work. With this tool, you can view the assembly code that will be executed on your target CPU(s). In Burst 1.7, we have added several much-requested features. A screenshot says a thousand words, so without further ado:As you can see, we have added branch markers to make it easier to visualize code execution paths. Note that branch markers can be switched off with the “Show Branch Flow” checkbox so they don’t get in the way when you don’t need them. A particularly nice aspect of this feature is that you can click on a branch flow arrow, and you’ll jump to the other end of the arrow, like this:Example of clicking on branch marker to jump to branch destinationLess important blocks of disassembly (e.g., directives or constant data) are now automatically collapsed, but these can still be toggled when you want to view them.Also new in Burst 1.7 is the ability to select just a section of disassembly and copy it.Example of selecting and copying a specific section of disassemblyHere’s a list of smaller but no-less-important improvements in Burst 1.7.Arm Neon vst1* APIs are now fully supported. We added these APIs in Burst 1.6, but guarded them behind an experimental #define. In Burst 1.7, they are no longer guarded behind that #define and are fully supported.System.Span<T> and System.ReadOnlySpan<T> are now supported within Bursted code. These types are not allowed as entry point arguments.Burst now uses LLVM Version 12.0.0 by default, bringing the latest optimization improvements from the LLVM project.We changed the LLVM optimization pipeline to run the loop unroller exclusively after the loop vectorizer. This improves codegen in a lot of cases.We made fmod and floating-point modulus use a faster algorithm to improve performance.Burst now generates a link.xml automatically to avoid IL stripping, causing missing symbols at runtime from static constructor usage.We improved compiler performance when doing large struct copies by detecting more cases where a load/store can be safely converted to a move-memory operation.We made a change to how we display timings when the “Show Timings” option is enabled in the Burst menu. By cleaning up and presenting the information in a clearer way.Note that Burst 1.7 is the last version to support Unity 2019.4. The next Burst version will have a minimum requirement of Unity 2020.3. If you have any thoughts, questions, or would just like to let us know what you are doing with Burst, then please feel free to leave us a message on the Burst forum.]]></description><link>https://unity.com/blog/engine-platform/raising-your-game-with-burst-1-7</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/raising-your-game-with-burst-1-7</guid><pubDate>Mon, 14 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Faces of Unity – Carol Carpenter]]></title><description><![CDATA[In this Faces of Unity post, we’re welcoming Unity’s new Chief Marketing Officer, Carol Carpenter. Read on to learn more about Carol’s passion for marketing, introduction to RT3D, love of fried foods, and more.What does your role as Chief Marketing Officer at Unity entail?The simple answer is that the job of the marketing function is to provide shortcuts for our customers. Those customers could be creators, developers, CTOs for digital twins, automotive designers – any variety of customer – but our job is to make their lives easier. We do this through simpler positioning, clearer messaging, and leveraging our channels to reach prospects, customers, influencers, and so on. At the end of the day, our job is to lower the cost of customer thinking.What excites you about Unity’s potential? What does the future of interactive 3D content look like to you?Funnily enough, I was first exposed to the power of real-time 3D through my son’s love of Beat Saber and Resist. It’s incredible to me how realistic those experiences can feel, even while you’re wearing an Oculus. After speaking with John Riccitiello in more detail about all of the different industries and use cases of Unity, I realized the vast opportunity that lies ahead for the company. The fact that anyone can be a creator really resonates with me. There’s something so magical and inspirational about that – the idea of unleashing the creator in all of us, that we all have the ability to contribute and build. It’s an amazing mission that we should be proud of.When I think about the future of real-time 3D and where Unity is right now, we’re the perfect size for scaling to meet this incredible need for content. I love this stage. If real-time 3D is a developing city, we’re at the point of deciding where we want to put the streets and parks, how big they should be, where the swimming pools go.You’ve been a GM, CEO, and marketing exec many times over. What has been your favorite role and why?I loved being the CEO of a 50-person devOps company. When you’re the CEO, the buck stops with you. I still remember the holiday party when my husband said, “Can you relax and have a good time?” But I felt so responsible for the employees, their partners, their kids. That stress and pressure of having to look after everyone was overwhelming. It was by far the most gratifying and the most terrifying job I’ve had, and helped me realize that what I truly enjoy is the customer-facing role of category creation and scale. Launching Power Macs to millions of customers, creating the first sales engagement solution, scaling Google Cloud’s offering, repositioning VMware as the multi-cloud leader – I relish these challenges.What aspects of marketing are you passionate about?What I really love about marketing is that storytelling is at the core of what we do. Marketing should focus on the functional, the economic, and the emotional value we provide to customers. When you have a clear understanding of all three and communicate well based on that understanding, that’s the gravity that brings customers and partners to you.For example, a pen is functional and economical, but with my laptop, there’s an emotional component. I have an Apple computer and I have an emotional connection to that product. Apple gets it. When people say, “We don’t have product market fit,” it’s because they’re trying to sell a Ferrari as economical, which is not describing the core value of the product appropriately.Can you share a few fun facts about yourself?I grew up in Fairmont, West Virginia, a town of 15,000 people. I can tell you firsthand, you can take the girl out of West Virginia but you can’t take West Virginia out of the girl. I love anything deep fried – okra, fries, ice cream.I’m also more comfortable underwater than on land. Though I grew up in a landlocked state, my nuclear family loves the water, specifically diving, sailing, and fishing.--If you’re interested in joining Carol and Unity on the journey to build the future of real-time 3D content, check out our Careers page. We’re hiring in more than 45 locations around the world.]]></description><link>https://unity.com/blog/news/faces-of-unity-carol-carpenter</link><guid isPermaLink="true">https://unity.com/blog/news/faces-of-unity-carol-carpenter</guid><pubDate>Wed, 09 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Twitching with excitement for our Unity showcase – live at GDC]]></title><description><![CDATA[Yes, the rumors are true. Tom Holland and Zendaya are official, Rihanna is pregnant, and we’re launching the Unity Showcase – Live at GDC. Throughout the month of March, we'll be celebrating indies on Twitch with Creator Spotlight streams, and broadcasting live from GDC between March 23-25. This time though, we're bringing along some Unity Insiders to cohost, including fan favorites like Harry Alisavakis and Code Monkey. Mark your calendars and get ready to join!March 8 | 9 AM PT | FAR: Changing TidesMarch 10 | 8 AM PT | Dice Gambit [POSTPONED]March 17 | 9 AM PT | Chinatown Detective AgencyTBA | OlliOlli WorldLive from GDC:March 23 | 9:30 AM PT | TentacularMarch 23 | 1 PM PT | TUNICMarch 24 | 2 PM PT | Cult of the LambMarch 25 | 1:15 PM PT | Neon WhiteMarch 8 | 9 AM PT | Add to CalWhen it was announced that the geniuses behind FAR: Lone Sails were releasing a companion title, the Unity community was eager to see the announcement trailer. It did not disappoint. Once again enjoy exploring the post-apocalyptic world introduced in Lone Sails, but this time by boat. The addition of underwater exploration and expansion in the color palette has many excited to set sail in March.Cohost: Harry Alisavakis, Technical Artist at JumpShip | TwitterMarch 10 | 8 AM PT | Add to CalOne of the best things about this series is getting to spotlight hidden gems. Dice Gambit is one of those. Take the turn-based tactical combat made popular by games like Fire Emblem but add the uncertainty of dice. Anything can happen in this Neo-Renaissance metropolis and you have to adapt to what you roll.March 17 | 9 AM PT | Add to CalThe 90s left the gaming community with a Carmen Sandiego-sized hole in its heart, but Chinatown Detective Agency is here to fill it. This point-and-click cyber noir adventure game explores Singapore 2032. Traverse the cyberpunk world to unravel a global conspiracy and solve the case.Cohost: Gabi “Zyger” Maczynska, Game Developer and Programmer | Twitter | Instagram | YouTube | TwitchWith skateboarding making its comeback, the world has been hungry for a skate game that will bring back the Tony Hawk pro-skater days and OlliOlli World has more than delivered. Enter the world of Radlandia, a trippy universe governed by the skate gods, and flip and flow to Gnarvana. The switch to 3D and the evolution of its already complex trick system builds on the success of prior entries in the series. With its quirky cast of characters, crazy environments, and cheeky script, OlliOlli World feels like both a breath of fresh air and a love letter to the genre.Cohost: Joyce, Solo Developer of Astro Kat, a Catventure Game | Twitter | Twitch​​March 23 | 9:30 AM PT | Add to CalHere’s the pitch: Play as a gigantic tentacled beast and use your strength and size to assist humans with daily tasks. Intrigued? Same! This newly announced VR title from Firepunchd and Devolver Digital looks adorable and has grabbed a lot of attention with its octo-suckers.Cohost: Justin Barnett, VR Developer, Tutorial Maker, and Gameplay Reviewer | Twitter | YouTubeMarch 23 | 1 PM PT | Add to CalSmall fox. Big adventure. In Tunic, take on a world filled with confounding puzzles, ferocious monsters, and ancient secrets. This top-down, isometric action game inspired by Zelda is told in a largely indecipherable language. This decision from the developers invites players to co-create the story with their imagination.Cohost: Joyce, Solo Developer of Astro Kat, a Catventure Game | Twitter | TwitchMarch 24 | 2 PM PT | Add to CalIf anyone denounces the awesomeness of Cult of the Lamb, they will be declared a false prophet and banished from Unity’s commune. Perform dark rituals, give sermons to gain new believers, and defeat rival religious leaders to become the one true cult. This creepy and deceptively cute roguelike is set to release in 2022 so get ready to build your flock.Cohost: Manisha W, Game Developer Hobbyist and Software Engineer | Twitter | YouTube | InstagramMarch 25 | 1:15 PM PT | Add to CalHow can Neon White be encapsulated? This frantically paced part dating sim, part card game, first-person shooter looks like it will take players on a wild ride. Wake up in Heaven with no memory but the sole purpose of killing demons. Piece together the past by interacting with other characters and making strategic card decisions for godlike powers. Prepare to ascend this year on the Switch and PC.Cohost: Harry Alisavakis, Technical Artist at JumpShip | TwitterIn addition to the Creator Spotlight series, we’ll be sitting down with some of our favorite Unity creators for inclusion and narrative roundtables, and so much more. Whether virtual or in person, we would love to have you join us!For a rundown of all GDC related activities, visit our Unity at GDC page.To get live updates on what’s happening at GDC, follow us on Twitter and Instagram.For more information on how to become a Unity Insider, check out our program.For more Creator Spotlights, watch our recent Summer 2021 Playlist.]]></description><link>https://unity.com/blog/news/twitching-with-excitement-for-our-unity-showcase-live-at-gdc</link><guid isPermaLink="true">https://unity.com/blog/news/twitching-with-excitement-for-our-unity-showcase-live-at-gdc</guid><pubDate>Mon, 07 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[We stand with Ukraine]]></title><description><![CDATA[Over the past two weeks, we have witnessed massive, unprovoked violence waged against Ukraine. Unity condemns the actions of President Putin and his leaders perpetrating this war against Ukraine. And in turn, we have been amazed and heartened by the strength, resolve, and courage shown by President Zelensky and the people of Ukraine.We’ve said this more times than we can count: we believe the world is a better place with more creators in it, and we believe these creators are the changemakers of the world. From a purely humanitarian perspective, this philosophy means we have to do what we can to ensure the safety and protection of as many Ukrainian people as possible. This isn’t a matter of politics, it is a matter of basic human rights.So, Unity is doing what we do best. We have come together. We have unified. We have acted swiftly to support and aid our Ukrainian community, including employees, job candidates, developers, and creators. Our shock and grief have turned into action: nearly half of all Unity employees have contributed to support Ukraine and its people.Ukraine has a long and vibrant creative community, especially around gaming. Unity has been lucky enough to employ a number of talented engineers in Ukraine for many years, so our initial focus was on our teams and, when they choose to leave, to help get them to safety. We are working with people in-country and our teams in Ukraine and Russia to assist in their relocation. This includes ensuring their safety through temporary relocation out of these regions, with the opportunity to obtain emergency visas.As of today, we are taking our support one step further and launching a fast-track application process, including relocation support, for job seekers who are either currently in Ukraine or those outside of Ukraine due to being displaced with the current conflict and are urgently looking for work. We look forward to welcoming even more Ukrainian talent to Unity.At the same time, Unity employees and leaders could not stand by and watch the atrocities unfolding in Ukraine without taking more action. We remain eager to do more and to support our Ukrainian colleagues and community going through the worst situation imaginable as they fear for the safety of their family and friends.So, we started several initiatives focused on delivering additional aid in Ukraine:Employee giving:• We came together quickly to build a very aggressive matching campaign to help support Ukraine through four organizations doing truly life saving work. Nearly half of all employees raised over $212,000. Unity matched each $1 donated 2X and I personally matched each donation so that our employees’ original donation goes 4x further. As of Friday, we collectively donated over $1.34 million.Asset Store programs:• A group of inspired, motivated and tireless employees launched the Ukraine Mega Bundle on March 2 on our Asset Store. The Ukraine Mega Bundle features 32 beautiful assets donated by publishers from around the world—these publishers have agreed to forego their own revenue in their support of Ukraine so 100% of the proceeds from the sales of these assets will go to humanitarian charities. To date, the Bundle has raised more than $300,000 and as it will continue through the rest of March, we believe this is only the beginning.• Additionally, we know that 500+ Ukrainian Asset Store publishers can and will continue to make inspiring creations. For the remainder of 2022, Unity will donate 100% of our net revenue from the sales of the assets sold by these publishers to Ukrainian relief efforts.We also know that many of our creators are directly suffering as a result of Putin’s war in Ukraine. We at Unity wanted to remove at least one source of additional stress.So, in concert with our focus on humanitarian aid, we are working to give our customers additional financial flexibility during such a difficult time. We have designed a system to offer our customers financial relief and will continue to do so as long as this crisis continues. If you’re a Ukrainian developer or creator and need payment relief, please contact us at support@unity3d.com.The other major aspect is aligning to the latest guidance from the United States Departments of Commerce and Treasury, which has implemented new export controls and economic sanctions that impact Unity’s relationships with our Publishers and Suppliers in Russia, Belarus, and certain regions of Ukraine. Unity's Legal team has been working non-stop since the beginning to ensure that we are swiftly taking action, identifying customers or partners affected, and adhering to these evolving sanctions.We are also identifying and pausing relationships with certain developers, advertisers, and publishers with ties to the Russian Government, regardless of their location. This is a challenging exercise involving precise research, and the ongoing effort will continue through and possibly beyond this time of war in Ukraine.There are many moments where I am proud to be Unity’s CEO but this moment stands out. I have been heartbroken as I watch the atrocities in Ukraine, but I am so proud of the way Unity employees have come together to support these incredible humanitarian efforts.Our greatest hope at Unity is that there will be a swift end to the heartbreaking violence and needless loss of life and liberty in Ukraine. Until then, while we do not fully know how this crisis will unfold, we will continue to monitor the situation closely and share additional updates just as we will continue to aid the people of Ukraine.]]></description><link>https://unity.com/blog/news/we-stand-with-ukraine</link><guid isPermaLink="true">https://unity.com/blog/news/we-stand-with-ukraine</guid><pubDate>Mon, 07 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Should you be bringing your creatives in-house?]]></title><description><![CDATA[Originally published in gamesindustry.bizIn recent years, with user acquisition becoming increasingly automated, the focus on creatives has heightened within game studios -- nailing the ad creative is one of the few ways to get the edge on the competition.To keep up, there's been a growing trend of bringing creative production in-house -- either completely or in a hybrid mode that shares some responsibilities with an outsourced third-party.Here are some tips for deciding which approach is right for you.The case for in-house1. ControlWith an in-house team, studios can own the end-to-end ad creative process, from ideation to optimization. As an organic part of your organization, they're dedicated to managing the priorities of your game studio and can work closely with other internal teams to help improve creative performance -- and the operation as a whole.With each creative, they can build an internal knowledge base of best practices that can be used as a competitive advantage in the market and boost the speed of production. Also, internal creative teams are always more motivated to crack the creative code because your game's success is directly aligned with their own.An in-house creative team that's able to access all of a game's data creates a more seamless feedback loop.2. Internal data transparencyAn in-house creative team that's able to access all of a game's data creates a more seamless feedback loop. For example, game designers can let the creative team know which parts of gameplay are performing best based on in-game metrics, allowing creative teams to highlight those in their next ads.This all happens more quickly and efficiently than communicating with an external creative team -- you also may not want to share extensive and sensitive in-game data with outside organizations. Instead, you can keep your secret sauce, your creative formula for success, to yourself and ensure your insights and data remain a secret.3. Time to marketFactors that affect the speed of creative production like design and optimization processes are always shorter when all teams are internal. That's because bringing your creative team in-house enhances internal communication and creates that well-oiled feedback loop we mentioned earlier. It improves the efficiency of all sides of the operation, from idea to going live. There's a reason most hyper-casual studios have in-house creative teams: speed is especially important for this genre, as the top charts change quickly and competition is high.In the past, I found there was a huge gap from when the creative was ready to go live to when it actually did go live. In an extreme example, we once created a playable that later proved to boost performance 5X, yet it was waiting in someone's Dropbox for 10 days. This equated to a loss of hundreds of thousands of potential new users (or saved marketing costs). After we brought creative production in-house, the team could automate this process and test playables in a much more controlled and precise way that reduced time to market.4. Return on InvestmentIn the long run, building in-house creative teams may be more cost-effective because you're not paying an agency premium. Of course the cost of failing or struggling to deliver value is always there, but if done right, the savings can help you scale a creative department that lets you enjoy all of the in-house benefits.The case for hybridGame studios will likely reach a point where they've exhausted their ideas for new, internal creatives. When that's the case, they can benefit from seeking external inspiration in addition to the internal teams they possess. That's when an external creative team can come in handy. The following are four advantages of outsourcing creatives while retaining an internal team.1. Fresh perspectiveAs mentioned, you can bring on an external creative team to consult with your internal one when you feel you've exhausted new ideas and need some inspiration.Every company -- no matter the size of their creative team -- can get stuck in the ideation phase. When you're working on a specific title for weeks or even months you can get consumed by your ideas of what's working and what's not.If a designer has been working on a specific feature in a creative for three weeks, for example, but it doesn't perform well, they're more likely to try and iterate on it than go back to the drawing board. In the meantime, valuable time was lost that could have been spent identifying a different creative element that unlocked scale.Working with other people can provide you with a totally different point of view, and they can move the needle in the positive direction. For example, once, a company consulted us about designing creatives during their game's soft launch after they had been working on their creative strategy and building out the game for six months. We were able to review the progress they had made and provide fresh insights, like spotting the opportunity to change the characters from 2D to 3D, which was a popular trend for the genre at the time.2. VolumeIf your internal team isn't delivering at the volume you need, you can supplement production by outsourcing while you work on ramping up internally. If, for example, you have a series of hit games and creative production scaled up too quickly for your internal team to handle immediately, then an external team can come in handy to help out as you catch up.3. RiskWhen hiring an internal creative team one of the main concerns is often that they'll fail to boost creative performance enough to be worth the cost and that it'll take months to onboard them and start producing creatives. External teams can help address these risks by giving your studio more time to bring on an in-house creative team and train them to start seeing results.As laid out earlier, there are plenty of advantages to an in-house team that make them worth the initial cost of hiring, and outsourcing some creative production in the meantime can help ensure a seamless transition.An external creative team can relieve some of the operational load placed on an internal creative team4. ResourcesAn external creative team can relieve some of the operational load placed on an internal creative team. However, an outsourced team alone can end up costing more in the long run, and can cause more holdups in the creative process.That's why it's best to use an external team in addition to your internal creative team to enjoy all of the benefits that both types of creative production offer. You can rely on outsourcing when you need additional help in your business to free up internal resources.The path forwardI've seen the benefits of both in-house creative teams and outsourcing firsthand, and there's no one right answer for which path you should pursue -- it all depends on your studio's needs and resources at a given point. Assess what you think is the greatest benefit from your creative team and start your decision making process from there.]]></description><link>https://unity.com/blog/should-you-be-bringing-your-creatives-in-house</link><guid isPermaLink="true">https://unity.com/blog/should-you-be-bringing-your-creatives-in-house</guid><pubDate>Tue, 01 Mar 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Metaverse Minute: How digital twins are revolutionizing medicine]]></title><description><![CDATA[As you’ll see throughout our Metaverse Minute series, many organizations are already using the industrial metaverse to simulate and discover solutions to real-world problems. For example, the healthcare industry is realizing an overwhelmingly positive impact with immersive tech. February is American Heart Month, and I’m excited to share some of the medical applications of Unity’s digital twin technology that uses AI, virtual reality (VR) and extended reality (XR).*Warning: This blog post contains medical imagery that may be jarring for some people.*A learning app that uses holographic simulations of standardized patient scenariosDespite years of coursework, medical students often gain practical training with real patients through trial and error – or worse, trial by fire. Today, with XR technology, we can simulate real-world situations – like a patient going into cardiac arrest – and provide safe-to-fail experiences that mimic clinical environments. Using holographic patients removes real-life medical risk, as well as pressure on students. Trainees are more engaged in learning while improving their diagnostic skills. Our hope is that adoption of applications like GigXR’s HoloPatient increases so that by the time students reach the field, they are well versed in the challenging scenarios they will confront.Advanced surgical training developed with VRVirtaMed believes that “healthcare professionals should never have to perform a procedure for the first time on a patient.” By training with VirtaMed’s immersive simulations, surgeons entering orthopedics, gynecology, and other specialties have already performed invasive procedures in VR. The technology aims to shorten learning curves and create a seamless transfer of skills to the operating room. We are excited to see how this will improve patient care.A smart assistant that helps patients navigate a hospital campusWhen I heard about Ouva’s Virtual Assistant, I immediately recognized how helpful this would be for patients receiving cancer treatments. As anyone who has experienced cancer or has a family member or friend with a cancer diagnosis knows, treatment can involve many different specialties and often leads patients across several healthcare facilities. The navigation can be daunting and exhausting. Ouva uses artificial intelligence to guide people to their destination via their smartphone or hands-free hospital displays. This guidance should reduce anxiety and frustration in many scenarios that are already stressful for patients and family members. I hope to see Ouva in hospitals across the U.S. improving patient experiences.Don’t miss the upcoming webinar How Ouva builds a production-ready patient monitoring platform with synthetic dataVR medical imaging for complex surgical planningThe Cincinnati Children’s Hospital Medical Center is making incredible advances by leveraging VR. Dr. Ryan Moore and his team are finding long-term solutions for children with extremely rare heart conditions. Most recently, Brayden Otten, whose heart could not properly pump blood, was healed with a surgery visualized in VR. VR is also helpful in explaining surgical procedures to patients and their families. We hope that VR continues to bring light to cases, like Brayden’s, previously considered lost causes. With the medical metaverse, we aim to save lives in the real world.We know there are many more applications of Unity and would love to see yours! Tag our handle @digitaltwin on Twitter with a brief summary of your application and you may see it in the next Metaverse Minute.]]></description><link>https://unity.com/blog/industry/the-metaverse-minute-celebrating-american-heart-month-with-medi-verse-applications</link><guid isPermaLink="true">https://unity.com/blog/industry/the-metaverse-minute-celebrating-american-heart-month-with-medi-verse-applications</guid><pubDate>Thu, 24 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[On-device advertising 101: A report by Singular and ironSource Aura]]></title><description><![CDATA[The average mobile marketer uses 5 or fewer media sources - typically, just the traditional UA channels. However, their CPIs tend to be much higher than marketers using 6 or more media sources, $3.58 compared to $2.24. It’s time to start diversifying your ad sources. Enter on-device advertising.Singular and ironSource Aura partnered on a report highlighting everything you need to know about why and how to master on-device advertising. Read on for some of the key takeaways or download the report to learn more.On-device advertising connects advertisers directly with carriers and original equipment manufacturers (OEMs), allowing you to reach users natively at pivotal moments throughout the device experience - such as onboarding a new device. With tech development pushing on-device advertising past static factory preloads and into new placement opportunities, advertisers can expect a conversion rate (CVR) upwards of 20% with this channel.Over the last few years, on-device advertising platforms have shown strong performance. In fact, on-device advertising together accounts for 8 spots in Singular’s 2021 ROI top charts. This means it’s more essential than ever to know the unique characteristics of this channel and what are the best practices.The benefits and unique characteristics of on-device advertisingIn addition to driving strong ROAS and high-value users, on-device advertising offers some unique benefits:1. High quality inventory that’s accessible to all: On-device advertising is no longer restricted to massive brands. 2. Higher than average conversion rates: Such campaigns have a proven track record for driving higher conversion rates. 3. Drive longer-term value: The LTV curve for on-device campaigns starts slower but then increases at a faster rate. 4. Native device experience: Advertisers can connect with users in a unique placement that feels like part of their natural device setup experienceBest practices, strategies, and tactics for on-device campaignsThe report also dives into how to get started to maximize the potential of your campaigns.1. Measure performance with a long-term view: Attribution is unique for on-device campaigns and using a longer attribution ensures accurate performance. 2. Don't restrict to a device model: Restricting yourself to certain settings, such as the device model, can reduce your scale by limiting the number of users you’ll reach. 3. Utilize all the placements available to you: It’s essential to know your goals and then find the on-device placements that help you hit those goals. 4. A/B test the correct elements: A/B testing on-device channels is critical in optimizing your strategy. 
]]></description><link>https://unity.com/blog/on-device-advertising-101-a-report-by-singular-and-ironsource-aura</link><guid isPermaLink="true">https://unity.com/blog/on-device-advertising-101-a-report-by-singular-and-ironsource-aura</guid><pubDate>Thu, 24 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 ways to boost ad monetization with user segmentation]]></title><description><![CDATA[As a game developer, you strive to create a fun and engaging experience for all of your players. However, your players are by no means homogenous, and their in-game experience should reflect that. The more relevant the content is for your players, the more likely they are to engage with your game - bringing more revenue into your pockets.What is user segmentation?User segmentation is the process of dividing up your user base into segments based on various parameters and then delivering the most relevant ad experience for each. Some examples include: country, paying vs non-paying, app version, level reached, and the list goes on.There’s also dynamic segmentation, in which segments can be updated during a user session. For example, if a user wasn't segmented as a paying user prior to beginning their session, but paid for an in-app purchase after seeing two ads, the paying user segment will be updated to include that user. This feature ensures your segments are incredibly accurate, meaning you’re more likely to offer the best ad experience possible.5 ways to segment your usersLet’s dive into a few ways you can use your own data to segment your app’s player base and optimize your monetization strategy.1. Paying playersThe paying players segment contains users who make in-app purchases. To ensure that you don’t aggravate them unnecessarily without cannibalizing IAP, be conscious of the number of ads you serve to this segment of users, since you’re already monetizing them.This doesn’t mean that you need to take an all or nothing approach. Instead, consider showing less to users who spend more. Alternatively, you can show paying users the same number of impressions, but offer them fewer rewards in exchange for watching a video.To really get the most out of this segment, break it down even further based on the amount of revenue these users generate - for example, into whales, dolphins, and minnows. Whales are the biggest spenders in your game, but the smallest group. Dolphins are a larger group of users, who spend a lot but not nearly as much as whales, and then come your minnows. Keep in mind that there is no general rule for what constitutes each group since it varies according to genre and game.Then serve each sub-segment a different ad experience based on the amount of revenue they’re generating in your game, according to frequency, reward value, exchange rate, mix of ad units, etc. Remember, frequency capping controls the number of times users see an ad within a session, whereas pacing manages the time between each ad impression. For example, you could show IAP whales 0 ads, IAP dolphins 1 ad per session, and so on.Pro tip: If you build your segments with ironSource, be sure to check out the Performance and User Activity reports in your ironSource account to measure the impact of any changes you make on revenue and user engagement KPIs. You can use the performance data to narrow your optimization efforts. If, for example, one sub-segment has a low engagement rate but a high ARPDEU, you’d know you need to focus on increasing the segment’s engagement rate to maximize revenue.2. Engaged playersEngaged players are users who are actively engaging with the user-initiated ads you’ve placed in your game.The magic of rewarded ads is their ability to transform non-paying users into paying users - once engaged players are exposed to the benefits only available to paying players, the chances of conversion increases significantly. That’s because they've become more invested in your game, driving both higher retention and revenue. Keep in mind that if you have a player that engages with rewarded ads 10x everyday, you’re already generating a decent amount of revenue from them, so you have no reason to serve this segment interstitial ads as well.That said, you could double check by running an A/B test in your ironSource account and measure the retention and revenue impact of showing this segment interstitials ads.3. Zero-value playersZero-value users are those who don’t generate IAP revenue and don’t opt-in to user initiated ads. You can use a prediction tool to determine early on which users are unlikely to ever engage with IAPs.Once you’ve determined this user segment, show these players system-initiated ads like interstitials or banners. System-initiated ads don’t require users to opt-in, so you’re sure to monetize each and every one of them.4. CountryIn addition to segmenting players based on how much they spend in your game, you can also segment on a country-level. The monetization habits of players in the US are different from those in India, for example.Offer users from tier-1 countries double the rewards when they watch a rewarded video or complete an offer on the offerwall. Why? Since they tend to have more disposable income, the chances of them purchasing IAPs later on is much higher.You can also replace your in-game store with an offerwall in tier-2 and tier-3 countries. You’re probably thinking this’ll cannibalize your IAPs, right? Well, IAP revenue tends to be significantly lower in tier-2 and tier-3 countries, so there’s little chance of IAP cannibalization since there isn’t much (or any) purchasing to begin with.5. WaterfallsUsing dynamic segmentation, which allows developers to update segments during user sessions, you can segment users according to their progression in the game and certain game interactions. This makes it possible to adjust your monetization strategy to improve the game experience while users are in your app. Here are some tangible examples of this type of segmentation in action:First, you can create a segment for users who reach a certain level or interaction, making it possible to adjust the ads you show based on where a user is in your game. For example, if you don’t want users to see a playable ad after they reach level 4, you can create a segment for users that reach this level and offer a waterfall without playable ads for this group. Even more so, you can replace the waterfall with one specifically for rewarded interstitials, or any other ad unit.Second, dynamic segmentation makes it possible for brand advertisers to reach users at specific points in your game, by leveraging direct deals. If the advertiser only wants to reach users after level 4, for example, you as the developer can create a segment for that interaction and create a waterfall with the direct deal in first position.In games with fast-loading waterfalls, segmenting by user progression through your game and offering different waterfalls for users that have reached a certain level or interaction, you can tailor your game experience further, even within the same user session.Start segmenting nowTo start putting these tips to practice and building your own user segments, head to the ironSource platform. There you can tailor your users’ ad experiences based on multiple conditions, as well A/B test and analyze results. Learn how to get started with ironSource segmentation here.Note that segments are created by the publisher based on information provided by the publisher, in accordance with its privacy policy.]]></description><link>https://unity.com/blog/5-ways-to-boost-ad-monetization-with-user-segmentation</link><guid isPermaLink="true">https://unity.com/blog/5-ways-to-boost-ad-monetization-with-user-segmentation</guid><pubDate>Wed, 23 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Take on version control for stronger collaboration]]></title><description><![CDATA[Version control and project organization are essential for efficient game development. And while understanding version control can be daunting without a technical background, it doesn’t need to be that way.Our new e-book, Version control and project organization best practices, will help both technical and non-technical game creators make smart decisions about how to set up version control and plan for productive teamwork.The e-book was written by a longtime Unity developer, alongside other Unity experts, with experience in team-based game development and project organization. As such, the knowledge collected in this guide will benefit a range of developers, including those of you who are new to source code management. Let’s start with a sample of the foundational concepts unpacked in the e-book: how version control works and what it can do for you.Version control allows you to keep a historical record of your entire project. It brings organization to your work and enables smooth iteration across teams.Project files are stored in a shared database called a repository, or “repo.” As you back up your project to the repo at regular intervals, you can always revert back to an earlier version of the project if something goes wrong.With a version control system (VCS), you can make multiple individual changes and “commit” them as a single group for versioning. This commit then sits as a point on the timeline of your project, so that if you need to revert back to a previous version, everything from that commit can be undone. In fact, you can review and modify each change grouped within a commit, or undo the commit entirely.With access to your project’s full history, version control not only makes it easier to identify which changes introduced bugs, it lets you restore previously removed features, and document changes within your game or between product releases.What’s more, because version control is typically stored in the cloud or on a distributed server, it supports your team’s collaboration from wherever they’re working – an increasingly important benefit as remote work becomes commonplace.Aside from the reasons mentioned above, version control is useful for making experimental changes. For instance, you can try adding new features to the local version of your project, and if things don’t work out, revert back to a clean, functional version, without compromise.Even more, you can save your changes for a later date while iterating on experimental ideas, which is particularly helpful if you encounter a major issue in the main project. With version control, you can get your local version back to the main branch, and then restore and carry on with the experimental work once you’re done.Finally, version control systems prevent you from accidentally overwriting your teammate’s work, a conflict so many of us have faced before. As you commit your own work to the repository, you will also need to “pull” the latest updates from it. This allows you to verify whether someone else has been working on the same file. And although these dreaded “merge conflicts” can seem intimidating at first, they’re often resolved quickly once you’ve grasped the right tools.Get the full range of expert tips by downloading the free e-book. Topics covered in this guide include:Centralized vs distributed version control systemsA comparison of different version control solutions, such as Git, Perforce, and Plastic SCMSetting up a Unity project with each of the different version control solutionsEffectively organizing a Unity project, from the proper folder structure, to the .meta file and naming standardsVersion control best practices, such as keeping commit messages clean and easy to understand, avoiding indiscriminate commits, and so much more.For further inspiration and pointers on version control, check out these recent blog posts:Eight factors to consider when choosing a version control systemHow KO-OP uses version control to foster better teamworkSycoforge’s Return to Nangrim democratizes gamedev with Unity and Plastic SCM]]></description><link>https://unity.com/blog/engine-platform/take-on-version-control-for-stronger-collaboration</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/take-on-version-control-for-stronger-collaboration</guid><pubDate>Wed, 23 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How agencies can drive incremental growth through mobile on-device campaigns ]]></title><description><![CDATA[Global ad spend will rise to $873B by 2024, up from $634B in 2019, according to Zenith. With all eyes on marketing to help brands rebound after a challenging year, it’s important to start reevaluating your mobile user acquisition strategy to ensure you're taking full advantage of a larger budget.The place to start? Expanding past social and search into new user acquisition channels. In fact, 89% of customers are retained by companies with multichannel engagement strategies according to invesp.On-device advertising, which allows you to offer native app recommendations directly on OEMs and carriers, is a largely untapped market, making it a valuable channel to spend your budget.Let’s look at why and how to work with this channel.Why you should be leveraging telco marketingOn-device advertising is a powerful way to drive incremental growth, get in front of more eyes, and balance quality with scale.Drive incremental growth for your brandsOn-device advertising is a great way to reach users who are unreachable through your traditional channels - in other words, it’s a great way to drive incremental growth. For agencies, ”the ability to identify and optimize towards incremental growth means they can refine the way they allocate budget across their media partners for maximum impact” according to Dor Birnboim, VP of strategic partnerships at ironSource Aura, in a piece for AdExchanger.With a larger budget, most brands turn to traditional UA channels, first, to get in front of low hanging fruit. That said, with those budgets maxed out and consumers, in reality, only spending 34% of their time in traditional channels according to Criteo, on-device advertising is a unique and powerful way to drive incremental growth from a new set of quality users.Along with a larger budget, you have unparalleled expertise buying across a number of different channels, ranging from search, social, the open web, etc. This means you’re well prepared to get savvy with your on-device marketing strategy, increasing the likelihood you can continue to expand on your incrementality efforts.But why is on-device advertising, in particular, the best channel to reach a new audience?Get in front of more eyesIt’s becoming more common for users to unlock their phones for no predetermined reason, according to App Developer Magazine, which means advertising your app directly on devices is a lucrative way to engage and acquire users when they aren’t heading to a specific app or media source.This is because advertising on OEMs and carriers, you can offer native app install recommendations at touchpoints users are primed to engage. For example, when a user opens their phone just because, wanting to interact with their devices but not sure how, you can send a notification for them to install your app and redeem a special offer. With nothing else on their mind, users are likely to install and engage.Even more so, with immense advancements and innovation coming from the mobile industry, getting started with a campaign on telco channels and optimizing it is only getting easier, which means you want to get started today to reach those users before the competition.So, how does on-device advertising fit into your overall user acquisition strategy?Balance your overall Cost Per InstallIf you’re already using social and search, on-device advertising is a great way to complement your UA, all while balancing the quality and scale of your media mix. After all, while it’s important to look at each channel as a unique unit, it’s also vital to analyze your media mix as a whole. Specifically, you want to ensure your media mix has a balance between high and low CPIs, and on-device advertising balances quality and scale in one.Users who search for a specific term can generate very cost efficient CPIs. That said, scale can pose an issue for these channels. So, search channels have low CPIs and low scale, but high intent. Meanwhile, with social campaigns, the intent is not as high because a user is being recommended a solution they may not need at that moment, however due to a larger, more quality audience, the CPI and scale for social channels is high, balancing your overall CPI.On-device advertising offers cost efficient CPIs while introducing your app to a vast audience - low CPIs, high scale - making it a great channel to add to your UA mix. Users who install apps while setting up their new devices or during a device update experience tend to retain over the long term. That said, these channels won’t break the bank and you don’t have to go all in at once. As a performance marketing channel, you can leverage transparent reporting and deep data insights, which means you can test out telco marketing first, instead of paying a large, upfront sum and then hoping for the best.How to master your on-device advertising strategyNow that we understand why on-device is an important channel to add to the mix, here are some key things you should consider starting your first campaign.Take into account post-install events after D30On-device advertising reaches users when they’re primed to download new apps, not necessarily when they’re prepared to immediately engage. Due to the nature of this, you’ll have to adjust how you think about your attribution measurement and your users’ perceived value.Let’s say you’re running a social campaign with a health and fitness influencer to encourage users to sign up for your subscription run tracking program. With a traditional campaign such as this one, you’ll often set a cost-per-event goal for events early on in the funnel, such as registration, install, first purchase, etc. After all, the user should register for the tracking program immediately after install considering the nature of the campaign. While, in theory, this is a surefire way to maintain the quality of your users on most channels, on-device campaigns require you to look deeper into the funnel to understand how much you’re able to spend on user acquisition. Why?Users on traditional channels see an ad, download the app, and engage right away. Following first engagement, however, only a small percentage may remain using the app as their intent lessens. On the other hand, the LTV curve for telco UA campaigns looks like an “S,” continuing to increase and achieving a high peak. This is because users download most of the apps that they will rely on during the lifetime of the device within the first 30 days of using the device. Even more so, users that engage later on in the funnel, such as D30, will continue to engage with your app more frequently and are likely to be loyal users.For example, Aura set a KPI of $45 CPR (cost per new registration) for a video app’s campaign. Looking at the performance of a user at D7, the brand didn’t reach its CPR goal. Looking at performance at D30, they exceeded CPR goals because users had time to return to the app and register. Even more so, this user is likely to engage with the app in other ways following registration, increasing their overall LTV.You can optimize your performance with native recommendations by analyzing your CPE goals to ensure you take into account user engagement on and after D30. This in mind, it’s also important to understand where on-device advertising fits into your overall media mix using incrementality testing.Run proper incrementality testsIncrementality measurement allows you to compare the impact of your ads on each channel against control groups, which in turn makes it possible for you to refine how you allocate your budget across your media mix. But how can you ensure you’re testing your incremental growth properly?Before getting started, all of your channels should be tested for baseline performance. A well-designed incrementality test that you can feel confident in should include a random control group and control group that mimics the campaign exactly, i.e. the audience must match the test campaign.Most critically, though, incrementality tests do not work when evaluating a single channel against each other. Rather, they serve to evaluate the performance of UA channels relative to one another - it’s ideal to run incrementality tests across your entire portfolio.Incremental performance also changes over time, and you should evaluate the incrementality of your channels regularly. For example, as a brand gets more popular, the effectiveness of certain channels can alter. As your UA strategy expands, some channels may perform better or worse.Testing incrementality properly, you can compare on-device advertising against social and search and adjust your UA costs accordingly. It’s also crucial to remember that despite the performance of certain channels, each channel is providing users unreachable from others.Learn more about incremental testing.With marketing budgets increasing, it’s time to start thinking about your strategy and the channels you’re running on. On-device advertising is a powerful way to reach a new set of users, driving your incremental growth with quality users.]]></description><link>https://unity.com/blog/how-agencies-can-drive-incremental-growth-through-mobile-on-device-campaigns</link><guid isPermaLink="true">https://unity.com/blog/how-agencies-can-drive-incremental-growth-through-mobile-on-device-campaigns</guid><pubDate>Tue, 22 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The mobile advertising ecosystem in Spain]]></title><description><![CDATA[Spain’s gradual recovery from the 2008 economic crisis is marked largely by the rebirth of its tech scene. Today, the country has built a reputation for creating an environment that fosters strong app startups and tech innovation.With a GDP of $1.2B and 46M inhabitants, Spain is the 4th largest economy in the European Union, according to Invest in Spain, making it a highly relevant market in terms of mobile growth. In fact, Spain comes in second in Europe for the number of new subscribers in 2020 at 40M according to GSMA.The Spanish mobile ecosystem is healthier than ever, and just like the rest of the world, is only expected to grow and innovate in the years to come. Let’s dive into the trends and categories that are driving the Spanish mobile market, so that you can take some learnings back to your own user acquisition strategy in Spain.The Spanish mobile ecosystem in numbersLet’s look at the state of mobile in Spain in 2022:1. 1.35B app downloads on both the Google Play Store and Apple App Store in 2021, ranking #23 in the world for app downloads (data.ai)2. $550M revenue generated from apps in 2021, ranking #17 in the world for app revenue (data.ai)3. Most users spend somewhere between one and two hours on their phones a day (Statista)4. Between 2018 and 2024, the number of smartphone users is predicted to grow by nearly 3M, reaching 40.33M users (Statista)5. There are over 25,861 apps from Spanish publishers on the Google Play Store (42 Matters) 6. There are more than 6,022 Spanish publishers on the Google Play Store (42 Matters)7. Shopping, Games (Action), Entertainment and Tools account for one-third of the most downloaded apps (data.ai)8. Android holds 78% of the market share in Spain, compared to iOS holding 21% and other operators holding around 1% (statcounter)With a broad overview of the Spanish mobile ecosystem, let’s dive into some key trends specific to this market.Spain is a hub for app startupsSpain has cemented its place in the global app market, publishing chart topping hits from both well known brands and smaller developers. Even more so, specific to Spain, many of their startups and unicorns are app first businesses.The number of European unicorns rose from 223 to 321 in 2021 according to State of European Tech, which means there are more European unicorns than ever before. Spain, in particular, has established itself as a hub for tech startups and innovation, especially in the app category.In fact, 2021 marked a record breaking year for startup investment in this geo - 4,207M euros were invested in a total of 400 tech start ups - with Madrid and Barcelona accumulating 85% of the country's investment according to ElReferente. That said, other cities like Malaga and Valencia are developing in terms of the app development scene.In Southern Europe, Spain is in the lead with 12 startups achieving unicorn status, with companies like Glovo, Cabify, eDreams or Schibsted Spain, which are either app-first businesses or have a prominent app touchpoint, valued at over $1B according to novoBrief. 2022 is expected to create more unicorns in the region with some candidates being Wallapop, Playtomic or Civitatis among others.Overall, Spain is emerging as a hub for startups and unicorns, many of those being app-first business or having a prominent app touchpoint.Prominent app categories in SpainHere are the top app categories in Spain today.Shopping apps are a rising starThe most downloaded app category in Spain is shopping (+34M), a rising star in 2021 according to data.ai. This is because chart topping shopping hits, such as Milanuncios (#42 in the charts), a classifieds platform, are helping users sift through their belongings and organize their homes, something more necessary post pandemic.Specific to Spain, e-commerce experienced a 14% growth in sales during the third quarter of 2021, three points above the global average according to Salesforce. This means that Spain is shifting to mobile shopping faster than other geos, making it a vital category to pay attention to.Food apps are disrupting the industry after COVIDLooking at the most downloaded apps, the food category holds some of the top spots. In fact, the McDonalds app is ranked #6 and Glovo is ranked #21 in the charts according to data.ai. As consumers continue to demand new and innovative food delivery services post pandemic, food apps have seen exponential growth adapting to those needs.Glovo, in particular, has approximately 4.3 million users across 24 countries. By selling its own products and opening its own fulfillment centers, Glovo has been able to differentiate itself from competitors and take full control over the commodities it sells.Entertainment and social apps remain popularWith countless new streaming services and social channels entering the market, it comes as no surprise that social and entertainment apps have remained high in the charts - social and entertainment titles are in the top 10 most downloaded apps in Spain according to data.ai. Even more so, entertainment and social apps are some of the top revenue generators outside of gaming.In 2021, revenue from video streaming in Spain reached $851M. By 2026, this number is expected to reach $1,131M according to Statista. Similarly, the number of social media users in Spain accounted for 80% of the total population in January 2021. This number increased by 8.1 million (28%) between 2020 and 2021 according to Datareportal.These numbers show us that social and entertainment have strong usage that is only expected to become more prominent in the years to come. In particular, dating apps are beginning to scale in the rankings - user penetration will be 13.8% in 2022 and is expected to hit 15.5% by 2026 according to Statista.Games generate the most revenueStrategy games generate the most revenue in Spain according to data.ai, followed by casual games, action games, productivity apps, and RPG games. The revenue from these categories represent a little over 50% of all revenue generated in the gaming category ($145M out of $276M). Looking at the top 10 revenue generators, the category generating the most revenue is casual games ($16.5M), which includes games from developers like King and Moon Active.This is because the vast majority of spend on apps goes to games, according to a report in The Guardian. Even more so, from 2022 to 2026, mobile game revenue is expected to show an annual growth rate of 7.64%, resulting in a projected market volume of $1,033M by 2026 according to Statista. This same trend is mirrored globally.Mobile marketing trends in SpainIt’s also important to be aware of trends in mobile advertising.Most mobile professionals in Spain (76%) expect an increase in their mobile marketing budget according to MMA Spain, which indicates a confidence in the market conditions and effectiveness of the channel. After all, nearly three quarters of the world will use just their smartphones to access the internet by 2025 according to CNBC, making it an incredibly important channel to leverage.Further, display advertising is the most popular form of mobile monetization, with 70% of marketers saying they implement these ad units according to MMA Spain. However, video advertising is catching up with 60% using this monetization method. This is because, today, users want to engage with video ads and spend more time digesting these ad units, increasing revenue, retention, and engagement. Let’s face it, the average user remembers 95% of a message when it is watched, compared to 10% when it is read according to Instapage.Last, social channels are by far the most used channels, with 87% of marketers using social in their strategy according to MMA Spain. This, coupled with an increased budget for mobile marketing, represents an opportunity for marketers to expand past traditional channels and untap new audiences. For example, on-device advertising is a great way to reach users unreachable through social channels and drive incremental growth.Spain is solidifying its place in the mobile market and app ecosystem globally, which is why it’s important to pay attention to the statistics, app development growth, best performing categories, and mobile marketing trends in this geo. This way, whether in Spain or beyond, you can adjust, optimize and diversify your own strategy.]]></description><link>https://unity.com/blog/the-mobile-advertising-ecosystem-in-spain</link><guid isPermaLink="true">https://unity.com/blog/the-mobile-advertising-ecosystem-in-spain</guid><pubDate>Tue, 22 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[What the hell is a marketing developer and does your game studio need one?]]></title><description><![CDATA[With mobile UA constantly evolving (iOS privacy updates as the most recent example), now more than ever - creatives are king. They remain one of the few levers you can still control to get valuable insights into your UA performance. With playables and interactive end cards becoming a critical part of an effective marketing strategy, studios are directing their focus to producing high-quality interactive creatives efficiently giving rise to a new role: the marketing developer.We’ve seen that having a dedicated team member focused on designing and optimizing creatives while working closely alongside other teams can help streamline operations and yield more impactful, high-performing interactive creatives. It’s time for mobile studios of all sizes to understand the what, why, and how of this new role emerging in the mobile marketing space so they can supercharge their UA.What to expect from a marketing developerBecoming a marketing developer requires two key skills not often possessed by a single person. First, a technical coding background in languages like Javascript and HTML5 enables them to construct high-quality, disruptive creative assets on game engines like Unity. And second, they understand how to design and optimize these creatives so they achieve marketing goals.A marketing developer can bring a developer’s perspective and skills to the marketing team and flex their creative abilities at the same timeThat means they can bring a developer’s perspective and skills to the marketing team and flex their creative abilities - all while collaborating with other teams in the organization, too.Why you should hire a dedicated marketing developerToday, most studios either outsource creative production to an agency or have an internal team of designers and developers. So what advantages can an in-house dedicated marketing developer bring?Flexibility and speedFinding your hero creative and unlocking scale faster gives you a competitive advantage in the market. But of course that’s easier said than done. Giving that responsibility to a marketing developer who can take full ownership over playable production in-house, means there’s someone always testing and iterating versions to find those winning creatives more quickly.For example, if you need a developer in your external agency to change the size of the grid in a playable for a merge game - because playables consist of many elements that require coding to adjust - you need to request each of these changes and wait for them to be implemented. Then, you need to test and analyze their impact on performance. This creates a much longer playable production process than having a marketing developer do it internally. With a playable developer in-house, they have the flexibility and autonomy to deliver an asset and optimize it more quickly. Working alongside other teams enhances their flexibility and speed, too. They can work with the games team, for example, to identify the top-performing piece of gameplay and then implement that into a playable.ControlControlling the workflow internally and driving cross-team collaboration boosts efficiency. Creative teams have access to internal data and can work across other teams to improve performance and build an internal knowledge base of best practices.Knowledge is power for an organization. Keeping most of your processes and operations in-house lets you retain all of the information for your own benefit while keeping it from competitors.Knowledge is power for an organization. If most of your processes and operations are in-house, you can retain all of the information for your own benefit while keeping it from competitors. There’s inherent risk in handing control over to an external team, and having a marketing developer in-house reduces this risk and future-proof your business.OperationsSince marketing developers reside in-house, they can work directly alongside other teams to create a seamless feedback loop that improves the entire operation from within. Often, there’s a wall between teams - the UA team, games team, and creative team function in silos. A marketing developer that works across these teams can help break down these walls and encourage more data sharing, communication, and knowledge-building internally. Studios use these learnings to crack the creative code more quickly and easily during new app launches. Plus, the games team benefits by learning what elements are performing well in creatives that could inspire new game features and boost in-game metrics, like retention.How to find the right fitHiring a marketing developer doesn’t mean restructuring an operation - studios hire candidates that are eager to learn and can work well with their existing game engines. Attract strong talent by elevating the role of a marketing developer within your organization. Emphasize their varied responsibilities and the impact they can make across teams: creative, UA, and the games teams.Highlighting the exciting nature of the role and the growth opportunities can attract the right marketing developer to your doorstep.It’s a new and exciting role that can directly impact the bottom line of a business and gives candidates the opportunity to explore many sides of an operation. Highlighting the exciting nature of the role and the growth opportunities can attract the right marketing developer to your doorstep.Ready for impact?Marketing developers work closely across teams to generate high-performing marketing assets, and they should be just as proficient in the analytical side as the coding and design aspects.We’ve seen the impact of bringing on a capable and excited team player. Studios are able to put creative production into overdrive and take advantage of the benefits a marketing developer offers their entire operation. Now it’s your turn: ready to bring on a marketing developer? Tell us about your experience and leave us a comment at our LinkedIn.]]></description><link>https://unity.com/blog/what-the-hell-is-a-marketing-developer-and-does-your-game-studio-need-one</link><guid isPermaLink="true">https://unity.com/blog/what-the-hell-is-a-marketing-developer-and-does-your-game-studio-need-one</guid><pubDate>Sun, 20 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Breaking down the walls between teams to improve your app’s UA from all sides]]></title><description><![CDATA[There's often a wall between the different teams within a mobile studio, with the UA team, games team, and creative team functioning like separate silos. But it’s important they all collaborate for more buy-in and to improve all sides of your business - from creatives to game performance.It’s time for studios to improve communication and data sharing across teams. Fully integrating your creative team is the key to forming a seamless feedback loop that unlocks the capabilities of each part of your operation.Bringing transparency to creative performanceAs a silo, creative teams could easily hand off ads to the UA team and wait for feedback on performance. But if the creative team works closely alongside UA, they can open up that black box by discussing better ways to organize and tag the creatives before handoff. For example, the creative team can coordinate with the UA team about tagging a set of creatives with features like the color of the background (red/blue), the characters featured (panda/stickman), and the date of the campaign. This makes it easier to track performance and break down creatives by tags, which sets the UA campaign off on the right foot with a better structure and higher level of organization.Creatives improve the game build, and vice versaBy working directly alongside the product team, the creative team can improve not only the creatives, but also the game itself. They can provide feedback on what features - color, tutorial, character - or mechanics performed well in ads while the product team A/B tests these winning elements in the build to see if they improve in-game metrics, like retention and playtime.Testing a new feature in creatives first saves the product team time and resources instead of building it into the game immediately without having data to back up the decision.On the flip side, the product team can test a potential feature in creatives before adding it to the build. If the feature performs well based on in-ad KPIs like engagement rate, user dropoff, and completion rate, they can integrate it. Testing it in creatives first saves the product team time and resources instead of building the feature into the game immediately without having data to back up the decision.Encouraging greater buy-inPromoting openness and transparency within your organization starts by encouraging teams to share wins with each other. Equally - if not more - important is discussing the failures and feedback for improvement. Using a project management software ensures everyone across teams can get visibility into the creative process.When the creative process is collaborative, everyone feels involved and invested in its success. Sharing ideas and feedback across teams can inspire new concepts and suggestions for optimizing creative performance - as people get involved with ideating and suggesting iterations, this improves buy-in.When the creative team hands off ads to the UA and product teams, the performance data can be used to improve the next versions and to decide what to try and test in the next build.Cross-team ideation and collaboration gives the entire workflow a boost, from initial design to optimization. Then, when the creative team hands off ads to the UA team, the performance data can be used to improve the next versions. Also, the product team can look at those insights to decide what to try and test in the next build.Prioritizing creativesMobile industry changes like the iOS privacy updates have changed how to track UA performance and made creatives one of the most important levers studios can pull to optimize UA campaigns. Prioritizing your creative production is more important now than ever. Integrating your creative team seamlessly with other teams breaks down the black boxes of performance between them and ensures the workflow is collaborative, efficient, and seamless to yield high-performing assets.]]></description><link>https://unity.com/blog/breaking-down-the-walls-between-teams-to-improve-your-apps-ua-from-all-sides</link><guid isPermaLink="true">https://unity.com/blog/breaking-down-the-walls-between-teams-to-improve-your-apps-ua-from-all-sides</guid><pubDate>Sun, 20 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Changing Same’s creators explore Black history and healing]]></title><description><![CDATA[We believe the world is a better place with more creators in it. Our mission is to empower a diverse community of developers, give them the tools and resources they need, and help them bring their visions to life.While we regularly spotlight talented Black creators and share their stories, February is Black History Month – a call-to-action to immerse ourselves in the richness of Black culture and the lived experiences of Black people around the world.In honor of this important month, we interviewed Michèle Stephenson, Joe Brewster, and Yasmin Elayat. Together, they leveraged Unity technology to create The Changing Same, an immersive, episodic virtual reality experience that uses time travel and magical realism to explore the history of anti-Black violence in the United States.How did Unity become part of The Changing Same?Joe was introduced to Unity after his team at Rada Studio received a grant from the Skoll Foundation, which supports transformational social change by investing in, connecting, and championing social entrepreneurs and other social innovators. Joe’s team had originally envisioned The Changing Same as a 15-minute documentary, but the grant enabled them to expand their scope and consider alternate forms of media for their story. This was how Unity entered the picture, along with their co-creator, Yasmin Elyat.Yasmin had prior experience with Unity through her company, Scatter. Scatter is an Emmy award-winning creative studio that pioneered volumetric filmmaking and produces Depthkit, the most widely used toolkit for accessible volumetric video capture. Depthkit integrates with Unity through a plug-in and expansion package, allowing creators to use it with Unity’s Visual Effect and Shader Graphs.That initial exposure – through Scatter’s work with volumetric filmmaking – “got us excited about the possibilities of nonlinear 3D storytelling,” said Michèle. To get their feet wet, they created a branded 2D short for Planned Parenthood, using Unity to tell the story of three women and their intimate decisions about motherhood. “That exploration allowed us to become more familiar with Unity for our bigger, more complicated project, The Changing Same,” she added.What was the inspiration behind your project? Why did you create it?“Our work as storytellers is dedicated to giving voice to those excluded from the American narrative,” said Joe. “We must celebrate those contributions to achieve the dream of becoming a multicultural democracy, a nation where we are all seen as potential contributors.”Michèle added that as storytellers, she believes it is their duty to “witness, expose, and provoke on all experiential platforms. History is present today – and all art is political.” She explained that Unity’s mechanics allowed them to play with time in a 3D space, which aligned perfectly with their creative passions.“It all has a purpose, and the purpose is to show that the past is sitting on our shoulders. What we’re experiencing today, our ancestors experienced a variation of 300 or 400 years ago. And, we’re compelled to make that statement as part of our own healing process, and to acknowledge that the oppressive structures persist but our future can be different. That’s why we took this collaborative journey. We were drawn to the three-dimensional format to help us and our communities reckon with this inversion of time and space, in order to think in a creative way about how to change the future world for ourselves.”What do you hope people take away from your project?Joe explained that their goal is to inspire Americans and media makers of all ages while instilling a sense of belonging and pride within the Black community. Michèle added that they also want audiences “to make connections between our past and present, and hopefully feel in their hearts how the Black experience is lived today.”What did Unity technology enable you to do?Yasmin noted that developing the project and achieving their creative vision was made possible by Unity tools. The Changing Same team needed the ability to blend new workflows, a unique rendering pipeline, and Unity’s Visual Effect Graph to create the fireflies in their project and add custom effects to their volumetrically captured Depthkit characters.The Changing Same team customized Unity’s rendering pipeline to pull off the time travel illusion in 3D, which was one of the project’s more complicated technical feats. “The concept of the time travel mechanic is that when you are in one of the lush 3D environments, the world breaks and tears apart to reveal another liminal backlot environment, which the user will fly through past symbols and moments from 400 years of Black history,” Yasmin explained. “We are always rendering four cameras simultaneously – two in the world the user is currently in, and two in the next world we plan to reveal. This mechanic has never been done before in VR and it’s really compelling as a user experience!”What did the Unity for Humanity Black Visions Grant enable?The grant funding allowed The Changing Same team to finish production and create the installation that was presented at the 2021 Tribeca Festival. The visceral sonic and visual experience went on to win the Best Immersive Experience award at the festival.“The Changing Same VR experience, and afrofuturism in general, is an expression of hope – it's about acknowledging the fact that we've always been resourceful and will continue to be, and that should be a source of pride for us. In order to make those connections we have to go through the past, present, and future; this piece was about the present. Once you're able to look at all of that, the realization is that the last 350 years have been amazing. It tells us that if we have been able to achieve this much, with all the obstacles we've endured, imagine what is possible down the line.” – JoeHow have you integrated your values and mission into your work?Michèle strives to intentionally cross-check work with her core values and mission, examining the potential compromises she must engage with. “It’s a daily practice to not lose that sense of purpose that drives my work. If I don’t check in on a daily basis, I risk falling into unwanted or unforeseen compromises. It’s an ongoing tension and battle to keep one's independence, integrity, and true vision at the center of what we do as artists. Compromises are inevitable, but which ones and at what cost are the deeper questions we always need to ask.”What are your future plans for the project?The Changing Same is an episodic series. The first installment has been released, and the trailer is available to watch here.“We’re all very proud of episode one – the strong storytelling, the uncompromising subject matter, the technological innovation, and the beauty of the worlds we’ve designed. We cannot wait to bring the future episodes to audiences!,” Yasmin added.The team is currently fundraising for the second and third episodes. For updates on future episodes, subscribe to the Rada newsletter and follow the creators of The Changing Same on Twitter: @2Joedigital, @Michele0608, and @yelayat.–-Through its innovative VR format, The Changing Same invites audiences to witness connected historical experiences of racial injustice in the United States. As always, and especially during Black History Month, it’s essential to honor Black history and examine the uninterrupted cycle of racial oppression – past and present.]]></description><link>https://unity.com/blog/games/the-changing-same-creators-explore-black-history-and-healing</link><guid isPermaLink="true">https://unity.com/blog/games/the-changing-same-creators-explore-black-history-and-healing</guid><pubDate>Wed, 16 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Testing and optimizing creatives for casual games: Q&A with Trailmix]]></title><description><![CDATA[ironSource sat down with Yoojin Jung, Head of UA and Growth at Trailmix Games - a free-to-play mobile game studio based out of London - to learn more about Trailmix’s creative strategy. Read on for best practices on testing creatives, building creative frameworks that work, and optimizing creative concepts.True or false: You don’t need to experiment with more ad formats if your existing one is already delivering resultsFalse. We have clearly seen the best performance with video types of creatives across all networks. However, we keep experimenting with different formats like static images or playable ads. Thanks to these format experiments we’ve learned three things:Often, a set of ‘video + playable/interactive end cards’ perform better than ‘video + static end cards’ for the video networks.Static image formats can deliver a great CPI with high retention especially if you use Facebook AAA campaign Playable Ads can be picked up at scale on Google tROAS campaignWe could only find this out after experimenting with different ad formats.Is there really a “one-size-fits-all” creative framework for all genres?Our game ‘Love & Pies’ is a snackable and relaxing merge game with cafe renovation and delicious storytelling with diverse characters. We have an intriguing storyline, which we call ‘Delicious Drama’. What works for us is showing a character's (Amelia’s) emotional journey at the beginning. That appeals to our audiences.We have our own creative framework that focuses on the players’ motivations and what kind of emotions we want to convey through UA creatives.The main focus for us is to show a part of the story from the game, and players can unfold the full story as they play through. That’s why we always put the storytelling elements at the beginning and put the actual in-game experience following that.I can confirm that most story-driven games have a similar approach. Also, nowadays more and more creative frameworks are driven by the player's motivations. To sum up, I believe there is no “one-size-fits-all” framework for all genres, but we can find the best way of approaching each product and develop the framework as we learn more.What's been your biggest takeaway from optimizing/concept-testing creatives?We’ve been testing a lot of different creative concepts to know what our audience loves and how we can approach it. Through this testing process, we’ve learned many things about our audiences and what appeals to them. Here is a summary of the main takeaways.1) The most important thing is about knowing your product and understanding your audience. We found out our game’s amazing storyline and diverse characters are its strength throughout the testing journey. Based on that fact, we built our end-to-end creative strategy where we show the teasing storytelling as a first experience. Knowing your audience and identifying their motivation is the key for the creative concept testing2) Secondly, we need to focus on customizing the best creatives for each network. It can be as simple as resizing or changing the length. However, it can also be very complex if you want to make a different format, mix with different gameplay (experience) and add some additional art effects or voice over effects.3) Lastly, you can always polish up later once you find your best creatives. Often people want to make beautiful creatives even before validating the performance. I highly recommend creating quick creatives first and testing it out. Our best performing creatives are mostly three times polished/upgraded versions after validating creative winners.]]></description><link>https://unity.com/blog/testing-and-optimizing-creatives-for-casual-games</link><guid isPermaLink="true">https://unity.com/blog/testing-and-optimizing-creatives-for-casual-games</guid><pubDate>Tue, 15 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 missed opportunities that can destroy your playable ad]]></title><description><![CDATA[You’ve spent countless hours drilling down your concept, fine-tuning design, and focusing on building the best possible playable ad. Too often, though, creative designers and developers miss an opportunity to maximize their playable’s performance because they’re so involved in the process that they forget to take a step back and put themselves in the perspective of users.Asking yourself a few simple questions that address each part of your playable can help address any last-minute issues and improve the chances that you’re giving users a clear and engaging experience. Here, Elad Gabison, Creative Lead at ironSource Luna, shares his top 5 questions to ask yourself once you’ve designed your playable and it’s about ready to go live. Following these as a checklist can help you confirm that each part of your creative is optimized to attract high-quality users at scale.1. Is the tutorial clear and engaging at first glance?The first few seconds of your playable ad - your tutorial - are the most important for hooking users. This comes down to a numbers’ game: hooking a higher number of users from the get-go means more people playing through to the end of your playable, and likely more conversions.It’s important, then, to have a tutorial that’s clear and easy to understand while encouraging users to engage quickly. If time to engage (we’ll talk more about in-ad metrics soon) is high, it means your hook or instructions aren’t clear enough. If engagement rate is low, this is also a sign your tutorial needs work. Ask yourself:Are the colors bright and contrasting?Is it clear what action users should take and what the control is?Are you showing instead of telling (e.g. using hand pointers or glowing elements instead of lots of text)?For the game Draw Weapon, the Supersonic creative team designed a playable that showed off the two parts of the game - drawing the weapon and using it in a battle. The tutorial needed to be as clear as possible and keep users engaged for the entire flow of the creative, which was 4-5 taps. Looking at engagement rate as the key KPI, the team A/B tested four new versions of the tutorial, including:Testing different weapons for users to drawShowing the weapon flashing so it was more clear what to drawTrying out different designs for the sketch padExpanding how much of the weapon the user had to draw The testing paid off and made the tutorial more engaging and clear - in fact, the winning version increased ER by 12% to 64%.2. Did you find the right number of taps to balance challenging users and boosting CTR?The goal when building a playable ad is to create a clear and smooth interactive experience that guides users to take the actions you want, and leave them wanting more - all without exhausting them. Tapping into the feeling of frustration is one way to do this. Making your playable difficult to win and focusing on the lose scenario can be a key motivator for driving installs. But the gameplay can’t be too challenging or users will drop off.The number of taps and the time between them is important for achieving the right balance. We see there’s user dropoff after every tap - that’s good for culling low-quality users, but you need to keep the high-quality users, too. Too many taps or too long a transition between them may bore users and cause users to leave your playable. For example, if the animation after users make a match in a match-3 game playable is too long, they could lose interest and stop engaging. Although the excitement that animations provide is important, you need to balance this by getting back to gameplay quickly.The aim is to find that sweet spot of gameplay that’s challenging enough to attract high-quality users and easy enough that key KPIs remain highTry A/B testing playables with different levels of difficulty, animations, and especially number of taps to find that sweet spot of gameplay that’s challenging enough to attract high-quality users and easy enough that key KPIs like click-through rate and conversion rate remain high.3. How long does it take for users to complete your playable?One of the most common mistakes I see are playables that go on for way too long. Generally, if it takes users over 30 seconds to complete your playable, you should cut it down. In hyper-casual, for example, a playable ad should take users an average of 12-15 seconds to play through - these games should be easy to understand and show off the core mechanic within seconds. For more complex, IAP-based games, it could take users closer to 22-28 seconds to complete your playable.Simply open a timer on your phone and play through your creatives as if you were a new user. Keep in mind that the average time to engage for users is 3 seconds for hyper-casual games - for games with more complex mechanics, this can be closer to 5 or 6 seconds. So as you start timing yourself, add on a 3-6 second delay (depending on your game’s complexity) before starting to engage. Play through it 3 times so you can see on average how long it takes - if it’s too long, think where you can cut down on elements like animations and transitions.For the game Spiral Craft 3D from Dual Cat, the playable took users on average 44 seconds to click on a CTA. After Dual Cat checked the metrics through Luna's platform, they identified this as an opportunity for optimization - they removed extra elements and stripped down the creative to only the most essential gameplay. This let the users focus on the most important and engaging parts of the playable while leaving them wanting more, which encouraged them to click through at the end. The new version took users an average of 22 seconds to click the CTA and increased CTR by 160%.4. Has someone outside your team played through the creative?It’s easy to get so involved with designing your playable that you lose perspective of your target audience - your users. Take a step back by running a quick QA test with someone not involved in building the creative who can represent the average user - this can confirm it’s understandable, engaging, and clear. Plus it’s your chance to see on a small scale if you’re achieving the sweet spot of tempting users without exhausting them.Make sure that during this “My Pretend User” test, whoever plays through your creative gives you feedback so you know what details need to be adjusted before you push it live. And like the last tip, have a timer handy to see how long it takes them to play through.5. Did you set up in-ad events?Playable ads give you unique insights into your creative performance that let you dive deeper than a video, which only reveals impressions and clicks. With interactive creatives, you can see the full user journey to show areas for optimization: when they start interacting with your playable, how they engage, and when they drop off within the experience. These in-ad events can also be used to analyze variants and conclude which version was the winner of an A/B test.Take advantage of the in-ad events at your disposal to optimize your playable - and your entire UA campaign. A few of the most important in-ad events to set up and analyze include:Tutorial_clickedEnd_card_shownInteractions - Tap_1,2,3…Using these custom events can help you analyze the data inside the playable to reveal key KPIs, like time to engage, engagement rate, user dropoff, and time between events. But depending on your genre and your game, others in-ad events - like level win, level lose, money counter, and score - could be just as insightful.Using custom events can help you analyze the data inside the playable to reveal key KPIs, like time to engage, engagement rate, user dropoff, and time between events.Determine the in-ad events that matter most to your game’s success, then make sure you’re analyzing these to continue improving your playable’s performance. If you’re stuck on which events to set up, you can always ask the team behind your creative platform (if you’re using one) or turn to other resources, like industry articles or your creative peers.Providing the ultimate playable experiencePlayable ads are unlike any other creative because they give users an interactive experience that’s different from passively watching a video or seeing a banner at the bottom of the screen. Users need to be guided through your playable and shown the actions you want them to take without going overboard - too many taps or other small mistakes, will likely lead to dropoff (but you can confirm with those handy in-ad events).As you check off each item on this list, remember to keep A/B testing variations so you can continue to improve performance. Now you’ve got the green light - go ahead and set your playable live. Good luck!]]></description><link>https://unity.com/blog/5-missed-opportunities-that-can-destroy-your-playable-ad</link><guid isPermaLink="true">https://unity.com/blog/5-missed-opportunities-that-can-destroy-your-playable-ad</guid><pubDate>Tue, 08 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 ways to optimize app performance with real-time pivot reports]]></title><description><![CDATA[Finding success in today’s app landscape depends on making real time, data-driven decisions - that means monitoring new app releases, analyzing KPIs, A/B tests, and segments, and comparing metrics with data captured in the moment.ironSource real time pivot reports let you do just that:Understand trends in real time to recognize opportunities quicklyBreak your data by multiple measures and dimensionsEasily compare different time periodsView data using different visuals, like stack, line chart, bar chart, etc. Get full transparency into ironSource Exchange performance to see which DSPs are contributing to your revenueSo, what can you do to optimize performance with real time pivot reports that you can't with traditional reporting platforms? Let’s look at a few common scenarios.1. Detect changes in performance the moment they happenReacting to performance changes fast can be the difference between earning and losing revenue - and access to data that’s updated in real time lets you do just that.For example, after making changes to your monetization strategy (like adding a new network or releasing a new app version), it’s helpful to swiftly audit the adjustment to ensure it’s working well and not harming any key metrics. If a new network is hurting performance, you can remove it from your strategy immediately or talk to the network directly about the issue, reducing any long term damage. Similarly, it’s important to be on top of your data when something dramatic happens, such as an internet outage or a new campaign set to bring in a large amount of new users. If there’s a decrease in performance, you can start trying to solve the problem right away, comparing metrics against each other to figure out what the problem is. If performance improves, you have a good baseline for the next promotion campaign and can work to improve performance even further. In the image below, revenue spikes for the network in yellow, indicating a dramatic event.The same goes for A/B testing - you can analyze how the A/B test is performing as soon as possible, allowing you to iterate and adjust the test rapidly according to what’s working well for your app. In some cases, tests are very clear and you can make a decision for which iteration to keep and which to kill, fast - speeding up the A/B testing process and enabling you to test more often. Generally speaking, with real time data, you can monitor the environment of your app and ensure it’s stable, every second of every day. With all of this data available at your fingertips, it’s also beneficial to compare metrics, especially revenue, over time.2. Compare revenue over timeIn addition to knowing when performance changes occur, it’s critical to understand why - and getting a clear picture of how your revenue performs over time can help determine the reasons for various drops or increases in performance. 
Using a visual format (list, bar chart, table, grid) and choosing various different time frames, you may notice, for example, that revenue drops at 1am every Tuesday. Armed with this information, you won’t be alarmed the next time you notice the decline. On the other hand, if revenue starts spiking when it usually drops, you may want to dive deeper and compare measures.Here’s another scenario. Let’s say you’re looking at revenue by ad unit over time and notice a steep decline for interstitial ads that doesn’t follow the usual trend. To get a better idea of why this may have occurred, you can compare revenue to another measure, such as auctions (ie ad requests), and analyze the graphs directly next to each other.If you notice less traffic coming to your app - which you can measure by monitoring the number of auctions - at the same time there’s a drop in revenue, you may have your answer. In this case, you should analyze the traffic and why you believe it might have dropped - for example, perhaps it’s a holiday and there are fewer people playing. If there are no viable explanations for revenue decline, it may have been due to a technical issue, which means you may want to reach out to the network directly.With this knowledge, you can pinpoint anomalies in revenue and get to the root of them. You can also dive deep into your performance in the waterfall.3. Use CPM buckets to optimize your waterfallCPM buckets show you how much revenue and how many impressions you’re getting from each CPM price range, giving you a more granular idea of how different networks are competing in the waterfall. Typically, you’re only able to see each ad network’s average CPM. While an important metric to keep track of, CPMs can range anywhere from $1 to over $150 - but 2,000 impressions with a $100 CPM results in more revenue than 40,000 impressions of a $3 CPM. Just looking at the average, you don’t get an understanding of distribution across all of the prices.On the other hand, by separating CPM prices into buckets, you know exactly where your impressions and revenue are coming from, allowing you to track and analyze new opportunities. For example, let’s say you see most of your revenue coming from the $10-40 CPM bucket - and by comparing networks within that bucket, you see it’s all coming from a single non-bidding network. If other strong non-bidding networks aren’t providing any revenue in the $10-40 bucket, dig deeper into why. Do you have available instances there for other networks? If not, maybe you should consider adding some. If you do have instances there, do they have low fill rates? If so, you need to work on maximizing placement performance. You can even compare networks directly against each other to determine who is bidding the highest for top CPMs. This will give you an idea of the networks performing best for your app, allowing you to spend time investing in the right resources.Getting access to real time data through real time pivot reporting is a new and granular way to optimize your monetization performance and ensure you’re making the right data-driven decisions for your app. Ultimately, the choice is yours, and it seems pretty obvious. After all, data updated instantaneously is better than data updated every few hours.Learn more about ironSource real time pivot reports here
]]></description><link>https://unity.com/blog/optimize-app-performance-with-real-time-pivot-reports</link><guid isPermaLink="true">https://unity.com/blog/optimize-app-performance-with-real-time-pivot-reports</guid><pubDate>Sun, 30 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 ways advertisers can optimize their 5G on-device advertising strategy]]></title><description><![CDATA[Mobile phones are central to our digital lives, so any improvement in mobile-related technology is cause for excitement and anticipation - like 5G. In light of this, ironSoure Aura was interested in people’s perception of 5G and how it affects their device experience.In the survey of 10,000 device owners across the US, ironSource Aura found that many customers don’t fully understand the benefits of 5G, let alone the benefits on their current phones with 4G. The lack of awareness surrounding 5G highlights an important opportunity for advertisers looking to reach users on 5G ready phones. Here are the key findings:- 78% expect 5G technology to be better than 4G, but 95% don’t know which 4G benefits are already available on their devices today. - Over 70% express a willingness to pay for the new technology (with payment used as a proxy for perceived value).- 71% find faster download important as a 5G benefitRespondents don’t understand the terms “connectivity”, “capacity”, and “latency” and attribute relatively low value to these benefitsNow, let’s dive into 4 ways advertisers can optimize their 5G strategy.1. Consider the demographics of 5G vs. 4G usersRunning ads on 5G phones, you’re reaching a unique set of users with a different demographic representation than 4G users - meaning you can’t have a one size fits all approach to your strategy. That said, because there are different types of users running on the mobile networks, you can get a better idea of whether your audience is more active on 4G or 5G enabled phones. If the users commonly on 5G don’t have the same demographics as your audience, it may be best to stick with 4G advertising.One of our survey questions asked about the impact of 5G on daily life - 78% of respondents believe that 5G will be better than 4G. While excitement is high, a closer look at demographics revealed that enthusiasm for the new technology varies by age, income, and household size, which signifies who is likely to adopt 5G early on. For example, older respondents place less value on 5G, as the majority of the 55+ group either don’t value the benefits of 5G or don’t know what they are. Higher-income consumers also value 5G more - 54% of those who think that 5G will be better than 4G have an income of $71K or higher. Last, in households with 4 or more people, 47% of the respondents think that 5G will be better than 4G. Conversely, in households with only 1-2 people, 35% of the respondents think that 5G will be better than 4G. Family households are more excited about 5G over 4G.Younger consumers, those living in family households, and higher-income consumers place more value on 5G, which means they’ll have the technology earlier on. If these demographics match your audience, advertising on 5G enabled phones is a good idea. On the other hand, if your audience is older, lower-income and single, you may want to keep your focus on 4G until the new generation is fully rolled out.You also want to consider the types of ads you show to 5G users compared to 4G users, especially considering these users value different things.2. Adjust your creatives for 5G users5G users are unique in terms of how they engage with devices, which can help you tailor your ads to what they’re most excited about. 5G offers multiple tangible benefits, such as downloading a 2-hour long HD movie in about 18 minutes, live streaming a concert or live event to friends or family uninterrupted in HD, or low latency gaming with 30-50 millisecond ping. Why is adjusting your ads to meet users interests especially important for 5G compared to 4G?From downloading movies and music to live streaming and gaming, there’s a strong correlation between user interest and willingness to pay for 5G. Users who have a clear interest in gaming, entertainment, and live streaming are more likely to be willing to pay for 5G technology (92%) and get a 5G ready phone early on compared to the overall average (81%).If your app is not an entertainment, streaming or gaming app, you can still adjust your creatives to appeal to those interests. For example, you can gamify your ads by making them playable and interactive. You can also show short, detailed videos, or films, about your app to appeal to users interested in entertainment. If your app is a gaming, entertainment, or streaming app, you can share how your app is compatible with 5G considering your users will be more interested in the technology - but this isn’t necessarily the case for all users. More on that later.With all of the new updates with 5G, there’s also a huge opportunity to get creative with your ads and innovate with new benefits.3. Serve ads that leverage 5G benefits5G enables advertisers to design more innovative and immersive creatives, enabling users to engage with ads in unique ways. Specifically, the technology promises more connectivity, less latency, faster download, and greater capacity. You’re missing out by not putting time and resources into improving your ad quality and creativity leveraging these benefits.In fact, 78% of respondents expect 5G technology to be better than 4G and 70% express a willingness to pay for the benefits of 5G. This means that when users see their first ad on 5G, they may expect it to be optimized with the benefits, creating a positive experience.Less latency opens up countless opportunities to create real, immersive on-device ad experiences. You can show full screen ads that allow users to see what a character or product looks like in different environments that you can design and adjust directly from the creative. You can also use VR to show a 360-degree view of a gaming or social world. With greater capacity, ads can also come in many different audio and video formats. For example, you can allow users to stream tons of content from your ad, such as audiobooks or files.There is immense untapped potential of 5G technology, and you should be dedicated to finding new ways to engage users with your ads. Keep in mind, this doesn’t mean you should fill your ads with confusing 5G terminology.4. Don’t talk about the 5G benefitsUnless your users are highly interested in gaming, entertainment or streaming as mentioned above, it’s better to not overflow your ads with 5G terminology or explanations of the technology. In fact, doing so could have a harmful effect on your engagement. This is because, despite the anticipation of the upcoming 5G rollout, there is a lack of understanding of the key benefits of the new technology.Most device owners don’t understand the terms “connectivity”, “capacity”, and “latency” and attribute relatively low value to these benefits, perhaps because of a lack of understanding. On top of that, only 5% of respondents realize what’s already available on their phones with 4G technology.This means you should be careful about how you discuss 5G in your ads - you don’t want to push users away by confusing them. If you plan to talk about 5G, be sure to explain the benefits in terms that are more relatable. For example, say “time it takes to download” instead of “latency,” and “amount of space” instead of capacity. You also want to explain the benefits in context, in terms of mobile gaming, for example.5G represents a massive opportunity for your on-device advertising strategy, but you don’t want to dive in head first without understanding some key differences compared to 4G. With some key insights into demographic differences, user interests, and awareness of 5G benefits, you can be better equipped to reach 5G ready phones effectively. Read the report.]]></description><link>https://unity.com/blog/4-ways-advertisers-can-optimize-their-5g-on-device-advertising-strategy</link><guid isPermaLink="true">https://unity.com/blog/4-ways-advertisers-can-optimize-their-5g-on-device-advertising-strategy</guid><pubDate>Fri, 28 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing the Metaverse Minute: How AR, VR, and XR are changing every industry]]></title><description><![CDATA[It’s 2022 and everything is coming up metaverse.I joke with my team that each week the top headline will read “Something, something, metaverse.” The adoption of augmented reality (AR) and virtual reality (VR) in our everyday lives has been a trending topic for the past few months. Digital twins have gained momentum across industries and are finally getting some well-deserved attention. This is the moment I’ve been waiting for since joining Unity.Before we go any further, let’s take a minute to define what we mean by the “metaverse.” Our vision is a lot bigger than one organization. At Unity, we believe there will eventually be a digital twin of every real-life object, environment, and even people. Our goal is to enable every creator to have the tools to do so.Unity’s fundamental belief is that the world is a better place with more creators in it. We think that immersive technology, like real-time 3D (RT3D), AR, VR, and extended reality (XR), can help creators better understand the world and unlock new innovations. To show you, we’re kicking off a new series: The Metaverse Minute. This monthly series will celebrate a few of the industry leaders that are building digital twins and advancing the metaverse now. Here are the first five:At CES Hyundai announced its plans to build a Meta-Factory by the end of 2022. This will be a digital twin of its Hyundai Motor Global Innovation Center in Singapore (HMGICS).First, it’s Hyundai – a key player in the automotive space. This announcement opens the door for other automotive and manufacturing organizations to follow suit.Second, digital twins could improve the sustainability of the automotive industry. A digital factory means that operations and designs can be perfected without wasting resources.Athletes often review game footage to work out what they can do better. Rezzil takes that game footage and makes it an experience, giving new meaning to the phrase “teachable moment.”Manchester City is the first football (aka soccer) club to adopt Rezzil’s training app for fans. Now fans can participate in training sessions at the stadium, creating a completely new experience for sports and live entertainment.Additionally, professional sports are extremely demanding on the human body. With Rezzil’s digital training tools, professional athletes can still participate in rigorous training exercises but without the physical strain. Over time this could increase the longevity of athletes and reduce injuries.Samsung has committed to creating a virtual replica of its New York store. Customers will be able to enter through their web browser and enjoy three new experiences: The Connectivity Theater, Sustainability Forest, and Customization Stage.Having widespread adoption of virtual shopping experiences makes for better, more engaging online shopping experiences. It could also help rehabilitate and innovate the traditional brick-and-mortar retail industry.Our friends at Dress-X are using Unity to create a line of virtual H&M clothing that will not be manufactured or sold in stores.In its announcement the company stated, “This means no waste, no packaging, and no transportation.” Digital twins have a big role to play in sustainability, especially in the fashion industry. In a 2018 study, McKinsey estimated that the industry creates 2.1 billion metric tons of greenhouse-gas emissions, 4% of the global total. We hope that the rise of virtual fashion will decrease waste, reduce pollution, and position the industry for a more eco-friendly future.Fetal Heart VR is a teaching tool for sonographers and physicians involved in prenatal sonography. It allows medical professionals to fully simulate the maneuvers of an ultrasound probe, perform a virtual scan, and better understand the signs of congenital heart defects during an ultrasound examination.VR is a boon for medical training and education. We have only just begun tapping into what is possible with AR and VR, and how it can improve the practice of medical professionals around the world. We are looking forward to more healthcare applications, especially when it comes to understanding rare or difficult-to-diagnose conditions.Deciding which applications to include in the first “Metaverse Minute” was tough. Creators all over the world are using Unity’s Digital Twins solutions to make our world a better place. I cannot wait to share more applications throughout the year.Tag our handle @digitaltwin on Twitter with a brief summary of your application… you might see it on the next Metaverse Minute!]]></description><link>https://unity.com/blog/industry/introducing-the-metaverse-minute</link><guid isPermaLink="true">https://unity.com/blog/industry/introducing-the-metaverse-minute</guid><pubDate>Thu, 27 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Launching a new report "5G: The consumer perspective"]]></title><description><![CDATA[With 5G a hot topic today, ironSource Aura was interested in people’s perception of 5G, how they see it affecting their device experience, and how the telecom industry can leverage this exciting rollout.We surveyed 10,000 people in the United States who are currently using a mobile device and network that’s 5G compatible - and found that while consumers express enthusiasm about 5G, many don’t understand some of its main benefits. In fact, in many cases, features that consumers are looking forward to with 5G, are ones they already have today with 4G, without realizing it. Here are some of the highlights: 78% of respondents expect 5G technology to be better than 4G. However, 95% of respondents don’t know which 4G benefits are already on their devices today. Consumers are very excited about the upcoming rollout of 5G, with over 70% expressing a willingness to pay for the new technology (with payment used as a proxy for perceived value).But while people look forward to faster downloads, many don’t understand the other key benefits, including “connectivity”, “capacity”, and “latency” and attribute relatively low value to these benefits.The enthusiasm for the new technology varies by demographic: Younger consumers, those living in family households, and higher-income consumers place more value on 5G compared to their older, lower income, or smaller household counterparts. Users who have a clear interest in gaming, entertainment, and live streaming are more likely to be willing to pay for 5G (92%) versus the overall average (81%).The lack of clarity behind 5G represents a huge opportunity for telecom operators to improve the user experience and build loyalty and trust - by communicating the benefits of 5G and highlighting the real-life value of high-speed mobile data, especially by user segment.Read the full report]]></description><link>https://unity.com/blog/5g-the-consumer-perspective</link><guid isPermaLink="true">https://unity.com/blog/5g-the-consumer-perspective</guid><pubDate>Thu, 27 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Grow your career at Unity]]></title><description><![CDATA[Unity is growing quickly and we want our employees to grow with us. One way we promote this is by offering an Internal Mobility program.We launched a formal program in mid-2019 to support more internal movement. We also opened an internal job board to create a place where opportunities are discoverable for all employees.Since the program launched just over two and a half years ago, we’ve had over 500 employees use internal mobility to find new roles within Unity.Those employees have shown us that career journeys are full of twists and turns, and that the path forward is not always linear. We’ve seen employees deepen their core experience and grow into leadership roles, while others have expanded the breadth of their experience by taking on similar roles in entirely new functions. Some have completely shifted their career focus to something new.Internally, we run a career journey series to highlight the different ways employees are growing their careers at Unity and the advice they have for others. Here are three of those stories.Career journey: AEC Field Evangelist → Industrial Lead, Customer SuccessOffice: MontrealMy journey at Unity started in October 2019 as the first Field Evangelist outside of Games, specifically for Architecture, Engineering & Construction (AEC). As an architect, this opportunity allowed me to share my passion for AEC with our Unity community. My role as a Unity evangelist encompassed my client-centric experience and subject matter expertise in a significant way, and involved traveling to meet and interact with our users. The position changed over time, and unfortunately we couldn't travel during the pandemic. With the support of the recruitment team and both my former and current managers, I started to explore internal roles related to my passion and experience in customer success. After almost two years as an evangelist, I transitioned to the Customer Success team as an Industrial Lead. Now, I can work even more closely with our customers in a new and exciting capacity.What motivates me:I am passionate about providing the best service and experience to our users. This new role allows me to grow in my career path and go back to what I did for many years in helping customers achieve their goals.Career transition advice:You truly never know where life will take you. I started as an architect before taking this new path in my career. It's never too late to try something new and see where your skills, knowledge, and experience can take you. As frightening as it can be, get out there, keep learning, and connect with people you never thought you had something in common with before. You’ll be surprised by what can happen when you don't put yourself in a box and explore the different opportunities life has waiting for you.Career journey: QA Lead → Infrastructure Tooling Lead → DevOps Lead → Senior Software EngineerOffice: CopenhagenUnity is a fast-growing and ever-changing company. I have been with Unity since 2013 and held multiple positions throughout my career here. I started in Copenhagen and Berlin as a QA Lead before transitioning to lead the Infrastructure Team in Copenhagen, working on installers for the Unity Editor among other things. In the spring of 2015, I got an opportunity to relocate to the Helsinki office as part of the acquired Unity Ads team, leading the Quality Assurance (QA) team. After we successfully transitioned all QA engineers into their respective development teams, I got a new opportunity to build and lead the Unity Ads DevOps team across the Helsinki and San Francisco offices. After four years in Helsinki, I moved back to Denmark in the summer of 2019. Then, at the beginning of 2021, I joined the DOTS Production Engineering team in Copenhagen as Senior Software Engineer, working on build and release tooling for the Unity DOTS product.What motivates me:Unity is growing, so it’s important for me to find opportunities to learn new things. Rather than getting fixated on a job, I aim to focus on what is best for my career goals and how I can use my skills to be an asset to Unity.Career transition advice:Think about what positions you are interested in that Unity will need down the line and focus on strengthening those connections. That can mean developing a skill or attribute, or simply enhancing your network with other incredible friends and colleagues at Unity. There are opportunities for you here!Career journey: Recruitment Coordinator → HR Operations SpecialistOffice: SeoulI started my career at Unity as a Recruitment Coordinator in the Global Recruitment Operations team. I was hired as a contractor for a year and then had the opportunity to become a full-time employee. Around that time, a new role opened up in the Seoul office as an HR Operations Specialist. I felt that it would be a perfect opportunity for me to explore other fields in HR at a company that I truly felt happy and proud to work at. Two main reasons that excited me to continue building my career at Unity were that I could work in a global setting with colleagues all over the world, and Unity is a company that does not fear failures to achieve growth in an ever-changing environment. It’s a place that carries core values and allows us to grow both professionally and personally.What motivates me:My main motivation for applying through the Internal Mobility program was that I wanted to explore more of the employee-facing side of the HR field. My experience in the Talent Acquisition team focused on external stakeholders (candidates), and through that, I naturally became interested in the HR roles that operate within the office, such as designing processes and policies to make work at Unity easy and efficient.Career transition advice:One piece of advice I would give is to openly discuss your interests in the field that you want to grow in with your manager. Even though the opportunities might not be there immediately, they may well be eventually as Unity keeps scaling. During the process, the company was supportive and said they would rather help me grow here than leave and do that somewhere else. So I think it’s a win-win!Joining a growing company like Unity can take your career in exciting new directions. We’re hiring globally – take a look at our Careers page to see our current openings.Here are a few other key places we recommend you check out:Our culture and valuesOur LinkedIn Life pagesOur Medium page for more Unity Recruiting contentAn explainer of how our hiring process works]]></description><link>https://unity.com/blog/news/grow-your-career-at-unity</link><guid isPermaLink="true">https://unity.com/blog/news/grow-your-career-at-unity</guid><pubDate>Wed, 26 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[ironSource LevelPlay: 6 exclusive products we built into our mediation product]]></title><description><![CDATA[Building innovative technologies which anticipate the needs of our partners is a key pillar in our product philosophy. It’s how we stay agile and ensure we’re always delivering value, helping our partners optimize their growth strategies. Often, that means being first to market with exclusive features and products that are only available on our mediation platform, ironSource LevelPlay.Through the years, many of these innovations (cohort reports, ILR, monetization A/B testing, ad-based ROAS optimizer, and user activity reports) have been adopted as standard features in mediation platforms across the market. Here are 6 more innovations that are exclusive to ironSource and help our partners grow their app businesses.1. App analyticsThe synergy between monetization and marketing teams is critical to any app’s growth - which is why we innovated products like ILR and an ad-based ROAS optimizer. Now, we’re taking this trend one step further with app analytics - focusing on the product and developer teams, and connecting them to monetization and user acquisition. Perhaps the most exciting project we’ve worked on lately, app analytics provides granular reporting on 360 app performance beyond monetization, including app-focused metrics like session length, playtime, and level completions. Together, the product, monetization, and marketing teams can use ironSource app analytics to solve complex business problems like:How does user playtime correlate to number of impressions?How does average session length correlate to the win percentage of the auction?Where in the user journey should you add a new ad placement?Do retained users spend more on in-app purchases?2. Real time pivot reportsIn general, we put a huge emphasis on innovating deep reporting products within LevelPlay because we see that reliable reporting is crucial to an app’s success - only with a granular yet comprehensive view of your app business can you make the best decisions to optimize your growth strategy.Now, with real time pivot reports, developers get even deeper insights, which they can slice and dice and visualize - all in real time. The real time aspect is a huge innovation which will have an instant impact on success, as seeing performance changes immediately on the dashboard (due to a new app version, changes in the waterfall, etc) can help you iterate and improve your growth strategy faster. In addition, developers can: - Easily compare time frames on one dashboard- Drill all the way down to the hour- Slice data using dimensions unavailable anywhere else, such as CPM buckets- Visualize the data (bar charts, bubble charts, tables, heatmaps, grids, line charts, and more)- Download data in one-click- Break down multiple dimensions at the same time (for example, instance country breakdown) Here are a few tips and best practices for optimizing performance with real time pivot reports.3. Cross promotion bidding networkTo date, the available cross promotion solutions in the market have zero optimization mechanism behind them - either developers place cross promotion campaigns in their waterfall as a line item, as lower-quality backfill, or even as a dedicated ad format. No matter the strategy - there’s no machine learning or optimization algorithm behind them, which makes it challenging, if not impossible, to ensure you’re getting the ROAS you want.Understanding the challenges, and anticipating that cross promotion would become a critical part of developers’ growth success (especially considering the explosion of hyper-casual and the iOS privacy updates), we built a cross promotion bidding network.Essentially, developers get their own bidding network, which only runs your campaigns on your apps. This way, you can run and optimize cross promotion campaigns like any other ad source, according to the CPI and ROAS targets you want - with its position in the waterfall set according to real performance that leverages machine learning and data science. You can learn more about our cross promotion bidding network and how it works here.4. Zero latency with progressive loadingGiven its negative impact on user experience, retention, app ratings and revenue, the industry is constantly looking for ways to reduce latency between rewarded videos, generally the strongest performing ad unit for app monetization. There are a few ways to do this: only show a traffic driver when there’s an ad ready to display, show a pop up apologizing for the empty ad space, or run a super tight waterfall. But even these strategies end up damaging the user experience, ARPDAU, or both.Developers shouldn’t have to compromise on either. That’s why we innovated progressive loading, a mechanism built into our ad serving logic which ensures that there is always a rewarded video ad available to show, with no delay in filling an ad space, and causing the user to stare at a blank screen. Check out this piece of mine about progressive loading and how to optimize your rewarded video strategy for maximum impact.5. SegmentsIn addition to giving users a better rewarded video ad experience with progressive loading, we built segmentation capabilities directly into ironSource LevelPlay, to give users the best ad experience in general - enabling developers to tailor ad experience for different groups of users with little to no operational work. In fact, building the product, we made sure to give our partners access to as many, if not all, segmentation use cases possible, including: - Overriding capping and pacing per segment- Setting a waterfall per segment (for example, paying users vs non-paying users, IDFA users vs. non-IDFA users, etc) - Reporting on revenue per segment- Breaking down cohort data per segmentToday, we’re raising the bar with dynamic segmentation, which gives even more control and agility to publishers building their ad experience, by adjusting the segments throughout the user session. This product can be used in various ways - such as adjusting waterfall strategies, changing the ad experience, and more.See how to build a segmentation strategy that boosts revenue.6. Mobile appFinally, there’s our mobile app - which is the first and only mobile version of a mediation platform available today. Today, a game’s success is determined by metrics that need to be constantly tracked and analyzed - and staying on top of data in real time is critical to making the right business decisions. But of course, developers aren’t always sitting at their desks to hop onto the desktop version of their mediation platform. We released the ironSource mobile app to give developers an instant and digestible view of business performance, both for monetization and user acquisition, empowering their partners to react quickly to changes in the data.Going forwardAs the year continues, we plan to release many more first-to-market, exclusive LevelPlay products, all designed to help our partners dominate the charts and optimize growth - so be sure to check back in on what’s coming down the pipeline.]]></description><link>https://unity.com/blog/ironsource-levelplay-6-exclusive-products-we-built-into-our-mediation-product</link><guid isPermaLink="true">https://unity.com/blog/ironsource-levelplay-6-exclusive-products-we-built-into-our-mediation-product</guid><pubDate>Wed, 26 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[ironSource expands in-app ad exchange with powerful new tools]]></title><description><![CDATA[A part of the ironSource network for many years, the ironSource in-app ad exchange has already generated significant revenue for publishers.One of the most mature in-app ad exchanges in the market, ironSource Exchange's unique combination of cutting-edge technology with a highly-skilled brand sales team has generated significant revenue for app developers and publishers as part of the ironSource network for the last 5 years.“Building a successful in-app ad exchange is a process that requires significant time and investment, and the ironSource Exchange is one of the strongest and most mature marketplaces in the industry. Over the last few years, we’ve invested in building the necessary technology and relationships with the largest programmatic buyers to ensure that our publishers could leverage the power of brand advertiser demand to the maximum,” said Omer Kaplan, CRO and co-founder of ironSource. “By externalizing it and adding robust, real-time reporting tools, developers will now get critical transparency into revenue performance at a granular level.”Real time reportingThe ironSource Exchange now comes with a dedicated reporting module - real time pivot reports - giving publishers critical transparency into programmatic buyers, as well as core auction logic such as win rate and survival rate. These reports also give publishers maximum flexibility to “slice and dice” the data with ease, analyze revenue and performance data in real time, and easily compare it to historical performance. In addition, publishers will be able to deploy cross promotion campaigns as well as direct sold campaigns through private marketplace deals, tags or hosted creatives.Adhering to brand safety requirementsAs an early adopter of the IAB's Open Measurement SDK, all of ironSource Exchange supply supports app-ads.txt and seller.json, and is fully viewable and measurable by the leading third-party viewability and brand safety measurement organizations including Moat, DoubleVerify and IAS.“Apps are increasingly where consumers are spending the bulk of their time, and products - like the ironSource Exchange - that make it easier for advertisers to reach those consumers in-app - are a critical part of growing the App Economy as a whole,” Kaplan continued.Publishers using LevelPlay don’t need to make any changes or SDK updates to utilize the ironSource Exchange and benefit from its premium demand. The Exchange supports all major ad units, including rewarded, interstitial, MREC, and banner ads, with support for native ads coming soon.Read the full press release here.]]></description><link>https://unity.com/blog/ironsource-expands-its-ad-exchange-with-powerful-new-tools</link><guid isPermaLink="true">https://unity.com/blog/ironsource-expands-its-ad-exchange-with-powerful-new-tools</guid><pubDate>Thu, 13 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Sharing your feedback with Unity]]></title><description><![CDATA[At Unity, we center our product development on user feedback and have created a variety of mechanisms for users to give us their feedback.We want to outline three different types of feedback that have discrete channels for each:General community conversations where users openly discuss Unity related topics and help each other - Head to the Forums!Explore the product teams’ plans and engage directly with them to share your feedback, feature requests and ideas on Unity Product Roadmaps.Research studies to help us better understand the user experience and gather feedback on potential products - Unity PulseIn this post, we will outline those three offerings and identify when and why you would use each channel:Want to participate in research studies and give solicited feedback? Unity Pulse is the place for you.What is Unity Pulse?Unity Pulse is our online feedback community where you have the opportunity to connect directly with Unity product teams, gain access to product concepts before they reach the public, or give feedback on Beta products to help us make the best products and Unity experiences for you.What should I use it for?This is a community you can join to give solicited feedback. What does that mean? We will be asking you specific questions on specific topics and asking for feedback. Unity Pulse allows you to provide feedback through research activities that relate to your background and experience including products you use and projects you work on. This will not be a place where you can leave comments on unsolicited topics and you cannot start new conversations with the community on your own.The activities you will be invited to participate in will directly drive new product innovations and help our product teams better understand our users.What you can expect by joining this platform:Shape the future of Unity with usInvitations to provide feedback based on how you use UnityEngage with us to give feedback on early features and prototypesConnect in closed groups with Unity product teamsPolls, surveys, discussion, and ideas sharing boards, virtual roundtables and moreGet points for participating in certain activities and redeem points for rewardsWhat Unity Pulse is not for:Connecting with other Unity users or the communitySharing unsolicited feedbackProduct news or updatesConnecting with Unity staff without feedback invitationsReporting bugsFinding educational or support materialsSign up nowWhat are the Unity Forums?The Unity Forums are Unity’s largest community platform where users can engage in asynchronous discussions with other users and Unity team members, post questions, find answers, and share product feedback. It is a vast source of information on Unity-related topics and accessible to all Unity users.The forums are divided into a range of sub-forums and spaces to account for the complexity of the Unity ecosystem. Among product specific categories such as the Multiplayer or Graphics forums, there are also spaces for you to show your work in progress, find contributors for a project and many more.How can I provide feedback via the Forums?The forums provide you with opportunities to publicly share and discuss both solicited and unsolicited feedback. Many teams and individuals at Unity follow conversations and actively engage on the forums or even start discussion threads themselves in order to gather user feedback. Please note, however, that the forums are first and foremost a community space and as such, engagement is primarily community driven. This means that answers or reactions to your posts are not guaranteed.You can share your feedback by contributing to active discussions or by starting new ones. To find related active discussions, you can either browse through sub-forums that are suitable to discuss the subject matter or use the forum’s search function. Active official feedback threads are often pinned to the top of their respective sub-forums so it is worth having a look there first.If you want to start a new discussion, navigate to an appropriate sub-forum and create a new thread. Make sure to add the Feedback-prefix to the title of your thread to mark it as feedback and keep the Community Code of Conduct in mind when you compile your message.What you can expect from the Unity Forums:Engage in asynchronous discussions with other users and Unity team members about Unity related topicsPost questions, find answers and share knowledgeConnect with the communityWhat the Unity Forums are not for:The forums are primarily a community space and as such answers or reactions to your posts are not guaranteedAbusive behavior and other infractions of the Community Code of Conduct are not toleratedThe feedback our community provides is priceless. By publishing our roadmaps, we want to give you the opportunity to react and engage directly with the various teams building and evolving Unity products.What is the Product Roadmap?On the Unity Product Roadmap, you can explore current plans for how we aim to evolve our products, and send your feedback directly to the Product teams responsible for developing them. The Product Roadmap currently includes our development plans for:Unity PlatformUnity FormaUnity ReflectUnity HubUnity DevOpsMore products will be added to the roadmap as our portfolio of products evolves and grows over time.What you can expect from the Unity Product Roadmap:Find information about new product features currently in developmentOpportunity to share feedback on specific features currently in developmentMake your voice heard by suggesting ideas for new features you’d like to see added to our productsSend your feedback and ideas directly to the Product Managers responsible for each product areaContribute to shaping the future direction of our productsWhat Unity Product Roadmap is not for:Connecting and engaging in discussions with other Unity usersReporting bugsFinding educational or support materialsHow can I provide feedback via the Product Roadmap?As you browse through the various sections of the Product Roadmap, you may come across a feature that you want to share your feedback on.Simply click on a card to expand it, and indicate how important that feature is to you by ranking it as Nice-to-have, Important or Critical. You can then elaborate on why you need the feature and provide your email address - any additional information you provide will help us improve our products in the future.What happens when I’ve submitted my feedback?The Product Manager responsible for the product you’ve provided feedback on will review your submission, and ensure that it’s been captured correctly. Your feedback will contribute directly to how we evolve our products. In some cases, the Product Manager may reach out to you to ask for further details about your feedback.How can I suggest an idea for a new feature?In every section of the Product Roadmap, you’ll find a card titled “Submit a new idea!”. We’d love to hear your ideas for new features to add to our products. Simply fill out the card, hit submit, and our Product Management team will receive your idea directly.We can’t wait to hear your input on how to evolve our products!If the above communities aren’t what you are looking for, see below for a few alternative options.Have a bug you need to report? Check out our webpage with instructions on how to report bugs here.Looking for professional services? Our Unity experts can consult with you to take your projects to the next level! Check out our resources here.Need 1-on-1 live support? Visit Unity’s Live Help site to connect with Unity experts for 1-on-1 support on your projects here. For all other support needs please visit us as support.unity.co]]></description><link>https://unity.com/blog/news/sharing-your-feedback-with-unity</link><guid isPermaLink="true">https://unity.com/blog/news/sharing-your-feedback-with-unity</guid><pubDate>Tue, 11 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[The fundamentals of rewarded video ad placements]]></title><description><![CDATA[Rewarded videos are a must-have ad unit for mobile game developers who are serious about increasing revenue and providing a great user experience. This combination might sound too good to be true, but when implemented smartly, rewarded videos can make the magic happen - becoming important parts of a mobile game’s core loop.For users, rewarded videos grant access to rewards that offer in-game currency or progression boosts. Because these ads are not forced upon the user - they decide to interact with the ad or not - the user experience is positive.For game developers, rewarded videos can be a significant revenue stream that has a positive knock-on effect: by enabling users to progress faster and enjoy premium content for free, they increase retention rates - keeping users in the game for longer and maximizing their LTV.But achieving all of this requires a well-thought out strategy. Below, we share insights from Anna Popereko of ironSource's game design consultancy service, which provides in-depth game analysis to help developers improve their game design and ad placements. Keep reading to learn the fundamentals of a winning rewarded video strategy and best practices from Anna.Think about rewarded videos earlyEvery mobile game has a place for ad implementation, whether it’s a complex RPG or a trendy hyper-casual game. As a developer, think about implementing ad placements in your game as early as possible.This will help you make rewarded videos feel like a natural part of your gameplay, and as a result create a great placement strategy and user experience. If you only start thinking about adding ads at a later stage, it might be harder to find natural, high value placements. Having said that, even if you published a game, it’s never too late to improve it with rewarded video.Treat rewarded videos as a part of your game economyLet’s say you’ve done some thinking about your game economy, and you’ve calculated the game’s economic balance - how do rewarded video ads fit in?Firstly, include your rewarded video calculations in the economy. For example, when checking the maximum amount of coins a player can get by level 20, include the rewarded video in the calculation as if the player has watched them all. This will help you balance the game and not cannibalize the economy. If you underestimate the amount of coins a player can earn through rewarded videos, and they end up exceeding your estimations, it could make your IAPs redundant and give players too much power in the game - making it too easy for them to progress.Secondly, the value of your rewarded video ads’ rewards should be connected to your game’s economy, not to your average eCPM - a rookie error. eCPM is a value that changes often, whereas the game economy is consistent and remains with players all the time.The rewards need to be valuable for the player, to encourage them to watch the ad to get it. Make sure that the player is getting enough resources to help them progress in the game, but not enough to cannibalize the economy. You don’t want to make your in-app purchase offers redundant because that could damage your overall revenue.Try a variation of rewards and placementsThe first thing you need to do when building a strategy for your rewarded video placements is understand your players and what motivates them. Not just in general, but also at specific points throughout your game. For instance, if most of your players are motivated by the ability to dominate in the game, and they are lacking resources at certain points to defeat enemies quickly, you could offer them extra resources in return for watching the ad.Here’s a few other ideas of what to offer players:A taste of premium featuresGiving users a taste of premium features that are usually only available as in-app purchases can be an effective way to encourage them to eventually spend real money, once the player recognizes the value of the reward.This taste could be a small part of what's included in your subscription offer, for instance, or something valuable that users can only unlock through buying an IAP or watching the ad.In the example below from War Robots, the reward for watching an ad is a day’s worth of premium features that paying subscribers receive. Don’t be afraid to really emphasize the reward - War Robots lists out exactly what users will get and repeats “premium” twice to show it’s a special offer.To unlock this reward in War Robots, users must watch 2 videos in a row - which helps reinforce the feeling that this is a really meaningful and valuable offer.To maximize engagement for premium feature offers, try making them time sensitive as users won’t want to miss out. War Robots used a 1 hour timer in the example, but you can test even shorter timeframes.Progression-based rewards to extend the player's sessionAside from offering a taste of premium features, you can also offer rewards that enable the player to extend their session. Perhaps users ran out of lives and were about to leave, or don’t have in-game energy to overcome the next obstacle - rewarded video is a beautiful chance to extend the play session by offering something that is needed to continue progressing in that moment. That’s what Evermerge did in the example below - offering users energy to keep progressing, either by purchasing it with in-game currency or for free, in return for watching an ad.Understand what resources are typically needed to progress at certain levels or points in the game, and use this information to implement your rewarded video placement smartly. This is all about your game economy - make calculations of the amount of currency you expect players to have at specific milestones in the game, such as every level, merge, or fight. When planning your economy, try making some resources abundant and some scarce.Zero City, shown below, is another good example. At any point in the game, users can watch a rewarded video to replenish any resource they’re lacking. Whether it's potion, food, or money, the game lets them choose which resource to replenish. The reward offered increases according to the level the player is in - the higher the level, the more valuable the reward.Give the player a surprise rewardSurprise boxes are a rewarded video placement we see a lot of developers using, that give the player a random reward, from coins to power-ups and lives. This tactic can drive strong engagement among users; increasing revenue and also retention, as players come back for more surprises. You can promote such offers at different points in the game, such as the homescreen, in the in-game store, or once a user completes a level.Hustle Castle uses a chest system smartly, offering several chests in its “treasures” section that players can open for free, by spending in-game currency, or by watching an ad. By including one for free, the game gives its players a taste of the reward and shows them how valuable it is. This encourages players to return to the “treasures” section and unlock more valuable resources that they’re lacking in the game - which is when the rewarded video offer will come in handy. Note how the traffic driver on the rewarded video is orange, standing out from the other traffic drivers and drawing attention to the offer.Optimize your buttonsTraffic drivers are the buttons users will tap to open up your rewarded video ads. Typically, this will consist of two parts: a “watch now” button and another button that shows the value of the reward. You should make sure both are optimized in order to maximize engagement and usage of your offers. Here’s a few tips:DistinctiveRewarded video buttons should look different from the other buttons in the game because they give different experiences to the player. So make sure they stand out - in color, shape, position, and text. Subway Surfers did that well in the example below - the purple color and TV graphic make the offer visible and eye-catching.Clear value propositionThe player needs to know what reward they’re getting for watching a video. So make sure you clearly show what kind of resource they’re getting (a gem, a cold coin, virtual dollars, etc) and how much of it. In Grand Hotel Mania, the traffic driver clearly states “double your income” - there’s no second guessing about what the reward will be.AccessibleIt’s also important to keep your traffic drivers right in front of the player’s eyes in the most popular screens of the game. As with any other game feature, the more a player needs to tap to reach the ad, the easier it is for them to churn. Make sure that all it takes is one tap from the user to open the ad and begin watching it - remove any extra taps and friction where possible. Remember that the more the player is exposed to the placements, the greater the chances of them opening the ad. In Home & Garden, shown below, the game keeps showing the option to watch a rewarded video in case players missed it in the end-of-level pop up.Segment your playersAs a game developer, your goal is to create a fun and engaging experience for all of your players. However, your players behave differently and are motivated by different factors, which is why you should leverage segmentation tools to tailor your ad strategy to user groups.The more relevant you make your rewarded video placements and offers for your players, the more likely they are to engage with your ad - bringing more revenue into your pockets and improving the user experience.Common segmentations include:Paying/non-paying usersWhales/dolphins (by the size of IAP)By the session lengthLoyal and casual players (by the time spent in the game)But how do you actually learn about your players and their behavior in order to split them into these groups? We recommend using your mediation platform, which should offer segmentation tools to help you tailor your rewarded video ads to different user groups, in combination with a dedicated analytics platform. This combination will give you a strong understanding of your users’ behavior and help you create an effective segmentation strategy. For example, if you find a correlation between long session lengths and high rewarded video usage rates, you could increase your capping limit for groups of users with long session lengths.Here’s another example for personalized experiences: try giving paying users, such as monthly subscribers, access to the rewards offered by your rewarded video placements - without having to watch the video. This can be an effective way to make these players feel valued in the game and happy with their spending.A/B test everythingFinally, it’s crucial to A/B test everything. When you have your ad monetization plan ready, don’t rush. Implement the plan gradually, starting with only a few rewarded video placements and measuring how they perform.The main rule of A/B testing is making one change at a time. Then you can clearly see the effect of your changes and analyze the impact on your KPIs. Here are three important components of your strategy that you should constantly A/B test:CappingCapping refers to the number of times an individual user sees an ad within a session - in other words how many times you display traffic drivers to rewarded video offers. The main use of capping your rewarded videos is to prevent users over-using them and accumulating too many resources, which could damage the overall game economy and make your IAP offers redundant. Your capping strategy will differ depending on your genre - hyper-casual games for instance will set a higher number of placements, because IAPs are less of a focus in this category compared to casual and midcore games.PacingPacing refers to the interval of time in between each ad placement. You could, for example, have an ever-present rewarded video traffic driver on the game’s homescreen, and A/B test implementing rewarded video placements every minute or two at the end of levels. Making your game abundant or scarce of rewarded video offers could impact your ads’ engagement and usage rates, as well as your IAP revenue, so keep an eye on the data to see what works best for your specific audience.PlacementsPlacement refers to the specific moments in the game you actually show your traffic drivers as well as the reward itself. With good placements your rewarded videos will be highly visible and accessible: this will maximize engagement and usage rates, and in turn meet your ad revenue goals.In addition, a good placement strategy is also key to providing the best user experience. It’s not enough to make your rewarded video ads just visible - you need to make them visible in the right situations, when the rewards will be most valuable to users.You can test placements like offering an extra life after failing, doubling or tripling rewards at the end of a level, daily bonuses, and surprise chest boxes. Take a look at the examples we shared earlier for inspiration.And remember, if something doesn't perform, you can improve it. And if something performs well, you can improve it too!“ironSource’s game design consultancy helped us provide a new engaging and effective ad placement for users in our hyper-casual game, 9 Months. They made sure that all our ad placements were well-thought out and provided a positive user experience.”

- Danrui Wang, Digital Advertising & Monetisation Analyst at Green PandaThis article was based on research from ironSource’s game design consultancy service, which helps games increase revenue and improve their user experience.]]></description><link>https://unity.com/blog/the-fundamentals-of-rewarded-video-ad-placements</link><guid isPermaLink="true">https://unity.com/blog/the-fundamentals-of-rewarded-video-ad-placements</guid><pubDate>Thu, 23 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Feature preview: IL2CPP Full Generic Sharing in Unity 2022.1 beta]]></title><description><![CDATA[Full Generic Sharing allows you to write code that’s more expressive and easier to test. It not only eliminates a whole class of scripting errors detectable at runtime, but ensures that code on platforms like mobile devices and consoles behave more predictably. Read on to learn how.Generics are powerful features of C#. They allow code to express behaviors independently from types. As developers, we expect List<string> to behave just like List<int> or List<T>, where T is any type.For years, IL2CPP has used generic sharing in cases where T is a reference type (string, object, etc.) This works well because reference types in C# are always represented by a pointer, so the size and implementation of List<string> will match the size and implementation of List<object>. But what happens if T is an int (four bytes) on a 64-bit system (where pointers are eight bytes)? IL2CPP must generate special code for List<int>, List<double>, List<MyValueType>, and so on.That’s why in Unity 2022.1, IL2CPP already generates special code that can handle List<T> for any T, reference, or value type. This technology is called Full Generic Sharing.While generic virtual methods are expressive features of C# that work well with just-in-time (JIT) compilation, they are difficult to implement for ahead-of-time (AOT) compilation cases, such as IL2CPP. That’s where Full Generic Sharing comes in.Let’s take a look at a generic virtual method example from the Unity Manual:This code demonstrates the expressiveness of generic virtual methods. In other words, we can send data of any type (the “message”) from any class that implements the IManager interface to any class that implements the IReceiver interface. With IL2CPP in Unity 2021.2, this seemingly simple code does not work. At runtime, the following error appears in the player log:Let’s unpack this error.Because the call to Send Message in the Start method occurs through an interface (IManager, that is the “virtual” part of generic virtual), IL2CPP doesn’t detect what method will be called at runtime when the code is compiled.You might be wondering: Why can’t IL2CPP figure this out? Well, it can! It’s possible for IL2CPP to search all of the code available at compile time and determine the places where this call might end up. But this search is expensive; it takes precious time while you wait for the project to build, and it can cause IL2CPP to generate extra code that will never be called, increasing the final executable size.That --generic-virtual-method-iterations argument (mentioned in the error message) permits you to tell IL2CPP how much time it should spend searching. For a JIT compiler, this kind of generic virtual method call is really straightforward. It can “see” the target method at runtime and do the right thing. In Unity 2022.1, IL2CPP has learned the same trick. It now generates a new, special version of SendMessage – the fully shared version.This will work regardless of the T, reference, or value type, meaning that if IL2CPP cannot see what the target method should be at compile time, it will call this fully shared version instead. The C# code is equally expressive, works at runtime, and compiles just as fast.The Full Generic Sharing technology is incredibly useful in the way that it enables code on AOT platforms to behave much more like code on JIT platforms. This leads to fewer surprises at runtime.It turns out these ExecutionEngineException errors show up in other cases as well. Whenever IL2CPP fails to determine what code to run, this error can occur. We often see this in serializers, where some new serialized data deserializes to a type that IL2CPP cannot surmise. But in Unity 2022.1, IL2CPP no longer produces an ExecutionEngineException, eliminating a whole class of errors that are difficult to rectify.Also consider that some code uses nested recursive generic types. Seeing as IL2CPP can continue processing these types at compile time infinitely, we have to impose a limit on how much time the build process should take.IL2CPP used to produce the following error when your code needed some of those deeply nested types at runtime: “IL2CPP encountered a managed type that it cannot convert ahead of time. The type uses generic or array types, which are nested beyond the maximum depth that can be converted.” Today, Full Generic Sharing allows IL2CPP to use an implementation that never fails, so you will no longer encounter this error message.Imagine you have a project that you want to resize and make as small as possible. While you might have executable code for List<int>, List<double>, and List<string>, you might also want to rethink balancing so many different implementations.Wouldn’t it be great to have just one, fully shared generic implementation for any List<T>? Well, check out the IL2CPP Code Generation option “Faster (smaller) builds” in Player Settings. It leverages Full Generic Sharing to give you the smallest possible executable code with the fastest possible build time – not to mention, quick incremental builds. If you decide to use List<DateTime> (or any other T) in the project, IL2CPP no longer needs to generate or compile new code for that implementation.If you want to start writing code that leverages IL2CPP Full Generic Sharing, simply download Unity 2022.1 beta from the Unity Hub or on our download page. Remember, the beta is not intended for use in production-stage projects, so be sure to back up your existing projects.That said, we would love to know how Unity 2022.1 works for you. Please visit the beta forum to leave us your thoughts. We would greatly appreciate your feedback on Full Generic Sharing or any other feature you’re currently working with. As a bonus for your involvement, each original and reproducible bug report will boost your chances of winning one of our sweepstakes prizes. Find the details in the beta release blog post.]]></description><link>https://unity.com/blog/engine-platform/il2cpp-full-generic-sharing-in-unity-2022-1-beta</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/il2cpp-full-generic-sharing-in-unity-2022-1-beta</guid><pubDate>Wed, 15 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[The latest Unity Terrain Sample Pack is here]]></title><description><![CDATA[Equipped with new brushes, instanced details, and materials, discover the Unity Terrain Sample Pack with the Terrain Tools package for Unity 2021.Unity Terrain has received a series of ‘stealth’ upgrades over the past year – and it’s about time we shed some light on them. Pairing instanced details with Shader Graph support and the full release of the Terrain Tools package now makes it possible to create more vivid outdoor environments in Unity.Compatible with both Unity’s High Definition Render Pipeline (HDRP) and Universal Render Pipeline (URP), the Terrain Sample Asset Pack shows just how far these new tools can take your project. Whether you’re looking to leverage reusable content in your own work, or teach yourself how to get the most out of Unity Terrain, you’ll want to learn about these latest artistic and technical updates.Instanced details: This sample is the first one we’ve shipped that highlights the power of Unity’s instanced terrain details. The instanced detail system – made available in Unity 2021.2 – adds modern, high-performance GPU instancing capabilities that let you create dense and highly realistic foliage for your levels. The pack includes sample vegetation details for URP and HDRP.Shader Graph vegetation materials:The shaders for the instanced details are implemented in Shader Graph. Use them to produce effects like grass moving in the wind, or develop your own custom distance fade effects. Similarly available for both URP and HDRP, you can reuse key pieces implemented as subgraphs for your own projects.New brush stamps:Along with the Stamp Terrain tool in Terrain Tools, the Terrain Sample Pack includes a collection of handcrafted terrain stamps based on a variety of natural features, ranging from alpine mountains to desert mesas and volcanos. Harness these high-quality prebuilt pieces to quickly assemble rich landscapes.Sample terrain materials:There’s even a variety of physically based rendering (PBR) landscape materials, already set up for height-based blending in the sample pack. Reuse these royalty-free elements for your own endeavors.The sample pack provides starter assets of what you can achieve with Terrain Tools and Unity 2021. Treat it as your starting point, a learning experience, or further inspiration for your next outdoor environment. Some screenshots and the example video in this blog are using a combination of assets from the new sample pack, custom made SpeedTrees, the Book of the Dead, and Unity's Snaps Art pack.Download the latest version of the Terrain Sample Asset Pack from the Asset Store and import directly into your 2021.2 project today. Be sure to check out the included instruction file for additional information on the sample pack.Finally, we’d love to hear from you! If you have any questions or feedback, we welcome you to join our Worldbuilding forum or find us on Discord. You can also visit the Unity Learn website for more resources and tutorials.]]></description><link>https://unity.com/blog/games/the-latest-unity-terrain-sample-pack-is-here</link><guid isPermaLink="true">https://unity.com/blog/games/the-latest-unity-terrain-sample-pack-is-here</guid><pubDate>Tue, 14 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Beyond the state of play: ironSource LevelPlay product philosophy]]></title><description><![CDATA[With MoPub announcing their platform’s sunset, many developers are looking for an alternative mediation provider that they can trust to always put their interests and needs first. For any developer who hasn’t been with us for the last 8 years, we wanted to introduce ironSource LevelPlay, our mediation platform, and share our product philosophy as well as our upcoming roadmap and features.Product philosophyWhen we first built our mediation platform in 2013, our goal was to enable app developers to maximize their ad monetization potential. We anticipated that not only was ad monetization going to grow in importance as a meaningful revenue stream for app developers, but that managing it was going to become increasingly complex and challenging.Fast forward, and the App Economy opportunity was growing at an incredible rate - especially for games - and the sophistication of app-based businesses would need to grow too. We quickly understood that in order to really maximize their ad revenue, developers would need to be able to leverage additional tools and products.This became the North Star of our product roadmap: anticipating the technology needed to efficiently and successfully grow an app business - innovative technology that goes beyond the current state of play - and then building best-in-class products to do just that. Philosophy in actionBy following this principle, ironSource was first-to-market with multiple products designed to help app developers optimize their monetization activities. Today, we’re proud to see many of these innovations come as standard in any mediation platform, including:User activity reports (think DAU, ARPDEU, ER, etc) for a deeper look at app usage and ad engagement trendsMonetization A/B testing suite that offers 3 tools which enable developers to make data-driven decisions on their monetization strategy, helping them yield even better performanceProgressive loading: More recently, after understanding the amount of developers struggling to deal with rewarded video latency, we were the first to build a solution that enables zero latency into our ad serving logic that works without any input needed from the developer.Perhaps the best example of our philosophy in action came when we anticipated that ad monetization would need to be treated just like in-app purchases for developers to truly maximize their growth. That’s why we were the first to build our platform in a way that links both sides of the app growth lifecycle, from user growth to ad monetization. Before these products, there was virtually no synergy between monetization and user acquisition within the industry:Impression-level revenue which was the first in the industry to let developers accurately measure ad revenue on the impression level, and link that data to the marketing channel responsible for that specific impression Automated ROAS optimizer which leverages ad revenue and in-app purchase data to maximize scale while reaching a campaign’s ROAS goalCohort reports that give developers a deeper understanding of how their user base engages with ad monetization throughout their lifetimeCross promotion solution which functions as a bidding network that only runs cross promotion campaigns, enabling monetization managers to run cross promotion campaigns in a way intended to maximize eCPM, and user acquisitions managers to bid on CPI rather than CPMironSource LevelPlay product roadmap: Looking aheadIn the last few months we’ve released a handful of exciting projects, and have many more coming through the pipeline - all of which were built anticipating market needs and designed to help app developers continue optimizing their app businesses. In addition, following conversations with MoPub publishers moving to ironSource LevelPlay, many of these features were built with them in mind, in order to close the gap between the products they’ve become accustomed to:MoPub migration tool (already live): Following the rapid sunset of MoPub, we’ve been working closely with MoPub publishers to make their migration to ironSource LevelPlay as seamless as possible. Now we’re giving developers everywhere the same capabilities many others have already successfully used - by enabling seamless migration to ironSource LevelPlay mediation. Custom adapters (already live) gives developers the flexibility to integrate any SDK network they want into ironSource LevelPlay auction, and receive the same level of reporting, testing and optimization they get with every other network. ironSource Exchange (already live), powered by Open Measurement and smart caching capabilities, connects developers with the industry’s top performance and brand DSPs. This project took three years to perfect, and now advanced features like direct-sold campaigns, PMPs, and tags, which have been used by mediation partners for years, are even more accessible and easy to use. Performance improvements for banners and MRECs (already live) such as adding dynamic sizes, higher bidding density generated by more buyers.Ad quality (already live), a product that shows developers exactly which ads are running on their app and the effect they have on key metrics like churn and revenue. With 2022 around the corner, here’s a glance at the projects we’re currently working on:App Analytics (coming): Perhaps the most exciting project we’ve been working on, our App Analytics solution - intended to be one of the most comprehensive in the industry - will not only improve collaboration between monetization and marketing managers but also product managers, by providing granular reporting on app performance. Real-Time Pivot (coming): Transparency and democratizing access to data has informed much of our product development. From conversations with partners, we’ve understood that many developers lack the ability to analyze their data in real time, slice and dice it as they want, and easily compare it with historical data - which is planned to be available on ironSource LevelPlay in the coming weeks. More and better bidding networks (coming): Understanding that more competition means more revenue for our partners, we always make it a priority to onboard as many networks as possible to our mediation - with Yahoo, Vungle, and Pangle being a few recent examples. Currently, we’re working closely with several networks, both existing and new, to onboard them to in-app bidding and improve performance for developers. The biggest evidence of success here is the feedback we receive from networks that their bidding adoption on ironSource LevelPlay is significantly higher than other platforms. By mid 2022, we aim to have 20 bidding networks available. Advanced A/B testing capabilities (coming): We’re continuing in our effort to go beyond the status quo, and will soon introduce new automation tools that will give developers even more options for optimization - for example, automatically serving the ad experience that generates the highest ARPDAU and best UX. Open source adapters (coming): Many leading developers have made it clear that the flexibility and control that comes with open source adapters is critical to their success - we’ve already started working on this exciting project, and expect to ship it soon. Native ads and rewarded interstitials (coming): To fully round out the ad units available on ironSource LevelPlay, we’re planning to offer rewarded interstitial and native ads, along with leading SDK bidding networks and dynamic setup so developers can better control these important ad units. Real-time reporting on ironSource Exchange: As we’re expanding the capabilities of ironSource Exchange, we’re working on giving developers full transparency into DSP performance, with a real-time reporting dashboard. By building technologies that go beyond the state of play, not only are developers able to scale their app businesses in the most efficient way possible, it also helps grow the ecosystem as a whole. The more money developers are able to generate from their apps, the more they can invest in growth. The more profitably they grow, the more money they have to reinvest in growth or development of new titles.To learn more about the products we build and the philosophy behind them, get in touch or check out our mediation platform.]]></description><link>https://unity.com/blog/beyond-the-state-of-play-ironsource-levelplay-product-philosophy</link><guid isPermaLink="true">https://unity.com/blog/beyond-the-state-of-play-ironsource-levelplay-product-philosophy</guid><pubDate>Tue, 14 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to boost revenue with your app’s onboarding experience]]></title><description><![CDATA[It’s crucial to remember that when designing your app’s onboarding experience, you’re dealing with real people testing a new product - it’s both an emotional and rational experience. By participating in your app’s onboarding, users are trusting you to guide them through an experience that is both safe and valuable. And if users aren’t happy, you can bet, with 80% confidence, they won’t be back, according to Quettra software.To ensure long term monetary growth, you should be heavily investing in perfecting your onboarding experience. After all, even in the App Economy, first impressions are everything. Or Shahar, US General Manager at ironSource, shares his viewpoint on why app onboarding is so important and how you can perfect it.Why perfecting the onboarding experience is critical for your monetization strategyApp onboarding is crucial to ensuring you’ll see high retention and conversions in the short and long term, leading to more revenue. But, why?Convert more users into subscribersThe reality is that most users convert into subscribers during the onboarding experience. This is because the onboarding experience is a user’s first impression of your app and they’re overloaded with all the ways they can get value. By investing in the onboarding experience, users are enticed to convert right away.Ultimately, by not optimizing your onboarding experience, you’re leaving money on the table - if conversions to subscriptions are already highest during onboarding, imagine how much higher they could be with some tweaking and testing. If your app requires users to subscribe to continue using the app, the onboarding experience is your only shot at converting users into revenue for your app. Optimizing your onboarding experience is also important to improving the engagement of subscribers - for example, extending session length, increasing the number of features used, etc. - and keeping them as subscribers for a long time.Ensure ongoing app usage to monetize laterFor users who don’t convert into subscribers during the onboarding experience, the only way to monetize them is making sure they continue using the free version of your app. That’s why creating a value driven onboarding experience that gives users a first glance into why your app will benefit them and how to use it, is critical at this stage, as it will foster ongoing user engagement. It can also be the difference between a user upgrading to a subscription plan or leaving your app in the future - first impressions are lasting impressions.With 21% of users abandoning an app after one use according to upland, you can be doing more during onboarding to keep users around, so that you can maximize the value of each user later on. After all, onboarding is about developing a mutually beneficial relationship between you and your users that keeps users around while increasing your revenue.Better understand your audienceThe onboarding process encompasses many screens, some with valuable information about your app, others with places for users to talk about themselves and how they plan to interact with your app. For example, a leading meditation app prompts users to select what they are looking for in the app, such as better sleep, reduced stress, etc. A language learning app asks users about the time they expect to spend in the app.Asking the right questions and getting to know your users will help you create a great user experience - which includes an ad placement strategy for non-subscribers. To make the most out of your ad strategy, you should start thinking about your ad placements from day one and think carefully about the questions you ask during onboarding. If you do this right, you can see incremental revenue implementing ads in your app.3 tips to optimizing your onboarding experienceWith many apps beginning to realize the immense opportunity that the onboarding experience brings to your monetization strategy, it’s time to start thinking about how you can optimize yours. Here are some best practices for app developers of all sizes.1. Help users understand your value propositionYour onboarding experience is like an ad for your product, but you only have one shot to sell it. Thinking about it this way, you should spend considerable time determining your main selling point and what you want to highlight that differentiates you from competitors.First, consider what users may already know about your app. Naturally, some apps are more popular and well known than others. Through segmentation, you may find that certain users know the concept of your app before download, which means you can consider letting them skip parts of onboarding to improve their experience. At the end of the day, this doesn’t mean you can slack off on portraying your value. For example, a well known meditation app doesn’t need to spell out what they do. To portray value, the first screen of their onboarding experience asks users to “take a deep breath.” From the second users open the app, they are reaping the benefits of the app.For apps that are less well known, portraying value doesn’t necessarily mean getting granular into the bells and whistles of your app’s mechanics. After all, people care about how your app will make their lives better or easier, which makes your word-by-word value proposition important to lead with. For example, an app that allows users to compare gas prices begins the onboarding experience explaining just that.To create a more memorable experience that sticks with users, try offering something tangible at the end of the onboarding experience, such as an edited photo, insights into the users personal weight loss plan, etc. Portraying value comes down to being creative and using your onboarding screens wisely to show users why and how your app is valuable to them.2. Show features that create a ‘winning experience’Once you’ve shown the value of your app, the next step is showing users how they can get the value by using your core features. The goal is to create a ‘winning experience’ for your users - in the world of apps, this means showing users what they can ‘win,’ or create, with your app. What constitutes as a ‘win’ is going to differ for every app according to user preferences and motivation to engage. Deciding what to show is especially important for subscription apps where some features are locked behind the subscription wall. The key is to find the right balance between showing too many and too few features, and how many of those would be free to use vs. paid, while still helping users understand what they can create - an edited photo, cropped video, etc. - or win - a horoscope read, weight loss plan, etc. - with your app.For apps that have shorter LTVs, such as some photo editing apps, try being aggressive with the amount of premium features you’re showing during onboarding - you don’t have to worry about churn as much. You can then take users to a subscription signup screen. This is a way of softly leading users to convert on day one.On the other hand, for apps users spend considerable time in, you don’t want to push potential long term users out of the app during their first impression, so, it’s best to stick to a few important features. You can even offer users the option to sign up for a free trial.The amount of features you show and how aggressive you are about encouraging users to subscribe depends heavily on the behavior in your app. To be sure of what works best for you, start A/B testing.3. A/B test the experienceA lot can go into the onboarding experience - install events, subscription events, tutorials, feature screens, free trial offers, etc. How the experience starts and ends, and the number of screens in the middle, is going to differ for every single app. This is why you should be A/B testing your experience as opposed to imitating. Learn which other A/B tests you absolutely need to run to increase revenue.First, map the engagement of each onboarding event, which will help you determine the screens users are enjoying the most and understand preliminary performance. From there, there are countless A/B tests you can run to perfect your strategy.For example, you can test how aggressive your experience is, how many features you’re showing, your value proposition, and more. A wellness app tested showing 50% of users 5 features and showing 50% of users 6 features. For all you know, this small difference can either retain or churn your first time users.It’s also relevant to test user behavior after completing the onboarding experience. For instance, you can test whether offering users a feature during the onboarding experience and then locking it a few days after the user enters the app will encourage that user to convert to a subscriber.When looking at the onboarding experience, testing potential is endless. To get as close to perfection as possible and see long term revenue growth, it’s best to invest heavily in A/B testing your experience.The importance of the onboarding experience can’t be overstated - it’s the users first impression of your app and it sets the stage for how they’ll engage with your app throughout their lifetime. Putting resources into testing the experience is crucial to your monetary success in both the short and long term - you want to find the optimal version that is both informative and fun for users to engage with. Get ahead of your competitors and start perfecting your strategy to see optimal results.]]></description><link>https://unity.com/blog/how-to-boost-revenue-with-your-apps-onboarding-experience</link><guid isPermaLink="true">https://unity.com/blog/how-to-boost-revenue-with-your-apps-onboarding-experience</guid><pubDate>Mon, 13 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Social Impact year in review]]></title><description><![CDATA[Inspired by our incredible employee base and creator community, and grounded in our inclusion principles of empathy, respect, and opportunity, we set out to expand our impact and empower our entire community to foster positive social change. Since launching Unity Social Impact at the Unity for Humanity Summit in October 2020, we have:Awarded more than $4M in grantsVolunteered at over 700 organizationsPrepared 18K learners to access entry-level real-time 3D jobsEquipped 560K students and educators to access RT3D curriculum and trainingDonated over $1.2B in software grants to schools, students, and educatorsRead on to learn about our journey towards a more sustainable, equitable, and inclusive future.Creators are using Unity to build innovative projects that have the potential to change the world. Through the Unity for Humanity Program, we were motivated by this powerful creativity to support creators with a range of financial, technical, and marketing support. Nearly $700K in grants were distributed to support changemakers reaching new audiences and advancing their meaningful work. Discover some of the powerful RT3D innovators we have been able to partner with:Tamara Shogaolu - Creator of Un(re)solved with PBS FrontlineTamara Shogaolu is an international director and new media artist focused on sharing intersectional stories across physical and virtual mediums and platforms to promote cross-cultural understanding and challenge preconceptions. Shogaolu received a Unity for Humanity Grant for Un(re)solved to support participation in the Tribeca Juneteenth exhibition. Un(re)solved is currently at the DuSable Museum of African American History, and recently won the major Digital Storytelling prize at IDFA.Luisa Dantas and the Rise Home Stories Team - Creators of Dot’s HomeBrasilian-American filmmaker Luisa Dantas works at the intersection of storytelling, social justice, and cities to produce impact-driven multimedia content. Dantas is Executive Producer of Dot’s Home, which received a Unity for Humanity 2020 grant in March. Dot’s Home was recently nominated for an IndieCade Impact Award and is now available to play on itch.io and steam.El Lim and Khayalan Arts - Creators of SamudraEl Lim is head of Khayalan Arts, an Indonesian creative studio founded to tell environmentally-friendly stories with positive social values using visual and interactive mediums. The team’s latest project, Samudra was recently released on Steam. Samudra is a 2D puzzle, adventure game designed to promote ocean conservation and raise awareness of the impacts of plastic waste.The Environment Grant winners that were announced at the Unity for Humanity Summit showed us some of the seemingly endless possibilities to create environmental change and lead us towards a climate-positive future using Unity. The winners include:District 64: Remnant Lands by Love Death Design takes participants into the Watts neighborhood of South Los Angeles to recount the impacts of oil drilling on community health and demand racial and environmental justice.Origen by Presencias LLC aims to answer the questions: Is there a link between the way we depict the world to ourselves and the way we inhabit it? The interactive, immersive documentary connects experiencers with the Amazon Rainforest, the Argentine Northwest, and the Andes Mountains through the relationship that local indigenous communities maintain with the land they inhabit.Powers of X, envisioned by AnythingEverything and Son & Heir, is an immersive experience designed to raise awareness about the climate crisis. It leverages VR and AR’s unmatched ability to demonstrate scale in order to visualize the invisible impact that we each have on the planet and present ways to make that impact more positive.Learn more about each of the 2021 Unity for Humanity Grantees.What’s Next? Acting upon our mission to uplift inclusive creativity and build community to drive awareness and change, we’re expanding our support of underrepresented creators through partnerships with the Sundance Institute and Electric South.Check out the changemaker showcase to see more inspiring work from creators making an impact using RT3D.For the past few years, we have granted Unity tools to students, educators, academic institutions, and nonprofit organizations to reduce the gap in access to RT3D education and in-demand skills. We’ve grown to support over 560 students and educators this year, and provided over $1.2B in software grants to schools, students, and educators.We recognize there is still a lot to do to expand access for underrepresented creators. This is why we focused on launching new teaching tools and resources for educators, including:Create with VR for Educators- This course enables educators to successfully teach VR development with Unity. Over 1,700 educators registered for our live summer training.Educators Hub - This newly developed hub offers a one-stop-shop on Unity Learn to provide educators with resources for integrating Unity into their curriculum.Pathway for educators - This hub helps educators bring pathways learning into the classroom with a custom syllabus, curriculum, and lesson plan.To support learners in keeping up with technological advancements and the latest best practices, we developed new courses and toolkits:Creative Core - Launched today, our Creative Core Pathway guides you through essential workflows like VFX, lighting, and audio improving your Unity skills.Create with VR- Build your own, unique VR project starting from a blank design document, and ending with a fully functional project in this course.Introduction to Visual Scripting&‘Clive the Cat’s Visual Crypting’- These toolkits enable beginners to get started scripting and visual scripting on a practical projectHoudini & Unity - Use the Houdini Engine in this course to work with procedural Houdini Digital Assets (HDAs) in Unity.Cinematic Sample- Explore new career avenues and Unity applications in this introductory course.Beyond educational resources, we focused on expanding opportunities for creators. Building your mobile game into a business was produced to empower Indie developers to build their mobile game into a self-sustaining business. Live Help underwent critical technical improvements, including the integration of Zoom, new Twitch-Esque broadcasts wherein experts help to resolve editor issues live, and accessibility improvements.What’s next? In 2022, we’ll be accelerating our mission to provide real-time learning for all even further, by expanding our range of free online courses and launching more solutions to problems educators have identified as barriers to inclusive learning experiences. If you haven’t already, get started developing your skills on unity.com/learn.Through education and storytelling, creators are driving towards a more sustainable world. We have granted nearly $1M in environment-related grants this year in support of creators catalyzing sustainable change.Along with these grants, we’re supporting the transition to a low-carbon economy in the following ways:Offsetting: In October 2021, we announced that we conducted our GHG baseline inventory and will be offsetting our 2020 emissions total of 38,422 tCO2e with an estimated $500K USD in high-quality offsets.Redesigning: We are reducing our carbon footprint by continuing to source renewable energy, and ensuring that everything purchased is as sustainable as possible. We are implementing energy efficiency projects in our facilities as a part of our return to office planning.Aligning: We are committed to funding and partnering with groups who are demanding better from the world and setting new industry standards. We’ve signed on to the Science Based Targets initiative’s (SBTi) Business Ambition for 1.5°C, and joined the UN Playing for the Planet Alliance, and Project Drawdown’s Drawdown Labs.We’re also engaging employees on sustainability initiatives. Our Earth Week events involved more than 1,400 employees in over 30 sustainability-education activities.What’s Next? This year is all about groundwork. We will continue to drive decarbonization across the gaming industry, and increase our support of sustainable businesses, projects, cleantech innovation, and creators. We’re investing in implementing a robust ESG: Environmental, Social, and Governance disclosure program to elevate our transparency. We anticipate releasing our first ESG report in the Spring of 2022.Beyond granting to social impact creators, and equipping future creators with resources and opportunities, we are committed to contributing to organizations that are benefiting inclusive learners. We have partnered with more than 50 organizations this year, donating $2M to drive RT3D education innovation forward and make it more accessible to all.Here are a few of the organizations we are proud to partner with:Generation is working to transform education to employment to help both workers and employers. Since their inception, they have graduated over 46K into positions earning 3.8x their pre-program income. We donated $250K for Generation to run a Unity training program in Pakistan. The program is designed to upskill 120 learners in real-time job skills and place 80% of the graduates in jobs within 90 days of graduation.Western and EXAR will develop AR and VR education tools to bring students into the ocean to virtually swim beside basking sharks. We granted in support of this coursework, and research into the efficacy and benefits of immersive education. We are excited to share best practices, training, and resources for educators as a result of this research in 2022.Code Coven aims to reduce barriers to entry into the games and creative tech industries to enable more diverse ideas, stories, and technology to emerge. We granted in support of their organizing 6 ‘Intro to Game Making’ cohorts throughout 2022, influencing approximately 80 students who plan to work in the industry. Graduates are equipped to start, or pivot to game development careers.Employees drive our social impact work. So far, over 700 global causes were supported by employee volunteering and donations since the programs launched in February and May of 2021.In May 2021, as the COVID-19 crisis heightened in India, we initiated $100K USD in grants to employee-recommended organizations. Two grants went to local NGOs that provided emergency medical supplies, food, and financial support to more than 350,000 essential workers and marginalized families in need. Employees raised an additional $15K USD to support HelpAge India, Oxfam India, Goonj, and Rise Against Hunger India.Also in May, Unity Colombia team members led a campaign in response to widespread protests and violence. This resulted in 2 grants totaling $50,000 USD from Unity, and an additional $5,500 raised by employees donated to Recon Colombia and Malabareando Las Calles.Recon Colombia identifies initiatives of social entrepreneurship to create opportunities, transform realities and contribute to the economic and social development of vulnerable communities to build a different future.Malabareando Las Calles provides care to children and adolescents who are homeless or at-risk by advocating for their rights, improving health conditions and education, and strengthening institutions responsible for their protection.In August 2021, two campaigns were organized for Haiti earthquake relief, and to support children in Afghanistan.What’s Next? Like creators, employees are changemakers. Their passions and talents stimulate change and propel us positively forward. As we usher in 2022 and reflect on the first year of our Employee Giving Program, we’re proud to see the leadership Unity employees have demonstrated in direct response to world events and in support of nonprofits on the frontlines. We’re eager to roll out many future opportunities for employees to make change in our local and global communities, especially as we host our first annual week-long Unity Gives Back global volunteer event.2022 will be a crucial year for us as we look to deepen our commitments and provide even more transparency into our progress and plans. Stay tuned for additional information over the next few months, as well as ways that you can be part of this pivotal time. Keep creating meaningful change.]]></description><link>https://unity.com/blog/news/social-impact-year-in-review</link><guid isPermaLink="true">https://unity.com/blog/news/social-impact-year-in-review</guid><pubDate>Wed, 08 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Systems that create ecosystems: Emergent game design  ]]></title><description><![CDATA[With simple scripts, game designers can create systems in their games that result in interesting and unexpected gameplay – a kind of organized chaos to delight and captivate players. We sat down with game designer Christo Nobbs, who explains his approach to designing for emergent gameplay with the help of a few key Unity features.Based on years of talking to individual creators and game studios, we know that when game designers create gameplay and design mechanics in Unity, they can demonstrate the vision for the game clearly and in greater detail to the rest of the team.We created a new e-book, The Unity game designer playbook, for game designers who want to learn how to prototype, craft, and test gameplay in Unity. New and experienced game designers can use this guide as they begin to add Unity skills to their profile.Christo Nobbs, a senior technical game designer who specializes in systems game design and Unity (C#), was a contributor to the e-book. In this blog post, the first in a series for game designers, he expands on some of the tips and examples for designing systems that he provided in the e-book.In game design, a useful system should have a clear function, hold data, and be modular. This way, not only can it interact with another system, it also interacts with itself on other GameObjects in varying ways. When thinking about a systemic game system, it can often also help to envision it not as a complete architecture but as a piece of functionality that can run recursively through the game.By combining such systems, you can create unique ecosystems that react to the player’s actions and are balanced using “design levers” (as opposed to hidden, hard-coded values). These levers are put in place to manipulate their data, resulting in systemic gameplay.Most games will have at least one system within them, whether it is a singular mechanic with values to adjust through gameplay or a network of systems. In a strategy game such as Age of Empires,wherein a player has to learn how to leverage and manipulate resources to progress and beat opponents, it’s complex ecosystems that govern the gameplay.Ultimately, it’s up to the game designers themselves to decide how they want a player to proceed through a game. Should the gameplay be set on a guided, linear path, or should it be driven by one or a combination of systems that allow for organic, emergent results?When designing a small system, its modularity and ability to interface with itself and other systems should be prioritized because these features can drive interesting gameplay loops. You want to think about the possible chains of reactions that can result from one system colliding with itself via another object, or by two simple systems creating a juxtaposition to play within. Always aim to create systems whose function is clear to the player, so they have a reasonable chance to learn how any given system works to gain an advantage.One example of a chain reaction is from the game Oxygen Not Included, where the goal with the main loop is to balance a number of systems to achieve a state of symbiotic utopia to keep progressing. Another example comes from Divinity Original Sin 2,by Larian Studios, where mobs that explode to attack can no longer do so if the player gets them wet, thus making the fight easier. Or, the player can set the ground on fire to protect themselves from the mob when it runs at them.A modular system can bring more value to your game because you can use parts of one system to create another, different system. One Unity feature that Christo uses for almost everything is Animation Curves. As he says, “the processing of their data is almost always the same. They give more control than a single value to balance. And you can add easing to mechanics or even override system limits to fine tune a detail.”A modular approach to design also enables you to brief programmers as accurately as possible, making it more efficient for them to edit and debug gameplay systems and reuse them in different configurations throughout the game.Design levers are useful for adjusting values to manipulate an outcome, for example to increase or reduce the difficulty of gameplay so that it’s rewarding and provides the level of complexity you’re aiming for. With design levers, you can play test and adjust repeatedly until you get the intended result.Design levers can be used in the concept and prototype stages of game development, through to post-production polish. Christo says he adds design levers when he maps out his ideas in a flow diagram. Aim to think early on in your project about which switches and levers your system needs so that you can fine-tune it and explore gameplay possibilities without relying heavily on refactoring code later on.The following image is of a graph representing simple gameplay wherein enemies are in-situ on start, and the player enters locked and loaded. Essentially, they have to kill enemies, but by manipulating the design levers you can transition the gameplay to shift the focus. In one setup, gameplay is centered on high-score, rapid killing of many enemies in the time limit, while in another, the emphasis is on killing a set amount of enemies in a shorter time, leaving time for players to pick up dropped loot before being extracted.This system could also be used to create a complete bullet storm with excellent drops and different ammo types with their own properties. By adding more design levers such as a timeout for the respawn, you can extend the system further.Escape from Tarkov by Battlestate Games provides another good example of systemic game design in Unity. The game has a crafting system for creating a weapon with its own data set, as seen in the image below. This data set impacts the characteristics of the gun and overall gun gameplay, similar to the player’s health. If the player suffers a broken limb or ailment, their gun becomes harder to use, while a healthy player has better control over the weapon.The relationship between one system, weapons, and the other, health, encourages the player to not only value their life, but also better-performing weapons. No one wants an AK with no dust cover or stock bouncing around as they miss shot after shot, a clear sign that the weapon is a bad option in its current configuration.There is also a wide selection of ammo types that have different properties, as well as of armor. The type of ammo and armor on your opponent determines where on their body you have to shoot them to inflict the most damage, creating meta gameplay. These systems, each with their set of visual cues, are balanced to create the gameplay “essence” their designers were looking for.One way to set up design levers in Unity is with ScriptableObjects. These can be used as containers of data that are saved as assets and referenced from scripts without creating dependencies to other objects in a Scene.You can create multiple ScriptableObject assets that hold different value sets that you can share and swap out to change entire sections of gameplay, similarly to presets. Your changes are saved in Play Mode with ScriptableObjects, so once you exit you don’t have to go back to any notes and implement changes.For example, when prototyping a character, you can change the feel of the character by replacing the ScriptableObject asset with one holding a different set of values. This is a potential gateway into prototyping buffs and debuffs or connecting character selection to profiles.Let’s say you are making a shooter game and have implemented a gun system with arbitrary values for actions like recoil, fire rate, accuracy, fire modes, audio settings, VFX settings, and so on. You can create any number of new gun profiles and adjust their settings in Play Mode, where your changes are saved, all at once. You can also send these preset ScriptableObjects to and from your team members for their feedback, which is useful when you are trying to find the right feel for the gameplay.Design levers can replace single variables in code as public properties, and they can be limited by their range using Unity’s RangeAttribute, which limits floats or integers in your script to a certain range while enabling them to be shown as sliders in the Inspector. The intent is to manipulate the levers on the fly, not just in Play Mode, so it’s also applicable if you are executing in Edit mode or testing a tool.In survival games, among other genres, a player expects a range of choices that result in logical and reasonable consequences, prompting them to come up with a solution to each challenge. How could you design a system so that both the challenges and solutions are to some degree a result of emergence?Let’s look at an example where the player needs to stay in an area to survive, such as in the game Don’t Starve by Klei studio. The player can stay near a fire to prevent the enemy from attacking. The fire can also be used for cooking food and keeping players warm. However, if the fire gets too close to the player, food, or flammable objects, it will burn them.What kind of system is needed to create chain reactions like the one described above? You could just create a Volume for the player to stand in that gives them heat over time, or make a linear fire propagation as a system. But why not approach it with a more system-centric designer lens? You want to compel the player to react in a situation that is the result of a chain reaction of individual fire-propagation systems colliding with one another and with other systems that exist in the game world.You could have a system in which trees grow in a defined area of terrain around a pond over time. These trees will sprout, then grow until the space limit is reached. When they mature, the trees can be cut down and turned into wood, which, of course, is also flammable.The player can use this wood to construct items, such as a fancy wooden chair, or build a small campfire with it next to the pond to get warm and dry after a swim. But then what happens if you give the player the ability to light the campfire?The flammable system on the wood is not complex, but if something is on fire, it emits heat in a radius, and if that heat value is over the limit for the nearby wooden item or tree, these things will catch fire too (simple propagation). Thus the player, in lighting their campfire, has set fire to their nice wooden chair. The player now has to grab the chair and throw it in the water to put out the fire, but while they do that, the campfire sets fire to the nearest tree, and now you have a forest fire on your hands.Even a small and contained system such as this example can create fun and “unscripted” experiences for players. Also, it’s essential to keep the focus on your desired outcome for the player, rather than on a design that’s too closely tied to reality, which will give you less ability to create unexpected results.In this example, in Unity, you can create emergent possibilities by storing your design levers in a ScriptableObject placed on anything you want to catch fire. Let’s start by looking at wood in a world where a dead tree is already on fire next to the water’s edge but is leaning towards the water, and our player needs to get warm.In this example, the wood has a ScriptableObject on it with various values.Let’s look at these values in more detail:Default temperature: A placeholder value, if nothing to inherit from a global state. If globally high or low, we can impact the feel of the whole system as higher temperatures could create a forest fire, assuming all trees use the fire propagation system.Current temperature: The temperature of an item as it heats up or cools down, which determines if an item has combusted or not (if current temperature value is over the resistance value)Combustion Temperature: The temperature an item must reach before it catches on fireHeatup Rate: How quickly the item heats up when in the radius of another heat sourceCooldown Rate: How quickly the item returns to its “un-heated” temperature, which could be referred to as retention, or thermal quality, as long as the name of the design lever is self descriptiveBurn Rate: How fast the item will burn over timeFuel: How much fuel the item has when burningHeat Strength: The strength of heat within the radiusHeat Radius: Heat’s reach or extensionWith some supporting gameplay code, you can have one object next to another catching fire. You can store profiles of your prototypes and try wildly different setups until you find the breaking points, then clamp those values down with attributes.There is no design for fire being blocked by water, but if there is nothing flammable on the water, the fire will not spread if it can not reach the other side unless you add a new system.This example of a fire propagation system provides various ways to create the same outcome by playing with the fuel, burn rate, and heat strength. And you can create new outcomes, for example by replacing fuel with “health,” to gain a constant range for controlling when a tree falls without losing functionality. When a tree reaches low health, it will have a high probability of falling. Now, when a burning tree reaches low health, it may fall, creating absolute chaos when left unmanaged by the player in an area of combustible objects.As you start adding more systems to your environment, you will create an ecosystem of systems that can react with one another. Assuming the player can harvest, build, and craft items with wood and that all inherit our fire propagation system, chaos could be around the corner if you’re not careful!You can create a highly volatile fire propagation configuration by reducing the Combustion Threshold and increasing the Heatup Rate so objects combust more quickly. Increase the radius to get a faster and more uncontrollable spread. The Heatup Rate is limited from 0 to 50 to provide granularity; the Heat Strength can be used to multiply this value, but you want to keep it within a reasonable range. A Heat Strength of 4 will expand the Heatup Rate to a range 0 to 200, which is overkill and would result in a forest fire in mere seconds. Since the player won’t have time to react to control the blaze, it’s not a great gameplay experience.Raising the Combustion Threshold to 300 provides a better-balanced fire propagation system. The player can do other tasks before a blaze breaks out, and when it does, they have time to react and control it if they’re quick. Especially if they have the ability to cut trees down, construct barriers, or have access to an equally systemic and simple water system.You can extend the fire propagation system further by introducing a resistance value for objects within the heat radius of a fire. This would allow you to have fires of varying temperatures, or to introduce fire-resistant coatings to structures as a possible upgrade. It’s probably overkill, but it’s an example of how to think about gameplay design in a systematic manner that can give the player more possibilities to survive and thrive in a cold forest environment when interacting with the fire system.The example of fire propagation systems shows how you can take a linear mechanic idea and transform it into an interesting experience that allows the player to solve challenges through learning and understanding the game’s systems. And when your system does not need to mimic reality, this frees you from having to accommodate additional complexity and abstractions.With this simple example, this post explores how you can design modular, small, and simple systems with interactivity that creates a greater ecosystem for gameplay that can be balanced out with design levers that you can tweak and iterate on with input from your colleagues. These elements can create unexpected moments of fun, delight, and suspense for your players, helping to make your game a truly unique experience.Get many more tips, instructions, and inspiration for designing and juicing up gameplay in Unity in our new e-book available for free.]]></description><link>https://unity.com/blog/games/systems-that-create-ecosystems-emergent-game-design</link><guid isPermaLink="true">https://unity.com/blog/games/systems-that-create-ecosystems-emergent-game-design</guid><pubDate>Tue, 07 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Emulate sensors and mechatronics systems with Unity SystemGraph]]></title><description><![CDATA[Unity SystemGraph is a new graph-based authoring tool that represents systems through its components, such as lidar sensors and cameras, in Unity. Now robotics and engineering teams can more easily prototype systems, test and analyze their behavior, and make optimal design decisions without access to the actual hardware.To better support the groundbreaking efforts of our customers in automotive, manufacturing and other industries using Unity for simulation, we’re introducing a new product, Unity SystemGraph, to improve systems development and simulation workflows.One of the biggest opportunities to improve those areas is bringing a familiar experience and workflows to represent electromechanical systems. We assembled an entire mechatronics team and found that the best way to build that bridge was to bring the way systems are represented in engineering diagrams into Unity. Customers indicated their most immediate need was to accurately emulate sensors such as lidars and cameras, which aligns with our ongoing robotics simulation and computer vision efforts at Unity.Unity SystemGraph is an intuitive, new graph-based authoring tool that represents systems through its components. It seeks to provide direct modeling of real-world systems, with direct mapping between real and virtual components. It allows easy binding to game objects, adding the ability to connect the newfound systems’ functionality emulation to the formidable set of visualization and interaction tools provided in Unity.Unity SystemGraph also includes SensorSDK, a library to easily create accurate, performant emulations of lidars and cameras, with a ready-to-use set of examples that considerably speed up development. It consists of sets of nodes with well-defined interfaces that make it easy to assemble them based on your needs. SensorSDK leverages the power of real-time ray tracing to get fast, accurate physical representation of sensors. It provides multi-spectrum materials to support realistic interaction of non-visible light found in lasers with the environment. It also includes additional non-DXR (Direct X Raytracing) based sensor physics to provide the full extension of Unity’s multi-platform capabilities.Unity SystemGraph unlocks the ability to represent multiple levels of system components, such as a system of systems, multiple subsystems and so on. It eliminates the need to write complex scripts to control and coordinate the many different logical components existing in electronic systems when modeling them in Unity.It is capable of emulating execution of systems components at very high frequencies with little to no code. It also provides intuitive debugging with the ability to visualize inter-components communication, control execution and more.While many of our advanced customers have implemented sensor models in Unity, the leveraging of DXR provides the following benefits:Emulation of real-world characteristics such as beam divergenceParameterizable beam distribution without having to interpolate or sample moreSampling the scene using DXR is faster than using a camera-based approach, especially with several sensors since the same acceleration structure can be reusedRun multiple (10+) high-fidelity sensors in the same scene on a standard gaming PCReady-to-use sensors, validated with the help of our partners Ouster and Velodyne, provides quick ramp-up for customers to incorporate sensors into their Unity projects.Initial tests with each of these leading lidar solution providers have yielded emulations in Unity that are almost functionally indistinguishable to real-world output from lidar data.To learn more, check out this blog guest authored by Velodyne and this interview with Ouster.Check out the benefits early customers of Unity SystemGraph are experiencing:As a beta customer, Volvo Cars used Unity SystemGraph to perform high-fidelity sensor modeling for their autonomous driving perception software testing.“At Volvo Cars, we have been using cutting-edge technologies from Unity in many areas of our work. “Unity SystemGraph is a flexible and convenient development tool that fits well into our simulation work and boosts our software testing."

– Joachim de Verdier, Head of Safe Vehicle Automation, Volvo CarsAmentum, a global technical and engineering services company, worked with Unity to use Unity SystemGraph in a demonstration project. With the goal to improve security in manufacturing facilities, the project uses simulation and sensor fusion to determine the optimal location to place camera and lidar sensors to detect threats moving throughout a warehouse. Learn more in this article.Unity SystemGraph and SensorSDK are now available as part of Unity Industrial Collection. Try it free for 30 days or buy it online now, or contact a Unity sales representative to learn more.]]></description><link>https://unity.com/blog/industry/emulate-sensors-and-mechatronics-systems-with-unity-systemgraph</link><guid isPermaLink="true">https://unity.com/blog/industry/emulate-sensors-and-mechatronics-systems-with-unity-systemgraph</guid><pubDate>Tue, 07 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How KO_OP uses version control to foster better teamwork]]></title><description><![CDATA[KO_OP turned to Unity Version Control for version control, cross-team collaboration, and source code management on their biggest project yet.Let’s face it: Getting a studio of talented artists and engineers aligned on a single production process is challenging. Those moments when teams are scrambling to track accidental file duplication or overwriting are often the result of mismanaged assets and departmental silos.Canadian studio KO_OP experienced some of these frustrations firsthand. While Git initially seemed like the right version control platform for their programmers, not everyone felt comfortable using it. This eventually resulted in a general slowdown in production – something they needed to mitigate (and fast) ahead of their massive upcoming release, Goodbye Volcano High.While searching for a solution that would serve their whole studio, KO_OP selected Unity Version Control as their new version control system (VCS). Find out what led them there, and what’s changed since making the switch.Rapid release cycles, large file sizes, and distributed teams can become difficult to balance in even the most well-coordinated companies. Workflows can get messy; marked by questions and confusion around who’s working on what part of a project, what changes are being made, and when.That’s how artists and engineers can end up working on the same file without the other’s knowledge, leading to inevitable merge conflicts. Despite the fact that creative and technical teams tend to work independently, their lines cross more than is immediately apparent. Both are essential through all phases of production, from the initial conception and creation of a game, all the way to its release, revisions, and ongoing updates. This is, similarly, the case at KO_OP’s Montreal-based studio, where all full-time team members are equal owners of the company, and as such, share in key decisions surrounding game design, development, and just about everything in between.Founded in 2012 by studio director Saleem Dabbous and programmer Bronson Zgeb, KO_OP has always valued a more democratic and experimental approach to their interactive projects. Production highlights like the Lara Croft GO expansion The Mirror of Spirits and the Apple Arcade game Winding Worlds have required a serious team effort, and in turn, equally well-rounded support for their team. As Dabbous explains in the company’s recent Vice profile, “This studio exists to support the people who are part of it, not the other way around.”At the time, however, the team felt somewhat stifled in their mission. KO_OP used Git for version control, which they found lacked the sort of overarching, panoramic visibility that would help them collaborate more efficiently. While programmers had relied on Git for source code management throughout their careers, the creatives with less technical expertise did not intuitively grasp this seemingly mysterious system. And once the pandemic dispersed everyone, forcing them to work remotely, communication only worsened, errors proliferated, and the team at KO_OP knew that they needed a change.While working on Goodbye Volcano High, KO_OP finally turned to Version Control. As a Unity studio, it seemed like an obvious step. The Version Control system serves to refine workflows and enable smooth collaboration without compromising on performance or branching and merging capabilities. Perhaps most importantly, it ensures the team’s reliance on a single source of truth.Migrating from Git was strikingly simple and straightforward. KO_OP’s team appreciated Version Control’s detailed documentation, which provided best practices and other methods for efficiency. “It showed [us] how to set up a branch model at a much more granular and effective level than what we were used to,” says Dabbous. Its approachable and visually rich tools appealed to artists and engineers alike.Before making the switch, KO_OP’s artists relied on programmers to bring assets into their projects safely. Now, thanks to Gluon, a user-friendly GUI and workflow, just about anyone can pick up the files and handle large binaries without much oversight or deep knowledge of branching and merging. Developer Jacob Blommestein refers to this as “a surprise for artists [who could] just add in their .psd files. The versioning was transparent.”At the same time, writers on the narrative team gained visibility into project status, whereas developers were taken with Version Control's branching visualization. “It is easy to parse and much easier to navigate than Git,” shares Dabbous. “People can jump around the project in ways that won’t be destructive.”To better integrate Version Control with other vital communication tools (think Slack and Jira), KO_OP’s programmers have even started working on a series of DevOps tools. As Dabbous puts it: “We felt we should take the next step and improve collaboration across the board.” That drive, paired with the newfound ability to rapidly reuse code, refine it, and keep track of KO_OP’s other interdependent systems has been a turning point for the team.Unity’s unique approach to version control, ultimately, provided KO_OP with the perfect occasion to reboot and redefine their production line in a way that goes far beyond project planning. It offers the capacity for open communication and quick iteration to get to market fast. The team’s alignment to a unified workflow has since served them well in preparation for Goodbye Volcano High’s hotly-anticipated release. Everyone is now more aware of what others are doing and how their own work fits into KO_OP’s shared vision, operating less like a series of independent contributors and more like a connected group of likeminded people.Looking to equip your team with the tools to do your best work together? Try Unity Version Control for free. Or, read the full case study to learn more about KO_OP’s experience with Version Control.]]></description><link>https://unity.com/blog/games/koop-case-study</link><guid isPermaLink="true">https://unity.com/blog/games/koop-case-study</guid><pubDate>Wed, 01 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to A/B test your subscription app’s monetization strategy]]></title><description><![CDATA[The apps in the top 200 on the app store manage to earn around $82,500 on a daily basis according to Tekrevol. However, according to that same article, daily revenue drops down to $3,500 for the top 800 apps. That’s why optimizing your app’s monetization strategy from the beginning is important to bring in the big bucks. But how can you be sure of what works best?We often see that developers start off designing their app’s monetization strategy by imitating other successful apps from the same category. While this is valuable at first, there can be many fundamental differences between apps within the same app categories, such as target audiences or geographical location, that make full imitation unsuccessful. Just because the market leader in your app category offers a three-day free trial for subscriptions doesn’t mean it’s right for your audience.A/B testing is far more impactful than imitation. A/B testing will give you statistical confidence in knowing what features improve your revenue, eliminating any guesswork that imitation may have. Running strong A/B tests that have a clear vision and will bring value to your app, you can optimize engagement for revenue and get a better understanding of your audience. That said, be careful to not over-test and spend time and resources on tests that won’t bring you value in the long run.Here are some key tests to help your app bring in more revenue.3 A/B tests you should be running to boost app revenueWhen running these tests, it’s important to try and get an understanding of long term success. But with user lifetime hard to identify in apps, these tests are a good place to start.1. Test your content behind the subscription wallTo drive incremental revenue, it’s important to find the best balance between the amount of free content you offer users and the amount of content you place behind the subscription wall. The goal is to offer enough free content to improve subscription rates without harming retention.To get started, look at the engagement rates of different features and test how those features perform behind the subscription wall. While you may hypothesize that putting the most popular content behind the subscription wall will improve conversions, doing so could end up pushing loyal users out of your app, increasing churn. To be sure, run an A/B test and keep an eye on retention and revenue.Testing your premium content and what features are most effective behind the subscription wall is important to keeping users engaged in your app and converting them to subscribers.2. Test your ad placementsTesting the types of ads you show and where in the funnel you show them is also important to optimizing your monetization strategy. When adding a new ad placement into your app, your goal is to maximize ARPU without harming retention and hurting the in-app economy. Keep in mind that a placement you hadn’t thought about before could end up significantly boosting performance.Consider whether you’ll implement user-initiated ad units like rewarded video and offerwall or display ad units like interstitials and banners, or both. Ultimately, different ad units appeal to different types of users, so having a mix of multiple ad units is the best way to monetize the widest audience.Looking at an app that uses the ironSource platform, a prominent lifestyle app started testing ad placements for the first time to improve LTV and drive more revenue. While they started out implementing only rewarded placements like rewarded video and offerwall, through A/B testing, they soon realized that implementing interstitials increased their ARPDAU and eCPM significantly. Ultimately, while one ad unit can seem like the most effective way to increase subscribers, through A/B testing, you may find that others are just as, if not more, effective.If you do choose to include rewarded ad units, you’ll need to test the rewards you’re offering to ensure you’re improving conversions. For some apps, it’s best to offer users a taste of premium content. For other apps, it may be more impactful to offer virtual currency that users can spend however they want. Each audience is going to respond to rewarded elements differently, and it’s important to test the reward to ensure you’re using these revenue drivers effectively.On top of that, be sure to test how often you show ads (capping) and how much time you leave between ads (pacing). This includes testing how you show ads to different segments of users. For example, you can segment your users into different ad engagement cohorts (ie, low ad engagement, medium ad engagement, high ad engagement) or into subscriber vs. non subscribers. From there, you can test the effect of ad placements on each cohort. For example, after thorough A/B testing, the same lifestyle app decided to not show subscribers their interstitial ads.3. Test your pricing modelTo ensure you’re getting the most revenue out of each user, it's important to put resources towards designing the best pricing model. Your ultimate goal is to convert users to subscribers, and you’re leaving money on the table if you’re not A/B testing your subscription prices and time frames.This means finding the optimized combination between the length of your subscription periods (weekly, monthly, or yearly) and the cost of the subscription. To measure the impact of your pricing model, look at the LTV of each subscription time frame. This way, you’ll see the effect of the pricing model you’re testing in the long run.Part of testing your pricing strategy includes testing the impact of offering a free trial, especially considering there are both pros and cons for this strategy - without a free trial option, the potential for churn is higher, but with a free trial, the subscription rate could drop. A/B testing is the only surefire way to determine how your long-term revenue will be impacted with this strategy.Testing the placement of the free trial is also incredibly important to long term success - you can offer the free trial as part of the paywall itself, adjust the time frame of the trial, allow users to extend their free trial, or even test when to ask for credit card information. Ultimately, users are going to behave differently to free trials when it comes to apps, so it’s important to not make any preliminary judgements.How to run a successful A/B testYou want to set yourself up for success from day one to see optimal results over time and improve your KPIs. Here are some tips for running a successful A/B test.Gather your own dataStart by gathering data on your performance, such as number of downloads and where users are spending the most time. With performance being subjective - a social media app is going to have many more downloads than a subscription based photo editing app - it’s crucial that you develop your own data rather than do research into the average performance of the category you’re in.With this granular data, you can have accurate benchmarks to measure your app’s overall monetary success against, which will help you formulate an A/B test to reach those goals. For instance, time spent is a crucial metric for social apps. Conversion rates, on the other hand, are important for e-commerce and subscription based apps.Be happy with a disproved hypothesisJust as you would in a traditional research study, formulate a hypothesis to serve as the basis of your A/B test. This comes down to analyzing the data and metrics you’ve collected and making observations based on user behavior, which will help inform your prediction. While your hypothesis is likely what you’re hoping will happen, this doesn’t mean the A/B test was a failure if disproved. On the contrary, a disproved hypothesis can be just as valuable.With subscription based apps, your hypotheses may be focused on the cost of the subscription or the length of the subscription period. One app, for example, hypothesized that lowering the dollar amount of weekly subscriptions would increase subscription rates. Makes sense, right? While they disproved this hypothesis, the developers now know they don’t have to reduce their price to get more subscribers, saving them money and opening up doors to more A/B tests.Choose the right time frameImitating the time frame of other successful A/B tests isn’t going to make your current test more impactful. In fact, testing for a time frame that makes sense for the metric you’re looking at is vital in ensuring your results aren’t confusing or skewed.For example, if you’re running a test that puts a lot more content locked behind the subscription wall, there are a few different metrics involved. When looking at the number of paying users as a key metric, keep the test short term. When looking at retention as a key metric, a long term test is probably best.A/B testing is a way to reduce uncertainty of what will work for your app and make great business decisions based on data, making it a stronger method than imitation. While this guide is meant to help you get started, with all of the moving parts, it may be beneficial to use A/B testing tools like the ones by ironSource.]]></description><link>https://unity.com/blog/how-and-what-to-a-b-test-for-your-apps-monetization-strategy</link><guid isPermaLink="true">https://unity.com/blog/how-and-what-to-a-b-test-for-your-apps-monetization-strategy</guid><pubDate>Wed, 01 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Globe-Trotter takes luxury shopping to new heights]]></title><description><![CDATA[Building a connection between consumers and products has become more important than ever. Discover how luxury luggage manufacturer Globe-Trotter delivered a new digital marketing experience to help customers create one-of-a-kind memories.Globe-Trotter has delivered high-end luggage to clients like Daniel Craig, Eddie Redmayne, and Kate Moss for centuries. Established in 1897, the luxury travel lifestyle brand produces handcrafted luggage and leather collections for in-store and online purchases. Recently Globe-Trotter partnered with SmartPixels, a Paris-based startup specializing in 3D product configurators, to create its first online custom luggage service for its many online shoppers.Knowing traditional ways of selling products like photographs or rendered images wouldn’t be enough to turn shoppers into buyers, Globe-Trotter decided to deliver a more immersive experience that would help their customers feel confident in purchasing custom luggage valued at $2,700 USD sight unseen. In fact, personalized experiences are more likely to improve the likelihood of repeat buyers, and 40% of consumers reported that they have purchased something more expensive than they originally planned because their experience was personalized.“For years Globe-Trotter has offered customers the opportunity to design and build their very own bespoke luggage. As well as being unique, it is a service that will always be in demand so we’re delighted to be able to offer this online, making it available to a wider audience and giving our customers the freedom to customize their luggage wherever they are,” says Momiji Matsuura, Press Release Manager at Globe-Trotter.Now, Globe-Trotter shoppers can take advantage of this interactive 3D web configurator to personalize every component of their bespoke luggage. With over a trillion possible configurations to choose from, customers can effortlessly specify the suitcase’s color, interior lining, locks, buckles, body, and more and view their selections in real-time. They can also take their luggage personalization one step further, choosing up to three characters to be monogrammed in five location options.As customers configure their suitcase, the model is rendered in real-time 3D, allowing them to see a virtual, photorealistic replica of their personalized luggage before it is even made. Customers can interact with the luggage by zooming in and rotating the suitcase using the 360-degree viewing option.“Unity’s rendering technology allows SmartPixels to deliver hyperrealistic 3D visuals, which is essential for our clients in the luxury industry, such as Globe-Trotter,” says Marie Guilloton, Marketing Manager at SmartPixels. “Unity’s platform fits perfectly into SmartPixels’ production pipeline as it has proven to be easy and intuitive to use.”The finalized designs are sent to Globe-Trotter’s workshop in Hertfordshire, England, where each piece is carefully made by hand and delivered weeks later, equipping customers for their next journey._______________________________________________________________Learn more about SmartPixels and start creating your own 3D product configurator with Unity Industry and Pixyz.]]></description><link>https://unity.com/blog/industry/globe-trotter-takes-luxury-shopping-to-new-heights</link><guid isPermaLink="true">https://unity.com/blog/industry/globe-trotter-takes-luxury-shopping-to-new-heights</guid><pubDate>Tue, 30 Nov 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[The on-device advertising opportunities with foldable phones]]></title><description><![CDATA[Foldable smartphones, which are smartphones with a folding dynamic, represent an opportunity to reinvent what on-device advertising can be for advertisers. Developed out of a desire to create the biggest screen that can still fit in your pocket, foldable phones are the latest trend in innovative technology. In fact, half of US consumers are either very (16%) or somewhat (34%) interested in buying a foldable phone as their next device according to CNET. Additionally, according to the same survey, 52% of Samsung owners are interested and 47% of iPhone owners are interested, which is a sizable portion of Apple users.With hardware and software advances creating more advanced folds, foldable phones will only continue to evolve. As advertisers, these devices represent a valuable channel to reach a rich, growing demographic of users on prime real estate. Let’s face it, the future is folding.Here are some reasons why foldable phones represent a major opportunity for your advertising strategy:1. Take advantage of the screen designFoldable phones are best known for their adjustable screen sizes, which allow for flexible usage as well as significant ad opportunities. The Samsung Galaxy Fold, for example, has a typical sized screen on one side and a camera on the other. When unfolded horizontally, the screen becomes the size of a tablet. The Galaxy Flip unfolded is the size of a traditional phone, but when folded vertically, becomes a square. So, what does this mean for your on-device advertising strategy?First, it means new engaging ad creatives that leverage the unique folding format. For example, you could design ads that allow users to reveal more ad content as they fold or unfold their devices, like origami. Or you could offer options like, “unfold for more info” or “fold to see more.” This way, the fold becomes a tool to keep users engaged and entertained.Second, you can design more detailed ad creatives due to the larger screen sizes - since you have more room to fill your ad with important information that will catch the users' attention. Ultimately, the content you would’ve had to separate into two ads on traditional phones can now fit into one ad on foldable phones - more bang for your buck!Last, the folding feature on the Galaxy Flip lends itself nicely to push notifications. When the phone is folded into a square, the cover screen is prime real estate for notifications or app previews. Users can seamlessly tap your app notification on the cover screen and then unfold their phone directly into the app or app store. Users also see the same notifications when they unfold their phones to the lock screen, meaning users will see your notification not once but twice.On top of the design of the phones, foldables represent a turning point in the mobile industry.2. Meet users at the center point of their digital livesThe key to running a successful campaign is reaching users where they’re most engaged. With foldable phones changing the way we work and interact with our phones, making it easier to complete certain tasks that weren’t always optimized for mobile channels, consumers are going to start spending more time on these devices compared to others, representing a valuable opportunity for your on-device app advertising strategy.Years ago, desktops became the center of our digital lives in terms of capabilities, replacing the TV and landline. To order an advertised product, consumers would have to call the number on the screen during a commercial. As the internet became more accessible and computers gained popularity, online ordering became the norm and computers were optimized for most day to day digital tasks.Today, foldable phones are replacing the computer as the center point of our digital lives. These devices are able to adapt to fit users’ needs at any moment and entertainment and productivity capabilities are being optimized to work on foldables. For example, office and design products, such as Word and Adobe, work well on foldables because there’s more room to write and create. Further, while users once booked travel plans through desktops because of the bigger screen to see more booking options at once, users are able to see the same amount of options through foldable phones. Entertainment apps even have a leg up with foldables. For example, if you need subtitles when watching a video, users no longer have to worry about the words taking up the whole screen as they do on traditional phones.With foldable phones allowing users to do more, advertising on foldables is a great way to reach a powerful set of users that are likely using their phones more than they ever have before. It’s also a valuable opportunity to show how your app will be optimized for these devices. For example, if you’re a music streaming app, you can advertise how you now offer a “karaoke” feature where users can read the lyrics on their foldable screens and sing along. After all, users will engage with your app differently on foldables compared to traditional phones, and it’s important to show how.Even more so, the users on foldable phones, today, are incredibly valuable.
3. Reach the early adopters of the mobile industryAny time a device enters the market, especially a new generation of devices, you can expect consumers to flock to the stores, intrigued and excited for what’s new and innovative. But foldables are still a fairly niche technology, meaning that the consumers purchasing foldables are early adopters with high tech awareness - the most influential demographic of users.With 29% of users saying that the tech’s cool factor is driving their interest and 25% saying the uniqueness is a selling feature according to YouGovAmerica, it’s clear that foldable phone users are highly interested in the innovation and growth of the mobile industry. As early adopters, these users are optimists, overlooking challenges of being the first to jump into a new technology, and influencers, looking to share their reviews. This demographic also tends to have high disposable income, well-informed and are from higher social statuses, which means they have significant thought leadership.Ultimately, the users on foldable phones, today, are incredibly excited to start using their new phones, discover new content, and download new apps. They’re also prepared to share their thoughts and reviews, which means you’ll will be in front of industry authorities and experts ready to talk about your app. For all you know, these early adopters may mention your app as the next big thing in their next Facebook post.Meet foldable phone users directly on their devices with AuraFoldable phones aren’t going anywhere any time soon, but there’s no better time to start advertising directly on these unique devices. After all, getting on foldable phones as soon as possible means you’ll be reaching the quality users, today, and master your strategy for the growing audience of the future.]]></description><link>https://unity.com/blog/the-on-device-advertising-opportunities-with-foldable-phones</link><guid isPermaLink="true">https://unity.com/blog/the-on-device-advertising-opportunities-with-foldable-phones</guid><pubDate>Tue, 30 Nov 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Welcome, SyncSketch!]]></title><description><![CDATA[Unity has acquired SyncSketch, the creator of synchronized real-time collaboration tools that allow users across the world to work together from anywhere.We are on a mission to enable creativity anywhere and on any device. We believe that it should be effortless for people to invent, share, understand, and build on great ideas together. That’s why we’re so proud to announce that the SyncSketch team is joining Unity.SyncSketch creates intuitive collaboration tools that allow teams to seamlessly communicate, give feedback, and contribute to creative projects - in real-time. With SyncSketch, creative collaboration is just a URL-share away. Like Parsec, the remote access platform recently acquired by Unity, SyncSketch makes it easier for creatives to collaborate and work from anywhere. Like Weta Digital, they are laser-focused on serving artists. With this acquisition, we are doubling down on productivity tools for the Unity creator community.Creators expect to be able to work from anywhere on any device. We’ve gone from linear, five-day workweeks in the office to distributed, asynchronous work as the new normal. In that time, creators across industries have invented new workflows that help them design buildings, share designs, create movies, release games, and much more.SyncSketch helps artists, animators, VFX professionals, students, and creators of all types to communicate in real-time and collaborate around their work.SyncSketch supports 2D imagery, video, and much more. But it also shines with 3D models. Users can easily rotate 3D assets, change the lighting, markup with notes, and share feedback notes in real-time. The platform facilitates natural visual communication that lets creators focus on what they’re making rather than where they’re making it.SyncSketch’s products were created by incredible artists and technologists turned entrepreneurs. Bernhard Haux, CEO of SyncSketch, has worn many hats in over 25 years in the VFX, animation and real-time industries. As an artist, in the last decade alone, Bernhard contributed to five Academy Award-winning movies at PIXAR and several acclaimed real-time projects, two of which won Emmy Awards. His work and vision for SyncSketch has always been in the sweet spot between art and technology.Phil Floetotto, SyncSketch’s CTO, is a veteran engineer and artist with over 16 years of experience creating pipeline tools for major visual effects studios. He devised PIXAR's internal production management tool used for planning, scheduling and tracking every task across all of the studio’s productions. His background as a VFX artist gives him a unique understanding of the creative process and enables him to craft intuitive solutions that allow creators to fully focus on their art."Both Unity and SyncSketch have always been focused on empowering creators. It's at the heart of what we do. By combining our technology and talent, we will continue to define the way creators will want to work and communicate, from anywhere in the world." - Bernhard Haux, CEO of SyncSketchHead to syncsketch.com to learn more. And if you’re interested in trying out SyncSketch for your own creative projects, get in touch with your Unity account rep.]]></description><link>https://unity.com/blog/news/welcome-syncsketch</link><guid isPermaLink="true">https://unity.com/blog/news/welcome-syncsketch</guid><pubDate>Tue, 30 Nov 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How To Develop A Winning Indie Title: Q&A With Evgeny Grishakov From Garden Of Dreams ]]></title><description><![CDATA[ironSource sat down with Evgeny Grishakov, CEO at Garden of Dreams, an indie game studio based out of Moscow, to find out how his studio approaches game development and creating a winning title. Read on to learn some best practices for growing your app business and bringing in more users.What kind of games does Garden of Dreams make? Can you explain your business model?Overall, Garden of Dreams has an unusual business model. While we started out like all game studios - developing a variety of games trying to find the niche that would let us make the most money - we eventually realized that none of our team members had any experience in game growth. In the beginning, we released five games and all of them had almost no revenue - complete failures.I soon realized that to succeed in game development, our team needed to learn more about the industry. We started a YouTube channel to interview successful game developers and we are still posting videos today.We soon managed to make a game, Offline Dice, that brought in a lot of revenue. We developed it for nine months before selling it. When we talked about the sale on our YouTube channel, other developers began contacting us for help selling their games. We started bringing buyers and sellers together in the game development market.Most importantly, we buy games ourselves, improve and develop them, and increase their revenue.You’re the CEO of Garden of Dreams. How and why did you get into developing games?Game development started as a hobby for me. I was working during the day and developing Flash games in the evenings. I even released three games that brought in some revenue.Five years later, I sat down and began to think: what do I want to do for the next 10 years? What will make me happy and use my best qualities?On December 31, 2019, I decided - game development!How does Garden of Dreams balance monetization between IAPs and ads? Walk us through your monetization strategy.As a rule, we always put in-app purchases first. One of our main goals when developing a game is to find ways to integrate IAPs harmoniously so that players are likely to buy them. However, many genres focus on advertising alone - I would guess that about 75% of games in the store are focused purely on advertising.This is why we decided to learn more about implementing and monetizing with advertising, and how we started working with ironSource. By integrating ironSource’s mediation solution into our very first project, we managed to increase the income per user 2X. Cool!What channels do you use for user acquisition? Tell us about your UA strategy.We’ve just started mastering our UA strategy. Today, we are buying US players - some Spanish speaking - and constantly doing CPI tests for new games.Since we are newbies, we generate most of our downloads through TikTok videos - we have a mini-department of content makers who shoot, edit and publish videos on TikTok.Are there any game development or growth trends that you are excited about?On the other hand, it seems to me that there’s a trend to build more communication between the studio and the players. In fact, players are starting to want to participate in the development of the games, share their ideas, become testers, and help the game in every way outside of just playing! This is the coolest and most valuable thing in game development - to create communities of people around the game.What advice would you give to other indie developers trying to make a quality game?I would recommend getting to know some colleagues around you - find some games that interest you and reach out to the developers. Gaming is a very friendly and open industry. I try to help all the developers who reach out to me because I also needed some guidance at the start and talking to experienced industry leaders, I managed to immediately make a successful project.Covering ironSource mediation for newcomers from A to ZCheck out this video Evgeny made about ironSource mediation.]]></description><link>https://unity.com/blog/garden-of-dreams</link><guid isPermaLink="true">https://unity.com/blog/garden-of-dreams</guid><pubDate>Wed, 24 Nov 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Announcing the EdTech Creator Challenge winners]]></title><description><![CDATA[Real-time 3D powers a vast array of immersive learning platforms and tools designed to advance the technical skills of the next generation, and increase access to quality learning experiences around the world. We’ve spent the last few years contributing our products, technology, and expertise to support more than 400,000 students and educators learning Unity per year.That is why we partnered with GSV Ventures, the leading EdTech investment firm, funding $7+ trillion in the education technology sector in August 2021. Together we launched the EdTech Creator Challenge to empower creators to continue to change the landscape of education and support ALL learners using Unity.Today, we are thrilled to introduce the 5 winners of the Challenge, and overall top 25 projects. A team of over 60 internal and external judges reviewed and rated the 250 submissions we received. Each of the Top 5 winners will receive $100K in funding from Unity and $10K of Amazon Web Services (AWS) cloud computing credits from Amazon Web Services EdStart. Our top 25 winners will receive $2K in AWS credits.Read on to learn how these projects are empowering creators to change the landscape of education and support all learners.Blue Studios is a live and on-demand PreK-12 STEM edutainment platform that leverages automation and synthetic media to create content cheaper, faster, and better, while also enabling any creator in the passion and gig economy. Using game-design principles, they believe that they can create the perfect teacher, accessible to any child, around the world, available 24/7 in any language using synthetic media.Today, Blue Studios has eclipsed over 10,000 monthly subscribers in over 10 countries to date!Learn more about Blue Studios.Boddle's mission is to create interactive experiences that improve student outcomes and inspire learning, particularly for students in under-served communities. By using AI and gameplay, they help kids in underperforming schools catch up by boosting engagement, and by tailoring learning to the right individual levels.Boddle Learning currently serves over 425,000 students in 28,000+ classrooms all over the United States and is also used in over 50 different countries. Boddle aims to inspire the next generation of lifelong learners with interactive learning experiences and is building a metaverse where educational content of any subject and topic can be delivered to kids through an ever-expanding selection of interactive games that meet them exactly where they are at.Fun Fact: The company was named after the unique bottle-headed game characters that were created to illustrate filling up on knowledge like how you would fill up a bottle. While Boddles are learning, their heads fill up, and then they pour back out to grow plants and perform superpowers. This teaches them the importance of filling up on knowledge and pouring back out to help others!Learn more about Boddle Learning.Before founding iCivics, Sandra Day O’Connor had never opened up a computer in her life. But after a 12-year-old convinced her that educational gaming was the right approach to teaching young people what they need to be engaged citizens - she discovered that we can all learn something from kids, and iCivics was born.iCivics envisions a thriving American democracy supported by informed and civically engaged young people. They champion equitable, non-partisan civic education so that the practice of democracy is learned by each new generation. They work to inspire life-long civic engagement by providing high-quality and engaging civics resources to teachers and students across our nation.iCivics has found that students who receive a comprehensive and high quality civic education are more likely to be informed and actively engaged citizens and voters. Specifically, they are more likely to vote and discuss politics at home, complete college and develop employable skills, volunteer and work on community issues. Their games and resources are proven – by both external validation and internal measures - to improve students’ civic knowledge, civic attitudes, and core literacy skills!Over the last five years, iCivics has more than doubled its reach from 64,000 educators and 4 million students in 2016 to 140,000 educators and 9 million students today. We’re excited to support their growing impact.Learn more about iCivics.Shimmy Technologies’ AI-powered app-based training is designed to upskill and reskill garment manufacturing workers anywhere—supporting efficiency, spikes in demand, and Industry 4.0.While automation can sometimes substitute for human work, it also—more importantly—has the potential to create new, more valuable, and more fulfilling careers for humans. Shimmy focuses on understanding how work and automation will evolve over time.Since 2018, Shimmy has conducted pilots in Indonesia, Bangladesh and the US. They’re on track to upskill 1600+ workers in 5 large factories in Bangladesh by the end of 2021 and are in the process of signing agreements committing to upskill and reskill 14,000 more workers across additional factories in 2022.Did you know? The company name comes from the famous “Shimmy” dance move, originated in the 1900’s and was considered a rebellious act when performed. It is also how mechanics describe what happens when you flip the switch on a machine and it springs to life!Learn more about Shimmy Technologies.Social Cipher’s mission is to to represent and empower youth of all neurotypes, to increase their self advocacy skills, and ultimately, to build their self confidence. Social Cipher is a social-emotional learning (SEL) platform that connects youth of all neurotypes and their advocates (counselors, teachers, mental health professionals) in an immersive virtual world and empowers them to navigate the universe.Both the game and curriculum are not based on teaching kids how to emulate neurotypical behaviors and rewarding them for their ability to assimilate. Instead, it aims to develop children’s social emotional learning skills to help them foster a healthy sense of self.40% of Social Cipher team members are on the Autism spectrum. They use the framework of the social model of disability to inform their intentions as a company. Currently in pilots with 16 different schools and therapy centers, 94% of professionals reported that their youth were more engaged and motivated to learn using Social Cipher. Above all, 100% of students in the pilot program wanted to keep playing the game series!Learn more about Social Cipher.We received so many incredible submissions and are inspired by all of the amazing EdTech innovations expanding the playing field and access to quality education for all. Congratulations to the 5 winning projects and finalists. Learn about the 25 finalist projects that will receive AWS credits to support their continued impact:STEMuliAge of LearningHellosaurusARch-ae-o ExplorerTeach the World FoundationScholarcadeManoké, IncBuddy.aiXplorealms LtdVidaly, Inc.VictoryXRXR Lab at Bellevue CollegeMovers & ShakersImmersed GamesShoonya DigitalEnduvoArizona State University Learning FuturesTransfrBaltu TechnologiesSimInsights IncTechRowThe VR HiveXpertVRLUDUS TECH SLIDEA Games--Congratulations again to all of our winners and thank you to everyone who submitted to the EdTech Creator Challenge.We announced our latest grant opportunities, the Unity for Humanity 2022 Grant and the Imagine Grant at the Unity for Humanity Summit on October 12. The Imagine Grant was created in partnership with award-winning artist, actor, and activist Common and the theme is inspired by his latest single, “Imagine.” The grant will be awarded to the project that best ‘imagines a better world.’Applications for both grants are open through December 3, 2021. We’re awarding $500K USD in total across the grants. While a single project cannot receive both the Imagine Grant and a Unity for Humanity 2022 Grant, you can apply for both via the same application. Learn more.]]></description><link>https://unity.com/blog/news/announcing-the-edtech-creator-challenge-winners</link><guid isPermaLink="true">https://unity.com/blog/news/announcing-the-edtech-creator-challenge-winners</guid><pubDate>Fri, 19 Nov 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Welcome, Wētā Digital!]]></title><description><![CDATA[Today, Unity announced that it has entered into a definitive agreement to acquire Weta Digital, specifically its artist tools, core pipeline, intellectual property, and award-winning engineering talent. The Academy Award-Winning VFX service teams of Weta Digital will continue as a standalone entity known as WetaFX and will become Unity’s largest customer in the Media and Entertainment space. By combining the industry leading VFX tools and technical talent from the incredible team at Weta, plus the deep development and real-time knowledge within Unity, we aim to deliver tools to unlock the full potential of the metaverse.I remember when the first preview of Fellowship landed in the theaters — just the preview, mind you, not the actual film — and how the hair on the back of my neck stood up. It’s an experience that I would find myself having over and over again with Caesar, the Na’vi, King Kong, and in many films where I didn’t even know Weta Digital was behind the great work. I was a fan before I fully appreciated the genius of Peter Jackson and knew the depth of the expertise and talent housed in this New Zealand based studio.Weta Digital’s pipeline represents the most complete toolchain for 3D creation, simulation, and rendering ever created. The brilliance of Peter Jackson and the entire team at Weta Digital is incredibly inspirational to all of us at Unity.The unified tools and the incredible scientists and technologists of Weta Digital will accelerate our mission to give content creators easy to use and high performance tools to bring their visions to life. This pipeline has been developed with an artists-first mentality and the result is an incredible set of tools capable of the pinnacle of visual effects (VFX) forged within the uncompromising schedules of hundreds of film and TV productions.Our goal is to put these world-class, exclusive VFX tools into the hands of millions of creators and artists around the world, and once connected with the Unity platform, enable the next generation of RT3D creativity. Whatever the metaverse is or will be, we believe it will be built by content creators, just like you.This list represents just a glimpse of the breadth and depth of innovation from Weta Digital’s 15 years of deep research and development. Individually, these tools are capable of spectacular results, but their real power is as part of a unified pipeline allowing changes made using one tool to instantly be reflected in another tool and allowing groups of artists to collaborate in the pursuit of their vision. These tools have been foundational in award-winning TV and films like Avatar, Black Widow, Game of Thrones, Lord of the Rings, Planet of the Apes, Wonder Woman, The Suicide Squad, and more.Manuka: Manuka is the flagship path-tracing renderer used to generate final frames and is able to produce physically accurate results based upon specific spectral lighting profiles.Gazebo: Gazebo is the core interactive renderer used for viewing scenes in real time with visual fidelity inside any pipeline attached application. Since the Gazebo real-time rendering of the 3D viewport approaches the same results from Manuka, artists can iterate in context of the final frame regardless of which application they use. Gazebo is also the core of the production pipeline for pre-visualization and virtual production workflows.Loki: Loki provides physics-based simulation of visual effects including water, fire, smoke, hair, cloth, muscles, and plants. Physical accuracy for complex simulations is delivered through the use of cross-domain coupling and high-accuracy numerical solvers.Physically-based workflows: Tools including PhysLight, PhysCam, and HDRConvert provide the foundation for lighting and color workflows. Using these tools, artists can create spectral-based lighting and accurately replicate effects of different lenses, sensors, and other parts of the pipeline, resulting in a physically accurate rendering workflow for both Gazebo and Manuka.Koru: Koru is an advanced puppet rigging system optimized for speed and multi-character performance. Using Koru, technical directors and developers can create constraints, rigs, deformers, and puppets to support high-performance animation, cloth simulation, and similar applications.Facial Tech: Facial Tech provides advanced facial capture and manipulation workflows, using machine learning to support direct manipulation of facial muscles and transferring actor face capture onto a target (puppet) model.Barbershop: Barbershop is a suite of tools for hair and fur that supports the entire workflow from growth through grooming. Artists can use a combination of procedural and artist-guided tools to grow hair and fur, adjust growth patterns, and groom the final model. Advanced procedural tools support concepts such as braided hair, and the resulting models are simulation-ready to provide realistic dynamics resulting from motion and wind.Tissue: Tissue enables artists and animators to create biologically accurate anatomical character models that accurately represent behaviors of muscle and skin, and transfer the resulting characters into simulation tools.Apteryx: Apteryx provides artists with a complete workflow starting with procedural generation of feathers, hand sculpting, and grooming for animated feathered creatures and costumes.World Building: These tools include Scenic Designer and Citybuilder to support world building, layout, and set dressing ranging from planet-scale to small-scale scenes. With these tools, artists can procedurally create scenes with node graphs, place content programmatically, and manually adjust placement.Lumberjack: Lumberjack provides the core toolset for vegetation and includes modeling, editing, and deformation tools. Using Lumberjack, artists can author and edit plant topology including animated geometry, manage levels of detail, instancing, and variability among individual assets.Totara: Totara is a procedural growth and simulation system for vegetation and biomes that integrates with Lumberjack to create large-scale and complex scenes procedurally. Using Totara, artists can grow individual trees and entire forest biomes, grow other vegetation such as vines, adjust growth parameters and control biomechanics, add snow cover, and reduce the complexity and size of scenes.Eddy: Eddy is an advanced liquid, smoke and fire compositing plug-in for refining volumetric effects. Eddy allows artists to generate new, high-quality fluid simulations and render them directly inside their compositing environment.Production Review: HiDef and ShotSub are the foundation for production review. HiDef is a core tool for production review, with features for note taking, version browsing, and more, integrated with a color-accurate browser and playback engine. ShotSub is a core tool for production review, with tools to prepare artist work for review with the appropriate color space, frame ranges, and settings for frame rate and resolution.Live Viewing: Live viewing tools support the mixing of computer-generated (CG) content in real-time with on-set camera feeds. These tools support live mixing for on-set viewing, live compositing of CG elements onto chromakey or other CG elements, depth-based live compositing and projection of face capture onto a motion capture puppet.Projector: Projector is a production tool supporting scheduling, resourcing, and prediction, with controls for data access and analytics to improve production decision-making.Another exciting element of this acquisition is the asset library we’ll inherit from Weta Digital, which includes urban and natural environments, flora and fauna, humans, man-made objects, materials, textures, and more. The WetaFX team will continue their industry-leading VFX work for major film and TV productions and feed into this asset library for years to come.Here is one last video featuring our graphics architect, Natasha Tatarchuk and the visionary and award-winning VFX artist Joe Letteri that speaks to the power and potential of these tools:To achieve the full potential of these tools, we will work to unify this pipeline to deliver content across the spectrum from cinematic realism to real-time XR on mobile devices. This includes linking these capabilities with our other content tools and services such as SpeedTree, with proven tools for scaling vegetation from VFX to real-time, and Pixyz, which provides sophisticated services for managing large, complex models.Our intent is to cloud-enable these tools and ensure they easily integrate with the workflows artists already use. It should be easy to take advantage of these advanced capabilities directly in the digital content creation (DCC) tools such as Maya and Houdini; and it should be easy to move and manipulate content into the Unity engine and more.The vision is simple: you will be able to use the DCC canvas you already know and love, get access to a growing set of incredibly powerful tools used in movies like Avatar and Wonder Woman, and get incredible content from our content library to fulfill your vision.And finally, to the point of this significant acquisition — to our creators now and in the future. We believe we are just at the beginning of an enormous need for rich, interactive, compelling, 3D content — in games, in movies, and far beyond.We believe we need to do more to make it easy for anyone to be able to create, and this acquisition is one of the foundational elements we will use to deliver this vision. We want to make it easy for these tools where content creators already are. In tools like Unity, in tools like Maya and Houdini, and in many others. We want to use the cloud to give content creators super powers by making these deep tools available, accessible and more. It will take some time to realize this complete vision, but please see this as our first step.And to the entire Weta team, thank you for using your imagination and vision to inspire us. We are looking forward to this future together.I am very excited about the creation of Weta Digital at Unity. The other day, somebody shared with me a very powerful Māori proverb:Nā tō rourou, nā taku rourou ka ora ai te iwiI believe the literal translation means "with your bread basket and my bread basket, our people will thrive.” This thought — if we work together, we can do much more than if we are alone — captures exactly what we are trying to do.Join the discussion on the Unity Forums.]]></description><link>https://unity.com/blog/news/welcome-weta-digital</link><guid isPermaLink="true">https://unity.com/blog/news/welcome-weta-digital</guid><pubDate>Tue, 09 Nov 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[#unitytips Dev Takeover: VFX and shaders with Harry Alisavakis]]></title><description><![CDATA[The #unitytips Dev Takeover is an ongoing series on our @unitygames Twitter account. The Unity team invites super users from our community to share their insights, tips, and tricks directly with our followers. We’re kicking things off with Harry Alisavakis, tech artist at Jumpship Studio and VFX wizard extraordinaire.If you don’t know Harry yet, you might recognize him from his neon-green avatar floating around whenever, and wherever, there’s talk of shaders. Here’s a quick rundown on how Harry has become such a rockstar in the world of visual effects:Currently working as a technical artist on the upcoming game Somerville over at Jumpship, Harry spends his ‘spare’ time learning about VFX and shaders. In fact, he continues to inspire creators through his weekly compilation of tweets around game development called “Technically Art,” where he also promotes the work of other talented artists (be sure to give him a follow!) Through his related Discord channel, “Technically Speaking,” he leads chats about technical art, Unity creative challenges, and AMAs to answer as many user questions as possible. Check it out here.Below are just a few stills from Harry’s most recent work. You can find even more in his portfolio.Now onto the #unitytips, courtesy of Harry Alisavakis.Let’s start with a small VFX trick for you to try out. While timing particle system effects with each other can be a bit fiddly, there’s actually a simple way to iterate on your visual effects using timelines. 🧵In Unity, timelines have built-in support for particle systems, so you don’t need any custom scripting whatsoever. Just drag and drop your particle system right on there, and you’ll be able to pan through it.Combining these tracks with animation or any other timeline gives you a much better idea for syncing up all the individual, animated elements, to create some really juicy VFX.There’s a super fun way to get more bang for your buck when using particle systems and custom shaders, and that’s through custom vertex streams.Let’s take a moment to fully understand what these are, and how we can use them for more advanced particle effects. 🧵As you know, rendered models in Unity are made with triangles that consist of vertices. The vertices hold all the essential information regarding these models, such as their individual position, UV coordinates, and vertex color.The cool thing is that we can add any sort of arbitrary data to our vertices and use it in our custom shader however we like. ✨ That’s the beauty of custom vertex streams in particle systems: We can pass particle-related information to our vertices and only leverage it as needed.The option to add custom vertex streams can be found under the particle system’s Renderer module. Enabling it will show you all of the vertex streams already in use, like the UV coordinates and vertex color.Finally, let’s make a simple dissolve shader for our particle system using Shader Graph. We’re talking about an unlit, double-sided Universal Render Pipeline (URP) shader with alpha clipping. The interesting thing here to notice is what drives the dissolve effect – the third component of our UVs.You might be wondering why, especially since we tend to work with UV coordinates for texture sampling through the x and y components.Well, next to each stream’s name, you’ll see where data is stored.Here, the new stream is stored in TEXCOORD0.z, which corresponds to the third component of the first texture coordinate channel (a.k.a. UV0.z). By adding the lifetime age percentage, this value will start from zero and move toward one during the particles’ lifetime.With our shader, this makes particles dissolve over time. Applying the shader to the particle system can give us this neat result:So far so good, but what if we want even more control over the particles’ lifetime? Age percentage works, but it’s quite linear and not very useful for creating more complex effects. The solution lies in this Custom Data module:We can use Custom1.x instead of age percentage, which in turn, allows us to employ a curve that alters the value over the particles’ lifetime, similar to built-in curves like Size over Lifetime.Now we can better manage how our particles dissolve over time. ✨ How great is that?Of course, there’s tons more data that you can pass to custom vertex streams. The possibilities for using them inside your custom shaders are plenty.That said, we’d love to know about your own creative uses for custom vertex streams in the comments below.Happy VFXing! ✨Follow our Unity for Games Twitter for weekly #unitytips on Tuesdays and monthly Dev Takovers. Let us know in the comments who you would like to have featured in our future Dev Takeovers on Twitter.]]></description><link>https://unity.com/blog/games/unitytips-dev-takeover-vfx-and-shaders-with-harry-alisavakis</link><guid isPermaLink="true">https://unity.com/blog/games/unitytips-dev-takeover-vfx-and-shaders-with-harry-alisavakis</guid><pubDate>Thu, 04 Nov 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Expert tips on optimizing your game graphics for consoles]]></title><description><![CDATA[If you’re a regular reader of the Unity blog then you probably noticed the recent series of posts that shared many great tips for optimizing mobile games, including graphics and assets, profiling, memory, and code architecture, and physics, UI, and audio.And today we’re back with more handy tips, this time for optimizing high-end graphics on consoles. Get pointers on how to reduce batch count, what shaders to avoid, rendering options, and more. These tips come from a new e-book of advanced optimization techniques for PC and console games, available for you to download for free.Though developing for Xbox and PlayStation does resemble working with their PC counterparts, those platforms do present their own challenges. Achieving smooth frame rates often means focusing on GPU optimization.To begin, locate a frame with a high GPU load. Microsoft and Sony provide excellent tools for analyzing your project’s performance on both the CPU and on the GPU. Make PIX for Xbox and Razor for PlayStationpart of your toolbox when it comes to optimization on these platforms.Use your respective native profiler to break down the frame cost into its specific parts. This will be your starting point to improve graphics performance.As with other platforms, optimization on console will often mean reducing draw call batches. There are a few techniques that might help.Use Occlusion Culling to remove objects hidden behind foreground objects and reduce overdraw. Be aware this requires additional CPU processing, so use the Profiler to ensure moving work from the GPU to CPU is beneficial.GPU instancing can also reduce your batches if you have many objects that share the same mesh and material. Limiting the number of models in your scene can improve performance. If it’s done artfully, you can build a complex scene without making it look repetitive.The SRP Batcher can reduce the GPU setup between DrawCalls by batching Bind and Draw GPU commands. To benefit from this SRP batching, use as many Materials as needed, but restrict them to a small number of compatible shaders (e.g., Lit and Unlit Shaders in URP and HDRP).Enable this option in Player Settings > Other Settings to take advantage of the PlayStation’s or Xbox’s multi-core processors. Graphics Jobs (Experimental) allows Unity to spread the rendering work across multiple CPU cores, removing pressure from the render thread. See Multithreaded Rendering and Graphics Jobs tutorial for details.Be sure to use post-processing assets that are optimized for consoles. Tools from the Asset Store that were originally authored for PC may consume more resources than necessary on Xbox or PlayStation. Profile using native profilers to be certain.Tessellation subdivides shapes into smaller versions of that shape. This can enhance detail through increased geometry. Though there are examples where tessellation does make sense (e.g.,Book of the Dead’s realistic tree bark), in general, avoid tessellation on consoles. They can be expensive on the GPU.Like tessellation shaders, geometry and vertex shaders can run twice per frame on the GPU – once during the depth pre-pass, and again during the shadow pass.If you want to generate or modify vertex data on the GPU, a compute shader is often a better choice than a geometry shader. Doing the work in a compute shader means that the vertex shader that actually renders the geometry can be comparatively fast and simple.When you send a draw call to the GPU, that work splits into many wavefronts that Unity distributes throughout the available SIMDs within the GPU.Each SIMD has a maximum number of wavefronts that can be running at one time. Wavefront occupancy refers to how many wavefronts are currently in use relative to the maximum. This measures how well you are using the GPU’s potential. PIX and Razor show wavefront occupancy in great detail.In this example from Book of the Dead, vertex shader wavefronts appear in green. Pixel shader wavefronts appear in blue. On the bottom graph, many vertex shader wavefronts appear without much pixel shader activity. This shows an underutilization of the GPU’s potential.If you’re doing a lot of vertex shader work that doesn’t result in pixels, that may indicate an inefficiency. While low wavefront occupancy is not necessarily bad, it’s a metric to start optimizing your shaders and checking for other bottlenecks. For example, if you have a stall due to memory or compute operations, increasing occupancy may help performance. On the other hand, too many in-flight wavefronts can cause cache thrashing and decrease performance.If your project uses HDRP, take advantage of its built-in and custom passes. These can assist in rendering the scene. The built-in passes can help you optimize your shaders. HDRP includes several injection points where you can add custom passes to your shaders.For optimizing the behavior of transparent materials, refer to this page on Renderer and Material Priority.The High Quality setting of HDRP defaults to using a 4K shadow map. Reduce the shadow map resolution and measure the impact on the frame cost. Just be aware that you may need to compensate for any changes in visual quality with the light’s settings.If you have intervals where you are underutilizing the GPU, Async Compute allows you to move useful compute shader work in parallel to your graphics queue. This makes better use of those GPU resources.For example, during shadow map generation, the GPU performs depth-only rendering. Very little pixel shader work happens at this point, and many wavefronts remain unoccupied.If you can synchronize some compute shader work with the depth-only rendering, this makes for a better overall use of the GPU. The unused wavefronts could help with Screen Space Ambient Occlusion or any task that complements the current work.In this example from Book of the Dead, several optimizations shaved several milliseconds off the shadow mapping, lighting pass, and atmospherics. The resulting frame cost allowed the application to run at 30 fps on a PS4 Pro.Watch a performance case study in Optimizing Performance for High-End Consoles, where Unity Graphics Developer Rob Thompson discusses porting the Book of the Dead to PlayStation 4.If you want access to the full list of tips and tricks from the team, we’ve also published a 92-page e-book available here, packed with actionable insights.DOWNLOAD E-BOOKIf you’re interested in learning more about Integrated Support services and want to give your team direct access to engineers, expert advice, and best practice guidance for your projects, then check out Unity’s success plans here.Didn’t find what you were looking for?We want to help you make your Unity applications as performant as they can be. If there’s any optimization topic that you’d like to know more about, please keep us posted in the comments.]]></description><link>https://unity.com/blog/games/expert-tips-on-optimizing-your-game-graphics-for-consoles</link><guid isPermaLink="true">https://unity.com/blog/games/expert-tips-on-optimizing-your-game-graphics-for-consoles</guid><pubDate>Wed, 03 Nov 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[A guide to multiplayer mobile games for 2021]]></title><description><![CDATA[How do multiplayer mobile games work?As mobile devices become more and more complex and progress technologically, they also allow the capacity to support more engaging and intricate gameplay to meet a certain standard players demand - such as live multiplayer gameplay.The constant need to live up to console-level quality has caused mobile developers a great deal of stress. Engaging countless players in matches running in real time, with no lag, secure gameplay while maintaining player satisfaction on mobile is no simple feat.The phenomenon that is multiplayer mobile games is accomplished by connecting players to one another via a server that is ideally of equal distance to all the players in the game, using a sophisticated matchmaking system. This method of grouping players together also deals with other crucial factors such as opponent skill levels, optimal number of players, mid game drop-ins and drop-outs, and acceptable wait time for a match connection. These elements all play in to running an effective service-based multiplayer game in the competitive landscape that is mobile gaming.How do multiplayer mobile games monetizeAside from the technological hurdles developers have to jump through, there is the matter of how to monetize users in real-time. In-app purchases are one way to monetize multiplayer games, however they cannot rely on the tried and true method of rewarding high spenders with the most premium tools or weapons. Why? Doing so will shift the odds in favor of IAP purchasers favor, while players who don't buy as many items will be left in the dust, causing resentment among the player community. The key is to be thoughtful of the player experience, and not to force any in-game purchases, rewarding skill and determination instead - as those values have proved successful historically with skill based games. Take DOTA 2, for example, they made $18 million a month in part due to their IAP reward system.Things get a little trickier when monetizing with ads for multiplayer mobile games as they don't necessarily have intermission points between levels to integrate an interstitial ad, and you definitely can't place an ad mid-gameplay. But there are a few ways around it, such as placing interstitials at the end of a match, in the game lobby, or perhaps for spectators while they wait for the next round. Interstitials are typically recommended over other ad units such as rewarded video, as they do not alter the dynamics of the game with more rewards granted for users who watch more videos. As multiplayer mobile gaming is still in its infancy, it pays to test out different monetization mechanics before integrating ad units left and right.What are cross-platform multiplayer mobile games?Nowadays many online video games support cross-play between mobile, handhelds, consoles, and computers to unite players on all platforms. This is achieved through sharing the same online server connecting PS4, Xbox One, PC, and mobile together. Aside from giving the player more freedom in deciding where, when, and on what device to play on, cross-platform gameplay has opened up the door to an expansion of the player community. This provided a solution to a common problem of engaging with those stubborn friends loyal to different devices, or worst yet, finding an online match.How cross-platform multiplayer gaming is changing the industryTimes are a changin’, the idea of cross-platform multiplayer gaming was unheard of not so long ago, as Sony, Nintendo, and Microsoft were fierce contenders in a war for gaming platform superiority. Massive fully cross-play multiplayer hits like Fortnite and Minecraft have broken through platform barriers and proved to be successful nonetheless, awakening competitors to the potential of collaboration in supporting more online multiplayer titles. It is only the beginning it seems, as more and more gaming communities express tremendous desire for cross-play, we can expect to see additional games fully adopting cross-platform multiplayer gaming and riding this new wave of cooperation into the future.Best mobile games to play with friendsHere are some of the best multiplayer games to make their way to mobile:MinecraftCost: $4.99
Available on: iOS and Android
This highly addictive game immerses the user in a strange 3D building block world where anything goes. The Minecraft series has been around for what feels like a century now, and has consistently been one of the most popular multiplayer games on any platform, whether it’s been PC, Xbox, and now - mobile. The mobile version, Minecraft: Pocket Edition, is probably the closest you’ll get to console level quality in a mobile game today.Pokemon GOCost: Free
Available on: iOS and Android
Pokemon has been a childhood sensation for as long as we can remember. This best-selling video game franchise has rocked the boat when it released the first ever successful augmented reality game in mobile. Instead of dropping the player in the world of Pokemon, this unique gameplay brings these fantastic virtual creatures into the players world, thanks to GPS and AR technology. Essentially letting you locate, capture, train and battle them as you go out for a morning stroll. Read more about Pokemon GO here.Fortnite: Battle RoyaleCost: Free
Available on: iOS and Android
The word ‘Fortnite’ has become synonymous with gaming, as it drew in more than 125 million players in less than a year, and rose to be the most popular game in the world. The mobile version, Battle Royale, is essentially a shoot-survival game that transports the player onto an island with a 100 or so other players ready to scavenge, build and kill each other until the last man standing. By March 2019, the game has been played by over 250 million people, generating over $2 billion globally.Words with FriendsCost: Free
Available on: iOS and Android
The classic crossword puzzle games have seen new found interest since Words with Friends came out in 2009. The gameplay offers players the opportunity to engage their friends or random strangers in a highly competitive word game. It has been so successful that in May 2017, Words with Friends, was given the title of the most popular mobile game in the US.Clash of ClansCost: Free
Available on: iOS and Android
The Clash of Clans gameplay is set in a make-believe world where a community of online players get into clans, gather resources, trade, and battle one another for honor, glory, and loot. There has been a lot of attention surrounding this game as Supercell has been heavily promoting it on every media channel. They even ranked as the 5th most watched Super Bowl commercial in 2015.]]></description><link>https://unity.com/blog/multiplayer-mobile-games</link><guid isPermaLink="true">https://unity.com/blog/multiplayer-mobile-games</guid><pubDate>Fri, 29 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Q&A: How Moonee boosted eCPM using ironSource in-app bidding and Vungle’s bidding network]]></title><description><![CDATA[Moonee is a hyper-casual game developer with over 200 million downloads to its name. Its portfolio includes hits like Square Bird, Idle Streamer, Makeover Run and Monsters Gang. We asked Gabriel Oltarz, Head of Growth at Moonee, how they used ironSource in-app bidding together with Vungle’s bidder network to grow their business.What does in-game monetization look like at Moonee?Our in-game monetization at Moonee is focused on ads - in particular interstitials, rewarded and banner formats. That’s why it was crucial we found a solution to fully maximize our ad revenue potential.We have our own engine that enables us to optimize waterfalls at scale - however, traditional instances have their limitations, making it challenging to fully maximize the potential of our demand partners.We are still maximizing traditional instances potential with Moonee’s Engine, however, we understand that in-app bidding is where the industry is heading: real time auctions increase competition between monetization partners and give publishers that extra mile that may be the difference between a good or bad [tooltip term="ecpm"]eCPM[/tooltip]. With such fierce competition, leveraging in-app bidding’s ability to maximize revenues and grow our business is a must.How have you leveraged in-app bidding to boost your monetization?We began using ironSource’s in-app bidding solution, and the results on our eCPMs and ARPDAU have been really promising.The jump in revenue has largely been due to the high competition within ironSource’s in-app bidding solution - they have a large number of bidding networks, which means they’re able to really boost demand for our ad inventory. Specifically, we saw that adding Vungle’s bidding network as part of the Alpha test to our mix performed especially well, helping spike competition and in turn our eCPMs. Vungle is performing above our expectations, increasing its share of voice by 28% thanks to its bidding solution.Apart from this increase in ARPDAU and eCPM, have there been any other benefits of using ironSource’s bidding solution?We’ve found that in addition to strengthening these KPIs, bidding has also freed up time we previously spent on waterfall optimization. In addition, the whole user experience on the ironSource platform makes everything easy and quick to manage. Thanks to the very intuitive UI, our team can focus on key tasks rather than struggling to understand the platform.“In-app bidding allows publishers to maximize opportunities and achieve the best price out of their inventories”

Gabriel Oltarz, Head of Growth, Moonee Publishing Ltd.Aside from the platform, how’s it been working with the ironSource team?We’ve been really impressed by ironSource’s communication and service. When they let us know that Vungle was available to use as a bidder via the ironSource mediation, we understood that our success is all that matters to them - even if it’s not only through the ironSource network itself.In this high-paced industry, communication and availability is crucial to success. ironSource is very professional and provides us with quick responses to our inquiries. It’s really good for us knowing that there is someone to talk with upon having any issue or question.]]></description><link>https://unity.com/blog/qa-how-moonee-boosted-ecpm-using-ironsource-in-app-bidding-and-vungles-bidding-network</link><guid isPermaLink="true">https://unity.com/blog/qa-how-moonee-boosted-ecpm-using-ironsource-in-app-bidding-and-vungles-bidding-network</guid><pubDate>Wed, 27 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Best practices for monetizing mobile games with banner ads]]></title><description><![CDATA[When it comes to monetizing apps with ads, diversification is key. That means using a mixture of user-initiated ads like rewarded videos, and system-initiated ads like interstitials and banners, to maximize your ad revenue.The majority of banner demand is filled by brands and agencies, so serving banner ads is a great way to expose your app traffic to brands and increase revenue. In this article, Growth Strategy Manager at ironSource, Rotem Weinberg, shares the best practices to make sure your banner ads generate the most revenue for your app while preserving a positive user experience.1. Set the right refreshing time for your appMobile banner ads are typically displayed on the top or bottom of the screen, sticking to the screen for the duration of the user session. As the developer, you can set the frequency in which the banner content refreshes to show a new advertisement.There is no one-size-fits-all approach to this: in some apps, setting the refresh time to every 30 seconds could be effective in increasing ARPDAU by maximizing exposure, while in other apps a longer refresh time could make sense. In general, the refresh time ranges from 25 seconds to 2 minutes.Meanwhile, if you have an app with longer average play sessions, you have the luxury of being able to experiment with both short and long refresh times. The key is to A/B test frequently, measuring the impact of different refresh times on your KPIs like eCPM, ARPDAU, and retention.2. Test different banner sizesThe size of your banner ads can have a direct impact on their overall performance. The standard banner size of 320x50 is most commonly used. This takes up minimal real estate on-screen, which is a plus for the user experience.While standard banners are great, publishers may find higher CPMs on 'MREC' implementations, which are 250x300 Medium Rectangle banners which can fit in many menus and screens through the user session.There are multiple sizes to choose from, however, and it's also possible to create custom sizes. The key as always is to A/B test - you can do that with the A/B testing suite on ironSource’s mediation, which offers analytics reporting so you can really drill down into your KPIs to optimize effectively.3. Test the singleton approachAn often effective way to increase revenue from your game’s banner ads is to use the singleton approach - which refers to keeping the same banner in place throughout the app experience.For example, if you serve the user a banner ad on the game’s homescreen, make sure this ad follows the user even as they leave the homescreen and begin navigating through new pages in the game.Keeping your banner ads ‘sticky’ using the singleton approach helps increase revenue because it maximizes user exposure to a specific ad. Often users will scroll right past a banner or pay minimal attention to it initially, but if it follows them around the game there’s a greater likelihood of them noticing it, engaging, and ultimately generating revenue for you.4. Use in-app biddingTo maximize the revenue your banner ad space generates, make sure you’re using in-app bidding. Bidding works as an auction, with ad networks bidding in real time to serve ads in your game. This maximizes demand from ad networks to fill your banner ad space, increasing the revenue you earn per impression.In addition, bidding is a largely automated process, removing the burden of time-consuming manual waterfall optimization. With the considerable time this saves, you can focus your efforts on perfecting your banner placement strategy and user experience - A/B testing things like the refresh time, banner size, and the singleton approach.Put these tips to practice: Monetize with banners on ironSource]]></description><link>https://unity.com/blog/banner-monetization-best-practices</link><guid isPermaLink="true">https://unity.com/blog/banner-monetization-best-practices</guid><pubDate>Mon, 25 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tales from the optimization trenches: Better managed code stripping with Unity 2020 LTS]]></title><description><![CDATA[Managed code stripping is a critical step in the build process that helps decrease the size of an application’s binary files. This occurs through the removal of unused code.By removing code, you ensure that it won’t be compiled or included in the final build. While this should slightly reduce memory usage for projects running with the IL2CPP backend, there’s always the risk of missing types and methods at runtime (among other issues) with higher managed code stripping levels.Throughout the build process, some code is considered unused, and consequently, stripped down. Manually adding needed assemblies to the link.xml file might not be the simplest approach to preserve them from removal. During project reviews that I conduct, as part of my work as a Unity Software Development Consultant, I’ve received questions from customers on how they can better handle managed code stripping. That’s why I’ve gathered these tips and best practices which may improve your workflow with support from new managed code stripping annotation attributes.The removal of unused code is especially important when using the IL2CPP scripting backend. The Unity linker, a version of the Mono IL linker customized to work with Unity, performs a static analysis to strip managed code.Unity supports three levels of managed code stripping for IL2CPP – Low, Medium, and High. The managed code stripping manual explains how the code stripping process works, which factors strip down certain code, and how stripping levels differ from each other. In short: The higher the code stripping level, the harder the linker tries to find and remove the unused code. You can modify the Managed Stripping Level in your project’s Player Settings.Static analysis, leveraged by the linker for the identification of unused code, cannot cover all cases when a certain object’s type is only defined at runtime. These cases lead to false-positive results. Though there might not be any reference to a class or method while compiling, the class or method is still required by some parts of the code at runtime. In this context, the code that uses Reflection serves as a good example. Consider the following snippet:While this is a valid and commonly used type of code, the linker doesn’t know whether MyAssembly, MyType, and MyMethod are actually used at runtime. This can cause them to be stripped down, and by extension, result in a runtime error. Check out the stripping restrictions manual for more information.Developers that use Dependency Injection frameworks like Zenject, or serialization libraries like Newtonsoft.Json, have to be aware that false-positive code stripping is a possibility, and should address it accordingly. Here are some of the most common approaches:The linker recognizes a number of attributes and allows you to annotate dependencies when it cannot identify them. As such, you can add the [Preserve] attribute to assemblies, classes, and methods that should not be stripped down.A link.xml file is a per-project list that describes how to preserve assemblies, types, and other code entities within them. You can manually add needed assemblies, classes, and methods to link.xml, or use the UnityEditor API GenerateAdditionalLinkXmlFile to generate the link.xml file during the build process.Even the Addressables package harnesses the LinkXmlGenerator. The Addressables’ build script reviews the list of assets in the groups and adds types used by assets into the link.xml file. It also adds in types used by Addressables internally via Reflection at runtime. Consider reviewing the default build script, BuildScriptPackedMode.cs,for more details on implementing a similar solution as a step in your build process, like with the Scriptable Build Pipeline.Unity supports multiple link.xml files located inside of the Assets folder or one of its subfolders. During the build process, entries of multiple link.xml files are merged and considered by the linker.Using the [Preserve] attribute might require some manual work. But if your project is already on Unity 2020 LTS, you can use a number of new managed code stripping annotation attributes to easily and precisely mark assemblies, classes, and methods that shouldn’t be removed during code stripping. Here are just some of them:RequireAttributeUsagesAttribute: When an attribute type is marked, all CustomAttributes of that type will also be marked, reducing complications when working in the High stripping level.RequireDerivedAttribute: When a type is marked, all types derived from that type will similarly be marked.RequiredInterfaceAttribute: When a type is marked, all interface implementations of specified types will be marked.RequiredMemberAttribute: When a type is marked, all of its members with [RequiredMember] will be marked. This makes code stripping more precise as it will stop the declaring type from becoming unstrippable. Please note, however, that if the class itself is not used, members will also be stripped, despite being marked with the [RequiredMember] attribute.RequireImplementorsAttribute: When the interface type is marked, all types implementing that interface will be marked. As such, there’s no need to mark every implementation. If the interface is not implemented anywhere in the code base, however, it’ll still be removed, despite the fact that it’s marked with the [RequireImplementors] attribute.In Unity 2020.1 and 2020.2, the tool received API updates to match Mono IL linker. It can now detect some simple reflection patterns, which means that if you’ve upgraded to Unity 2020 LTS, you have fewer reasons to use link.xml files.For more information on how Unity 2020 LTS can help optimize your coding workflows, check out this feature overview and the updates page in the Unity 2020 LTS manual.As part of our 2021 goal of making it easier for you to deliver high-quality builds to your testers and players, we’ve stayed focused on improving code stripping workflows. More specifically, we’ve added a new Managed Stripping Level called Minimal to the 2021.2 release. This will be the default for the IL2CPP backend, so be sure to stay tuned.]]></description><link>https://unity.com/blog/engine-platform/tales-from-the-optimization-trenches-better-managed-code-stripping-with-unity-2020</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/tales-from-the-optimization-trenches-better-managed-code-stripping-with-unity-2020</guid><pubDate>Mon, 25 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get acquainted with HDRP settings for enhanced performance]]></title><description><![CDATA[Learn how to leverage High Definition Render Pipeline (HDRP) settings to maximize performance and achieve powerful graphics all at once.With the release of HDRP version 10 for Unity 2020 LTS and beyond, the HDRP package has continued to prioritize its user-friendly interface, flexible features, stability, and overarching performance. But to set HDRP up for optimal use, it’s crucial to understand all of the main settings, how they work, and what they do. That’s why we’re looking at how HDRP operates from the perspective of CPU/GPU Profiler captures, the Render Pipeline Debug view, and HDRP’s shader framework.From graphics debugging to profiling and optimization, this blog unpacks tips to help you customize HDRP for your project using the Custom Pass API, or another local part of the package.Before we start analyzing frames, it’s important to get to know the HDRP features at hand. We recommend watching our Unite Now presentation, Achieving high-fidelity graphics for games with HDRP, the Ray tracing with Unity’s High Definition Render Pipeline webinar, and the Volumetric Clouds, Lens Flare, and Light Anchor talk, which are all great guides to HDRP.Users moving from the Built-in Render Pipeline to HDRP often find that the migration takes some adjustment time. This is because:HDRP has a unifiedand physically-basedrendering framework, meaning that its attributes use real-world units: Exposure value is used for camera light sensitivity, whereas Candela is used for light intensity. Our Unite Nowtalk reveals how to think in a physically-based way to get consistent results while lighting a scene.There are many parameters you can control in an HDRP project, and these parameters exist in many places. This is partly because HDRP has more integrated features, as well as deeper customization capabilities for both artists and engineers to fine-tune and optimize their work.To get familiar with these HDRP capabilities, we’ll begin by looking at its Global settings.Global settingsFor the Built-in Render Pipeline, the Graphics settings cover most per-project graphics settings. There are also Player settings, which contain some general graphics settings under the context of a particular target platform, such as Windows, Linux, Mac, or Xbox.HDRP projects similarly use Graphics and Player settings, with the addition of three more sets of settings that provide access to advanced default configurations of the render pipeline.In Graphics settings, for instance, the Scriptable Render Pipeline (SRP) settings refer to a default HD Render Pipeline Asset. This HD Render Pipeline Asset contains settings that can be overridden at each quality level.The HDRP Default Settings tab configures: Default Frame settings, with default properties that can be overridden for each camera (including cameras used for Planar Reflections or Reflection Probes). Here you can decide whether the cameras render transparent objects by default.Default Volume components, which contain properties that can be overridden for each “camera position in scene.” For example, you can define default post-processing effect intensities, which can be overridden and become “strong outdoors but weak indoors” using specific volumes for your scenes.The Default Diffusion Profile Assets property, which can be overridden by a Diffusion Profile Override component in the Volume components section of the HDRP Default Settings tab. This, in turn, can be overridden per “camera position in scene.” Currently there’s also a “redundant override layer” for the Diffusion Profile system, but since we’re constantly looking to improve UX in HDRP, a solution for this issue is already underway.Other properties, which are “pure global settings,” cannot be overridden.Finally, some low-level settings that are less likely to require configuration are specified in the HDRP Config package. These settings are also “pure global settings.” Changing them requires recompilation of the C# assembly and the HDRP shader framework. That’s why they’re placed at a different location.Quality levelsWith the Built-in Render Pipeline, you can define a number of quality levelsin the Quality Settings tab. For each quality level, some graphics settings, such as anisotropic texture usage, can be specified so that less hardware resources are used on low-end platforms.For HDRP projects, specifically, an override HD Render Pipeline Asset can be selected for each quality level. This offers more configurability compared to the Built-in Render Pipeline, since the HD Render Pipeline Asset stores several parameters, such as maximum number of directional, punctual, and area lights onscreen, the color-grading LUT size, and the light cookie atlas size, among others.Some properties in the Quality Settings tab for a Built-in Render Pipeline project only apply to the Built-in Render Pipeline. In an HDRP project, these settings might disappear from their original locations and reappear elsewhere as “replacement settings.”In a Built-in Render Pipeline project, for instance, the Quality Settings tab controls the Shadow Resolution property. In an HDRP project, however, the Lighting > Shadowssection of a HD Render Pipeline Asset controls the resolution of shadow maps.Camera and Frame settingsTo render your scene in HDRP, you need to add Cameras just like in the Built-in Render Pipeline. HDRP also makes use of an extra HD Additional Camera Data component (attached to the same Game Object), to store extra per-camera parameters.Indeed, HDRP offers many more per-camera parameters for customization. There are several Physical Camera settings, and if you tick the Custom Frame Settings property of a camera, you can decide how the camera draws the frame through the Frame Settings system.The Frame Settings system is a stack of camera property overrides. You can specify default values for Frame settings in the HDRP Default Settings tab. On top of that, each camera can override the default Frame settings.The Camera panels of theRender Pipeline Debug window help visualize the Frame Settings override stack.Using the Camera panelThe following example demonstrates how the Camera panel of the Render Pipeline Debug window works:There is a camera called Main Camerain the Scene. Main Camera only draws static objects. The HDRP Default Settings tab enables drawing motion vectors, whereas the Frame Settings override from Main Camera disables this function to improve overall performance.The Motion Vectors override stack displays the state of the OverriddenFrame settings on the left of the DefaultFrame settings. See Figure 4, Highlight A:Additionally, theRender Pipeline Debug window shows the state of the SanitizedFrame settings on the left of the OverriddenFrame settings. Sanitization ensures that the Overridden Frame settings stay consistent. Looking at the same example, Opaque Object Motion and Transparent Object Motion have not been explicitly disabled inthe Main Camera’s Frame Settings override. But since Motion Vector is disabled, these dependent features are also turned off by the sanitization system, as shown in Figure 4, Highlight B.Volume systemAs discussed in our Unite Nowtalk, HDRP supports a Volume system. Similar to the Post-processing stack in the Built-in Render Pipeline, the HDRP Volume system controls post-processing. Even more, however, it determines the way the sky is rendered, the strength of indirect light, and some shadow settings, among other features.Simply put, the HDRP Volume system is an abstract framework that can be used to alter rendering settings as the Camera moves across the Scene. There is a hard-coded Default Value for each Volume property. To see these values, use the Volume panel in the Render Pipeline Debug window. See the rightmost column in Figure 5, where the Default Intensity of Lens Distortion is 0.These hard-coded default properties can be overridden by property overrides in the Volume Components section ofthe HDRP Default Settingstab. Note that these property overrides can similarly be overridden by Volumes in the Scene.Conversely, the Camera picks up a blend of property values from Volumes in the Scene. If there are none, it then picks up property values from the HDRP Default Settings tab. Otherwise, it picks up the hard-coded default property values.As shown in Figure 5, the Volume panel of the Render Pipeline Debug window is useful for visualizing the current Volume property override stack. It’s particularly effective when debugging, as it displays the Volume properties currently in use.Meshes and surfacesJust like in the Built-in Render Pipeline, geometries to be rendered are usually specified by Mesh Renderers or Skinned Mesh Renderers in the Scene. HDRP-specific data is predominantly stored in the Materialsso that they can use the appropriate Renderers or Shader Graphs.IlluminationLike in the Built-in Render Pipeline, HDRP projects have Lights with data storage specific to HDRP for each light. The HD Additional Light Data components are attached alongside the regular Light components.Consider that there are many settings for lighting that derive from places other than Game Objects with Light components. Here are just a few examples:Indirect lighting is determined by Light Probe Groups, Reflection Probes (with HD Additional Reflection Data attached), Planar Reflection Probes, and Lighting Settings. It can also be tuned by the Indirect Lighting Controller Volume component.The Volume system determines sky lighting.The Volume system also controls effects related to screen space. These effects act like a source of lighting or shadowing: Screen Space Reflection, Screen Space Refraction, Screen Space Global Illumination, Screen Space Ambient Occlusion, and Contact Shadow.Subsurface Scattering also simulates “surface-to-surface lighting.” Most Subsurface Scattering properties are specified by Diffusion Profiles, which are, in turn, determined by Materials. Meanwhile, you can leverage the Volume system to select the Diffusion Profile Override.Now that we’ve taken a tour of the HDRP UX, let’s turn to some less familiar graphic properties for your next HDRP project. Figure 7 illustrates a possible approach, starting with general settings at the top and override settings at the bottom. As you can see, the scope widens as we go from top to bottom.HDRP’s Graphics settings must adapt to the following:The quality level of the program, such as the platform the program runs onThe current active CameraLocation of the Camera in the SceneThe Materials of the rendered geometriesThe Lights affecting the rendered geometriesNote that HDRP settings are particularly attune to the settings’ dimensions.Conflicts between the settings’ dimensionsThere are often conflicts between the following settings’ dimensions:The quality level and the current active Camera might try to control the same graphics parameter. For example, if you want to reduce the Subsurface Scattering sampling count on low-end devices, you might also want to reduce the Subsurface Scattering sampling count for cameras that render to Render Texturesfor picture-in-picture effects.The quality level and the Camera location in the Scene might try to control the same graphics parameter. So if you want to reduce the quality of post-processing effects on platforms with limited GPU power, you must be aware of the fact that some Scene locations already use significant GPU time for complex lighting. As such, you should strive to make the quality of the post-processing effects lower at these locations to recover some performance budget.The quality level and lights in the Scene might try to control the same graphics parameter. So if you want to reduce the shadow map resolution on platforms with limited RAM, you must keep in mind that there are likely many small shadow-casting spotlights in the Scene that require shadow maps with lower resolution.To address these conflicts, the HD Render Pipeline Asset supports tieredsettings. Instead of indicating just one value for a property, a number of values can be attributed to a number of tiers – Low, Medium,High, and in some cases, an Ultra tier.For cameras that render the picture-in-picture effect, you can specify a tier for both the volumes that control the post-processing effects and the spotlights that request the shadow maps:HDRP can then look up the property from the appropriate tier in the active HD Render Pipeline Asset. It’s this property that will be used.Of course, it’s also possible for cameras, volumes, and lights to ignore the tiered settings system, and directly determine their desired behaviors.Three settings’ dimensions overlappingLet’s look at another example where the settings’ dimensions overlap.Imagine that there are some Mesh Renderers in the Scene using a Shader Graph with complex vertex animations. It might be too expensive to perform vertex animation on low-end devices. There’s also extra camera rendering to consider for the Render Texture when it comes to picture-in-picture effects, so you don’t need that extra camera to render with any vertex animation.In this case, there are three settings’ dimensions overlapping:Materials of geometries in the SceneQuality level of the programCameras in the SceneTo address cases like this, there is a special Material Quality keyword available in Shader Graph:Unlike regular Shader Graph keywords that are controlled by users per Material, this is a global keyword, set up internally by HDRP. In the HD Render Pipeline Asset, you can control the Material Quality Levels available, as well as the default Material Quality Level.For each camera, you can override the default Frame settings and specify a Material Quality Level, overriding the active HD Render Pipeline Asset.The HDRP has a systematic approach to handling settings from artists. After all, maintaining a great UX for artists is the key to inspiring high-quality content.When starting an HDRP project with a simple setup, the project might cost a surprising amount of performance. This is because HDRP determines many of the used features by default. Best practice is to control the HDRP settings so you only pay for what you intend to use.To represent a minimalistic rendering workload, let’s create a scene of 225 cubes using the default material, illuminated by a spotlight, a point light, a directional light, and ambient lighting.How does this simple setup perform? Let’s build a standalone player with a resolution of 2880x1620, on the IL2CPP scripting backend, with VSync turned off. Running the player on a Windows machine with Intel i9-10980HK GPU and NVIDIA RTX2080 GPU, the Profiler shows that the mean frame time is 4.6 ms.Looking at the Timeline view of the Profiler, a significant amount of time is spent on the DXGI.WaitOnSwapChainmarker, indicating that it is GPU bound.Taking a GPU capture using Nsight Graphics shows that this occurs because the HDRP has several features active by default:There are many extra visual effects active, such as SSAO, Subsurface Scattering, Dynamic Exposure, Motion Blur, and Bloom.There are multiple Color Pyramid passes and an Upsample Low-res Transparent pass in action, all of which support complex transparent rendering.As you can see here, you can control the HDRP Asset, override the Camera’s Frame settings, and add Volume overrides, so that only the absolute minimum features are enabled. In other words:Decals, Low-res Transparency, Transparent Backface, Depth Prepass, Depth Postpass, SSAO, SSR, Contact Shadows, Volumetrics, Subsurface Scattering, and Distortions are all disabled in the HDRP Asset.Refraction, Post-Process, After Post-Process, Transmission, Reflection Probe, Planar Reflection Probe, and Big Tile Prepass are all disabled in the Camera’s Frame settings.The Volume overrides the Exposure mode to Fixed Exposure.After the modification, the result has a mean frame time of just 2.45 ms, which is significant compared to rendering the same scene in a Built-in Render Pipeline.In practice, you do not need to turn off so many features in an actual game for the Main Camera, although some extra cameras do require this treatment.If you’re interested in even cheaper cameras, the HDRP UI Camera Stacking package in 2021.2 allows you to stack multiple camera rendering UI at only a fraction of the cost of a standard camera.This example not only highlights the extent of control you have over HDRP’s performance characteristics, but the importance of tuning your HDRP project’s setup.It begins with light: The definitive guide to the High Definition Render PipelineThe HDRP in Unity 2020 LTS brings you improved tools for creating evocative, high-end lighting in your games. Get this new, in-depth guide, to learn how to harness the power of physically based lighting in HDRP.Get the guide]]></description><link>https://unity.com/blog/engine-platform/get-acquainted-with-hdrp-settings-for-enhanced-performance</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/get-acquainted-with-hdrp-settings-for-enhanced-performance</guid><pubDate>Fri, 22 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Entertainment innovation with Unity at Carnegie Mellon Thailand]]></title><description><![CDATA[Carnegie Mellon Thailand (CMKL) was established in 2017 as a collaboration between Carnegie Mellon University (CMU) and Unity Academic Alliance member institution King Mongkut's Institute of Technology Ladkrabang (KMITL). CMKL University provides cutting-edge education and brings world-class partnerships into a local context, making technology more accessible and driving innovation for the benefit of Thailand, the Southeast Asian region, and beyond. Through its various programs, CMKL tackles the challenges necessary to power future development.The Entertainment Innovation Center (EIC) has introduced a unique interdisciplinary MS in Technology and Creative Innovation (MSTCI), formerly known as the MS in Entertainment Innovation. The program places a strong emphasis on the world of professionals, bringing together the brightest scholars and experts from the fields of art, design, engineering, technology, business, and management. The curriculum is wide-ranging, including everything from improvisational acting to building virtual worlds with Unity and other extended reality (XR) technologies. Through the program, students at the EIC learn to collaborate, problem-solve, communicate, and lead.‍Students typically choose a specific area of focus within the MSTCI program and spend four immersive semesters learning the vocabulary, values, and working patterns of other disciplines, as well. This emphasis on acknowledging and understanding the creativity of others fuels innovation in turn. The EIC aims for a student body with the following composition:40% students with technical backgrounds40% students with creative backgrounds20% students with business/management backgrounds‍Through a rigorous curriculum that includes training in creative development and technical skills, students from diverse backgrounds work together in capstone groups to devise prototypes and working proofs-of-concept that require creativity and collaboration across disciplines. Final deliverables can be mobile apps, transformational games, performances, exhibitions, products, XR experiences, or artifacts showcased at the annual EIC Playground.In the MSTCI program, led by Program Director Natasha Patamapongs, students have the opportunity to create with Unity in two courses: Building Virtual Worlds, taught by creative technologist and tech entrepreneur Kamin Phakdurong, and Building Virtual Worlds II, taught by Unity Certified Instructor and XR specialist Jeremy Luisier. Both are modeled after Entertainment Technology Center cofounder Randy Pausch’s groundbreaking course of the same name, and challenge students to work quickly, creatively, and collaboratively to design functional prototypes with Unity and other software. Building Virtual Worlds students also explore productions and projects in various other entertainment media, their work culminating in public festivals with hundreds of spectators – and an incredible sense of accomplishment. In fact, many Building Virtual Worlds ideas go on to become full-time research projects, student spin-offs, and commercial successes. Let’s take a look at what students are currently working on in Unity!Natcha Lohasawad’s Virtual Reality Auditorium for public and improvisational speech practice was created using the Unity XR Interaction Toolkit. Natcha, a recent Faculty of Journalism and Mass Media Studies graduate, seeks to help users face their fears of public speaking through practice in a virtual environment. In the Unity VR application, users can get a true feel for transitioning from backstage to the spotlight on center stage, practice holding a microphone while speaking, and get comfortable with using hand gestures. Need a topic to practice? Natcha’s Virtual Reality Auditorium can help by providing useful prompts. The app cleverly uses color psychology in the lighting scheme, giving a unique feel to each area of the environment. Now, we’re eagerly awaiting her next application to help us deal with our debilitating fear of clowns.Aratchporn Chaladol (Mint) created the ThamLuang Cave experiential and interactive VR documentary to help users understand what it was like when, on June 23, 2018, twelve boys went exploring in Thailand’s Chiang Rai province with their soccer coach and ended up trapped deep inside a cave. The rescue mission was extraordinary and Mint, a Thairath TV-Channel 32 news anchor and Faculty of Arts graduate, takes users through the dangers of the cave – with all the mud and water that Thailand’s monsoon season brings. Mint began with resources like Unity Learn’s Create with VR course and expanded upon the lessons to create a truly immersive version of this powerful story, filled with suspense, heroism, and loss. She has completed an impactful prototype of the first main scene, “The Entrance: Chamber 3,” and we look forward to seeing the upcoming Unity scenes (“Choke Point” and “The Kids”) soon.Jakarin Sirikulthorn (X) created his Recycle VR game as a fun way to educate children about recycling using Unity and virtual reality. The game employs colorful objects that demonstrate X’s 3D modeling and texturing abilities as well as some carefully chosen items from the Unity Asset Store. In the game, children attempt to toss items into the correct bin to receive points. Successes and failures are met with quirky and engaging sound effects that round out the experience. X, with a background in industrial product design and investment informatics, has just begun his PhD journey. As he delves into work on smart farming and automated drone technology, we’re eager to see the exciting Unity XR applications he’ll come up with next.Ludwik Bacmaga (Ludi) is a Unity developer with CMKL and is working on learning management system gamification. For his project, Ludi created an escape environment with puzzles set in a horror-themed virtual world. The Unity application gives users the sense of a large environment within a small space. He jokes that “there are no bugs, just features!” – including an innovative interaction system where puzzle panels come to the user, keeping the ambience of the confined space at the forefront of the experience. Ludi presents an intriguing duality, combining a sense of classic horror (with a slow reveal) and a modern stylized aesthetic. With his programming skills and XR expertise, we’ll be waiting in suspense to see where Ludi takes this project. (Just no clowns, please.)Gunyootapong Nopakun (Barge) got his start making hip-hop music as a teenager and developed his passion into a career as a TV host and radio DJ. In his Unity VR project, Barge funneled his media creation skills into an immersive experience in 1990s nostalgia. In the virtual room, you can listen to popular songs and watch a curated selection of movie clips from the decade. The room truly evokes the ‘90s sensibility, from the toys one can find around the space to the posters adorning the walls. With Barge’s many talents, we’re sure he’ll continue to be a master of the past and future, and maybe our next Unity Certified Instructor.Witchuporn Jingjit (Volt) is an energetic violin virtuoso who started playing the instrument at the age of five and began performing a few years later. Volt brought his love of music to his Unity VR project, creating an experience that mimics a traditional jam session. In his project, virtual instruments allow users to play harmonies that Volt, a Berklee College of Music graduate, created in Logic Pro X and imported into Unity. With the harmonies in place, users can improvise solos and “jam” in VR. The future looks very bright for this friendly young violinist from the Land of Smiles – and for the development of his Unity XR projects.Dhanadhat Trairatwongse (Marwin) graduated with an interior design degree and worked at a lighting design company before becoming a TV producer. For his Unity VR project, Marwin decided to bring his lighting experience, production skills, and lifelong affinity for horror movies and games together. He wanted to move beyond a game that makes you jump and toward an experience that makes you doubt your reality. His virtual world is designed to give the user a sense of familiarity while exploring a dark, eerie mansion. The story unravels as you encounter the chilling spectres that haunt it, with atmospheric sounds helping to flesh out the supernatural experience. Wait, was the desk on that side of the room the last time you looked? Are you sure? Marwin isn’t telling.Vich Sanardharn (Ray-O) is a creative director, editor, music lover, instructor, scriptwriter, and life enthusiast with a passion for experiential design and helping others. For his Unity VR project, Ray-O was interested in creating an experience that would leave an important mark on people’s lives. The application takes users to the Land of Nowhere – aptly named due to the desolate space – where the user does the creating, engaging in self-reflection on values and interpersonal relationships. The experience is rooted in sand tray therapy, where one may construct their own microcosm using miniature toys and colored sand. The created scene acts as a reflection of the user’s life and allows them an opportunity to resolve conflicts, remove obstacles, and gain self-acceptance. We’re fascinated by the concept and where Ray-O plans to take it next.—Are you interested in the MSTCI program at CMKL-EIC? Learn more about the curriculum, scholarships, frequently asked questions, and more.Curious about becoming a Unity Academic Alliance member institution like KMITL? Learn more about the program and its benefits.Want to become a Unity Certified Instructor? Learn how you can make an impact on Unity creators.]]></description><link>https://unity.com/blog/news/entertainment-innovation-at-carnegie-mellon-thailand</link><guid isPermaLink="true">https://unity.com/blog/news/entertainment-innovation-at-carnegie-mellon-thailand</guid><pubDate>Thu, 21 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 must-have features in your game's next mediation platform]]></title><description><![CDATA[For game developers of all sizes, from one-person operations to large teams, partnering with the right mediation platform can be the difference between a quick hit and long-term sustainable business; a successful games company and one struggling to survive. That’s because the right mediation will provide all the tools needed to propel a game from a passion project into a scalable business.However, with multiple mediation platforms to choose from, it might not be immediately clear which one is right for their games business. That’s why we’ve compiled a list of the top five features you must have in your mediation platform, without which you’ll struggle to really unlock your long-term growth.1. Comprehensive yet easy-to-use analyticsData is paramount to any game’s long-term success: it’s the best way to identify what’s working and what’s not, and is the guiding force behind meeting your KPIs and making important strategic decisions.In today’s market, there is a large number of metrics that can be tracked to measure game health, and granularity is key. It can take a lot of time and resources to build internal dashboards, which is why your mediation platform should provide access to multiple different analytics reports that provide a holistic understanding of your game’s performance on both the UA and monetization sides.Here are three reports you need from your mediation platform:User activity reportsUser activity reports are key to understanding how users engage with different ad placements and their impact on your KPIs.If, for example, you’ve added a new rewarded video placement to your game, or increased the frequency of your interstitial ads, you need to keep a close eye on the impact of such changes on key metrics like ad engagement rates, usage rates, ARPDAU, and ARPDEU.Random Logic Games, for example, used the cohort reports to analyze ARPDAU and engagement rate at the ad unit level. CEO Andrew Stone said:“It's a great report to know if your current strategy or testing is effective.”

- Andrew Stone, CEO, Random Logic GamesCohort reportsCohort reports are another crucial component of analytics, and are a must-have in your mediation analytics dashboard. A cohort is a group of users that perform a certain sequence of events within a particular time frame. For example, a cohort on the ironSource analytics dashboard represents a collection of users that installed your app, and triggered an app launch on the same day.Cohort reports provide insight into the full lifecycle of different cohorts of users and let you instantly see the impact of any changes made to your game design or ad monetization strategy. For each cohort of users, you can track the effect of these changes on retention (D0, D1, D7, D30), average revenue per user, the number of impressions per user, engagement related metrics, and more. Without this information, you’ll lack a truly holistic view of your game’s metrics, which could lead to misinterpretation of performance data and harm the future optimization of the game.Homa Games used ironSource’s mediation platform and cohorting reports to identify trends in user behavior and make game design changes accordingly.“ironSource provides us with all the functions of a typical mediation, plus highly detailed cohort reporting, which gives it a great edge over other platforms.”

- Vincent Hart de Keating, Co-Founder and Managing Director at Homa GamesBidding reportsWith bidding quickly becoming the default monetization method for game developers of all sizes, having a dedicated in-app bidding report directly in your mediation dashboard is also key. Like with any new technology, and especially one that automates manual operations, it’s important to keep as much control as possible and get full transparency into its performance.The key metrics you need to track are ARPDAU, bid rate (the percentage of times that a bidding network chooses to participate in the auction), win rate (the percentage of times a bidding network wins the in-app bidding auction and gets to load the ad), and render rate (the percentage of times a bidding network bids in the auction and then serves an impression).By adopting a data-first approach, you’ll be better positioned to optimize and manage the automated setup, make smart decisions for your monetization strategy, and communicate efficiently with your ad network partners.Without access to these three reports through your mediation platform, you can’t fully measure, control, and optimize your game’s health, and in turn you won’t be able to fully maximize its potential as a business.Read our blog post about the 4 KPIs to track in order to optimize your bidding strategy2. A/B testing suiteSo you have a mediation platform that provides granular data about your game’s monetization performance. What do you do with that information? That’s where A/B testing comes into play - and it’s one of the most important practices you can do through your mediation platform to scale your games business.A/B testing is a way to put data insights into actionable steps for improving your game’s monetization performance. Your best chances for success are with a mediation platform that offers a robust selection of different A/B testing tools, so you can optimize multiple different parts of your game operations.Whether you want to quickly test the impact of in-app bidding on your revenue at the click of a button, easily test changes in your waterfall settings (like different countries and instance pricing), or experiment with adding new ad placements in your game like introducing interstitials - make sure you have the possibility to do so directly on your mediation platform.Learn about the different A/B tests you can do with ironSource3. Gaming-first platformA successful monetization strategy requires an array of growth technologies, from waterfalls and in-app bidding, to segmentation and A/B tests. Choosing a gaming-focused mediation platform built by game growth experts ensures you’re accessing the best tools and best practices for you - with solutions built specifically for game developers. That means getting access to content, events, benchmarks, KPIs, and dedicated support geared towards exactly what you need to turn your game into a profitable business.For example, ironSource was ranked a top network for game developers by Appsflyer and consistently develops products specifically with game developers in mind - from waterfall management and in-app bidding, to A/B testing and advanced analytics reporting.4. Easy to useAs a game developer, you want your mediation platform to be easy to use whether you’re a rookie or a seasoned pro. Some leading mediation platforms require a lot of know-how to fully make the most out of their features, and need you to use and master multiple different services simultaneously. However, that doesn’t provide a good UX for developers who might not have the time or resources to learn.After all, it’s not ideal to have a long learning process before reaping the rewards of mediation - the best mediation partner will provide an intuitive, accessible UX with everything you need to grow your game in one place, immediately.A mediation platform that ticks all these boxes will increase your chances of developing a profitable games business over the long-run. In such a fiercely competitive market, gaining any kind of leverage - such as choosing a mediation platform primed to help you succeed - can go a long way.5. Ability to add custom networksSome mediation platforms let publishers access demand from the leading ad networks. But, there are many other ad networks out there that can not only help boost revenue, but also serve ads from niche advertisers that are relevant to your users.That's why it can be a great bonus partnering with a mediation platform that gives you the freedom to integrate any network you want to your monetization stack.You can do this by developing your own custom adapters and sharing configuration guidance with your mediation partners. The key things to look out for are ease-of-use - you want the integration process to be intuitive and hassle-free - and in-depth analytics, so you're able to get revenue, impressions, engagement rate, and more KPIs for your custom networks.]]></description><link>https://unity.com/blog/5-must-have-features-in-your-next-mediation-platform</link><guid isPermaLink="true">https://unity.com/blog/5-must-have-features-in-your-next-mediation-platform</guid><pubDate>Thu, 21 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[From design model to real-time 3D configurator: The canVERSE and Arksen workflow]]></title><description><![CDATA[Wide-ranging industries are deploying real-time 3D configurators, as more businesses strive to engage their customers with interactive and immersive presales and marketing activities. Unity Forma, part of the family of Unity marketing solutions, provides an efficient, cost-effective solution to meet that need.With innovation, technology and adventure at their core, Arksen needed a new way to showcase their latest marine exploration vessel that aligned to those core values. When they partnered with a design company specializing in creating shared 3D spaces that work across desktop, mobile, augmented and virtual reality, canVERSE knew exactly where to start.canVERSE leveraged Unity Forma to create a streamlined workflow, starting with Arksen’s computer-aided design (CAD) data and resulting in a fully interactive, real-time 3D configurator of their latest vessel.“Previously, creating a static render of our vessels would take a couple of weeks to coordinate. Now, the model feels alive as clients can interact with the Arksen 85 in real-time, viewing it from any angle while customizing options with Unity Forma.”



– Eleanor Briggs, Marketing Director, ArksenIn this guest post, canVERSE’s Chief Executive Officer Barnabas Cleave, with Chief Product Officer Charlie Hasdell, steps through the configurator creation process.By integrating the 2D creative canvas of screen space with a shared 3D universe, canVERSE propels companies to reach their customers and engage more with their products.Arksen has created a range of explorer vessels, designed to safely travel to some of the most wild and precious places on the planet. Directly from the Arksen CAD data, canVERSE was able to create a real-time 3D fully configurable model of the Arksen 85 vessel with Unity Forma.Each Arksen is customizable to the client’s needs, so canVERSE created a workflow that can ingest multiple CAD models. The workflow consists of five stages:It all starts with the CAD model, which is built in Rhinoceros 3D and exported as a 3DM file by the Arksen team.Using Unity’s standalone Pixyz Studio solution unlocked a wealth of tools, including CAD data conversion to tessellated triangle meshes, building UVs for texturing, and optimizing the geometry. It also allows the team to deploy numerous features to fix any technical issues, apply materials, and finesse the model in preparation to be imported into Unity Forma.To take advantage of having a vessel’s construction in progress, canVERSE created a digital library of materials by taking photographs of the Arksen 85 and feeding them into ArtEngine. ArtEngine’s AI-powered tools then enabled the team of artists to create highly realistic materials using Unity’s High Definition Render Pipeline (HDRP). For example, the aluminium sheet pictures from the outside of the vessel were converted into a physically based renderer (PBR) asset.Our design is continually evolving, and Unity Forma’s native tools provide a workflow that allows canVERSE to update and review changes at an incredible speed.For the first Arksen 85, the development team created the animations for the boom arms and added a three-state visibility system, while the artists built the coastal scenes. Unity Forma really comes into its own when all the final elements can be manipulated together.Traditionally, the chief product officer would be directing each of the various developers and artists to polish the final product. This can be a lengthy process of back and forth between team members. However, with Unity Forma, a non-technical specialist can easily adjust cameras, lighting and material variants and test them with ease. This saves a great deal of time and resources internally.Additionally, the Forma process itself is very efficient, which is essential, as the Arksen model is getting updated continuously. As soon as a new version of the Arksen model is in Unity Forma, it’s possible to update material and visibility variants in a simple drag-and-drop interface using the product configurator.As the structure of the project is preserved, the existing camera work, animations and environments are retained between product updates. Automation tools such as the product configurators and the material thumbnail generator further speed up this rework. It generates new thumbnails for the Forma user interface in a quick and easy process that saves many hours of work.Finally, Unity Forma allows all parties – canVERSE, the Arksen team, and Arksen’s client – to try different ideas and spot potential problems in real-time that normally would be found much later. Hence, collaborators are able to build and review together in one cohesive design process.“Unity Forma lets clients emotionally engage with their Arksen, as they get to see and feel a digital twin of their boat in context, rather than an abstract CAD drawing.”



– Jim Mair, Technical Director, ArksenSo, Unity Forma has not only become a vital sales tool, but also part of the design feedback loop that lets the team rapidly prototype in hours instead of days.Finally, each Unity Forma build is deployed on Furioos, Unity’s cloud-based streaming technology that makes it easy to share complex, interactive 3D applications on web browsers and embed them onto websites. This makes sure the Arksen team and their customers always get to see the latest update, all without the need for a powerful machine.Click here to access the Furioos stream.Unity Forma allows canVERSE’s workflow to be tried and tested and ultimately to feed back into Arksen’s Rhinoceros 3D CAD model, ready for manufacture.Now canVERSE are working on several XR configurations to take the immersion to the next level. Check out how they developed the digital twin into a virtual reality experience with Varjo.___________________________________________________________By adopting real-time 3D technologies, manufacturers are seeing significant improvements in their product lifecycle processes. Find out more about Unity Forma, or reach out to our Unity experts to try it for free.]]></description><link>https://unity.com/blog/industry/from-design-model-to-real-time-3d-configurator-the-canverse-and-arksen-workflow</link><guid isPermaLink="true">https://unity.com/blog/industry/from-design-model-to-real-time-3d-configurator-the-canverse-and-arksen-workflow</guid><pubDate>Mon, 18 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to optimize game performance with Camera usage: Part 2]]></title><description><![CDATA[Welcome back to Part 2 of: How to optimize your game performance with Camera usage. If you haven’t read Part 1 yet, check it out here. Now we will pick up from where we left off and dig in the profiler results!In the Built-in Render Pipeline, the Camera.Render profiler marker measures the time spent processing each Camera on the main thread.Each Camera has its own Camera.Render marker which we summed up in each test case in the graphs below.In the high load scenario, we selected a different load factor for each device to increase the total frame time without going too high. Very high loads do not provide reliable results because the cost of additional Cameras can get somewhat overshadowed by the performance variability between frames.The trend is clear: Time spent in Camera.Render is directly affected by the number of Cameras. This is true even when adding an extra Camera that doesn’t render anything in the fourth scene.When moving to the Universal Render Pipeline (URP), the first thing that stands out in the profiler timeline view is that many bars are blue (Scripts) instead of green (Rendering). Green bars represent time spent in the C++ side of the Unity engine’s rendering code which is where all the rendering code lives in the Built-in Render Pipeline. URP is a scriptable render pipeline which means that a lot of the rendering code has been moved to C# to give users much more control to customize the rendering process.The Inl_UniversalRenderPipeline.RenderSingleCamera profiler marker measures the time spent processing each Camera on the main thread. Conveniently, each of those markers also contains the name of the Camera as a suffix.However, summing up those Camera markers as in the Built-in Render Pipeline tests does not give an accurate picture of the total performance of URP. As can be seen in the figure above, we should also count the significant time spent in the Inl_Context.Submit markers. This is time spent on the creation of draw command buffers which are included in the Built-in Render Pipeline’s Camera.Render markers. To make things easier, we choose the RenderPipelineManager.DoRenderLoop_Internal marker which encompasses all this.For consistency reasons, we used the same high load factors as in the Built-in Render Pipeline scenarios.Again, the trend is clear: Time spent in rendering code is directly affected by the number of Cameras. As in the Built-in Render Pipeline tests, this holds true even when adding an extra Camera that doesn’t render anything in the fourth scene.At this point, if you closely compared the performance characteristics of the Built-in Render Pipeline and URP, you might have noticed some strange results. You would be right. In the high load tests, for example, URP is much more efficient than the Built-in Render Pipeline on the Galaxy S7 Edge, but not on the iPhone models we tested. To keep this post to a manageable length and keep the focus on the primary subject, we will investigate this in a separate blog post.Let’s examine some multiple Camera usage scenarios we’ve seen in the wild and discuss their alternatives.Having a giant canvas in the middle of the scene in the Scene view can be distracting. Some users fix this problem with a separate UI Camera positioned further away which renders canvases set to “Screen Space - Camera”. Since Unity 2019, you can instead toggle child GameObject visibility in the Hierarchy window to hide distracting canvases. The Layers drop-down menu in Unity’s Toolbar can also be used to achieve this.Some users rely on Cameras to order their canvases. This is not the right tool for the job. Instead, use the Canvas’ Sort Order or Plane Distance. However, be also aware that nested canvases have an “Override Sorting” option which must be taken into account.Another case we’ve seen is using separate Cameras that render different parts of the game UI with culling masks for the sake of toggling the visibility of UI screens. The correct way to do this is to instead toggle either the activation of GameObjects or the enable flag of Canvas components.One last example that doesn’t involve UI is using multiple Cameras to switch between viewpoints. The worst situation then arises when all those Cameras are enabled and the Camera rendering order (i.e. the Depth property) is used to control which one is visible. In that case, all Cameras are rendered in full one over the other which is very costly. Disabling unused Cameras removes this cost. However, we argue that it’s best to use a single Camera and always position it at the currently active viewpoint. This makes it impossible to have multiple active Cameras by mistake and simplifies the Camera management process.While you should avoid the unnecessary use of multiple cameras, there are times when this is the best or even only solution. In general, multiple Cameras are likely the right choice if you need more than one of any of the following:Camera outputs. This includes the rendering surface (Display, RenderTexture) and the viewport rectangle.Resolutions. Only a single resolution can be used for the output of a Camera. Intermediary results inside the rendering pipeline used by a Camera can however be rendered at arbitrary resolutions and used to produce the Camera’s output. An example of this is HDRP’s Low-Resolution Transparent pass.Field of view, position, and orientation. These parameters directly define the culling frustum. An exception to this is XR where Unity uses a couple of tricks for the two eyes which are Cameras very close to each other.Here are some examples of valid use-cases for multiple Cameras.A common practice to improve GPU performance on newer (mobile) devices with very high display resolutions is to render the scene in a lower resolution and upscale it to the final resolution. In this scenario, many games want to render at least some parts of their UI at the native resolution over the upscaled scene to get sharper UI sprites and images. This type of rendering configuration requires a separate Camera because two different resolutions are used.Multiple sub-displays with different Camera positions or resolutions also require multiple Cameras. An example of this is a split-screen game where each player can move their viewpoint independently.A dynamic billboard showing a part of the scene from a second viewpoint requires a RenderTexture as its own texture. A separate Camera is necessary to generate the content of this RenderTexture.In this post series, we measured the cost of additional Cameras in Unity’s Built-in Rendering Pipeline and Universal Render Pipeline. The results clearly show that unnecessary Cameras in a scene have a cost that can easily be avoided for a nice performance gain.On a closing note, you might wonder why even a Camera that doesn’t render anything can have such a large performance impact. The first main reason is that it simply takes a good amount of work for Unity to figure out that the Camera does not, in fact, contain anything. The second reason is, to put it bluntly, that Unity is not optimized for sub-optimal Camera setups. Optimizing the engine for these would make the well-configured games slower and also probably use more memory which is undesirable.Want to learn more about the Accelerate Solutions Games team and how they can help you elevate your game? Visit our homepage, or reach out to a Unity sales representative to find out how we can help accelerate your next project.If you like our Accelerate Success content series, don’t miss out on this recording of our latest Accelerate Success webinar: The Unity UI makeover, delivered by two of our team leads, Andrea and Sebastian. In this demo, Andrea and Sebastian will take a poorly designed UI and give tips and best practices on how to improve the UI so your game runs faster and more efficiently.]]></description><link>https://unity.com/blog/games/part-2-optimize-game-performance-with-camera-usage</link><guid isPermaLink="true">https://unity.com/blog/games/part-2-optimize-game-performance-with-camera-usage</guid><pubDate>Thu, 14 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity for Humanity Summit highlights: Imagining a better world with RT3D]]></title><description><![CDATA[Today, we hosted the second annual Unity for Humanity Summit, bringing together innovative changemakers using their creativity to imagine a brighter future. This year’s event was jam-packed, featuring more than 80 creators and 100 projects across speaking sessions, networking events, and a changemakers showcase, and our core focus areas of environment and sustainability, education and inclusive economic opportunity, and digital health and wellbeing.If you registered for the Summit, you can sign in with your credentials to watch the session recordings through November 7. If you didn’t register, you can view recordings on Unity’s YouTube channel beginning November 1. Read on to learn about event highlights and gain some insight into what’s next for Unity Social Impact.The Unity for Humanity program is designed to uplift and empower social impact creators. During today’s Keynote, we announced the Unity for Humanity 2022 Grant and introduced the Imagine Grant, created in partnership with award-winning artist, actor, and activist Common. The grant theme is inspired by Common’s latest single, “Imagine.” The grant will be awarded to the project that best ‘imagines a better world.’The Unity for Humanity Grant and the Imagine Grant are open for applications through December 3, 2021. We’re awarding $500K USD in total across the grants. While a single project cannot receive both the Imagine Grant and a Unity for Humanity 2022 Grant, you can apply for both via the same application.All grant applications will be evaluated using the following criteria:Vision: Does the project reflect a strong sense of compassion for humanity? Does the project demonstrate clarity of vision and express a unique point of view? Inclusion: Are the project and team demographically diverse?* Does the project have a natural connection to the community and audience it represents and/or serves?Impact: Does the project have clear social impact goals or a call to action in alignment with the 17 UN Sustainable development goals? Does the application include an impact plan? Viability: Are the production, financial, and impact milestones achievable? Is the project realistic in scope?In addition to the general Unity for Humanity Grant evaluation criteria, the Imagine Grant recipient will be selected using the following additional criteria:Positive future of humanity: Does the project provide a strong picture of humanity’s future that is inclusive, transformative, and/or positive?Based on real-world issues: While imagining a better future, is the project based on real-world issues? Examples include climate change, human rights infringements, economic disparity and lack of opportunity, etc.Inspiration for change: Does the project have the potential to inspire audiences to make positive changes and take action?Imagination: Does the project demonstrate uniqueness, depth, and/or imagination in terms of its story and approach to depicting a better world?Motivation: Does the team articulate a strong motivation for creating the future world represented in their application?The Imagine Grant is just one component of our partnership with Common. We have also granted funding to the Art in Motion (AIM) school in Chicago, of which Common is a partner. AIM provides personalized learning and immersive arts education to middle and high school-aged students. This grant will enable more students to use real-time 3D technology to tell their stories and create change, which is a central and long-standing pillar of Unity’s social impact work.If you’re interested in learning or teaching Unity, check out Unity Learn for free courses, guided certifications, and more. Educators and nonprofit organizations can apply for an Education Grant license to access tools and resources for teaching students how to create in 2D, 3D, AR, and VR. And, students can get started creating with the Student plan, which provides access to specialized curricula, assets, and product licenses.Beyond our commitment to supporting changemakers, enhancing education, and encouraging inclusive economic opportunity, we also recognize our role as global citizens and the need for decisive action on sustainability.With this in mind, we announced today that Unity is net zero. This means that we’re immediately neutralizing our greenhouse gas emissions by purchasing high-quality offsets. We set our science-based target after conducting our 2020 greenhouse gas (GHG) emissions baseline inventory and learning that we emit 38,400 metric tonnes of carbon annually – as much as 8,400 passenger vehicles driven for a year. We are employing a 3-step approach to reach our net zero goal:Offsetting: We‘re achieving net zero carbon emissions today through carbon offsets. Starting with our 2020 emissions calculation amount, approximately $500K USD will be invested in high-quality offsets that provide co-benefits to local communities.Redesigning: Second, we’re reducing our carbon footprint by sourcing renewable energy for our facilities and redesigning our procurement policy to ensure that everything purchased is as sustainable as possible. We will continue to implement energy efficiency projects in our facilities and procure certified IT equipment where feasible.Aligning: Lastly, we’re committed to funding, aligning, and partnering with groups who are demanding better from the world and setting new industry standards.We recognize this is just the beginning of our long-term obligation to take concrete steps to preserve our planet. Learn more in our latest press release.In addition to the efforts to reduce our carbon emissions, we recognize the transformative potential of real-time 3D to drive real-world carbon reduction at scale. We see creators innovating to develop new efficiencies, reduce negative environmental impacts, and proactively prepare the world for a climate-resilient future every day. In April of this year, we collaborated with the United Nations Environment Programme and Project Drawdown to launch the Unity for Humanity Environment and Sustainability Grant in support of creators who are using RT3D to realize a more sustainable future. The winners of this grant are:Powers of X: A VR experience designed to raise awareness around humanity’s impact on global climate change and empower high school students to act.District 64: A VR storytelling experience that challenges systemic injustice and illustrates the grave impacts of urban oil drilling on health in marginalized communities.Origen: An interactive, immersive experience that spotlights the destruction of sacred territory endured by Indigenous communities, highlighting the ancient way of understanding human life through our relationship to the land.Learn more about the grantees in this Unity for Humanity Summit session recording and stay tuned for more updates.Thank you to everyone who participated in this year’s Unity for Humanity Summit – we can’t wait to see what you create next. Get future updates and event information by joining the social impact mailing list.*Demographically diverse: Diversity of theme, geography, creator background and experience, medium, etc.]]></description><link>https://unity.com/blog/news/unity-for-humanity-summit-highlights</link><guid isPermaLink="true">https://unity.com/blog/news/unity-for-humanity-summit-highlights</guid><pubDate>Wed, 13 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity: Creating and training a robot digital twin]]></title><description><![CDATA[Our Made with Unity: AI series showcases Unity projects made by creators for a range of purposes that involve our artificial intelligence products. In this example, we feature a recent submission to the OpenCV Spatial AI competition that showcases robotics, computer vision, reinforcement learning, and augmented reality in Unity in an impressive suite of examples.Unity has a world-class, real-time 3D engine. While the engine and tools we have created traditionally supported game developers, the AI@Unity group is building tools around areas like machine learning, computer vision, and robotics to enable applications outside of gaming, especially those that rely on artificial intelligence and real-time 3D environmentsGerard Espona and the Kauda Team’s submission to the OpenCV Spatial AI competition utilized many of our AI tools and packages across multiple examples. They used our Perception Package to help train computer vision models and the ML-Agents toolkit to train their machine learning models and do a sim2real demonstration of a robotic arm. We interviewed Gerard to find out what inspired him to build this project. Read on to learn more about how he brought this project to life in Unity and in the real world.Where did you get the Kauda Team name from?Kauda Team is composed of Giovanni Lerda and myself (Gerard Espona) with the name coming from the free and open-source 3D-printable desktop-sized 5-axis robotic arm that Giovanni created called Kauda. This is a great desktop robot arm that anyone can make and allowed us to collaborate remotely on this project.We developed Kauda Studio which is a Unity application that powers the Kauda digital twin. It provides a fully functional, accurate simulation of Kauda with inverse kinematics (IK) control, USB/Bluetooth connection to the real Kauda, and can support multiple OpenCV OAK-D cameras.The OAK-D camera combines two stereo depth cameras and a 4K color camera with onboard processing (powered with Intel MyriadX VPU) to automatically process a variety of features. As part of the contest, we built a Unity plug-in for OAK devices, but we also wanted to have a digital twin in Unity as well. The OAK-D Unity digital twin provided a virtual 3D camera with an accurate simulation that could be used for synthetic data gathering. It also allows for virtual images to be fed into the real device’s pipeline. We were able to use the Unity Perception Package to collect synthetic for training custom items with the virtual OAK-D camera.Having a digital twin allowed us to enable additional features on Kauda. You can also use augmented reality (AR) features of Unity to interact with a virtual robot in the real world. One application is to learn how to perform maintenance on a robot without requiring a robot there. This also allows the programming of sequential tasks with a no-code approach having a virtual and accurate representation of the robot.The digital twin enabled us to perform reinforcement learning (RL) training. RL is a time-consuming process that requires simulation for anything beyond extremely simple examples. With Kauda in Unity, we used the ML-Agents toolkit to perform RL training for control.We also began testing human-machine collaboration and safety procedures by replicating the robot in Unity and using the cameras to measure where the human was inside the robot area. You can imagine doing this for a large robot that can cause injury to humans when errors occur. The simulation environment lets us test these scenarios without putting humans in danger.We believe RL is a powerful framework for robotics and Unity ML-Agents is a great toolkit that allows our digital twin to learn and perform complex tasks. Because of the limited time frame of the contest, the goal was to implement a simple RL “touch” task and transform the resulting model to run inference on the OAK-D device. Using ML-Agents, the robot learned the optimal path using IK control to dynamically touch a detected 3D object.To accomplish this, we first implemented a 3D object detector using spatial tiny YOLO. The RL model (PPO) uses the resulting detection and the position of the IK control point as input observations. As output actions, we have the 3-axis movement of the IK control point. The reward system was based on a small penalty in each step and a big reward (1.0) when the robot touched the object. To speed up training, we took advantage of multiple agents learning simultaneously developing virtual spatial tiny YOLO with the same outputs as real spatial tiny YOLO.Once the model was trained, we transformed it to OpenVino IR and Myriad Blob format using the OpenVino toolkit to load the model on an OAK-D device and run inference. The final pipeline is a spatial tiny YOLO plus RL model. Thanks to our Unity plugin, we were able to compare inference using ML-Agents and OAK-D agents inside Unity side by side.The first stage of our pipeline is a 3D object detector, which is a very common starting point for AI-based computer vision and robotic tasks. In our case, we used a pre-trained tiny YOLO v3 model and thanks to the Unity Perception package we were able to train a custom category. It allowed us to generate a large synthetic dataset of 3D models with automatic ground-truth bounding box labeling in a matter of minutes. Usually, the collection and labeling process is a manual human process that is very time consuming. Having the ability to generate a rich dataset with plenty of randomization options to have different rotations, lightning conditions, texture variations, and more is a big step forward.The timing required to sync the virtual and real-world items was a little off at times. We think this could be resolved by using ROS in the future and it is nice that Unity officially supports ROS now.Gerard has a full playlist of videos documenting their journey with a few notable videos including a webinar with OpenCV and the final contest submission video. He has also released the OAK-D Unity plug-in on Github to help others get started on their project.We are excited to see our tools enable projects like this to come to life! If you are looking to add AI to your projects in Unity, we have many examples and tutorials to get you started! The Unity Perception Package allows you to easily gather synthetic data in Unity. The Unity Robotics Hub has tutorials and packages to get you started with ROS integration and robotics simulation. And the ML-Agents toolkit makes reinforcement learning simple with many environments to get started with.]]></description><link>https://unity.com/blog/industry/creating-and-training-a-robot-digital-twin</link><guid isPermaLink="true">https://unity.com/blog/industry/creating-and-training-a-robot-digital-twin</guid><pubDate>Mon, 11 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Automotive HMI Template: Take it for a ride]]></title><description><![CDATA[Want to see how to use Unity to create rich, interactive human-machine interfaces (HMIs) in cars? Check out our new Automotive HMI Template, available for free on the Unity Asset Store, and watch our webinar for an expert-led walkthrough.Step into any new vehicle today, and you’ll see dashboard innovations beyond Henry Ford’s wildest dreams. As automakers push the boundaries on the number and size of screens inside their vehicles, they unlock opportunities to create more engaging experiences for drivers and passengers.Car companies want to build rich, interactive content and are under increasing pressure to do so. As one auto exec memorably put it, “Screens are the new horsepower.”Modern HMI user interfaces (UI) aren’t that different from a video game. They need to be interactive, provide compelling visuals and incorporate various simultaneous transition animations.With its roots as a game engine, Unity is especially well suited for creating this type of content. Just as it enables collaboration among game developers, automotive teams and partners can use Unity for prototyping and production, ensuring what they dream up is what users ultimately experience. Thanks to its collaboration and extensibility features, Unity is a popular tool for HMI and UI/UX prototyping across the automotive industry.Unity also provides unparalleled multiplatform support for teams to deploy to their target of choice. We’ve worked to ensure Unity supports a range of embedded operating systems and chipsets to make the jump possible from prototyping all the way into production. We provide platform licensing for Intel, NVIDIA, NXP and Qualcomm processors, as well as major operating systems like Android Automotive, BlackBerry QNX and Yocto Linux. We’re also working with map providers like HERE Technologies to create more immersive navigation and location-based experiences.HMI use cases extend across all sorts of embedded systems, from car dashboards and in-flight entertainment to home appliances and digital twins. Our Unity for HMI solutions support this vast range of applications.Introducing the Automotive HMI TemplateWe created the Automotive HMI Template to help simplify your HMI design and development, and to demonstrate how Unity can be used for creating any rich, interactive and dynamic content. The template provides great value as a starting point for creating an HMI project, and it includes several assets to inspire you.We focused the template on priority use cases in the automotive industry, such as the following.Multi-display supportEmbedded HMIs may span more than one display. The template features a multi-screen manager for cluster, in-vehicle infotainment (IVI) and heating, ventilation and air conditioning (HVAC) UIs, and shows how Unity can support multiple displays based on the project contents.High-quality visualsThe look and feel of an HMI is critical to the user experience. The template shows the stunning results possible with Unity’s Universal Render Pipeline (URP), which enables teams to achieve best-in-class graphics while optimizing for performance on your embedded target.What you see is what you getTeams working on HMI systems traditionally build and test components in silos. A design team may work with an entirely different toolchain than a development team. When they are ready to see the results of their work, traditional HMI toolchains don’t let them debug within a scene – once the simulation is running, they are effectively locked out, which ultimately lengthens revision cycles and time to market.One of Unity’s major advantages is that you can design, develop and debug on the fly, instantly see your changes accurately displayed, for both 2D and 3D content. The template showcases how Unity lets you see the UI and your scene at the same time, even during simulation.These features are just a taste of what’s included in the Automotive HMI Template. It demonstrates plenty of specialized Unity functionality that can be used for HMI design, such as scriptable objects that store data like skins or the vehicle status.The making of the Automotive HMI TemplateThis work was inspired by the exterior automotive design of Tianze Yu and the interior automotive design of Lukas Chesla, which is part of a larger sponsorship with the College for Creative Studies (CCS) in Detroit, Michigan. To learn about Unity’s collaboration with CCS, read our blog post.We teamed up with Innovation Works, a Unity Certified Creator and renowned automotive design studio, to build the template. This project is built with Unity 2020 LTS to provide the best support for embedded systems.Get startedDownload the template today on the Unity Asset Store. Watch our webinar to get an in-depth walkthrough of the template from our technical experts.Speak to a Unity sales representative to bring your HMI project to life.]]></description><link>https://unity.com/blog/industry/automotive-hmi-template-take-it-for-a-ride</link><guid isPermaLink="true">https://unity.com/blog/industry/automotive-hmi-template-take-it-for-a-ride</guid><pubDate>Thu, 07 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creatives and performance: Why I became obsessed with art and science]]></title><description><![CDATA[Let’s face it - not every one of your game’s creatives is going to have a sky-high IPM and drive quality users by the thousands. As Creative Lead at ironSource, I’ve helped design and launch enough creatives to recognize not all of them are hits. But, I’ve learned to celebrate these failures and learn from them - doing so gets you closer to unlocking the secret sauce of success. Even those who don’t feel they have creativity running through their veins can still crack creatives and help a game scale quickly and profitably. Here’s a framework for doing just that so you can gather and apply the learnings that optimize your game’s creative strategy.Step 1: Start chewing over the dataBefore you start building a great creative, you need a marketable concept - this starts by analyzing data to determine what’s performing well and what areas need improvement. We’ve broken down three ways you can approach creative thinking and how to use performance metrics to back up your decisions:Current top-performers, future playablesWhen designing your video creatives, test a few versions that highlight different parts of your game, like the core mechanic, metagame, and other relevant parts. Analyze each of these themes by looking at performance KPIs like IPM and CVR and quality metrics like retention and ROAS so you can confirm what aspects and themes are resonating with your users. Then you can take these top-performers and adapt them into an engaging and interactive creative, like a playable. Spoiler alert: At the end of this process, measure your playable’s performance by looking at in-game metrics to see how well your creative attracted quality users.Embrace your inner sonar by tracking industry trendsIf your gameplay is the foundation for your creative concept, you can build another layer by applying trends in the industry and in your game’s genre. Trends perform well because users are familiar with them and they already have a track record of success.The first version of the creative for the game Wheel Scale by Supersonic used a drag mechanic. In the sixth version, it was swapped for a drawing mechanic because this was trending in the top charts. The creative with the drawing mechanic achieved 45% more scale, a 5% higher IPM, and boosted CVR by 34% - and importantly, all while keeping LTV stable, which indicated the quality of the users was still high even as the mechanic in the creative changed.Think like a game designerGame designers prioritize gameplay and staying true to the core concept as they brainstorm new ways to level up in the next update. Stepping out of the shoes of a creative designer and into those of a game designer can help you meld the two worlds - creativity and hooking users with gameplay. As you adopt this new perspective for your creative strategy, you can come up with a new hook that entices users while highlighting the core mechanic. For example, if you have a match-3 mechanic and a bakery theme, you can introduce a storyline in your creative around building up your bakery and feature a Muffin Woman character while showing actual gameplay. Now, your ad appeals to users who enjoy a story-based game, like a bakery theme, and play match-3 games. Hold up: If your game doesn’t have a bakery theme, this tip still applies to you. This theme in your creatives could be something that resonates with your users - try testing it as a wild card before implementing it into your game.Analyzing the impact of these three approaches comes down to looking at the data. With each tweak to your creatives, check the KPIs, apply your learnings to each variation, and optimize as you work towards uncovering your game’s secret sauce. We’re going to get into this more soon, but keep in mind that this cycle of learning and optimizing is an endless process - you should design new creatives and measure their impact continuously.The next part of the framework is all about executing and optimizing after getting into the creative mindset.Step 2: Time to improve performanceWhen first launching your UA campaign, you can’t know for sure what creatives are going to succeed - even someone with decades of experience in the industry can’t know with certainty what’s going to work. Take our creative team, for example: Many of us have been designing creatives for years and years, but we still place friendly bets about which iteration will perform best because the results can always surprise us until we finish running the test.Great execution comes down to macro A/B tests that compare the impact of making a drastic change to your creatives and micro decisions that change small details. Designing many iterations that initially change large aspects then making minor tweaks ensures you’re testing as much as possible and gathering data to optimize efficiently while not missing out on an opportunity to give your creative performance a boost. Let’s start with the macro changes.Go big: A/B test major elementsWhile small tweaks can help you quickly fine-tune creatives, macro A/B tests can unlock success by changing a big part of the design. Some common examples of major features to change include the lead character (female vs. male, animal vs. human), level difficulty, and camera angle. Just because it’s a big change doesn’t mean it necessarily takes too much time or resources to test - you can test many of these features directly through Unity.One of the elements that we often A/B test is the beginning of the funnel - the tutorial screen - which is essential for attracting and engaging users. Idle Barber Shop Tycoon from Codigames demonstrates this type of macro decision in action. We tested two different versions of the tutorial in the playable - one that highlights the barbershop environment and another that leverages a trend of showing characters with strong expressions by having users wake up the sleeping hairdresser. The version that used the sleeping character earned a 60% engagement rate compared to the 54% ER of the other creative. This iteration attracted potential players with a visual hook that reduced user reaction times (time to engage) by 33% - it became the winning version and achieved over 100 million impressions.Making both micro decisions and macro changes then analyzing the impact can help you make more efficient and impactful decisions as you iterate on your creatives. Knowing exactly what worked - and what didn’t - helps you identify the opportunities for optimizing creatives and, in turn, gameplay. You can close the loop of UA and monetization by integrating the concept or feature that performed well from your playable into your build. To know if your change made an impact on monetization and game performance, track its impact by looking at in-game metrics.Refine the little thingsIn the past, creative teams thought their work was complete when they finished designing and launching an ad set. Now, you can’t head to the beach the moment your creative goes live - it’s a cycle of crunching the numbers and optimizing performance so you get the most out of your creative strategy. Use in-ad metrics like engagement rate and drop-off to pinpoint parts of your interactive creative that are failing and then make small quick tweaks to improve performance. Not every creative is going to help you scale exponentially from the get-go, but each creative does contain important information about performance and what’s working with your users. Recognizing what pieces of the creative are failing can help you quickly identify and adjust them to try and unlock scale.Let’s say a playable ad of yours isn’t scaling well. Looking at the data, you notice users are dropping off quickly or failing the game in the first few seconds - this could indicate it’s too short and/or challenging. So you add a feature to increase the duration of gameplay and give users an automatic extra life so they don’t immediately fail. Now they play all the way through to the end card, feel less frustrated (although striking the right balance of frustration can be a very strong feeling to motivate them to keep playing), and want to download your game and keep playing all night.Small changes can create a sense of urgency, too - a trend we’re seeing that encourages engagement as users feel compelled to overcome the challenge and beat the level shown in the creative. You can accomplish this by adding features like a timer, showing characters asking for help or panicking, including a red flashing border, or increasing speed. To see if a quick tweak like this worked, look at your data and check if it boosted key metrics like engagement rate, CVR, and IPM.Finding your secret sauceEach game is going to have its own recipe for the secret sauce of creative success - it depends on your genre, concept, and specific elements within your game. But if you approach your creative strategy in a way that focuses on testing and iterating then analyzing the data to help you extract a hook, you can find your unique recipe and unlock scale into the long-term. With each successful campaign, gather insights and build a knowledge center that you can apply to your next set of creatives. While every game’s user acquisition strategy will need to strike a different balance between the creative, the bid, and user quality, you can more easily find this formula by applying your learnings from previous campaigns.Editor’s note: This article is based on the exclusive presentation that Creative Lead at ironSource Elad Gabison gave at the virtual LevelUp 2021 conference. Check out the video from LevelUp 2021 below.]]></description><link>https://unity.com/blog/how-to-balance-creativity-and-performance</link><guid isPermaLink="true">https://unity.com/blog/how-to-balance-creativity-and-performance</guid><pubDate>Wed, 06 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[What is the Unity for Humanity program?]]></title><description><![CDATA[Dot’s Home, UFH 2020 grant recipientUnity for Humanity is a Unity Social Impact program that empowers changemakers to foster a more inclusive, equitable, and sustainable world using real-time 3D (RT3D).Unity for Humanity connects, uplifts, and serves communities across three focus areas: environment and sustainability, digital health and wellbeing, and education and inclusive economic opportunity.Unity for Humanity was born out of the desire to support social impact creators building in Unity. The program was co-founded in 2018 by producer and environmental activist Amy Zimmerman, with the visionary support of the VP of Social Impact, Jessica Lindl. With their leadership, The Unity for Humanity program grew from a small annual grant at Unity, to a robust creator support program.In 2021 alone, Unity for Humanity has supported creators through:The Unity for Humanity Grant for all social impact content using RT3DThe Rare Impact Challenge for mental health and wellbeing projectsThe Environment and Sustainability Grant, created in collaboration with Project Drawdown and the United Nations Environment Programme (UNEP)The Black Visions Grant, which supported Black-led social impact, including four projects selected for the Tribeca Film Festival Juneteenth ProgramBringing people together and empowering visionary RT3D creators to make a positive impact on the world is what drives the Unity for Humanity program. We believe that stories rooted in community have the power to create positive global change.Whether it’s a game encouraging citizen science, an AR experience about civil rights, or a tool for connecting children impacted by grief, global creators are using RT3D to make an impact in their communities.Unity for Humanity is guided by several big questions: How can technology serve humanity and global communities? How can we exponentially grow the impact social impact creators are having around the world? How can we amplify underrepresented voices using RT3D?The values of respect, empathy, and opportunity are embedded in everything we do. Our aim is to foster an inclusive social impact creator ecosystem.Please note: Unity for Humanity will not accept projects or content that includes or promotes hate, violence, bullying, harassment, threats against individuals or groups of people, or illegal content.The Unity for Humanity program supports social impact-driven RT3D projects. All project genres (game, XR, film, solution, etc) are eligible to apply, so long as they are built on a real-time 3D platform. In order to apply for a Unity for Humanity Grant, projects must be in production (early-stage production is accepted). Creators should be able to share their vision for the project, visuals, in-progress work, and impact plan.All projects must be impact-driven – meaning that they have measurable impact goals and/or calls to action – and encompass themes of social, healthcare, education, humanitarian, and/or environmental issues. Projects must also align with at least one of the UN 17 Sustainable Development Goals.The rubricTo make sure all future applicants have as much information and context as possible, this is what our Unity for Humanity judges are looking for when reviewing projects. We hope this transparency will help strengthen your Unity for Humanity grant applications.When reviewing grant applications, we consider inclusion, impact, viability, and vision.Inclusion: Inclusive storytelling is at the heart of Unity for Humanity. Does the project reflect a diversity of experiences and backgrounds? Does the project have a natural connection to the community and audience being represented or served through the work? Does the application demonstrate that the creators are thinking about future audiences and distribution of the work in an inclusive way?Vision: Is there a strong motivation for creating the work? Does the project express a unique perspective? Does the project reflect a strong sense of compassion for humanity?Impact: Does the project have measurable impact goals and calls to action? Is the project aligned with at least one of the UN 17 Sustainable Development Goals? Viability: Does the team have a realistic plan of execution for the production and distribution of the project so that it can achieve the greatest impact? Is it realistic in scope? You can find more information and details about the judging process in our Unity for Humanity FAQ. If a grant is announced with a theme – for example, digital health and wellbeing – we may provide even more theme-specific criteria. This information will be shared in our FAQ.Grant DetailsThe Unity for Humanity Grant is designed to support the vision of the creator(s) and the ability of the project to make an impact on the world.Creators who are awarded a Unity for Humanity Grant can expect to receive financial support. These funds are awarded to support the completion and distribution of their social impact project.Grant recipients are also awarded technical support, which includes a kick-off consultation with our developer relations team and bespoke assistance from Unity technical support.We are pleased to also offer our grant recipients marketing support, industry mentorship, and invitations to events including the Unity for Humanity Summit.Most importantly, grant recipients join our incredible community of social impact changemakers and visionary storytellers committed to creating a better world.If you are interested in applying for a Unity for Humanity Grant or attending future events, please subscribe to the Social Impact newsletter. To see how creators are using RT3D to drive meaningful change, please check out unity.com/humanity and the Changemakers showcase.]]></description><link>https://unity.com/blog/news/what-is-the-unity-for-humanity-program</link><guid isPermaLink="true">https://unity.com/blog/news/what-is-the-unity-for-humanity-program</guid><pubDate>Mon, 04 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing: Unity Robotics Visualizations Package]]></title><description><![CDATA[With this toolkit for visualizing and debugging the internal state of robotics simulations, Unity can be used as an all-in-one ROS simulation and visualization tool.One of the challenges faced by roboticists is the need to understand what's happening in their system. In a complex interconnected network of components, when something isn't working, how do you figure out which part is going wrong? Is component A generating bad data, or is component B processing it wrong? It's critical to be able to visualize the data travelling around the system.With this in mind, today we're excited to announce the next release from Unity Robotics: the Robotics Visualizations Package is a new package for displaying and customizing visualizations of ROS messages.The Unity Robotics team has been hard at work, releasing several Robotics example projects, such as Pick-and-Place and Object Pose Estimation. Most recently, we released our Nav2-SLAM Example, demonstrating an autonomous robot navigating and mapping an unknown space, all simulated in Unity.The Robotics Visualizations Package builds on and supports these packages by offering a library of customizable visualizations for all the common ROS message types: shapes, poses, point clouds, images, sensors of all kinds, and more. It natively supports the ROS transform tree, and allows you to enable, disable and customize visualizations for any ROS topic at runtime.Here's how easy it is to use the Robotics Visualizations Package to add visualizations to an existing robotics project:Import the Robotics Visualizations Package into Unity using Package Manager.Drag the DefaultVisualizationSuite prefab into your Unity scene.Hit Play, and you’ll see some new buttons in the Heads-Up Display (HUD). Click on the Topics button to see the list of all the topics ROS knows about.Click on whichever topics you want to see visualizations for!Transforms represent the relationships between coordinate frames in a robotic system. All your data are generated in different coordinate frames. Lidar data are in the lidar frame, camera data are in the camera frame, and map data are in the map frame. In order to make sense of all these disparate data sources, we need to have a common frame of reference. Transforms help us do this by keeping track of the relationships between these frames. Debugging robots without putting the sensors and algorithms in this 3D context is nearly impossible. With the Robotics Visualizations Package you can now view data in real time alongside Unity scenes and assets and seamlessly switch between simulated and real data.Robot mapping is tricky. Maps can fracture, robots can drift. Is your odometry tuned correctly or did the map just break in half because an optimization-based SLAM algorithm broke down? The Unity Robotics Visualizations Package enables you to visualize the occupancy grid, transforms, localization, and lidar point cloud all on top of one another, enabling you to visually see where algorithms break down.The Robotics Visualizations Package supports most common ROS message types, including Transforms, Occupancy Grids, 3D point clouds, markers, laser scans, images (jpeg, png and uncompressed), and more. And has opportunities for customization if you have a unique data type you need to view!The Robotics Visualizations Package also supports user-created visualizations: it includes a powerful set of tools to draw anything you need, and/or build on and customize the built-in visualizations. Here are some highlights:Drawing3d is an easy-to-use utility class for drawing arbitrary textured/colored lines, shapes, meshes and labels in 3D space. For example, you could use it to draw the ghost of an object at the position where you predict it will be, a line showing the trajectory it will follow to get there, and more lines around it to indicate error bars.PointCloudDrawing is a GPU-optimized point cloud renderer, which can display up to 10 million billboarded points each with their own size and color, at interactive speeds. You can use it to display volumetric data such as 3D scans or depth images.Display historical data trends, 3D movement trails, and more with the HistoryDrawingVisualizer template, which maintains a configurable-length history of the messages sent on a topic. You can analyse and display that history however you want.And of course, all this is backed up by the power and ease of use of the Unity Engine, offering features such as AR and VR support; custom shaders with Unity Shader Graph; compute shaders, cloud simulation, and more.We're excited to see what you all do with the Robotics Visualizations Package!To get started with the Robotics Visualizations Package, check out this new extension to the Nav2-SLAM tutorial that demonstrates how to use the new package.Our Robotics Visualizations Package is just a part of our growing ecosystem of robotics packages and features that enable robotics in Unity. For more robotics projects, visit the Unity Robotics Hub on GitHub.Be sure to visit us on the Robotics Forum, or email us at unity-robotics@unity3d.com with your feedback and suggestions!]]></description><link>https://unity.com/blog/engine-platform/introducing-unity-robotics-visualizations-package</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/introducing-unity-robotics-visualizations-package</guid><pubDate>Mon, 04 Oct 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Speed up your programmer workflows]]></title><description><![CDATA[We recently published two blog posts, Five ways to speed up your workflows in the Editor and Speed up your artist workflows, both based on our e-book for professional developers, 70+ tips to increase productivity with Unity 2020 LTS. In this third and final blog post of the series, we focus on workflows and the features that help programmers get more done in less time. Let’s start with how you can save compilation time when playtesting.When you enter Play mode, your project starts to run as it would in a build. Any changes you make in-Editor during Play mode will reset when you exit Play mode.Each time that you enter Play mode in-Editor, Unity performs two significant actions:Domain Reload: Unity backs up, unloads, and recreates scripting states.Scene Reload: Unity destroys the Scene and loads it again.These two actions take more and more time as your scripts and Scenes become more complex.If you don’t plan on making anymore script changes, leverage the Enter Play Mode Settings (Edit > Project Settings > Editor) to save some compile time. Unity gives you the option of disabling either Domain Reload, Scene Reload, or both. This can speed up entering and exiting Play mode.Just remember that if you plan on making further script changes, you need to re-enable Domain Reload. Similarly, if you modify the Scene Hierarchy, you should re-enable Scene Reload. Otherwise, unexpected behavior can arise.An assembly is a C# code library, a collection of types and resources that are built to work together and form a logical unit of functionality. By default, Unity compiles nearly all of your game scripts into the predefined assembly, Assembly-CSharp.dll. This works well for small projects, but it has some drawbacks:Every time you change a script, Unity recompiles all other scripts.A script can access types defined in any other script.All scripts are compiled for all platforms.Organizing your scripts into custom assemblies promotes modularity and reusability. It prevents them from being added to the default assemblies automatically, and limits which scripts they can access.You might split up your code into multiple assemblies, as shown in the diagram above. Here, any changes to the code in Main cannot affect the code in Stuff. Similarly, because Library doesn’t depend on any other assemblies, you can easily reuse the code from Library in just about any other project.Assemblies in .NET has general information about assemblies in C#. Refer to Assembly definitions in the Unity documentation for more information about defining your own assemblies in Unity.Ever catch yourself repeating the same changes when you create a new script? Do you instinctively add a namespace or delete the update event function? Save yourself a few keystrokes and create consistency across the team by setting up the script template at your preferred starting point.Every time you create a new script or shader, Unity uses a template stored in%EDITOR_PATH%\Data\Resources\ScriptTemplates:Windows: C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplatesMac: /Applications/Hub/Editor/[version]/Unity/Unity.app/Contents/Resources/ScriptTemplatesThe default MonoBehaviour template is this one:81-C# Script-NewBehaviourScript.cs.txtThere are also templates for shaders, other behavior scripts, and assembly definitions.For project-specific script templates, create an Assets/ScriptTemplates folder, then copy the script templates into this folder to override the defaults.You can also modify the default script templates directly for all projects, but make sure that you backup the originals before making any changes.The original 81-C# Script-NewBehaviourScript.cs.txt file looks like this:It’s helpful to keep these two keywords in mind:#SCRIPTNAME# indicates the file name entered or the default file name (for example, NewBehaviourScript).#NOTRIM# ensures that the brackets contain a line of whitespace.Relaunch the Unity Editor, and your changes should appear every time you create a custom MonoBehaviour.You can also modify the other templates in a similar fashion. Remember to keep a copy of your original, plus modifications, somewhere outside the Unity project for safekeeping.Unity has a variety of attributes that can be placed above a class, property, or function to indicate special behavior. C# contains attribute names within square brackets.Here are some common attributes you can add to your scripts:This is just a small sample of the numerous attributes you can work with. Do you want torename your variables without losing their values? Or invoke some logic without an empty GameObject? Check out the Scripting API for a complete list of attributes to see what’s possible.You can even create your own PropertyAttribute to define custom attributes for your script variablesOne of Unity’s most powerful features is its extensible Editor. Use the UI Toolkit package or the IMGUI mode to create Editor UIs, such as custom windows and inspectors.UI Toolkit has a workflow similar to standard web development. Use its HTML- and XML-inspired markup language, UXML, to define user interfaces and reusable UI templates. Then, apply Unity Style Sheets (USS) to modify the visual style and behaviors of your UIs.Alternatively, you can use immediate mode, IMGUI, as mentioned above. First derive from the Editor base class, then use the CustomEditor attribute.Either solution can make a custom inspector.A custom Editor modifies how the MyPlayer script appears in the Inspector:See Creating user interfaces (UI) for more on how to implement custom Editor scripts using either UI Toolkit or IMGUI. For a quick introduction to UI Toolkit, watch the Getting started with Editor scripting tutorial.The Addressable Asset System simplifies how you manage the assets that make up your game. Any asset, including Scenes, Prefabs, text assets, and so on, can be marked as “addressable” and given a unique name. You can call this alias from anywhere.Adding this extra level of abstraction between the game and its assets can streamline certain tasks, such as creating a separate downloadable content pack. This system also facilitates referencing those asset packs, whether they’re local or remote.To begin, install the Addressables package from the Package Manager, and add some basic settings to the project. Each asset or Prefab in the project should have the option to be made “addressable.” Check the option under an asset’s name in the Inspector to assign it a default unique address.
Once marked, the corresponding assets will appear in the Window > Asset Management > Addressables > Groups window.For convenience, you can either rename each address in the asset’s individual Address field, or simplify them all at once.Bundle these assets to host them on a server elsewhere, or distribute them locally within your project. Wherever each asset resides, the system can locate them using the Addressable Name string.You can now use your Addressable assets through the Addressables API.It’s worth noting that, without Addressables, you’d have to complete the following to instantiate a Prefab in your Scene:The disadvantage here is that any referenced Prefab (like prefabToCreate) would load into memory, even if the Scene doesn’t need it.Using Addressables, do this instead:This loads the asset by its address string, meaning that the Prefab does not load into memory until it’s needed (when we invoke Adressables.Instantiate inside CreatedPrefabWithAddress). Additionally, you can use Addressables for high-level reference counting, to automatically unload bundles and their associated assets when they’re no longer in use.Tales from the optimization trenches: Saving memory with Addressables shows an example of how to organize your Addressables Groups so that they are more memory efficient. Meanwhile, the Addressables: Introduction to concepts tutorial offers a quick overview of how the Addressable Asset System can work in your project.If you’re operating a live game, then you might want to consider using Unity’s Cloud Content Delivery (CCD) solution with Addressables. The Addressables system stores and catalogs game assets so that they can be located and called automatically. CCD then pushes those assets directly to your players, completely separate from your code. This reduces your build size and eliminates the need to have your players download and install new game versions every time you make an update. To learn more, read this blog on the integration between Addressables and Cloud Content Delivery.The Platform Dependent Compilation feature allows you to partition your scripts to compile and execute code for a specifically targeted platform.This example makes use of the existing platform #define directives with the #if compiler directive:Use the DEVELOPMENT_BUILD #define to identify whether your script is running in a player that was built with the Development Build option.You can compile selectively for particular Unity versions and/or scripting backends, and even supply your own custom #define directives when testing in the Editor. Open the Other Settings panel, part of the Player settings, and navigate to Scripting Define Symbols.See Platform Dependent Compilation for more information on Unity’s preprocessor directives.A ScriptableObject is a data container that saves large amounts of data, seperate from class instances. ScriptableObjects avoid copying values, which can reduce your project’s memory usage. Check out the full e-book for some examples of how to use ScriptableObjects. Otherwise, peruse the ScriptableObject documentation for further details on using ScriptableObjects in your application.Looking for even more? Watch Better data with ScriptablesObjects in Unity for a quick introduction, and see how they can help with Scene management in Achieve better Scene workflow with ScriptableObjects.Optimization tipWe recommend binary serialization formats such as MessagePack or Protocol Buffers for saved data, rather than text-based ones, such as JSON or XML. In project reviews, these binary serialization formats reduce the memory and performance issues associated with the latter.Unity offers support for the following integrated development environments (IDEs):Visual Studio: Default IDE on Windows and macOSVisual Studio Code: Windows, macOS, LinuxJetBrains Rider: Windows, macOS, LinuxIDE integrations for all three of these environments appear as packages in the Package Manager.When you install Unity on Windows and macOS, Visual Studio is installed by default. If you want to use another IDE, simply browse for the editor in Unity > Preferences > External Tools > External Script Editor.Rideris built on top of ReSharper and includes most of its features. It supports C# debugging on the .NET 4.6 scripting runtime in Unity (C# 8.0). For more information, see JetBrains’ documentation on Rider for Unity.VS Code is a free, streamlined code editor with support for debugging, task running, and version control. Note that Unity requires Mono (macOS and Linux), Visual Studio Code C#, and Visual Studio Code Debugger for Unity (not officially supported) when using VS Code.Each IDE has its own merits. See Integrated development environment (IDE) support for more information on choosing the right IDE for your needs.Take a look at the e-book for a list of shortcuts that can benefit your project, and watch Visual Studio tips and tricks to boost your productivity for more workflow improvements with Visual Studio.Interested in exploring JetBrains Rider? Check out Fast C# scripting in Unity with JetBrains Rider, or these tips on using JetBrains Rider as your code editor.The Unity Debugger allows you to debug your C# code while the Unity Entity is in Play mode. You can attach breakpoints within the code editor to inspect the state of your script code and its current variables at runtime.Go to the bottom right of the Unity Editor Status Bar to set the Code Optimization mode to Debug.You can also change this mode on startup at Edit > Preferences > General > Code Optimization On Startup.In the code editor, set a breakpoint where you want the Debugger to pause execution. Simply click over the left margin/gutter area where you want to toggle a breakpoint (or right-click there, to see the context menu for other options). A red circle will appear next to the line number of the highlighted line (see image below).Select Attach to Unity in your code editor, then run the project in the Unity Editor.In Play mode, the application will pause at the breakpoint, giving you time to inspect variables and investigate any unintended behavior.As shown above, you can inspect the variables when debugging by watching the list build up, one step at a time, during execution.Use the Continue Execution, Step Over, Step Into, and Step Out controls to navigate the control flow.Press Stop to cease debugging and resume execution in the Editor. You can debug script code in a Unity Player as well. Just make sure that Development Build and Script Debugging are both enabled in the File > Build Settings before you build the Player. Check Wait for Managed Debugger to wait for the Debugger before the Player executes any script code. To attach the code editor to the Unity Player, select the IP address (or machine name) and port of your Player. Then proceed normally in Visual Studio with the Attach To Unity option.Unity provides a Debug class to help you visualize information in the Editor while it’s running. Learn how to print messages or warnings in the Console window, draw visualization lines in the Scene and Game views, and pause Play mode in the Editor from script. Here’s a few more tips to help you get going:1. Pause execution with Debug.Break. This is useful for checking certain values in the Inspector when the application is difficult to pause manually. 2. You should be familiar with Debug.Log, Debug.LogWarning, and Debug.LogError for printing Console messages. Also handy is Debug.Assert, which asserts a condition and logs an error upon failure. Note, however, that it only works if the UNITY_ASSERTIONS symbol is defined.  Log messages, warnings, and errors in the Console.3. When using Debug.Log, you can pass in an object as the context. If you click on the message in the Console, Unity will highlight the GameObject in the Hierarchy window. 4. Use Rich Text to mark up your Debug.Log statements. This can help you enhance error reports in the Console. 5. Unity does not automatically strip the Debug logging APIs from non-development builds. Wrap your Debug Log calls in custom methods and decorate them with the [Conditional] attribute. To compile out the Debug Logs all at once, remove the corresponding Scripting Define Symbol from the Player Settings. This is identical to wrapping them in #if… #endif preprocessor blocks. See this General optimizations guide for more details. 6. Troubleshooting physics? Debug.DrawLine and Debug.DrawRay can help you visualize raycasting.1. If you only want code to run while Development Build is enabled, see if Debug.isDebugBuild returns true. 2. Use Application.SetStackTraceLogType, or the equivalent checkboxes in Player Settings, to decide which kind of log messages should include stack traces. Stack traces can be useful, but they are slow and generate garbage. By default, the Console Log Entry shows two lines. For improved readability, you can streamline them to just one line. See how below.Alternatively, you can use more lines for longer entries.When Unity compiles, the icon in the lower right corner can be difficult to see. Use this custom Editor script to call EditorApplication.isCompiling. This creates a floating window to make the compiler status more visible.Launch the MenuItem to initialize the window. You can even modify its appearance with a new GUIStyle to suit your preferences.Unity has integrations with two version control systems (VCS): Perforce and Plastic SCM. To set the Perforce or Plastic SCM servers for your Unity project, go to Project Settings > Editor. Configure the server (and your user credentials for Perforce) under Version Control.Teams on Unity can use Plastic SCM Cloud Edition for free, for up to 5 GB of storage and a maximum of three users. By using Plastic SCM for Unity, you can sync your changes with your teammates’ work and consult your project history without ever leaving Unity. Read about some recent updates to Plastic SCM here.You can also use an external system, such as Git, including Git LFS (Large File Support) for more efficient version control of larger assets, like graphics and sound resources. For the added convenience of working with the GitHub hosting service, install the GitHub for Unity plug-in. This open source extension allows you to view your project history, experiment in branches, commit your changes, and push your code to GitHub, all within Unity.Unity maintains a .gitignore file. This can help you decide what should and shouldn’t go into the Git repository, and then enforce those rules.Unity Teams is another option for streamlining your workflows, as it allows you to store your entire project in the cloud. This means that it’s backed up and accessible anywhere, making it that much easier to save, share, and sync your Unity projects with anyone.Check out the first two blog posts in this series, 5 ways to speed up your workflows in the Editor and Speed up your artist workflows. You can also download the free 70+ tips to increase productivity with Unity 2020 LTS guide, which compiles all the tips in one practical e-book.As always, please inform us of any additional topics or features you’d like to hear about in the comments, and feel free to share your own productivity tips with the community.]]></description><link>https://unity.com/blog/engine-platform/speed-up-your-programmer-workflows</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/speed-up-your-programmer-workflows</guid><pubDate>Mon, 27 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to optimize game performance with Camera usage: Part 1]]></title><description><![CDATA[The world is better with more creators in it, and our new content series, Accelerate Success, is our way of showcasing the technical experience of our Accelerate Solutions Games team. This team is our professional services group that’s responsible for consulting, co-development, and full development with our customers. They often take on some of the most complex and challenging Unity work where our customers are pushing the boundaries of what Unity can do.This series, made up of technical eBooks and webinars, is our way of giving back to the greater gaming community that has helped build Unity. The Accelerate Success series will strive to showcase pragmatic and methodological tips and best practices gathered from our experiences working with top studios from around the world. Each piece from the Accelerate Success content series is curated and written by a different Software Development Consultant from our Accelerate Solutions team, and is based on real-life scenarios and findings.This blog post series was written by one of our leads on the Accelerate Solutions - Games team, Bertrand Guay-Paquet. Bertrand is based in Unity’s Stockholm office and the findings in this post series come from findings during his Projects Reviews that he has carried out for the team.A big part of the work completed by Unity’s Software Development Consultants on the Accelerate Solutions Games team is to deliver Project Reviews. Project Reviews are annual engagements included with Unity customers who subscribe to our Integrated Success plan. During these engagements, we spend two days onsite (or lately on Zoom) reviewing the client’s project in depth. During Project Reviews, our Software Development Consultant will deep dive into a project or workflows, and deliver a comprehensive report identifying areas where performance could be optimized for greater speed, stability, and efficiency.During some of our Project Reviews, we frequently encounter Camera setups that are suboptimal because they have unnecessary Cameras. We normally instantly flag this as something to investigate and our final recommendation to improve performance is usually something along the lines of trying to combine Cameras and removing unnecessary Cameras.Over the years, we observed that additional Cameras decreased performance in several real-world games. However, until now, we didn’t have a set of benchmarks of different Camera setups in a scene. This eBook will discuss how Camera performance benchmarks on mobile hardware to get a better understanding of the situation. We tested both Unity’s Built-in Render Pipeline and the Universal Render Pipeline.At a basic level, a Camera defines a field of view, a position, and an orientation in the scene. These parameters establish the content (Renderers) visible by a Camera. The rendered image of a Camera is output either to a display or a RenderTexture. In both cases, the Camera’s viewport rectangle defines the covered output area.At a high level, every frame, in the Unity engine’s code, each active Camera must:Determine the set of visible Renderers. This is called culling. Culling ensures that only Renderers that potentially contribute to the Camera’s rendered image are drawn on the GPU. In other words, the goal is to avoid drawing as many Renderers as possible to improve performance. Three processes are used for this: Renderers on layers that don’t match the Camera’s culling mask are excluded.Frustum culling excludes Renderers that are outside the Camera’s frustum (i.e. its viewing volume).Occlusion culling excludes Renderers which are completely hidden behind other opaque Renderers. This step is optional and usually not exhaustive.Determine the order in which the GPU draws the visible Renderers. Broadly speaking, the Camera sorts transparent objects from back to front and opaque objects roughly from front to back. Other factors can also affect the rendering order, such as the Render Queue of the material or shader, sorting layers, and sorting order.Generate draw commands for each visible Renderer to submit work to the GPU. These commands set up the Material and Mesh for rendering.As you can probably imagine, these steps gloss over a ton of details and nuances, but they serve as a good starting point to reason about Cameras.To measure the cost of additional Cameras, we used everyone’s favorite test case: spinning cubes! From back to front, every test scene has:A 3D grid of spinning cubes. Each slice is a 10x10 grid of cubes. The number of slices is adjustable and is referred to as the “load factor” in this post series.A single directional light source with soft shadows.2 “game” UI canvases with a panel each to simulate two popups in a mobile game.A separate “overlay” UI canvas for controlling the test.The full test project is available on our Accelerate Solutions Games samples GitHub repository.We used a configurable number of spinning cubes (the load factor) to simulate different conditions in a game. The first scenario has a low load that should approximate something like a game lobby scene. The second scenario is a high load to simulate more demanding gameplay.To get meaningful results, we kept the same scene content identical in all Camera setups. The base scene contains the Main Camera, the spinning cubes, and the UI that controls the test. We then created four scenes containing the “game” UI with different Camera configurations:The optimal scene with only the Main Camera. The “game” UI canvases are set to “Screen Space - Overlay”.The 2 “game” UI canvases are set to “Screen Space - Camera” and assigned to a second Camera. This is a relatively common Camera setup we’ve seen used in games.The 2 “game” UI canvases are set to “Screen Space - Camera” and each is assigned to a separate Camera. This simulates a Camera setup where multiple Cameras are used to composite the UI.This is the same as the third scene with an extra Camera with its culling mask set to “Nothing” so it doesn’t render anything.Each test scenario additively loads one of those scenes over the base scene. We used culling masks to ensure that no GameObject is processed by more than one Camera.Rendering pipelines are the processes by which a Camera inside a scene produces an image. Unity has a Built-in Render Pipeline which was historically the only option for rendering scenes. Unity 2018.1 introduced the Scriptable Render Pipeline (SRP) which offers many more possibilities to control the rendering from C# scripts. The Universal Render Pipeline (URP) and the High Definition Render Pipeline (HDRP) are the two SRP implementations provided by Unity.In this post series, we examine the performance overhead of Cameras in the Built-in Render Pipeline and URP because they support mobile devices. HDRP does not run on those devices so it was excluded from this test. A secondary reason for excluding HDRP is that its range of configuration options for render features is quite large which makes it difficult to create fair and meaningful comparison scenarios of inefficient Camera usage.URP introduced the concept of Camera Stack which consists of a Base Camera and one or more Overlay Cameras. This is what we used for setting up the Cameras in the URP tests. See Manager.cs for the details on how to programmatically set up and change a Camera Stack at runtime.We used Unity 2020.3.11f1 with IL2CPP development builds for our tests. We ran the tests on both the Built-in Render Pipeline and the Universal Render Pipeline. For each render pipeline, we tested with both low and high load factors for a total of 16 profiler captures per device. The five devices used are:Google Nexus 5Samsung Galaxy S7 edge (G935F)Samsung Galaxy A20eiPhone 5siPhone 7We used the Profile Analyzer package to get the mean values of profiler markers on the main thread over captures of 300 frames.Measuring performance reliably is often difficult to achieve since there are both internal and external factors to consider. Mobile phones are notorious for having a few of the latter such as thermal throttling and asymmetric CPU cores. The "Mobile performance handbook: thermal stability" published by our Mobile team is invaluable to overcome these difficulties.This wraps up blog post #1 of How to optimize game performance with Camera usage. Check out our blog in three weeks' time to read about our test results, camera pattern usages to avoid, when to use multiple cameras, and the conclusion of our tests.If you can’t wait to read part 2, you can download the full PDF version of the ebook now.]]></description><link>https://unity.com/blog/games/optimize-game-performance-with-camera-usage</link><guid isPermaLink="true">https://unity.com/blog/games/optimize-game-performance-with-camera-usage</guid><pubDate>Thu, 23 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[8 factors to consider when choosing a version control system]]></title><description><![CDATA[While implementing your first version control system or moving to a new one can be challenging, the long-term impact is worth it. Here’s what to consider when choosing a version control system, before you commit.Game creation is a rewarding though often chaotic endeavor. During development, many team members with distinct roles and varying levels of technical expertise work on the same project, attempting to align on a single production process. Coordinating with more than one person at a time can be difficult, and this challenge scales exponentially as your team continues to grow.When issues arise, the time it takes to identify and fix the problem can slow everything – and everyone – down. Therein lies the importance of choosing the right version control system (VCS) for your aims.Version control allows you to maintain a bird’s-eye view of your entire project. It brings fundamental organization to your work, which enables your team to iterate rapidly and efficiently. But how?Project files are stored in a shared database called a repository, or “repo.” Managing your files in this way prompts you to back up your project at regular intervals, and conveniently roll back to previous versions if things don’t go according to plan.With a VCS, you can make multiple, individual changes, and “commit” them as a single group for sourcing. This lumps the group of changes together, so that when you revert back to a previous version, everything from that same group is undone. In fact, you can review and modify each change grouped within a “commit,” or undo the “commit” in its entirety. Seeing as you have access to the full history, you can more easily trace and eliminate bugs, as well as restore any previously removed features.Even more, because version control is typically stored in the cloud or a distributed server, it supports your development team’s collaboration across time zones and geographies – an increasingly important benefit as remote work becomes commonplace.Switching from one version control system to another can be demanding, especially if it means changing the technology your team relies on mid-project. But making an informed decision before you commit can certainly pay off.Here are just a few common reasons for implementing or switching to a new version control system:Improved collaboration among and across diverse teamsSpeedy support for managing large binary files and assetsA file-based workflow for making changes to unique files without downloading an entire project buildFlexible and robust branching solutions for your teammates to work in parallel (not just a select few)Enhanced integrations with your current development toolsStronger security to keep your projects protectedHere are eight key factors to consider when choosing your next version control system:1. Your teamImplementing or switching to a new VCS primarily serves to strengthen teamwork. Whether onsite or remote, version control will empower you and your colleagues to coordinate with one another, while working independently. To meet your team’s specific needs, ask yourself: How many people will be using this new system? What is their level of technical expertise? What do they think of your current options – and what would they want from something new?To improve productivity, ensure that everyone is equipped to make changes, without the need for technical intervention. Selecting a system that’s easy to use for all teammates, including non-technical artists, can reduce the emotional cost of switching to a new VCS. Less resistance makes for a quick adoption, followed by fast results.2. File types and sizesAs the gaming industry expands, so too do consumer expectations. Gamers consistently expect better graphics, bug-free launches, post-launch updates, and stellar support. For developers, the stakes are high – and they’re going to get higher.The growing complexity of game design means working on and managing more intricate projects with a wider array of file types, larger files, and potentially huge repos. To establish smooth workflows and rapid merges, take on a VCS that can handle your projects at scale. Remember, choosing a version control system is a long game. Even if your team isn’t handling large files now, your needs are sure to change eventually. Think ahead to set yourself up for lasting success.3. Ease of setup and maintenanceThis factor goes back to the first item on our list – your team. Does your team have the time, expertise, and overall bandwidth to implement and maintain a new version control system? How quickly can implementation take place? Will there be ongoing support once the system is up and running?Let’s not forget: An easier setup means a faster setup. And a timely launch means giving your team a longer runway to adapt and start working more efficiently. So if the technical aspects of setup and maintenance are a concern, evaluate the customer success rate for packages you’re considering. Start by reading reviews to help determine the best possible VCS for your objectives.4. Your workflowsIt’s crucial to consider the processes and tools that your team uses day-to-day. Choosing a version control system that integrates smoothly with other required tools speeds up implementation and minimizes disruptions.Another workflow-related factor to think about is whether your version control system supports branching. Branching is when someone who’s working on a specific set of project files isolates those files from the main project branch, or “trunk.” This allows them to test changes without affecting the main trunk.Changes can then be merged back into the main trunk once they’ve been assessed and proven stable.In game development, you will likely need to facilitate a high number of branches and create them swiftly. Directory-based systems can lead to improper branching and frequent merge conflicts as your team encounters difficulties merging back into the trunk.With branching, you can prioritize project stability so that your team continues working toward their shared goals, without impacting the work of others.5. The timing of your system implementationImplementing a version control system involves a rigorous adaptation process. After all, this change can completely overhaul existing workflows and tools.Strategically timing the implementation of your VCS can reduce its impact on current projects, and speed up the adoption of new systems. That said, it is ideal to implement your chosen VCS either at the start of a new project, or during the postmortem phase of a product you’ve just launched.Of course, things don’t always go according to plan. You might find yourself in the position of migrating to a new version control system in the middle of a project. While this isn’t ideal, it’s not impossible.Learn more about migrating your Unity Collaborate projects to Plastic SCM below:6. What you’ll spend (and where you’ll save)Version control systems rank among the more affordable DevOps tools; the true costs lie in implementation. With this in mind, try to evaluate a system for its benefits, and how it can help you save in other ways.It’s also worth choosing something that’s easily accessible to your whole team, no matter their technical background. As previously mentioned, everyone should be given the chance to contribute autonomously. When your teammates’ needs are not met, hidden costs can start to surface.If your version control system is challenging to grasp, for example, you’ll have to spend more time teaching others how to use it, as well as creating dense internal documentation on version control best practices. And when teammates can’t work independently, internal frustrations can begin to rise. Whatever you choose, it shouldn’t stand in the way of your team’s overarching success.7. Security requirementsVersion control isn’t just about managing your game’s source code. The system you choose will also store other assets like business and procedural documentation, design files, tool configurations, and so on.To keep these files safe, your VCS should provide multiple levels of protection and permissions. This will help secure your code and IP assets from outside intrusions – and safeguard them from the possibility of internal leaks, too.8. Level of flexibilityWould you consider your team big or small? Do you work out of a single office, or are you distributed? Depending on these factors, you’ll need different levels of flexibility from your version control system. More than this, you’ll have to decide whether you’ll operate using centralized, distributed, or multisite workflows. Let’s look at the advantages of each.Centralized workflowsA centralized workflow uses a check-in/push workflow to connect to your main server. Whenever changes are made, they are automatically stored in your repository as a new version. This way, you get powerful branching and merging without cloning your repository to multiple machines. It’s a simple and secure solution.Distributed workflowsWith a distributed workflow, you can check in, branch, and merge on your own time, without connecting to your main server. The advantage here is that remote teammates can work apart, at speed, without having to worry about slow networks or VPNs.Multisite workflowsMultisite is like a blend of centralized and distributed workflows. At each location, teammates work in a sort of mini centralized workflow, where they share their branches and progress – easily merging, and pushing and pulling among the team, until they finally push to the main server, on their own time.Multisite workflows are optimal for teams working on a shared codebase across different cities or continents. In this situation, you should establish a host server at each work site and then copy changes between those servers. If you don’t, the teams working at sites without servers will experience slower responses than others.Now that you have an idea of what’s at stake when choosing a version control system, it’s time to evaluate some of the most popular options out there.GitOpen source, free, and easy to use, Git is one of the most popular version control systems around. It features distributed repos and strong branching and merging capabilities, but can’t handle large binary files as effectively as other solutions on the market.Perforce (Helix Core)Helix Core is an enterprise-level version control system used by game studios like EA and Ubisoft. This VCS features centralized repos and handles large binary files. However, it does not feature visual repos, so its adoption might be more challenging for non-technical developers.Apache SubversionLike Git, Apache Subversion is a free and open source version control system. It features centralized repos and can handle large binary files, but you must be connected to the main server to use it, which is not ideal for working offline, and could be a hindrance to larger or distributed teams.Plastic SCMPlastic SCM is a flexible version control system that supports programmers and artists alike. It excels at handling large repos and binary files, and as both a file-based and change-set based solution, gives you the capability to download only the specific files that you’re working on, rather than the entire project build.Even more, Plastic SCM is the only version control system on the market that features visual branching. It can handle thousands of branches at once and doesn’t make you choose between centralized or distributed workflows.Want to know what else Unity can do for you? Discover Unity solutions to overcome challenges at every stage of development, from big idea to big success.]]></description><link>https://unity.com/blog/games/8-factors-to-consider-when-choosing-a-version-control-system</link><guid isPermaLink="true">https://unity.com/blog/games/8-factors-to-consider-when-choosing-a-version-control-system</guid><pubDate>Thu, 23 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Volkswagen Group of America visualizes vehicles for 2030 and beyond]]></title><description><![CDATA[What will the vehicles of the future look like? How will drivers and passengers interact with them? How is autonomous driving going to become a reality? These are some of the many questions a group of engineers, designers, scientists and futurists are answering at Volkswagen Group of America’s Innovation Center California (ICC) in Silicon Valley.At the ICC, one of three global research centers for Volkswagen Group Innovation, the team’s charter is as inspiring as it is challenging: to predict what the world will look like in 2030 and beyond. Forecasting the far future helps the automaker better anticipate and identify the needs of its customers across its worldwide family of brands, including Audi, Bentley, Bugatti, Lamborghini and Volkswagen.To show the future, the ICC doesn’t use a crystal ball. It uses Unity. With expertise spanning film and animation, software engineering, and VR development and design, the ICC’s group of Unity users stretch the software to its full capabilities to solve diverse problems, including:Interaction with far-future scenarios (interior and exterior design and customer journey design)Human-machine interface (HMI) design, including 3D user interfaces (UIs)Synthetic data generation for machine learning-powered productsThe ICC provided a behind-the-scenes look at their work in these areas. Learn more in our report co-created with the ICC.Here’s a sneak peek at what’s inside the report.Unity is a key component of the ICC’s visualization pipeline, according to Alisia Martinez and Andrew Gwinner, frontend XR software engineers, and Dij Jayaratna, a senior product designer. “Using Unity, we’ve built projects for tethered and standalone VR headsets, mobile AR devices, custom controllers, in-vehicle experiences, and rendered cinematic videos.”The audiences for these projects range from product designers assessing the ergonomics of their designs to management reviewing final vehicle concepts. The team brings computer-aided design (CAD) data into Unity using Pixyz and then creates interactive experiences across different platforms to ideate, prototype and communicate.“The translation of a concept to an interactive experience is rarely perfect on the first pass,” said Martinez, Gwinner and Jayaratna. “Being able to have our designers provide notes in real-time allows us to reach the ideal representation of the concept much more quickly than if we were using other tools.”How much faster? The team estimates its Unity-based workflow visualizes content in less than half the time and cost as traditional methods.When it comes to in-vehicle experience design, Unity’s tools help the ICC design richer and more immersive content for future vehicle human-machine interfaces (HMI), which go beyond the center console screen and into instrument clusters and head-up displays (HUDs).“Having a game engine as our base allows us to have much more complex interactions and visualizations,” said Martinez and Loren Skelly,senior manager of UX Design & Concepts. “We can get pretty far designing concepts on our computer screens and test benches, but to truly test our concepts, nothing compares to having an in-car driving experience. Our toolchain with Unity allows us to do that … The ability to test a proof of concept in-vehicle and give feedback directly to our software team to make adjustments to the car in real-time is unparalleled.”The ICC uses machine learning (ML) and computer vision extensively to develop products that improve over time and with customer usage. One of the key components of these ML-powered products is structured and labelled data. Acquiring this data in the real world can be time-consuming and expensive. At the ICC, synthetic data is emerging as a more affordable, scalable alternative to generating this ML training data.“Most perception neural networks rely on labeled data, which is costly and prone to error,” said the ICC’s Elnaz Vahedforough, technical project manager. “By using synthetic data, once the labeling task is set up, the labeling is essentially free, and other costs are minimized.”The ICC generates images and ground-truth data in Unity to train neural networks for implementation of autonomous driving components, such as sensors, perception, prediction and driving.Besides the cost considerations, synthetic data generated with Unity can be used to construct scenarios that rarely occur (e.g., accidents, unusual objects on the road, etc.) or harsh weather conditions such as fog or heavy rain. Vahedforough noted, “This makes it possible to recreate edge-case scenarios safely.” _______________________________________________________________________________As the ICC charts its path forward, the group works hand in hand with Unity’s Integrated Success team. “As experienced Unity users, we know there are a million ways to do one thing, and a million more ways to optimize it,” said Martinez and Skelly. “The Unity Integrated Success team helps us identify the ideal way as we focus on the experience we are trying to create, while achieving the best design and implementation.”Learn more about the ICC’s innovative work with Unity in this report.Inspired by VW’s cutting-edge capabilities? Bring the power of these technologies to your business.Unity Industrial Collection – Create interactive visualization experiences from CAD and 3D data for mobile devices, PCs, AR and VR devices and other platforms. Try or buy online today.Unity Computer Vision – Create high-quality synthetic datasets for computer vision training and validation.Unity for HMI – Connect HMI development processes, from design to deployment, to create stunning, interactive user experiences for in-vehicle infotainment (IVI) systems and digital cockpits.]]></description><link>https://unity.com/blog/industry/how-volkswagen-group-of-america-visualizes-vehicles-for-2030-and-beyond</link><guid isPermaLink="true">https://unity.com/blog/industry/how-volkswagen-group-of-america-visualizes-vehicles-for-2030-and-beyond</guid><pubDate>Tue, 21 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to get started licensing IPs for your games]]></title><description><![CDATA[As game studios look to diversify the ways they acquire users in an increasingly competitive market, they’re turning to the world’s top IPs - causing a major shift in the top free-to-play game charts from hyper-casual to IP. In fact, 30% of the top 100 grossing games utilize IP according to GameRefinery.In the app economy, IP, or intellectual property, refers to the literary and artistic works (often movies, TV shows, and characters) third-party brands license out to app and game developers. For mobile games, IPs often bolster the LTV of a player and reduce churn rate. For the IP licensors, mobile games are a valuable way to increase brand recognition, largely due to the platform’s lower barriers to entry compared to console and PC. These top entertainment companies are also attracted to mobile game’s impressive revenue and user growth.Squeezing the most out of a licensed IP is an art of its own. Developing IP based games is a competitive market and you’ll need a well thought out strategy to effectively scale your titles. Here are some tips to begin licensing IPs for your games:1. Optimize what you’re already good at with a suitable IPTying your mobile game to a major IP can have a huge impact on your installs and revenue, which is why you want to take what you’re already good at and find the most suitable IP to maximize performance.First of all, don’t change your style just to fit a specific IP - it’s far more impactful to add an IP to a game genre that you’ve already mastered. That in mind, the key to success is finding an IP with an existing fan base that is likely to enjoy that game genre. This way, you’re retaining your current users who already enjoy your games, while attracting a new, engaged audience.For example, Glu, a leading developer of mobile games, are known for their role playing storylines - so they were able to easily develop titles with celebrities that have strong fan bases that already follow their lives through TV and social media, such as Kim Kardashian, Gordon Ramsey or WWE fighters.Similarly, Jam City is known for their match-3 games, and they have a strong, loyal audience of casual players. Disney Emoji Blitz, which lets users collect Disney themed emojis, is a great way for Jam City to keep their current players while reaching Disney fans around the world - Disney fans are often young and enjoy a casual way to interact with their favorite characters.2. Account for royalty payments when determining profitabilityWhile IPs are great for scaling a title, they’re not a free pass to acquire more users. Even after the initial cost of the licensing agreement, revenue will be split between you (the developer) and the IP licensor - so it’s essential to be aware of these incurring costs, and ensure your marketability equation is profitable before diving into a partnership.To do that, first define reporting expectations and limitations with the IP licensor. Identifying the commitment you owe to the brand is essential in determining how often royalty payments are required, allowing you to measure net revenue and profitability.To determine whether the license will be profitable, look at the marketability equation (eCPM = CPI*IPM). The IP is going to increase IPM and lower CPIs. You also need to account for royalties which could reduce your net LTV. Ultimately, you want to ensure you can achieve the same eCPMs and scale with the lower CPIs.If you don’t see high profitability, try setting a more aggressive ROAS based on net LTV. This will allow for higher retention and stronger conversion values that will increase overall IPM. If a higher ROAS goal still doesn’t do the trick, it may be best to negotiate with the brand about royalty payments and agreements.Communication is incredibly important when partnering with an IP, and a strong bridge between the teams will help foster valuable discussion.3. Build a strong bridge between the three main teamsIP games require collaboration between the IP partner, the developer, and the creative team that designs your ads. With poor communication costing the average organization $62.4 million per year in lost productivity according to Inc., it’s vital to be proactive about ensuring a smooth content and communication flow between these three teams.First of all, it’s important to show your IP partner that you understand the world they’re trying to build and the pillars of their brand. If the brand is a movie franchise, everyone on the team should watch each film at least once to better understand the IP. It’s also important to put yourself in the shoes of fans through personal research to relate to what they enjoy about the brand. For example, an outsider may assume Marvel and Star Trek are just about defeating bad guys. In reality, Marvel is about heroes and fighting, and Star Trek is about exploration and discovery.In the same vein, keep in mind that gaming and creatives are not the core business of the licensor. The Harry Potter franchise began in 1997 but the first mobile game was released in 2018 - brands often exist long before their first mobile game. That said, the IP needs as much education about gaming and creatives as you need about their brand. For example, rather than just emailing them creative assets for approval, it’s more productive to set aside time to explain the creative process, why creatives are important to growth, and show them creatives in context.Ultimately, it all comes down to setting the right expectations, getting a valuable dialogue going, and ensuring you can come to a mutually workable process that builds a bridge between the teams.With strong communication in place, you can hone in on your creative strategy to optimize your ad revenue.4. Build quality creativesEngaging creatives are key to success for any game business, and are often the difference between acquiring users at scale and struggling for liftoff. Because IP brands are often extremely recognizable (you can spot Disney’s font from a mile away), your creatives are going to be under extremely watchful eyes. Since ads that misrepresent an IP can alienate a portion of the brand’s audience, creating quality ads for your IP titles should be a top priority.The first step to creating a quality ad is ensuring there’s a strong interplay between the creative experience and the core gameplay. Especially for IP titles, it’s essential to know the audience and what the brand stands for when designing creatives - you don’t want there to be a disconnect between the brand, the game and the ad. Ultimately, your creatives should reflect the pillars of the brand in the same way the game does.You also want to make sure your creatives are authentic and educational. Authenticity - putting time into understanding the motivations of the audience - is important for driving scale from the right users. Also, be sure to show respect for the brand’s existing audience by telling them everything they need to know about your game, which includes their favorite, trusted character. By the end of the ad, the user should know exactly what to expect from your app and why they should download it.You’re not going to find a winning creative on the first try, which is why it’s important to A/B test as often as possible and get your IP brand on board with the creative process as soon as possible. Learn more about ironSource’s creative management solution here.Similarly, it’s important to be aware of the creatives shown in your IP.5. Ensure the creatives shown in your app are safeWith 87% of consumers believing brands are responsible for ensuring ads appear in safe environments according to New Digital Age, you have to be careful about the creatives shown in your IP game. Ultimately, big brands with cult followings, such as Harry Potter, Disney, or Marvel, put a lot of trust in you to uphold their reputation, which means you want to put yourself in the best position to ensure your user experience is safe.On top of that, IP licensors may place limitations on what’s allowed to be shown - brands can have varying levels of control over creatives and some IPs will have heavy restrictions.Prioritize preserving brand integrity and safety by monitoring the ad content shown to your users. You don’t want to show negative or inappropriate ads next to your IP content. For example, ironSource’s ad quality solution allows you to see a gallery view of the ads served to your users so you can inform a network directly about problematic or unsafe ads.Learn more about Ad Quality by ironSource here.Today, brands are increasingly looking to implement their IPs into mobile games, and games studios are keen to accept them. With so much growth in this category, you want to be prepared to make the most out of your IP titles and beat out the competition. The above tips are a great place to start optimizing your IP strategy.]]></description><link>https://unity.com/blog/how-to-get-started-licensing-ips-for-your-games</link><guid isPermaLink="true">https://unity.com/blog/how-to-get-started-licensing-ips-for-your-games</guid><pubDate>Tue, 21 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity AI 2021 interns: Navigating challenges with robotics]]></title><description><![CDATA[AI@Unity is working on amazing research and products in robotics, computer vision, and machine learning. Our summer interns worked on AI projects with real product impact.As robots get more sophisticated and robot tasks more complex, the need for simulation is increasing. Simulation allows developers to scale as they don’t need to have a physical robot to represent every scenario they need to test. It also enables the ability to develop and test certain tasks during development, especially those tasks that cannot be carried out until the robot is fully deployed. Our Unity Robotics team is focused on enabling robotics simulation by harnessing the power, assets, and integrability of the Unity engine while building robotics specific tools and packages that expand simulation capability. The Unity Robotics Hub features demos, tutorials, and packages to get you started simulating your robot today.During the summer of 2021, our interns worked diligently to create valuable contributions to our work at Unity. Read about their projects and experiences in the following sections.This summer, I had the amazing opportunity to work on integrating inverse kinematics and robot controllers into Unity as part of the robotics team. When users need to simulate robots, particularly robotic arms, they need to control the robot using the same or similar APIs that they would use to control the real robots. These APIs are known as robot controllers, and they provide a variety of functionalities, including moving the robot from one position to another, moving a single joint (in joint space), or even moving the robot in a circle. Robot controllers work primarily in joint space—i.e., commands are given as target angles for each joint. Humans, however, only care about the position and orientation of the end effector in Cartesian space (i.e., X, Y, and Z coordinates in our 3D world). Thus, the goal of inverse kinematics is to determine what joint angles correspond to a given position and orientation in Cartesian space. Inverse kinematics is a crucial portion of a roboticist’s toolkit, so this package makes Unity even more capable and easier to use as a robotics simulation platform.Integrating these features in Unity proved to be an immense challenge that required me to brush up on my linear algebra, physics, calculus, computer science, and even pre-calculus skills, while concurrently designing the software in the most user-friendly way. I also learned about simulating industrial robots in VR by creating a demo where users can move a cube in VR which the robotic arm follows. With challenge comes great opportunity, however, and effectively single-handedly designing, building, and shipping such a fundamental piece of code for enabling roboticists in Unity has truly been an honor. It is unbelievably rare that employees find themselves looking forward to and being consistently challenged by their work on a daily basis, and I am lucky to say that I found that experience at Unity!In industrial applications, multiple robots with different specialized capabilities must work in concert to carry out complex tasks. This project showcases how coordination between multiple robots can be achieved via the Unity Editor and robotics simulation packages, along with ROS 2, to carry out a find-and-ferry task in a warehouse. This demonstration also highlights the advantage of using Unity over other robotics simulation tools where multi-agent simulations like this are challenging to accomplish. Our simulation consists of two types of robots, which we call Findbot and Ferrybot. Multiple Findbots are responsible for finding target cubes in a warehouse environment using machine learning, and a single Ferrybot navigates to, picks up, and drops off these cubes at a designated location. To accomplish this, each Findbot is equipped with a camera for detecting the cube, while the Ferrybot has a robotic arm for picking it up. This example project will be useful for robotics developers and researchers looking to use Unity’s robotics tools in their own simulations.Overall, this was a great experience because we were able to use and integrate a wide array of Unity packages into our project. For instance, we used the Computer Vision Perception Package for data collection to train our pose estimation model. We also used an inverse kinematics package (mentioned in Jacob’s project above) on Ferrybot for picking up the cubes. Taking a dependency on a project being developed in parallel with ours was also a major challenge, but it was a great opportunity for learning collaboration and communication. It is also very rewarding to know that our project will be used to prepare a ROSCon 2021 workshop.If you are interested in building real-world experience by working with Unity on challenging artificial intelligence projects, check out our university careers page. You can start building your experience at home by going through our demos and tutorials on the Unity Robotics Hub.]]></description><link>https://unity.com/blog/news/unity-ai-2021-interns-navigating-challenges-with-robotics</link><guid isPermaLink="true">https://unity.com/blog/news/unity-ai-2021-interns-navigating-challenges-with-robotics</guid><pubDate>Thu, 16 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[It’s official: Parsec is now part of Unity]]></title><description><![CDATA[In 2016, Chris and I started Parsec with one goal: make a low latency remote desktop application performant enough to play PC games from anywhere, across any device. Our assumption was that if a technology was purposefully built to stream video at 60+ frames per second in HD quality while shaving as many milliseconds off the stream as possible, we could significantly expand the world's access to software, games, and tools. Even in those early days, we hoped that any ultra-low latency technology would be powered by Parsec.Today, we have the pleasure to announce that Parsec has officially joined Unity, helping us accelerate toward that goal: democratizing access to all of the tools and software needed to build & enjoy interactive 3D experiences.Almost five years ago, we launched the first version of Parsec and Chris shared his technical goals in a blog post. Over the course of those five years, there have been countless people supporting Parsec to help us get here. Most importantly, everyone who has been a member of the Parsec team deserves a massive congratulations and has earned our deepest gratitude for helping us build and define the world-class product Parsec has become.The Parsec community (and their feedback) has also been an enormous source of inspiration. Their imaginative use cases, creative applications, and novel tools have repeatedly driven us to push the boundaries of what our technology can do. For nearly a year after our launch, we had fewer than one hundred active customers each day. That early feedback and those early needs helped define the product. Over time, as our community grew to hundreds of thousands of customers per week, the community’s passion stayed strong and helped support our development efforts. If you were there, thank you. Seriously.To get this far, Parsec also required financial investments and expert advice. Notation, Lerer Hippeau, NextView, HP Ventures, Makers Fund, Mini Fund, Gridlov, MBK Capital, and Andreesen Horrowitz believed in us and saw how Parsec could change the way the world accesses software, content, and tools. We really appreciate your guidance and support.Finally, although Chris and I are Parsec’s co-founders, our families (especially Megan and Allison) were with us at every step of this journey, supporting and encouraging us every day. Thank you.Through the verticals business at Unity and their relationship with 94 of the top 100 game studios in the world, the immediate impact Parsec can have on industrial and gaming use-cases is going to grow exponentially. We couldn’t think of a better company to help us accelerate in the short term while also expanding our opportunity to impact the future so dramatically.Applications built with Unity are downloaded more than 5 billion times a month, reaching an average of 2.5 billion devices globally. We believe Parsec will bring value to each and every Unity customer, as well as everyone interacting with real-time 3D (known for the rest of this post as “RT3D”).The potential of our original goal expands further and further: Parsec can help convert anyone creating in 2D/non-interactive applications into creators of RT3D applications. We can simultaneously give creators the freedom to work from any device, at any time, on their own terms. We can push their experiences further by using Parsec streaming to deliver their interactive experiences to more consumers globally.There are approximately 500 million high performance computers in the world with even fewer capable of running the most demanding software. Meanwhile, there are approximately 2.7 billion people who own a smartphone and 2 billion computers globally. With more than 7 billion people on the planet, you can quickly see that a vast majority of the world does not have the technology capable of running a RT3D application. But, with access to the internet and a low powered device, they can connect to hardware that gives them the opportunity to build, create, design, develop, and interact with a RT3D experience via Parsec.Over the next decade, hundreds of millions of people will become creators of RT3D interactive experiences. Democratizing access to the tools to create for the next phase of online consumer experiences is a mission we’re thrilled to be a part of. In the future, the digital and real worlds will blend together even further, moving from computer and phone screens to a pervasive and omnipresent digital world. Meeting the technical demands of this future is an enormous undertaking, let alone giving everyone the opportunity to edit and iterate upon this world. It’s pretty exciting.Streaming real-time and interactive content from the cloud or another computer to your laptop, phone, AR glasses, and more will open up a plethora of opportunities for creators and anyone else to change the digital world around them. We’re just getting started. And within Unity, we have even greater resources and opportunities to help shape this future.Although this isn’t everyone who has been part of this journey, we’d like to call out and thank this group for helping us build Parsec.Team (in order of appearance): Jamie Blanks, Erik Nygren, Dan Applegate, Jake Lazaroff, Alex Chaparro, James Stringer, Josiah Savary, May Kim, Ronald Huveneers, Charlie Tran, Marco De la Cruz, Max Sebela, Jakob Wilkenson, Keith Cook, Wontae Yang, Binh Hoang, Callum Watson, Vince Auletta, Eric Fahs, Steve Kehaya, George Kehaya, Meg Esch, Jason Hart, Jim Coleman, Michael McCormack, Malyse McKinnon, Marcus Stoll, Mike Nicoli, Nicole Closson, Devin Kelly, Sam Leavens, Fernando Boom, Dave Doherty, Val Nuccio, Karthik Selvakumar, Justin Valletta, Martin Trang, Susanne Blix, Zac Overson, Adrienne Merrick-Tagore, Paul Johns, Andrew Koonmen, Erin Boardman, Gabrielle Lysenko, Fernando Martinez, Kelli Branam, Darius Iglesias, Avery Vernon-Moore, James King III, JonnyLee GiardAdvisors: Shafqat Islam, Asif Rahman, Eros Resmini, Monte Ford, and Joost van DreunenContractors: Richard Vinicius Gerotto Silva, Max Morris, Omar Panduro, Ignacio RamirezInvestors: Notation Capital, Lerer Hippeau, NextView, HP Ventures, Makers Fund, Mini Fund, Andreessen Horowitz, Gridlov L.P., MBK Capital]]></description><link>https://unity.com/blog/news/parsec-is-now-part-of-unity</link><guid isPermaLink="true">https://unity.com/blog/news/parsec-is-now-part-of-unity</guid><pubDate>Tue, 14 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[6 ways to optimize UA with iOS 15 SKAdNetwork]]></title><description><![CDATA[In June 2021, Apple announced iOS 15 would come with new opportunities for gathering performance data from apps with SKAdNetwork (SKAN) - now, developers can get a copy of the winning postback by configuring the NSAdvertisingAttributionReportEndpoint into an app’s plist. With full transparency into the entire postback across all marketing channels, developers can adjust their strategy for the new SKAdNetwork era and optimize [tooltip term="user-acquisition"]UA[/tooltip] in real-time.So why is this so ground-breaking? Under Apple’s ATT framework, access to cross-app data is limited. Developers can learn about their marketing performance through postbacks that are anonymized using mechanisms like privacy thresholds and anonymization timers. Since postback data now provides the most important insights into your app’s marketing performance, extracting as much information from it as possible is crucial to continue analyzing and optimizing your UA activity.For example, universal SKAN reporting from ironSource lets any developer running their UA on the platform integrate a simple endpoint to collect, verify, and analyze postbacks - saving you the technical hassle of building a dedicated endpoint from scratch. Here, Yevgeny Peres, VP Growth at ironSource, shares 6 ways to optimize your UA with iOS 15’s SKAdNetwork.1. Analyze SKAN adoption for each UA channelYour goal is to run campaigns on channels that have 100% SKAN adoption - that way, you’re able to accurately analyze performance and maximize postback data. To do that, you need to continuously be checking on adoption rates by tracking the volume of postbacks across UA channels and the share of voice on each - a low volume of postbacks indicates a lack of readiness for SKAN. If you identify any lagging UA channels, get in touch with them to understand and resolve issues.Your goal is to run campaigns on channels that have 100% SKAN adoption - that way, you’re able to accurately analyze performance and maximize postback data.2. Know the SKAN version each channel is runningWith each new version of SKAN, developers get greater insights and capabilities - that’s why it’s important for your UA channels to stay up to date. For example, version 2.2 of SKAN enables you to see view-through attribution (VTA) information per channel. If you see that a channel is running below 2.2, they technically cannot offer this valuable data, which may make optimization more difficult.3. Research privacy thresholdsConversion value and source app are essential values in analyzing and optimizing your UA performance. Apple applied a mechanism known as a “privacy threshold” to protect the anonymity of the data, so you need to meet this threshold to receive the values.It’s important to identify the channels not meeting the privacy threshold and make decisions accordingly that enable you to have a maximum understanding of your campaigns' performance. To do so, look at the percentage of postbacks in each channel that doesn’t include conversion values or source apps.4. Visualize trends and reportingFor the first time ever, Apple lets you see where your users are coming from across all your UA channels. Using ironSource, you can filter this postback data into a variety of granular breakdowns, like date, source app, and conversion values, and then visualize these data points with easily digestible charts and graphs. With this information at your fingertips, it’s easier to optimize campaigns and build out your UA strategy.5. Export raw dataThe ability to export the data is part of the larger dedication to transparency that the new SKAN environment provides to developers. You can export data directly regularly and use it to back up important information as you troubleshoot an issue or share performance metrics and insights among your team to stay in sync.6. Forward your data to your own BI-stack and MMPDifferent SKAN solutions offer distinct benefits for optimizing UA - choosing just one endpoint to receive winning postback data could mean missing out on an advantage. So choose an endpoint that lets you forward data to all the relevant parties, like your MMP and BI-stack. This ensures you can continue to track and verify UA performance internally and across multiple partners, without having to select just one as your endpoint and risk losing the benefits that other solutions offer.How to get started with universal SKAN reporting from ironSourceWant to start taking advantage of these 6 capabilities of SKAN? Select ironSource as your endpoint. Here’s how to do it:Select info.plist in the project navigator in XcodeClick the add (+) button next to a key in the property list editor - press returnType the key name: NSAdvertisingAttributionReportEndpointChoose “string” from the pop-up menu in the Type columnType the following URL: https://postbacks-is.com Take full advantage of the transparency that the iOS 15 update provides with a solution that removes the operational overhead from your plate and lets you optimize UA performance in real-time.]]></description><link>https://unity.com/blog/6-ways-to-optimize-ua-with-ios-15-skadnetwork</link><guid isPermaLink="true">https://unity.com/blog/6-ways-to-optimize-ua-with-ios-15-skadnetwork</guid><pubDate>Tue, 14 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 ways to optimize the ad experience for your users]]></title><description><![CDATA[When integrated carefully, in-game ads are a powerful way to increase revenue without compromising the UX of a game - especially since today there are multiple ad formats available that put the player experience first, such as rewarded videos, playable ads, and interactive end cards. Still, sometimes things outside of your control can lead to a poor ad experience that may cause users to leave the game.Keep reading to learn how to prevent this from happening by optimizing the ad experience for your users while increasing revenue.Identify bad adsThe first step in optimizing the user experience is keeping an eye on the ads shown in your app. Often there's a correlation between user churn and the type of ad content being shown.Negative ad experiences could involve inappropriate content, spam, bugs, and auto-redirects. It goes without saying that avoiding such content must be prioritized in order to prevent user churn.Use a tool like Ad Quality to get more visibility into the ads being displayed in your game and take control of your game’s UX. Look at metrics like churn rate per advertiser and quality CTR (QCTR), which goes one step further than CTR and indicates whether users are automatically redirected to the app store, or go there intentionally.Once you’ve identified ads with poor UX, report the advertiser to your network partner to ensure they do not damage your game’s experience again. Mobile game developer TutoTOONS, for example, decreased the number of user complaints for inappropriate ads by 60% using Ad Quality by ironSource, while Jam City was able to unblock competitor content and boost CPMs by 20%.Provide zero latency using progressive loading technologyRewarded videos can do wonders for both your retention and ARPDAU - but when executed poorly, they can cause users to lose engagement and churn. One of the most common causes of a bad rewarded video UX is latency - which means your users do not instantly see the ad after clicking on its traffic driver. Often that’s because the ad network doesn’t have an ad available at that moment to fill the ad space.To avoid churn and ensure a positive user experience for your rewarded video ads over the long term, removing latency is critical.To do so, game publishers have typically chosen from three options:- The first approach is to only show users a rewarded video traffic driver when there’s an ad ready to display - The second option is to always display the traffic driver, and if the ad inventory isn’t filled, users are left staring at a blank screen until they exit out - The third option is the same as the second, just with a slightly better user experience - if an ad isn’t available, a pop-up will appear that states this.The drawbacks of these options are clear, harming ARPDAU, the user experience, or both. That’s why in recent years, developers have dedicated considerable time to optimizing their monetization strategy - typically through hybrid bidding and waterfall setups - to find the balance between sophisticated auctions and reduced latency. However, even the most optimized setup can’t deliver zero latency. Monetizing with a mediation solution that has dedicated technology to remove latency entirely is the best way to serve as many rewarded videos as you want without worrying about a poor UX that causes churn.A/B test your ad unit implementation strategyIn addition to identifying bad ads and managing latency, planning where you put your ads in your game, the frequency in which they appear per session (capping), and the interval of time in between each ad (pacing) are key components you’ll need to test to preserve a positive ad experience for users while maximizing ARPDAU.PlacementLet’s start by looking at rewarded videos-placement is all about where in your game you’re actually providing players access to the ads with traffic drivers. The most effective placements are those in which players can receive real value in their gaming experience in return for engaging with a rewarded video - typically these are at pain points, such as when they run out of lives, fail a level, or lack in-game currency to progress.To optimize the user experience, put yourself in your players’ shoes: identify various points in your game that you believe will be ideal for a rewarded video placement. Don’t take a stab in the dark - run A/B tests, rolling out the new placements to limited audiences, comparing the ARPDAU data between the groups, and retention. Also run A/B tests to determine which rewards users value the most. The ads that have the highest usage and engagement rates will likely indicate that the reward is highly valuable to users.Placement is also important for optimizing the user experience with interstitial ads. For an ad-based game, like in the hyper-casual genre, placing interstitials when the user opens the game, loses a level, returns to the homepage, or gives up on watching a rewarded video work best - the key is to avoid disrupting the gameplay itself.For IAP-heavy games, where users have higher LTVs and retention rates, it's best to be more cautious, showing interstitials only at the end of game sessions, or when users do not engage with your rewarded video ads or your IAP offers. Again, each time you try one of these placements, make sure you’re A/B testing and measuring retention rates to see what works best with your specific player base.Capping and pacingPlacement is just one piece of the puzzle when it comes to A/B testing your ad unit monetization strategy and preserving a good user experience.Capping and pacing should also be tested frequently. Because rewarded videos are opt-in, for this ad unit you can be pretty liberal with your capping and pacing. After all, there’s zero risk of damaging the user experience by disrupting their game flow.With interstitial ads, be more careful with capping and pacing. Because users don’t choose to see these ads, they can be disruptive to their game experience and cause churn. Remember that genre plays an important role here - hyper-casual or casual gamers will have higher tolerance for interstitial ads than midcore or hardcore gamers. You want to find the sweet spot where you maximize revenue without hurting retention rates - and to do that you’ll need to A/B test.Neon Play put this advice into practice and were able to preserve their retention rates while increasing ARPDAU. CEO Oli Christie said: “We never considered testing as standard practice, but with ironSource it’s so easy, so now we do it all the time for each game.”]]></description><link>https://unity.com/blog/3-ways-to-optimize-the-ad-experience-for-your-users</link><guid isPermaLink="true">https://unity.com/blog/3-ways-to-optimize-the-ad-experience-for-your-users</guid><pubDate>Mon, 13 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to build a conversion value strategy to optimize iOS UA campaigns]]></title><description><![CDATA[To measure user quality and optimize campaigns on iOS, developers today are building strategies around the SKAdNetwork conversion value. While it's the main way to get accurate insight into user quality, there are many challenges that come with it:It’s universal - ​​all of your marketing channels will receive the postbacks based on the same conversion value schemaOnly one solution or platform can update the conversion value - whether it’s your own in-house solution or a third party solution Changing your strategy is tricky - if you decide to change your conversion values, it's critical to understand that it will harm both measurement and optimization across all your campaignsAdoption picks up paceSince Apple introduced SKAN 2.0 more than a year ago, most developers already have a strategy in place for measuring it today. By now, the majority of them are using conversion values to do so. In fact, according to ironSource data, adoption of conversion value (CV) has picked up since Apple fixed a bug in November 2020, and accelerated with the push of iOS 14.6.Today, there are multiple strategies for mapping conversion values, but two dominate: the most common is mapping in-app events to bits, followed by revenue measurement. Let’s dive into each.Strategy #1: In-app events to 6 bitsA bit, or binary digit, is a basic unit of information that can be one of two possible values - typically 1 or 0. Using bits, SKAdNetwork allows you to measure whether specific in-app events happened (at least once) or not, without any priority or sequence.As a developer, you’re limited to measuring up to 6 events. That’s because SKAN allows 64 conversion values - with 6 bits, in which each one measures whether an event occurred or not, then there are exactly 64 possible combinations.Here’s an example of this in action - note that this data would continue all the way through to CV 64. CV 10, for instance, would indicate that the user reached level 20 and subscribed.Pros and consThe 6 bit strategy lets you understand whether specific events, that you’ve defined as good signals of user value, occurred or not. In addition, theoretically, you can use a 6-bit strategy to optimize differently on several networks: for example, on Facebook you could optimize towards a specific IAP event, and on Google you could optimize towards a specific level completion, like the user reaching level 20.The main drawback is that it’s not effective for games that aren’t able to correlate events in the first 24 hours post-install to user value - which, beyond hyper-casual, include many games.Revenue measurementThe second most common strategy for conversion value management gives a revenue-based value to each conversion value. It's important to note that traditionally, IAP revenue has been the only form of revenue available. There are a few ways to do this:Counting dollars or centsWith this approach, each conversion value represents a specific amount of revenue that the user has generated. For example, conversion value 1 could be $0.99, conversion value 2 could be $1.50 - following this pattern all the way up to conversion value 63.The revenue range of your 63 conversion values will depend on your internal benchmarks - for example, if your data shows that your users generate between $0.99 to $10.99 within their first 24-48 hours, you’d logically start your conversion value 1 at $0.99.BucketsAlternatively, some developers split their conversion values into buckets. For example, CV 1 could equal everything between $0.99 to $2.99, CV 2 equals everything between $2.99 and $5.99, and so on. The range of each bucket can differ - for instance, CV 3 could be everything between $10.99 and $25.99. It’s up to you to test it and determine which range per bucket makes the most sense for your game.The idea is that once you get the postbacks, you can then work out the revenue average from each bucket. This in turn provides you with a greater range of users’ value. The benefit of this is that you then have the data needed to optimize your UA bidding strategy towards the users with the highest CVs.By contrast, if each conversion value is assigned a specific number, like in the first approach, it's possible that most of your traffic will be on the lower end of your conversion value map and just a small amount will reach the top values. As a result, even though you want more of the top users, you’ll find it very difficult to efficiently optimize towards these users because you lack the necessary data.Pros and consThe beauty of this strategy is that there’s no better proxy for paying users than paying users themselves. This approach fits well for games that can properly monetize users within the first 24 hours and have a statistically significant part of their ARPU curve occur on D0.However, because this measurement strategy traditionally excludes ad revenue, ad-based developers such as those making hyper-casual games have been left without an effective revenue-based measurement solution - until now.How to measure user value based on ad revenueTo correlate conversion values to ad revenue, ad-based game developers need a solution by an MMP or mediation platform. For example, ironSource’s conversion value manager, which is available to ironSource mediation partners, provides ad revenue insights that enable developers to continue measuring D0 ARPU and optimize towards D0 ROAS across the board.Start managing your conversion value strategy with ironSource’s CV Manager solution inside our iOS toolkit. Learn more here]]></description><link>https://unity.com/blog/how-to-build-a-conversion-value-strategy</link><guid isPermaLink="true">https://unity.com/blog/how-to-build-a-conversion-value-strategy</guid><pubDate>Sun, 12 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Delivering personalized marketing experiences for consumer electronics with Unity Forma]]></title><description><![CDATA[By relying on Unity’s product portfolio for marketing professionals, Onanoff, a global leader in safe, kid-friendly audio equipment, levelled up their digital marketing and customer experience. We partnered Onanoff with Visionaries 777, who leveraged the existing computer-aided design (CAD) data to create Onanoff’s marketing content pipeline – proving that compelling personalization technologies are accessible to all companies.Onanoff are reaping the rewards of fully embracing real-time 3D technology with Unity Forma and Forma Render. They can now offer 400% more design capacity for customer personalization, and their marketing material gets to market 2.5 months earlier. Onanoff challenges the common belief that only big industry players can afford cutting-edge real-time 3D customization technologies. In this blog we step through the process that Onanoff followed to get those amazing results. Read on to find out more.“Unity Forma gives us the capabilities of a big company with the agility of a small one.” – Pétur Hannes Ólafsson, CEO, Onanoff.Check out their webinar to hear the story directly from Onanoff and Visionaries 777.As a small company with fewer than 30 employees, Onanoff needs to be resourceful to successfully compete with bigger companies in their industry. They saw their competitors offering product customization, and they wanted to find a way to play the same game. To offer a truly customized service to their buyers, Onanoff needed to review their production processes. From their research they understood that without the proper tools, building a CAD to real-time 3D workflow is complex, disruptive and costly.Bearing that in mind, and aiming to get the competitive edge, Onanoff decided to start with BuddyPhones, their line of easy-to-use, kid-safe headphones. They set three goals for their real-time 3D adoption:Speed up the design and development process.Offer multiple customer personalization options to meet the market need.Reduce the time to get their product to market.Onanoff wanted to offer their customers a truly interactive online shopping experience with a dynamic product configurator, starting with their BuddyPhones product.For Onanoff, the design process relied on a computer graphics (CG) pipeline, which presents some major drawbacks in the race to get a product to market. A major concern is the time required to render assets, which can range from 15 to 90+ minutes (depending on the complexity and resolution required). Waiting for assets to render after every design iteration is essentially non-productive “dead time.” Only once rendered can each design iteration be reviewed by the various stakeholders.Additionally, the CG pipeline requires extensive software expertise and high processing power. All of these factors amount to a CG pipeline that is inflexible, time-consuming and costly.Onanoff already had their CAD models, so Visionaries 777 used the Pixyz Plugin to directly ingest that model data. Pixyz Plugin accepts nearly 40 3D and CAD formats, so there was no need for Onanoff to rework their CAD model, which was built in SolidWorks. With automatic tessellation and UVs, getting the Onanoff model data optimized and ready to build their configurator was straightforward.Onanoff’s concern was that the CG pipeline image fidelity wouldn’t accurately portray the materials and fabrics used in their products. Everyone needs to see a true image of the product – not only customers, but also internal design teams and key stakeholders in the development process. They didn’t want to add hours of rendering time to their production process, and they wanted to keep prototyping costs down.Visionaries 777 knew the best way to achieve fidelity was with Unity ArtEngine, a tool for creating ultrarealistic materials using AI-assisted artistry. By scanning samples of the materials into Unity ArtEngine, Visionaries 777 easily created realistic textures and color variations. These can be imported directly into Unity Forma, ready to use in the configurator build.Visionaries 777 recognized that additional work might be required to ensure the 2D textures of the materials were mapped in a realistic way to the 3D images (known as UV mapping). This is not unusual if the product has many overlapping geometry pieces in the 3D model, or if the data is not available (for example, for soft parts like cushions that do not exist in the CAD models).Third-party tools are sometimes helpful in creating realistic soft material textures (UV mapping). This is where Unity’s integration with third-party digital content creation (DCC) solutions, such as Autodesk Maya or 3ds Max, comes into play. Visionaries 777 finessed the 3D object UV mapping to make the textures and materials look their best using a third-party DCC tool, and then brought the materials back into Unity.By processing the materials textures through ArtEngine and Unity Pro to create custom physically based rendering (PBR) materials – a quick and easy operation –, Visionaries 777 were then able to apply them to the configurator model. This ensured that the soft materials were accurately represented in Onanoff’s configurator model.The educational technology market is growing rapidly, with many educational programs now requiring a student-to-smart device ratio of 1:1. Onanoff allows their customers to personalize their products with their own brand colors and logos. They don’t want their configurator technology to determine (or limit) the level of personalization they offer.As such, Onanoff’s configurator had to serve the needs of hundreds of different customers. With a render for a simple personalization taking up to 60 minutes, using a traditional CG pipeline simply wasn’t efficient.For Visionaries 777, the only choice for the Onanoff configurator is Unity Forma, because it allows them to:Rapidly import existing CAD model data.Showcase products in realistic visual quality.Offer endless personalization options.Build easily and quickly, without the need for developers.In a matter of days, Visionaries 777 delivered a fully operational product configurator – a process that would previously have taken several weeks.With teams in six different countries, Onanoff needed to make sure that everyone involved in product development was able to track progress and contribute to the process. Factors such as remote working, time zone differences and increased IT security must not compromise the product development or delay the launch. Relying on traditional prototyping and a CG pipeline wasn’t going to meet their requirements.By deploying directly from Unity Forma to Furioos, Unity’s cloud streaming solution, Visionaries 777 and Onanoff were able to share an interactive 3D product model in real-time.The solution seamlessly addressed the concerns of sharing across time zones and technologies. Every team member can access the live configurator from their web browser – no software installation or high-powered graphics card required. This enables true collaboration, with teams able to view design iterations as they happen in the Furioos stream.In a competitive market, the push to get your product to market as fast as possible is ever present. But a product launch requires supporting marketing materials such as packaging, digital advertising, printed collateral, and so on. Often created on tight timelines even before the first real-life samples are ready, marketing materials need to represent the new product accurately.Onanoff needed to get their product to market quickly, and Forma Render provided the ideal solution. Forma Render now ships with Unity Forma, and it allows users to create high-quality 2D, 360° images and video directly from the real-time 3D model already built in Unity Forma.Forma Render is:A virtual photo and video studio, for producing 2D images and video contentAn image-on-demand render engine that can respond to requests from websites or applications and deliver personalized contentA bulk rendering tool for mass content creationThis means Onanoff can create images of every possible product variation, from any virtual camera angle, and at multiple ratios and resolutions – dispelling the need to wait for prototypes (or time-consuming CG renders) and accelerating their marketing content production. And thanks to the accuracy of the Unity software, the Visionaries 777 team noted a 90% reduction in the need to carry out 3D asset retouching.Frantz Lasorne, cofounder of Visionaries 777, said, “Unity Forma enables us to easily create high-quality and scalable interactive visualization in order to deliver compelling solutions to our clients.”To get their product to market in a competitive arena, Onanoff knew they would need to make some big changes to their product development and marketing workflows. Working in partnership with Visionaries 777, they’ve addressed those challenges. By leveraging the usability and flexibility of Unity’s software for marketing experiences, Onanoff can now offer their customers a true personalization experience.And those goals they set? See how they did:Speed up the design and development process: 90% less retouching of 3D assetsOffer multiple customer personalization options to meet the market need: 400% more design capacity in the direct-to-customer modelReduce the time to get their product to market: 2.5 months quicker to market with marketing materialsGet the detailed story by checking out the webinar with Onanoff and Visionaries 777.Unity’s marketing solutions provide brands with the tools to build marketing content that competes with the big players. Find out more about Unity Forma, or reach out to our Unity experts to try it for free.]]></description><link>https://unity.com/blog/industry/delivering-personalized-marketing-experiences-for-consumer-electronics-with-unity-forma</link><guid isPermaLink="true">https://unity.com/blog/industry/delivering-personalized-marketing-experiences-for-consumer-electronics-with-unity-forma</guid><pubDate>Wed, 01 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[New possibilities with VFX Graph in 2020 LTS and beyond]]></title><description><![CDATA[In 2020 LTS and 2021.1, VFX Graph’s updates have primarily focused on stabilization, performance optimization, better integration with gameplay using the new CPU event output, and more possibilities to spawn particles from meshes.As we look forward to 2021.2 and beyond, our main goal is to push both platform and content reach, with refined support for the Universal Render Pipeline (URP), heightened compatibility with 2D, and extended platform reach (compute capable mobile, Oculus Quest, Switch, etc.) We also want to incorporate more tools for building and customizing your VFX – particularly with the advanced integration of Shader Graph in VFX Graph. This provides direct access to all URP and High Definition Render Pipeline (HDRP) master nodes, like hair and fabric, as well as a Signed Distance Field baker tool in-Editor, to save you time otherwise spent back-and-forth with third-party tools. We’re even adding support for graphics buffers to develop advanced simulations, like dynamic hair, without having to leave the GPU.To accelerate project development, we’ve added a new sample in the sample library and updated the library to 2020 LTS. We’ve also upgraded the Spaceship demo, in light of its second anniversary. From visual improvements to better project compatibility with 2020 LTS, Mac, and Linux support, you can now choose between various quality settings to run the demo on a wide range of desktops.Before you get started with VFX Graph, we recommend watching the following short videos for a quick overview of the tool:Creating fire, smoke, and mist effects with VFX Graph in UnityRendering particles with Visual Effect Graph in UnityMultilayered effects with Visual Effect Graph in UnityOnce you’re ready to go, you can experiment with the HDRP Scene template in the Unity Hub as a starting point for your next project. This template contains a variety of lighting conditions to test your own particle systems, in addition to a few particle systems that have already been integrated, such as dust, butterflies, and falling leaves in the glass cage.If you want to create an entirely new effect, you don’t need to start from scratch. Use the nodes in the system category to harness pre-configured setups for the main use cases.For complete systems, you can download the VFX Graph samples, which include effects like the bonfire, butterflies, and magic book, in addition to brand new effects that will be revealed later in this post.Once you start using nodes, you can access contextual help with the new tool tips and error messages in 2020 LTS, or get further guidance from the updated documentation.For some in-depth content, check out this list of tutorials and VFX breakdowns created by our accomplished teams of artists working on various productions:Thomas’s in-depth tutorials (Thomas is our senior in-house VFX artist)Hardspace: Shipbreaker Tech Talk: Explosions with VFX Graph | Unite Now 2020Making snow with VFX Graph | Unite Now 2020Real-time VFX workflows in The Heretic – Unite Copenhagen 2019VFX Graph tutorial – Magical LibraryIf you’re looking for even more, take a look at these time-saving tools to ramp up your project:VFX Graph’s package (additional content)VFX ToolboxThe new Meteorite sample showcases a complete scene with interactions between diverse elements triggered by the meteorite’s impact. This sample was made using a new feature in 2020 LTS called VFXOutput Event Handlers, which chains events and additional effects with a timeline.VFX Output Event Handlers are used to create the camera shake, the impulse of planks, as well as the light animation.In this example, we use the Output Event to trigger a camera shake with a script component in the Inspector for the VFX. The camera shake gets velocity information from the Spawn Event Velocity node and is spawned as a single burst, 1.15 seconds after the main FX is triggered.The reactive grass, which comprises VFX particle strips, interacts with another effect that is rendered into a render texture to trigger the blast and burning. This buffer VFX reacts because of a VFX output handler on the main meteorite.A camera is set up to record the buffer VFX (which is not rendered by the main camera) and saves it to a render texture used in the grass to implement wind blasts, for example, and dissolve shader and flame effects. This is how information flows from one effect to another and keeps everything in the same position.Timeline is another great tool for VFX artists. It can be used to trigger many effects and adjust their timing as needed.Additional effects, such as light flash, flying birds, and falling leaves were initially linked to a button canvas with the main VFX, but later changed to be used in Timeline with the Demo Scene.The trees were also made using VFX graph mesh outputs, subgraphs, and Shader Graph, which enable you to randomize many of their parameters.We’ve come a long way since the initial release of our first spaceship demo. Over time, this demo has been polished, optimized, and upgraded to every major version of Unity, and is now nearing the end of its upgrade lifecycle.Download the demo here, then watch this video for a brief introduction to the project. This example demonstrates the importance of integrating and optimizing different features together in a real production.Please note that we made some slight changes and improvements to the demo’s content in 2020.3 to reflect many of VFX Graph and HDRP’s latest features.Looking into spaceThe more we thought about it, the more we realized the importance of actually seeing your intergalactic surroundings while out exploring in space (why else would you be in a spaceship?) That’s why we finally implemented new details to the demo, so you can get a glimpse of outer space from the spacecraft – planets and all.To emphasize the turbulent trajectory of the spaceship, we also added a secondary shake to the environment cubemap, with a different noise, on top of the camera shake.Sparkle, sound, and light sync done rightWhile we had previously altered the way that we handled sparkles by using a script to synchronize its sound effects and light animations, we decided to make it even more accessible to VFX artists.We updated the system to use the Output Event Handlers as part of the additional VFX Graph samples (new in 2020.3). We changed the behavior of the VFX, so that the random spawn occurred directly in the VFX Graph, and configured the duration of the flash at that time.Then, with support from a Prefab spawn and Play Audio Helpers, we were able to perform the random spawn entirely in VFX Graph, and synchronize its light and sound effects with the Spawn Context. By using the Flash Lifetime attribute as delay, the VFX Output Event Prefab spawn was also able to disable the Prefab after that time span.Quality settings and specific contentWe implemented a Quality Settings option to run the Spaceship demo on a wide range of hardware. This allows for more detailed post-processing, volumetrics, and increased lights during the walkthrough in an Ultra Quality mode, no matter the device.We even added a low-quality option for low-end gaming hardware – down to GTX 760 – disabling the most expensive options.We aim to release the final Spaceship demo later this year, with a project upgrade to 2021.2 that brings accelerated performance, NVIDIA’s DLSS and AMD FSR support, and many more exciting, unannounced features – so be sure to stay tuned.We’ve added many new features to the 2020 LTS version, leading up to the 2021.1 development cycle, which centers on bug fixes that will benefit both versions. Here are a few highlights.Import and iterate fast on flipbooksThe improvements made to our Image Sequencer, to scale with additions to the Texture Import, are also handled by VFX Graph in 2021.1. You no longer need to set the rows and columns manually when changing flipbook textures in VFX Graph, since we added new options to import flipbooks as Texture arrays, where the row and column values are stored directly in the Importer and handled automatically by Image Sequencer.With the new Skinned Mesh Sampling feature in 2021.1, you can create flames and trails, while dissolving, morphing, and implementing many other effects on both characters and objects.To explore this feature, use the Position (Skinned Mesh) operator in either Initialize, Update, or Output contexts – depending on the effect you want to achieve.Next, set up an exposed Skinned Mesh Renderer property with a transform in the blackboard.After linking your Skinned Mesh to the position block in your desired mode, you need to get the transform information of your Skinned Mesh in the Scene in order to position the effect in the right place. Leverage the VFX Game Object Inspector to do this. With support from the Property Binder, you can locate the component needed to bind the hierarchy of your skeleton.Here is another example of Skinned Mesh Sampling in the Update context:We look forward to seeing the amazing content that you’ll create using Skinned Mesh in VFX Graph.Optimized performance using Mesh LODSpecial effects that use mesh outputs can now be optimized through the implementation of a level of detail (LOD) system, so you can manually specify simpler meshes for distant particles.When selecting a mesh output in the Inspector, you can access a new Mesh Count property that allows you to specify up to four meshes for your output. If you enable the LODcheckbox under it, your particles will select meshes based on the percentage of the screen that they occupy.You can modify the LOD valuesfield in your output to designate the minimum percentage of the screen that each of your meshes must occupy to be visible. For example, a value of 10 means that this particular mesh will only be visible if it occupies at least 10% of the screen. To improve performance while maintaining the visual quality of your effects, you can select simpler meshes and smaller LOD values for particles that are further away. The LOD values can also be adjusted at the same time, for all meshes, by modifying the Radius Scalevalue.As shown in the planetary ring example below, implementing LODs for mesh particles can improve performance from nearly six to more than 60 frames per second (fps),without any noticeable visual impact.In the upcoming versions, starting with 2021.2 beta, we want to push both platform and content reach further through:Improved URP supportCompatibility with the 2D RendererExtended platform reach (Oculus Quest, compute capable mobile, etc.)We also want to provide more tools for you to build and customize your VFX, such as:Advanced integration of Shader Graph in VFX Graph for access to all URP and HDRP master nodes, like hair and fabricSigned Distance Field baker tool in-Editor to save time spent back-and-forth with third-party providers when changing source assetsBounds and Capacity helpers to improve the culling of effectsSimilarly, there’ll be extra support for Graphics buffers, so you can leverage more advanced simulations without leaving the GPU during development.If you want to experiment with these updates, the majority of them are already available for you to test and provide feedback on as part of 2021.2 beta (but please keep in mind that they’re still in the process of evolving).For more information on what’s to come in future releases, you can always visit our Graphics Product Roadmap to vote for specific features, inform us of your needs, and submit new ideas or requests.The following is intended for informational purposes only, and may not be incorporated into any contract. No purchasing decisions should be made based on this material. Unity is not committing to deliver any functionality, features, or code. The development, timing, and release of all products, functionality, and features are at the sole discretion of Unity, and are subject to change.]]></description><link>https://unity.com/blog/engine-platform/new-possibilities-with-vfx-graph-in-2020-lts-and-beyond</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/new-possibilities-with-vfx-graph-in-2020-lts-and-beyond</guid><pubDate>Fri, 27 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to build the ultimate cross promotion strategy with Playtika and Supersonic]]></title><description><![CDATA[Mishka Katkoff from Deconstructor of Fun sat down with Yuval Yosefi, Media Department Lead at Playtika, and Igor Bereslavski, Director of Growth at Supersonic, to discuss how to grow titles across your portfolio and retain users in your game with cross promotion. Read on for a summary of the webinar or watch it here: https://www.youtube.com/watch?v=899h9gDP5jMRunning cross promotion campaigns is an essential strategy for growing your business and keeping users within your portfolio - after all, you want your most valuable users' next game to be yours, not your competitors’. Considering you know your players better than anyone, you can recommend the right game to the right users, keeping them in your ecosystem, increasing DAU and overall LTV.That said, there are many misconceptions when it comes to cross promotion. Mishka from Deconstructor of Fun asked the panelists which misconceptions they see most in the industry, which cause developers to begin this strategy with wrong expectations. Yuval from Playtika said there is an expectation that players will behave differently when crossing from one game to the other. In reality, players’ habits are generally consistent within the same game genre, so it’s important to set your goals accordingly.Igor from Supersonic brought up that hyper-casual studios, specifically, are often cautious of doing too much cross promotion because they think it sacrifices their ad revenue - because instead of selling a user to another developer outside of their portfolio and making money, they are cross promoting inside their own portfolio. Igor said that in reality, if you do it the right way - set the right KPIs, the right margins, the right tools - you can be very profitable and meet your targets even with a high share of cross promotion.Yuval mentioned that adding cross promotion to their casual games actually increased the overall competitiveness of the whole ad stack and resulted in an incremental revenue increase. Once you can get your studio on board with cross promotion and you set expectations at the correct level, it’s important to also set up your cross promotion strategy effectively.Setting up your cross promotion strategyNext, Mishka asked about setting up your cross promotion strategy. In general, there are a few ways to do this, according to Yuval and Igor.First, you can use native placements, which can be easy and inexpensive to apply since they are built directly into your app; however, the engagement for these ads is very low and optimization capabilities are limited since usually there is no data collection around native ads.Another option is advertising through a mediation platform, which allows you to utilize actual ad space rather than just the native placements, but it’s still limited since it doesn’t have dynamic suppression, and it requires CPM bids, which is inefficient for ad-based advertisers who are used to paying by CPI.Lastly, you can run cross promotion through ad networks and pay by CPI which is more efficient and allows you to optimize your strategy. But most networks don’t differentiate between your normal ads and cross promotion ads which means your cross promotion data is still limited and you pay the ad networks' regular fees to advertise on your own titles.Then there’s ironSource’s cross promotion solution, which both Playtika and Supersonic use. This solution provides the operational and data science benefits of running through an ad network without having to pay a premium on your own supply, by running all cross promotion in a stand-alone dedicated network.Since Playtika started using the solution, Yuval explained, they “have full control over the demand side, how much we’re paying, targeting, installs, conversions, and we also have full control on the supply side.” ironSource’s tool also offers segmentation and A/B testing, which allows for an incredibly dynamic approach to optimization, according to Yuval.With the solution’s transparency, you can get more granular about how you reach the right users and set yourself up to boost performance. But, with IAP and hyper-casual games approaching cross promotion differently, it’s important to understand what’s best for your studio. Here are some key topics Mishka asked about that important to look at when beginning cross promotion:1. Breaking down the first steps to segmentationAt the end of the day, two games from the same genre are still different games and provide different user experiences and ARPU. For IAP games, Yuval said that it’s key to segment according to the audience as opposed to the genre. Yuval gave an example of segmenting an audience based on their engagement with a certain feature or concept in one game, in which that feature or concept is prominent in another title of theirs. The most important segmentation, Yuval explained, is player churn and, specifically, pushing cross promotion ads immediately before the player is likely to stop playing the game.On the other side, Igor said segmentation in hyper-casual is not as critical since the user is already likely to see multiple ads in their first session. For hyper-casual games with shorter lifetime value and broader audiences, user segmentation for cross promotion is not necessarily an effective strategy. That’s why cross promotion is done more broadly across the hyper-casual genre.2. Deciding between cross promotion and ad monetizationMoving on, it’s also important to know how to strike a balance between cross promotion and ad monetization. For IP games, it all comes down to whether you count cross promotion as an ad revenue generator. According to Yuval, if you’re counting cross promotion as ad revenue, then you treat it like another network. If you don’t count cross promotion as an ad revenue generator, it’s best that cross promotion instances are limited to low positions in the waterfall. Yuval noted that with ironSource’s solution, you can track the eCPM, revenue and impressions specifically for your cross promotion titles and compare it with the opportunity cost of having shown a non-cross promotion ad.For hyper-casual games, a separate cross promotion network can actually boost your LTV and ARPU, according to Igor. That’s because good cross promotion conversion produces higher eCPMs on the monetization side.3. Setting the correct aggression levelWith the difference between cross promotion and ad monetization understood, Mishka asked Yuval and Igor about aggression levels. Both Yuval and Igor agreed that the key to deciding when to show an ad is rooted in A/B testing of the placements, frequency, types of videos, and seeing what players respond to the best.In IAP games, Yuval said you can start small with the segments you’re more comfortable experimenting with and push until there’s no longer added value, and make that your benchmark. You can also reward users in IAP games for cross promotion conversion, which Playitka does by providing larger in-game welcome bonuses from the game economy to converted users.Ready to start cross promotion? Learn more about ironSource’s cross promotion solution here.]]></description><link>https://unity.com/blog/how-to-build-the-ultimate-cross-promotion-strategy</link><guid isPermaLink="true">https://unity.com/blog/how-to-build-the-ultimate-cross-promotion-strategy</guid><pubDate>Sun, 22 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Simulate robots with more realism: What’s new in physics for Unity 2021.2 beta]]></title><description><![CDATA[Unity 2021.2 beta contains usability improvements to the physics features that enable new use cases while providing easier authoring and faster debugging in the field of robotics.The ArticulationBody component is at the core of our robotics simulation because it enables simulating kinematic chains at high accuracy, which is essential for robotic hands, manipulators, mobile robotics, and much more. We have been listening to user feedback and have made multiple changes to improve performance and usability.The properties of the ArticulationBody component have been rearranged for better readability. Now, parameters related to mass are in one visual block, followed by the parameters related to anchors and then to drives. These changes have been back-ported to Unity 2021.1 & 2020.3.The ArticulationBody editor now uses the same joint tools that the regular iterative joints do. This ensures a consistent experience across the Editor. On top of that, it is also possible to edit the limits and anchors of all joints visually.The joint tools support all of the ArticulationBody joint types, because they have been extended to allow editing of the Prismatic Joint, which wasn’t available before. See this forum thread for more information or to provide feedback.ArticulationBody has a new setting that allows selecting the collision detection mode. All the continuous collision detection modes are supported, just like with Rigidbody. This was back-ported to 2021.1 and 2020.3 since it was viewed as essential to certain use cases. For example, training a machine learning model to control a humanoid character to walk required enabling the continuous collision detection on the feet as otherwise our model was able to learn how to use the depenetration impulse coming from the feet overlapping the ground to its advantage: moved forward a lot faster than it would have normally, and some flight patterns were discovered too.Additional variants of ArticulationBody.AddForce have been added to match those in Rigidbody.AddForce. Apply force, acceleration or impulse directly. This eases up migration of pre-existing code from Rigidbody to ArticulationBody.We improved the clarity of the documentation by explicitly stating boundary conditions and special cases. In this release, we have a new page for the ArticulationBody component.Based on user feedback, we have also included units of measurement for all of the C#-facing properties of the ArticulationBody component in the docs; see mass, for example.We continue to invest in making the general physics-related pipelines easier to use, and into providing more flexibility to accommodate various usage patterns. We believe it makes more sophisticated simulations possible, driven by creators now being able to use the extra functionality to understand their field better and thus configuring the simulation to achieve more accurate results.That being said, the Physics Debugger now supports prefabs properly -- both in the Isolation Mode and in the Context Mode. It allows using the divide-and-conquer design principle to a larger extent now, by observing properties of prefabs in isolation, while the rest of the scene is not shown.Physics layers are an essential tool in optimizing performance of the collision detection system. Frequently, and especially in the large scenes with many layers, it’s best to disable all collisions first, and enable only the needed ones afterwards. To enable this usage pattern, new buttons were added to toggle collision detection between all layers in the physics settings. This is useful in larger projects where many layers are present, but where you can reduce interactions to a smaller subset of layer combinations to improve performance.Additional metrics have been added to the Physics Profiler. Now, there are more graphs available, and the textual pane displays more data about the current simulation. Among the new additions are the total number of physics queries, the number of articulation bodies, and the number of transforms synced over the last frame.A custom profiler module can also be created, to include only the metrics that are needed for a particular project.Finally, memory usage is now also available as a metric.The physics batch queries are a way to boost performance of physics queries (like Raycasts for instance) by running them on all the available cores, as opposed to normally where we run them all on the main thread exclusively.Ideally, the code that depends on the results of a batched query is a C# job itself to maximize the performance boost. However, the main problem preventing this from happening was the fact that the collider hit was reported as a Unity Component (RaycastHit.collider). None of the Unity Components are available off the main thread, so that quite limited the adoption of the batched queries.To address this, the instance ID of the Collider that was hit is now exposed. Instance IDs can be freely used off the main thread, so it should be no problem to chain the query jobs any longer.The patch friction mode is the default friction simulation mode in Unity. It’s certainly a compromise towards higher performance rather than simulation accuracy, but it can still be tweaked to get reasonable results within a tight computational budget.A new improved patch friction mode is now available in the physics settings. It addresses the problem that when more than one friction anchor is generated in a contact pair, the friction forces can be up to two times stronger than predicted by analytical models.For example, on the following graph, cubes with different dynamic friction are sliding over a plane. The red cubes show the expected final positions as predicted theoretically. The blue cubes use regular patch friction, and seem to travel about half-way to the goal. The green cubes use the new improved patch friction, and approach much closer to the expected values.The new contact modification API is now available, and we’re collecting feedback on this forum thread. It allows for the customization of the physics engine’s reaction to the contacts. For any contact pair, it is possible to change contact points, limit the impulses applied by the solver, tweak target velocities, and more. Among other usages, it allows making holes in any colliders, creating sticky contacts and various physics-powered conveyor belts. In the example below, the sphere falls through the plane because it ignores the contact points with it (can be made area-sensitive). On the right, a cube is bouncing off the two inclined planes while not rotating -- because the reaction to the contact was customized to exclude rotations.These improvements ensure users generate more realistic results from their simulations in Unity. Many of these improvements were made based on suggestions or feedback from our community and we invite you to join the conversation. To get started with robotics in Unity, check out some of our examples and demos on the Unity Robotics Hub.]]></description><link>https://unity.com/blog/engine-platform/simulate-robots-with-more-realism-whats-new-in-physics-for-unity-20212-beta</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/simulate-robots-with-more-realism-whats-new-in-physics-for-unity-20212-beta</guid><pubDate>Fri, 20 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Breaking down how different generations interact with their devices]]></title><description><![CDATA[With 6.7 billion devices connected globally, and smartphone usage having successfully penetrated every demographic segment, advertising directly on devices through OEM and carrier partnerships is not one size fits all. That’s because different users are going to engage and interact with their devices in different ways - a 70-year-old is not going to react to advertising the same way a 24-year-old will.It’s interesting to go deeper into the generational gaps between how different age groups interact with their devices as well as the apps they are inclined to engage with. Let’s break down three generations, and how they interact with their phones and apps so you can better format your on-device advertising strategy to reach your audience.Baby Boomers (1946-1964)Baby Boomers are known for being the least familiar with technology, but their time spent in apps has gone up 30% according to TechCrunch*, meaning they are active on their smartphones but not at an advanced level. That said, as an advertiser, reaching these users early on in the device lifecycle when they’re already focused on set up is a valuable way to engage this audience.Because they have less experience downloading apps, they’re less likely to frequent the app store, so meeting them early is the best way to get in front of these users. Ultimately, they are extra cautious about their new phones - only 26% of Baby Boomers say they are very confident using electronic devices to go online according to Herosmyth* - which means they’re going to spend time carefully selecting apps that matter to them and change out an app that is already downloaded. But, what apps actually matter to this generation?According to App Annie*, Baby Boomers are likely to use productivity and local news apps more than social or photo sharing apps. Being new to technology, they are more inclined to download apps that will make their lives easier rather than apps they have to keep up with and maintain.Though reaching users early is always beneficial to your UA strategy (95% of all users download 40% of the apps they will install during the first 48 hours of device purchase) , Baby Boomers are the most likely to download apps early in the device lifecycle. Considering they want apps that will simplify their lives, Baby Boomers don’t want to wait to have these tools accessible on their devices.Millennials (1981-1996)Over half of millennials say they use 3-5 apps a day according to Interop*, making them incredibly active on apps compared to other generations. Because of this reliance, millennials are constantly discovering new apps to download throughout the lifecycle of the device.Millennials were the first generation to make smartphone usage a mass phenomenon, which means downloading apps is a relatively calm and fun experience. On top of that, they are the most diverse in terms of lifestyle according to Marketing Dive*, and their app choices reflect that diversity - they are active across a range of different app categories. Ultimately, millennials are constantly looking for new relevant apps to add to their collection.As a whole, Millennials use social networking apps the most - 80% use these channels according to Marketing Dive* - followed by music streaming, games, and communication. In contrast to Baby Boomers, Millennials don’t use many weather or search apps. Millennials use apps for a range of wide range purposes and don’t limit themselves to a single category.When it comes to Millennials, it’s important to show them apps that will matter to them, especially considering users only open 18 of the average 40 apps on their phones. You should be actively reaching this audience throughout the device lifecycle at contextual touchpoints, such as notifications and device updates. If millennials can engage with a message tailored just for them about an app relevant to them at the right time, they’re likely to open and use that app more often.Generation Z (1997-present)Generation Z are highly concerned with staying connected and informed, and a fear of missing out (FOMO) keeps them unlocking their phones nearly 80 times a day, according to Statista*. Staying up to date through their devices is a huge part of young people’s lives, which is why this generation loves notifications.Generation Z doesn’t know a world without notifications, let alone smartphones - the first iOS and Android notifications were only released in 2009. They are often referred to as the iGeneration, Net Gen, or Digital Natives because they are the most tech savvy age group. That in mind, as Baby Boomers learn about the world through print newspapers and 24 hour news channels, Gen Z thrives off of notifications to stay up to date on what is new and noteworthy. With a “ding” feeling like oxygen to Gen Z, this group sees the physical and digital world as one in the same.When it comes to apps, Gen Z has successfully replaced the TV with visual social platforms, such as Snapchat, TikTok, and YouTube. According to Marketing Dive*, 75% of Gen Z consider Snapchat to be the place to stay connected and 71% use YouTube for long-form video content. In fact, Gen Z watches 68 videos per day on average, according to Geo Marketing*. As an advertiser, it’s important to note that because Gen Z is impressively informed about the world and brands, this group is more likely than others to turn to apps that create unique video content catered to them.Smartphones are the third arm to Gen Z and notifications are their primary connection to communicating, sharing and learning. Users receive over 60 notifications a day according to the Traffic Company, and it is likely that Gen Z is already on their phones watching videos when this notification arrives. That said, on-device notifications are a great way to reach this audience and share information about your app.Different generations are undoubtedly going to interact differently with their devices. With everyone owning smartphones in today’s world, it’s valuable to be aware of the generational gaps when advertising directly on mobile devices. At the end of the day, it’s essential to know your audience, test the theories above, and iterate your copy and campaigns to match the generation you are trying to reach.]]></description><link>https://unity.com/blog/breaking-down-how-different-generations-interact-with-their-devices</link><guid isPermaLink="true">https://unity.com/blog/breaking-down-how-different-generations-interact-with-their-devices</guid><pubDate>Thu, 19 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Advance your robot autonomy with ROS 2 and Unity]]></title><description><![CDATA[Unity is excited to announce our official support of ROS 2, whose robust framework, coupled with simulation, will enable myriad new use cases.The Robot Operating System (ROS) is a popular framework for developing robot applications that began in 2007. Although originally designed to accelerate robotics research, it soon found wide adoption in industrial and commercial robotics. ROS 2 builds on ROS’s reliable framework while improving support for modern applications like multi-robot systems, real-time systems, and production environments. Unity is extending its official support of the ROS ecosystem to ROS 2.Modern robotics is shifting its focus towards “autonomy,” the study and development of algorithms capable of making decisions in the absence of strict rules defined by a human developer, and simulation supports this transition by enabling greater flexibility and faster experimentation than real-world testing. We’ve developed an example, Robotics-Nav2-SLAM, to demonstrate how to get started simulating simultaneous localization and mapping (SLAM) and navigation for an autonomous mobile robotics (AMR) with Unity and ROS 2.While ROS remains an excellent framework for robotics prototyping, it is reaching the end of its lifespan and is missing some features necessary to go beyond prototyping and into full-scale production and deployment of a robotic system. ROS 2’s technical roadmap was established and is maintained by a committee of industry veterans with explicit tenets defined for ensuring ROS 2 is a suitable framework for robotics end users. ROS 2 supports more operating systems and communication protocols and is designed to be more distributed than ROS.Many of the emerging use cases for ROS 2 focus on autonomy. Introducing autonomy means the decisions a robot makes and the results of those decisions are not neatly predictable using only a state machine and a collection of mathematical formulae, as they may be in many industrial robotics use cases. Compared to industrial robots, an autonomous robot’s operating environment is exponentially larger. The permutations of inputs it encounters far surpasses what can be reproduced in a controlled laboratory environment. To fully validate that an autonomous robot behaves the way you expect it to, you can either do it on the robot, in your own personal pocket dimension where time has no meaning and reality is everything and nothing all at the same time, or you need the next best thing: a suitably robust simulation.If a robot is expected to sense an environment, a simulation must be capable of accurately modeling those sensors without making compromises with respect to the accuracy of the environment’s simulated topology and physics. If there are other agents in that environment, i.e., people or other robots, then the simulation must be capable of modeling the agent behavior, while still maintaining the accuracy of its sensor simulation, topology representation, and physics modeling. To fully exercise a robot against all the scenarios it might encounter, this simulation needs to be run many, many, many times. This is all to say that simulation in support of autonomous robotics requires four things not often required by industrial robotics: flexibility, extensibility, scalability, and fidelity – all without sacrificing performance. Unity sits at the intersection of all these requirements, which is why we are building more features into our platform to support development of autonomous robots.With Unity’s Robotics packages, you’ll have access to the interfaces we’ve already built to make communicating with ROS or ROS 2 easy. You will be able to import existing robot configurations directly from URDF files with our URDF Importer, and you’ll be able to start exercising your robot against Unity’s high-quality, highly efficient rendering pipeline and a performant and accurate physics simulation. Through Unity’s Asset Store, you have access to a great variety of additional, premade environments and props to help you model your robot’s specific environment and task. With a few clicks, the simulation you assemble can be built and deployed to any mainstream OS, be it Windows 10, Mac OS, or Linux. Using C# scripting, Bolt visual scripting, or any of the many scripting and utility toolkits available in the Asset Store, you can continue to customize the functionality of your particular simulation to suit your specific use case.Moving your Unity project to ROS 2 is simple. In the ROS-TCP-Connector package, we’ve added a dropdown menu that allows you to toggle the package between ROS and ROS 2 integration. Upon changing the protocol, Unity will automatically recompile the package against the message definitions and serialization protocol that you’ve selected. To test it out, simply make this change in your own project, or pull down our example repository, Robotics-Nav2-SLAM, which contains the necessary components to enable using Unity as the simulated source of sensor and odometry information for the Nav2 Navigating while Mapping tutorial.This example project demonstrates how to use Unity to simulate a navigation system running in ROS 2. The concept of navigation is straightforward and doesn’t change much in the context of autonomous robotics. Navigation algorithms aim to find a path from where one is to where one wants to be. However, to get from where one is to where one is going, one must first do SLAM – simultaneous localization and mapping. SLAM describes a collection of algorithms built to answer the question, “Where am I, right now, and where have I been?” Humans are performing SLAM constantly as an intrinsic part of the processing pipeline between our senses and our brain. For autonomous robots, performing accurate SLAM is still a challenging proposition for most real-world environments. What, exactly, an autonomous mobile robot requires to enable it to always know where it is, relative to everywhere it's ever been, is still an area of active research. The only way to really answer this question for a given use case is to try a lot of different things (sensors, algorithms, etc.) and see what sticks.In our example, you will find a simple warehouse environment, a fully articulated model of a Turtlebot 3 mobile robot with simulated LIDAR and motor controllers, and a Dockerfile used to build an image containing all of the ROS 2 dependencies necessary to exercise the Nav2 and slam_toolbox stacks against our simulation. The steps of Nav2’s tutorials will provide useful context if you’ve never used ROS 2 or worked with SLAM algorithms before. To see this example work in Unity, all the instructions to get you started and the project running are in our repository.Roboticists new to Unity and Unity developers new to robotics are encouraged to try our ROS 2 integration and perform autonomous navigation with Robotics-Nav2-SLAM. This is just a small example of what you can build by integrating our robotics tools and the many other powerful packages available from Unity. In tandem, the Unity Robotics team continues to build and release features explicitly in support of common robotics use cases with an emphasis on scalability and extensibility.Unity will also be hosting a workshop at ROSCon this year that extends the Nav2-SLAM-Example to support multiple robots with specialized roles working together to accomplish a specific task.]]></description><link>https://unity.com/blog/engine-platform/advance-your-robot-autonomy-with-ros-2-and-unity</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/advance-your-robot-autonomy-with-ros-2-and-unity</guid><pubDate>Fri, 13 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 ways to speed up your workflows in the Editor]]></title><description><![CDATA[Achieve more in less time with the Shortcuts Manager, Presets, QuickSearch, and more.We’re always working to bring greater efficiency to your day-to-day aggregate workflow, boost your productivity, and let you focus on your creative process. Even experienced Unity developers might have missed out on some of these improvements, so we created an e-book with more than 70 time-saving tips to accelerate your workflow in Unity 2020 LTS. This is the first in a series of three blog posts highlighting some of these tips, starting with how you can speed up your core Editor workflows.Shortcuts ManagerThe Shortcuts Manager is an interactive visual interface where you can manage Editor hotkeys. Here, you can assign shortcuts to different contexts and visualize existing bindings for any of the tools you use frequently.You can bind any key or combination of keys to a Unity Editor command. For example, the R key is bound by default to the Scale tool in the Tools context.The Binding Conflicts category also identifies if you have a shortcut assigned to two commands that can be executed at the same time. Use the interface to resolve such conflicts. Note: You can assign the same shortcut to multiple commands if they are in different contexts and cannot execute at the same time.To access the Shortcuts Manager from Unity’s main menu:On Windows and Linux, select Edit > ShortcutsOn macOS, select Unity > ShortcutsUse the provided API in the UnityEditor.ShortcutManagement namespace to define custom shortcuts in your own scripts and packages.PresetsThis feature allows you to customize the default state of anything in your Inspector. Creating a Preset lets you copy the settings of a component or asset, save it as an asset, then apply the same settings to another item later.Use Presets to enforce standards or to apply reasonable defaults to new assets. This ensures consistent standards across your team, so commonly overlooked settings don’t impact your project’s performance.Click the Preset icon to the top right of the component. Click Save current to… to save the Preset as an asset, then click one of the available Presets to load a set of values.Other handy ways to use Presets:Create a GameObject with defaults: Drag and drop a Preset asset into the Hierarchy to create a new GameObject with the corresponding component filled in with Preset values.Associate a specific Type with a Preset: In the Preset Manager (Project Settings > Preset Manager), specify one or more Presets per Type. Creating a new component will then default to the specified Preset values.Pro tip: Create multiple Presets per Type, and rely on the Filter to associate the correct Preset by name.Save and load manager settings: Use Presets for a Manager window, so the settings can be reused. For example, if you plan to reapply the same Tags and Layers or Physics settings, Presets can reduce set up time for your next project.Scene visibilityAs your Scene grows larger, you can temporarily hide specific objects to select and edit your GameObjects with greater ease.Instead of deactivating the GameObjects (which can lead to unintended behavior), toggle the SceneVisibility controls. This allows you to hide and show objects in the Scene view without changing their in-game visibility.Use the toolbar in the Hierarchy window to enable or disable the Scene visibility for GameObjects in the viewport.Note that the status icons may change in the Hierarchy, depending on whether parent or child objects are hidden.Use Isolation Viewto concentrate on a specific object and its children. Select a GameObject in the Hierarchy window and press Shift + H to toggle it on and off. This overrides your other Scene visibility settings until you exit.Remember that you can always use the Shift + spacebar shortcut to maximize the viewport and hide the rest of the Editor as well.Scene pickingYou can modify the pickability state of GameObjects, similar to Scene visibility. Use the toolbar to block specific GameObjects from being selected in the Scene view. This is useful to avoid selecting and editing an unintended GameObject in large scenes.Because you can toggle pickability for a whole branch or a single object, some GameObjects may be pickable but have children or parents that are not. The following icons differentiate their status.SearchingThe Editor contains search functionality for the Scene view, Hierarchy window and Project window.In addition to searching for names, you can search by type. Use the dropdown to select Type or the t: shorthand syntax.If you use Asset Labels, you can also use the l: shorthand to filter for labels.In this example, we search the scene for all objects of type Camera:QuickSearchIf you want to extend your search beyond the windows discussed here, you can find anything in Unity using the QuickSearch package.Unity 2021.1 incorporates this functionality into the Editor without requiring a separate package installation. Look for it under Edit > Search All (Ctrl + K on Windows / Cmd + K on macOS).Once installed from the PackageManager, activate QuickSearch from either Help > QuickSearch or use the Alt + ‘hotkey combination.QuickSearch enables you to search multiple areas of Unity, including assets, scene objects, menu items, packages, APIs, settings, etc.Here is an example of a QuickSearch for “Camera”:Make sure you run the setup wizard to configure the search settings for the best results.See the QuickSearch guide to learn more about searching both inside and outside of Unity.Stay tuned for upcoming blog posts with more tips to speed up your workflows – or get all the tips now by downloading the free 70+ tips to increase productivity with Unity 2020 LTS guide. You will need to fill out a short form to have the e-book sent to your inbox.Let us know what additional topics or features you’d like us to cover in the comments.]]></description><link>https://unity.com/blog/engine-platform/5-ways-to-speed-up-workflows-in-unity-editor</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/5-ways-to-speed-up-workflows-in-unity-editor</guid><pubDate>Tue, 10 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Indie spotlight: Meet the two-person game team behind Virede]]></title><description><![CDATA[Get to know Virede, the two-person game studio based in Ukraine and the developers behind Idle Law Firm. Hear directly from Serhiy Kozachuk and Alex Kozachuk and learn all about their game developer journey - from hyper-casual to idle - and how they teamed up with ironSource to boost app revenue 100%. Check out the Q&A below.How and why did you first get started in gaming?We're a small studio. It's only a two-person studio, me and my brother, and we’ve worked together for seven or eight years. We started as freelance developers, and eventually found the world of games. We just jumped into the hyper-casual space before moving to idle games and have worked with a lot of the biggest publishers out there on both the iOS and Android store.How long does it take you to build a game from concept to production?For our last game, it took us 3-4 months of development from ideation to going live. We then spent one month testing in Canada and Great Britain. It was pretty hard for us to scale the game and our ad spend because we were new to the space.With ironSource, we used the tCPI optimizer and liked it a lot because it does the job automatically for us. We don't need to spend our hours and time manually managing all the campaigns and their performance.What was the main challenge you faced in growing your game?We worked with App Store and Google Play store algorithms for a while, but they are pretty tricky since you don't always know what’s the best strategy to implement. We don't have much experience in marketing, so it's pretty hard to know where to spend your budget, how to spend your budget, is it best to grow your game in the first few days or just to have a small incremental growth?Why did you partner with ironSource?We decided to just keep our studio small and instead spend our resources on marketing and monetization. We tried ironSource - and we were amazed because we worked with a lot of other mediation solutions and ad networks, but we got frustrated every time we’d try to implement something or add something new. With ironSource, we were able to make changes to our setup with just 2 clicks.It was so hard for us to monitor everything and ironSource made it so easy for us. We don’t need to worry about anything. The support is awesome and our app revenue boosts were mindblowing. ironSource helped us boost our app revenue 100%.We have a plan for our games for the next year or two and we want to continue working with ironSource - it’s a crazy good platform and we want to try everything it has to offer because it really works.What advice would you give other indie developers trying to make it?If you want to develop games - give it a try - even if you start by just reading and learning online. Keep trying, because the more you try, the better.]]></description><link>https://unity.com/blog/q-and-a-with-virede-studio</link><guid isPermaLink="true">https://unity.com/blog/q-and-a-with-virede-studio</guid><pubDate>Mon, 09 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Made with Unity: Soccer robots with ML-Agents]]></title><description><![CDATA[Our Made with Unity: AI series showcases Unity projects made by creators for a range of purposes that involve our artificial intelligence products. In this example, ML-Agents empowered AI developers by allowing them to quickly and easily set up machine learning environments and to train an agent how to play soccer before finally transferring that agent to a real robot.Unity Machine Learning Agents Toolkit (ML-Agents) allows users to easily get started with reinforcement learning (RL) using Unity. ML-Agents gives users a variety of sample environments and model architectures that they can use to start working with RL. Users can then tune hyperparameters to experiment and improve the resulting models. All of this can happen without the user having to worry about creating a Unity environment or importing assets – and there’s no immediate need for coding. This project out of Japan by Ghelia Inc. used the ML-Agents soccer environment to train an agent to play soccer. The resulting RL model was then deployed on real Sony toio robots to play soccer. This is an exciting example of simulation-to-real-world with robotics using ML-Agents to train.We interviewed Ghelia’s Ryo Shimizu, CEO and President; Hidekazu Furukawa, Lead Programmer for Innovation and Brand Strategy Office; and Masatoshi Uchida, Manager for Innovation Section of the Innovation and Brand Strategy Office to find out what inspired them to build this project. Read on to discover how they used ML-Agents Toolkit for training a real-world robot how to play soccer and how a golf ball fits into this scenario.What inspired you to create your project?
Ghelia is a company that focuses on reinforcement learning applications. The founder of Ghelia, Hiroaki Kitano, launched RobocupSoccer and developed the AIBO at Sony. Our team had previously built an air hockey demo, but since it consisted of many different components, it was not very portable. When we started to discuss creating another demo to explain to customers what reinforcement learning is, we wanted something that was going to be easier to carry around. Since ML-Agents already had a soccer environment, it made sense to use the small and portable Sony toio robots to create a soccer game, which could also lead to viral content.To apply reinforcement learning to a real robot, the robot needs to exist in a simulation environment. Luckily, toio already has a simulator called toio SDK for Unity. By adding the ML-Agents package to it, we were able to use it for training immediately. While the toio SDK provided the robot models for Unity, we still needed to create the ball. We used Unity’s physics engine to recreate the ball in the simulator and needed to find a real-world ball that would match the simulation results. It turns out that a golf ball produced real-world results that reflected the training results. The ball’s position was detected in the simulation by using Unity transform value, and in the real world by image recognition using OpenCV and a camera.We used a golf ball to represent the soccer ball, but to increase the recognition rate, we painted it red. Amazingly, we were able to use just one iPhone and its camera to detect the ball, control all eight robots (it was a four-on-four soccer game), and perform inference with the ML-Agents model.At first, there were many own goals, so we tried to provide a negative reward for an own goal. However, this resulted in the goalkeepers not defending their goal. When we tried giving a positive reward for moving the ball, both teams would simply go back and forth, not putting the ball in the goal, basically stalling for time. Finally, we decided to reward one point for putting the ball in the opponent’s goal and took one point away for being scored on.It was sometimes difficult to ascertain why the actual robots did not work as well as the simulation. For example, sometimes the inference didn’t work because we operated the robot on a slightly tilted floor. Other times, the ball rebounded differently from the simulation, so the robots didn’t respond as expected. The positioning of the camera was also quite sensitive, requiring millimeter-order precision, making it difficult to adjust at the event site every day. After each major set of improvements to the model, we trained for about three days. In the end, we had about six training sessions to achieve our results.In the ML-Agents demo, after a goal, the agents line up in their original position, but it’s not so simple for real robots. Some problems, such as avoiding collisions between toios, were difficult to solve through reinforcement learning alone. While we initially tried to design a reward function for this scenario, we eventually solved it heuristically.If there were demand, we would definitely consider making this project open source. You can find additional details about this project in our blog post (in Japanese).AI, especially deep learning, is fascinating, but it is not well understood. You can’t fully appreciate its beauty and complexity until you work with it firsthand, and that’s a shame, so we encourage Unity developers worldwide to try it. I want to emphasize how much fun machine learning is and that Unity ML-Agents is a system that allows you to get started with machine learning easily or incorporate it into your project.Get started with Unity ML-Agents or learn more about the Unity Robotics packages today. If your project requires you to kick off multiple training sessions in parallel, contact us to learn more about our ML-Agents Cloud offering.Hidekazu Furukawa has also published a Japanese book called Unity ML-Agents Practical Game Programming that details how to get started with reinforcement learning using ML-Agents.]]></description><link>https://unity.com/blog/games/made-with-unity-soccer-robots-with-ml-agents</link><guid isPermaLink="true">https://unity.com/blog/games/made-with-unity-soccer-robots-with-ml-agents</guid><pubDate>Fri, 06 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 surprise findings about the state of in-game advertising]]></title><description><![CDATA[Games have emerged as one of the world’s biggest forms of entertainment according to time spent, dollars generated, and audience size. While stereotypes and misperceptions have kept marketers from going all-in on in-game inventory in the past, advertisers are beginning to discover that mobile gaming is a lucrative supply source for high quality users that convert. To better understand the general perception of in-app mobile advertising, ironSource partnered with Digiday to survey mobile game players and advertisers.On the player side, the survey set out to better understand what today’s “mobile gamer” looks like and how they feel about in-game ads. On the advertiser side, we were interested in learning about how they leverage mobile gaming as a supply channel to fit their needs. For both segments, our curiosity lay in understanding how well advertisers are addressing diversity for their audiences.With gaming on the rise and 2.6 billion gamers worldwide as of 2020, there’s no better time to learn everything you can about advertising in mobile games, and about gamers in today’s ecosystem. Let’s dive into the three of the most surprising findings from our survey.65% of mobile game players don’t consider themselves “gamers”In the past, the general perception has been that mobile gaming was just for men. However, the introduction of new game genres, such as casual games or puzzle games, has penetrated the market even deeper, attracting a high female representation in recent years. In fact, 46% of “gamers” today identify as female. With a wide range of games available attracting users from different demographics, people are playing mobile games more than ever before.Among those we talked to, 62% play games at least once a day and 44% exclusively play games on mobile. Yet, despite how often survey respondents play games, 65% of those who play mobile games don’t consider themselves “gamers” - this suggests that the term “gamer” does not typically encompass people who play mobile games, but rather just PC or console.This may be because many of the respondents surveyed say they play games to relax or get their minds off serious issues. For these users, the term “gamer” may give a connotation that a love of games is what motivates them to play, while in fact, it’s not the case.With a wide range of people playing mobile games, we also found that advertisers are starting to increase their budgets for in-game spend.69% of advertisers say they expect to increase their spend in-game in 2021With so many users playing mobile games today, advertisers are embracing t mobile games to connect their brand messages with their target audiences. In fact, 75% of brand respondents say they’ve already allocated digital marketing budgets to in-game advertising in the past and the remaining 25% said they haven’t yet, but will allocate budget to the space in the year to come. In other words, 100% of advertisers have a plan to invest in mobile games. On top of that, 69% of advertisers will increase in-game mobile spend.In the last few years, mobile game developers have been incredibly successful at not only finding organic ways to incorporate advertising into the user experience, but also at implementing ad formats the user wants to see. These capabilities have translated into success for advertisers - with users more engaged, advertisers see higher performance results, and therefore plan to increase their spend.In particular, advertisers are investing in mobile game advertising with the goal of building more inclusive marketing and advertising campaigns.76% of advertisers use games to reach ethnically and racially diverse audiencesBrands are seeking to build more inclusive advertising and marketing strategies that target people across all genders, ages, income, races and ethnicity and even ability. As the survey showed, advertising in mobile games doesn’t mean advertisers are only reaching the stereotypical “gamer,” with advertisers beginning to realize that games can reach a truly broad base of game players across various demographics. In fact, 76% of advertisers said they’ve used games to reach ethnically and racially diverse audiences, with age and income diversity following behind.For more insights, download the full research report here.]]></description><link>https://unity.com/blog/3-surprise-findings-about-the-state-of-in-game-advertising</link><guid isPermaLink="true">https://unity.com/blog/3-surprise-findings-about-the-state-of-in-game-advertising</guid><pubDate>Thu, 05 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile games: A premium video advertising channel]]></title><description><![CDATA[In advertising, the word “premium” is often used to describe a better class of time and attention. But how do you define what a premium video ad placement actually is? While it can be subjective, there are three key factors that objectively contribute to quality user experiences in the mobile advertising space. We’ve created a handy guide to help marketers decide where to assign their ad spend.1. Format: 100% full screen vs 100% viewableWhat does a premium advertising format look like? Consider that film and television still account for some of the best opportunities of any advertising channel, representing almost 32% of total media ad spending in the US. Why is that? Because television and theatrical ads are full screen, meaning audiences engage with the content without distraction, unlike mobile web where host content and even other advertisements are competing for audience attention. Even as digital advertising continues to grow, cinema advertising continues to be a major source of mind share for top-tier brands, having closed out another record year in 2018 with more than $750 million in revenue.Over time, the world of mobile advertising format shave come to embrace the same things that continue to make television and cinema such powerful channels for marketers. When advertisers first entered the mobile space, however, they relied on ad formats that were already popular on desktop — banners and in-browser video primarily — which are typically couched in less engaging content that only serves to dilute audience attention. It was a far shot from the dedicated viewing experience of a theatre or television screen, but things have changed for the better.Today, modern mobile in-app ads have more in common with theatrical or television ads than their predecessors. They all occupy the entire screen to capture an audience’s attention in a way that few other channels can match. Our mobile devices are with us in our most private moments, affording advertisers a valuable opportunity to connect. Television, cinema, and in-app mobile ads provide a premium format for reaching audiences, more so than mobile web or even native social.2. Contextual relevanceA premium advertising experience is one that is relevant to the largest possible percentage of its audience. It’s why modern advertising innovation is so heavily geared towards the reduction of waste through better audience targeting. The less money advertisers spend on the time and attention of audiences unlikely to take action, the better. This means pursuing the ideal of 1:1 overlap between advertising content and audience interest. A lofty goal, but one in-app advertising solutions are coming closer to every day.Data is king here, and mobile applications are among the most data-rich environments around when users opt-in to share their information. Variables like age, gender, behavior, spending history, and more all empower mobile advertising platforms to deliver a more contextually relevant advertising experience, ensuring fewer wasted ad dollars.It’s this same wealth of data and pursuit of greater contextual relevance that has already helped make mobile gaming become one of the largest and most profitable markets on the planet. Advertising and in-app purchases are the only two ways for game and app publishers to make money, and modern ad technology has proven effective enough to make mobile game revenue the second most profitable modern entertainment medium, beaten out only by global overall gaming revenue. Other mobile game and app developers have long leveraged these abilities for their own growth goals, but these same opportunities are available to brands.3. Positive sentiment: Delight your audienceFew ads can perform as well as those users enjoy interacting with. Studies show that ads which offer in-app rewards consistently generate the highest sentiment of any mobile ad format, while mobile pop-ups typically rank last. A recent Tapjoy study found that 68% of respondents felt positively towards mobile rewarded ads that operate in this way, the highest of any format available. Mobile users are perfectly happy to watch ads frequently, provided their time is respected, and this means higher ad engagement for brands.Recent years have seen the rise of “value-exchange” or “rewarded” advertising. Mobile veterans recognize it as any integrated ad placement that prompts audiences to opt-in to view an ad in exchange for virtual compensation. Rewarded advertising has proliferated in the mobile gaming space, where ads can offer in-app currency and extra lives. It’s become the defacto solution for publishers, and as the practice becomes more popular, we’re seeing it expand into other app categories like dating and media.Mobile advertising is both an art and science, but there are differentiators that distinguish a premium experience from a simply passable one. Always consider how the following can fit with your campaign:- Is your ad both full screen and fully viewable?- Is your ad contextually relevant to its audience?- Does you add offer tangible value or rewards to viewers?If you’re an advertiser looking to make the most of your media budget and you answered “no” to any of these questions, the advertising experts are here to help. With more than 10 years of experience helping connect advertisers with their ideal mobile customers, we’re confident that we can deliver meaningful growth for any brand or product.]]></description><link>https://unity.com/blog/mobile-games-a-premium-video-advertising-channel</link><guid isPermaLink="true">https://unity.com/blog/mobile-games-a-premium-video-advertising-channel</guid><pubDate>Thu, 05 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[2D art creation in Dragon Crashers]]></title><description><![CDATA[Jarek Majewski is the freelance 2D artist and coder who created the art and animations for our latest 2D sample project, Dragon Crashers. Talking with Eduardo from the Unity 2D team, Jarek opened up about his creative process, tips for creating sprites, 2D lighting and animations, and using Affinity Designer and Photo, his art and design software of choice.You can find Jarek on Twitter @mindjar and via his website.I’ve been drawing since I was a child. I wanted to use my imagination to create worlds, stories, and characters. Then I discovered video games and was mesmerized. I combined my passion for art with that for video games.There’s a simplicity to using a pencil that allows me to visualize my thoughts with minimal effort. I don’t need to prepare anything, launch any software, or choose a tool or color to paint – it’s a perfect mind-art connection.I had other concepts inspired by Journey to the Center of Earth, Castle Siege, or a pirate ship. My last-minute proposal was of a crystal mine with a dragon sleeping on a pile of gold. The demo team ultimately chose this as the concept for the project.It’s a great choice to showcase Unity’s capabilities, such as Sprite Shape, which was used to create the mine tracks, and 2D lights. We have a diverse cast of bipedal and four-legged characters that show sprite rigging capabilities. It’s a perfect scenario to tie together the story, art, and technology.I start by researching actual images of the sprites I want to create, because even stylized art needs to be believable.If you’re creating the first sprite for a new game, you can create multiple variants to eventually find the right art style. But if it’s a sprite for a game with an established style, you need the environment in which to place the sprite as a point of reference. This helps you to choose the correct proportions, color palette, and viewing angle (this is important when making a game with a camera angle pointed slightly upward and at an angle, such as a top-down isometric view).If your art uses outlines you’ll need to make sure the outline width matches that of the other objects in the environment. It’s also important for pixel art: If you make a sprite that doesn’t match the game palette you can change it, but if the pixel size is off that requires redoing it from scratch.Once you have your sketch and an environment in which to place the sprite, you can start making the sprite.I start with simple shapes or silhouettes and then fill in the details. I use mostly vector graphics because they’re flexible and easy to edit. I can edit colors and shapes, or scale my sprite without losing quality.I like to have every sprite in the most editable form, whether it’s raster- or vector-based. So I use as many layers as I can without sacrificing performance. It’s important that I can always go back to my original file to change some parts or colors to create a different sprite.I flatten my sprite layers only when exporting to PNG format. I mostly use the Export Persona feature in Affinity Designer for exporting. It allows me to have one file with every sprite and export all of them with a single click. I can also choose the Continuous mode when exporting, so the sprite will be automatically exported when I change anything on it. It’s a huge time saver.A good normal map can make or break the illusion of a sprite being 3D. Every pixel in a normal map stores data about the angles of the main texture. The red, green, and blue (RGB) channels store angle data for the X, Y and Z coordinates. Let’s look at how the RGB values affect the angles of the normal map.The above image is of a flat normal map in which the pixels are facing the camera. Its RGB values are 127, 127, and 255, respectively. Each color channel can have a value from 0 to 255, so 127 is near the middle. If I want my surface to face left (-90 degrees), I need to set the R color value to 0. If I want it to face right, I set R to 255. If I want it to face straight down or up, I set the G channel to 0 or 255 respectively.One way to paint a normal map is to make drawings of your sprite lit from different angles and combine them into one texture. The sprite will be lit with one light from the right in the R channel and one light from the top in the G channel. In the B channel the sprite is lit from the front, but for the sake of simplicity you can omit this channel with 2D sprites.However, this approach can be time-consuming, as you will need to paint your shaders at least twice.Another approach is to use a normal map-generator app. You can open a sprite in a generator app, and with just a couple of clicks it generates a normal map. Generator apps do not take into account the angles of your sprite, so avoid using them on the entire sprite. Use it instead to generate normal maps of sections of a sprite that are beveled, such as chains, cables, or a dragon’s tail. Import a section into the normal map generator, tweak the values, export, and then add the necessary parts and details yourself.The technique I used to make normal maps for the sprites in Dragon Crashers was to paint the colors directly on the sprites. Before I explain this technique, I want to note something about the base-color sprite. If you plan to use 2D lighting extensively in your game and want to make the most of the normal maps, don’t paint the light and shadow onto your sprite.2D lighting doesn’t look good on a sprite that already has shadows painted on. You will end up doing double the amount of work because you’ll be painting the lighting in the normal maps. You can paint some non-directional shadows (ambient occlusion) and your sprite will look better, but it’s better to avoid any directional light, such as from the sun.To paint the normal map, you need to know which colors to use for different angles. For Dragon Crashers, I did this by referencing normal map palettes online. I then made one for myself in Blender and exported it as a .PNG file. The palette is a simple sphere; I picked the angle color I needed and painted it on. I mostly used vectors by making a shape and filling it in. You can also paint the colors with your brush of choice as you normally do on your drawings, or paint it pixel by pixel for your pixel art.Angle colors don’t need to be 100% accurate; a few degrees won’t make a difference. However, keep the overall shape of the sprite believable. If you use an angle color that doesn’t make sense in context, the whole shape will fall apart when lit.Painting normal maps can be tricky at the beginning because it requires good spatial imagination. Start with simple shapes like boxes or barrels to understand how to do it correctly, and in time you’ll master this technique.A couple of shortcuts to note: When there’s a spherical shape, you can paste the normal sphere from your palette. When you have a cylindrical shape, you can take a part of the sphere, paste and stretch it.Be aware that when you copy and paste parts of normal maps and then rotate them, it breaks the shading. But this can also be used to your advantage. For example, when you need a concave spherical shape, you can rotate the sphere 180 degrees to create a hole.Choose the method of generating normal maps that’s best for you. You will most likely have to make many assets for your game, so focus on the objects that will be visible most of the time and simplify other parts of the game. Choose the technique that will give you the best results for the least effort. Some tools that can help include:Normal Painter Krita’s Tangent brush Sprite Illuminator Laigter Sprite LampI always plan out my animations ahead of time to pinpoint what I want to achieve within the constraints I’m working in.For Dragon Crashers, I chose good proportions for the first characters and used this as a base for the others. I focused on three bipedal player characters and one enemy (let’s leave the dragon for now). All of these characters used the same sprite-skinning skeleton to take advantage of the Sprite Swap feature (currently in experimental mode) that comes with the Unity 2D Animation package. At the same time, each character needed its own distinct visual style to avoid looking like a simple reskin.To design the characters, I had to make sure that all of them could use the same skeleton, so I made a simple skeleton overlay in Affinity. That way, I could check whether a character’s limbs match the underlying bone structure. It turned out pretty well, and the characters are unique-looking: One has broad shoulders, one has bigger feet, and another a wolf’s head.A lot of planning went into choosing how many layers the characters needed and which bones would affect each layer because changing these elements later would cause a headache. Of course, there was some trial and error involved, but with the base character planned well, all of the other characters were easier to make.To import the characters into Unity, I used the PSD Importer because it allows me to have the same layer structure and positions as in Affinity. I designed my characters using vectors, so each layer consisted of a number of paths. To import a character into Unity, I had to rasterize each layer and export the file as PSD (and change the file extension to PSB). So I had two files for each character sprite: One was a source vector, and the other a rasterized version. This allowed me to have an editable file in case I wanted to make some tweaks to the character.After importing the PSB file into Unity, I rigged the character in the Skinning Editor. I made all the bones, auto-generated meshes for each of the layers, and used the Auto Weights feature to bind the bones.I optimized the character rig, first by cleaning up the meshes to make them use as few vertices as possible, and then cleaning the bone weights to make sure the character looks good in every pose. I double-checked the places where the joints bend, such as the ankles, knees, and elbows. I carefully placed the mesh points and their weights in these places so the bending of the limbs looks believable.After the rigging process, I made a Sprite Library Asset, which groups multiple sprites into Categories and unique Label names. This enables me to make other characters by just swapping this Sprite Library Asset for another one. I also added Sprite Swap for the eyes and mouth to create facial expressions, then I added 2D IKs to the character limbs to give me better control when animating the character.After these steps, I made my character a Prefab so the changes made to it would apply to other characters. I could make tweaks to IKs, change sorting layers, add some weapons or attachments, or attach some scripts to the base Prefab, and these changes then applied automatically to the other characters. This saves a huge amount of time if you have many characters.For other characters, I imported the PSB file as before, but this time I didn’t need to make the skeleton. I simply copied it from the base character and tweaked the topology and weights of the sprite meshes to fit the new character’s shape.Importing normal maps and mask maps was even easier. I copied the character into Unity by using the shortcut Ctrl + D (Cmd + D on Mac), opened it in Affinity, and replaced all the layers with their normal map (or mask map) counterparts. As the normal map isn’t a color texture, I had to uncheck the RGB option under Advanced > Sprite Import Settings. Now I could assign the normal maps and mask maps as Secondary Textures in the Sprite Editor.The characters were now animation-ready, and they could share the same set of animations. I used the same animation clips for most of the actions but gave each character its own personality by crafting for each of them unique versions of idle and attack animations.The workflow for animating the dragon was more straightforward. It didn’t need to have custom skins so there was no extensive planning involved. I could focus on design and rigging. A lot of time went into making sure that the wings, tail, and neck were rigged correctly and without visual artifacts when animating. It’s always good practice to test extreme poses when rigging, as it will save headaches later on.The process of setting the Sprite Swap, IKs, and additional maps was roughly the same as for the bipedal characters. Not counting the two extra legs.The first thing I need is a vision of the environment I want to create. The mood and general flow of the environment are clear in my mind before I start – the visuals, gameplay, and emotions. Details can always change later, but a foundational vision allows me to focus on what I want to achieve rather than placing Prefabs randomly.I start by exporting the assets for the environment to Unity to make the Prefabs. Once I have all the pieces in the Scene, I can go wild. Unity doesn’t restrict me to any particular workflow; I can start painting with Tilemap as a base, add sprite tiling on top with Sprite Shape, place sprites by hand, add lighting and effects, such as fog or particles. Again, because I already have a clear idea of the layout of the level, I can focus on visuals.There’s also the gameplay-first approach, designing the flow of the level. With this approach, it’s good to focus on the geometry of the main interactive layer by placing all the platforms, walls, and rooms first. Add interactive elements, such as enemies, obstacles, and pickups, then test the level and iterate as required.Overall, a good practice is to separate the interactive layer from the visual elements. This approach will save you a lot of time and work; figure out the core gameplay first and then add the visuals. This way you don’t need to redo all the carefully placed flourishes when you (or the level designer) want to redo the gameplay.The features’ integration with one another makes it easy to set up sprites and secondary maps, and they just work as they should with other features like normal sprites, Tilemaps, the sprite shader, and Shader Graph.2D lightingOne great workflow is 2D lighting and mask maps in conjunction with 2D rigging. It’s a similar workflow to what you would use to set up a 3D environment. I made a simple unlit sprite, normal map, and mask map for rim lighting, and I didn’t need to repaint the asset to match the environment and lighting conditions. The sprite is lit just like it was painted. It looks hand-painted and it fits the game environment.It’s a game changer. You can even make marketing assets with this setup. You can reuse your game environment, place the characters, set up the lights, and it looks incredible. You don’t need to make poses for different characters, paint the light and shadows, etc. And on top of that, you can add some post-processing effects to change the scene’s mood.In particular, I love the way I could use 2D lights to add shadows. When the setting Use Alpha Blend on Overlap is applied on a 2D light and the light intensity is very low, the light starts to shade the environment and acts as a shadow area. I used it to make the shadow below the dragon.Sprite ShapeI can’t imagine making a 2D game without Sprite Shape. It’s very easy to set up and edit. You can have a level in a matter of minutes, so it’s good for rapid prototyping. It’s not just for making level geometry. I used it to make mine tracks, bridges, hanging ropes, background scaffolding and foreground shapes.In Dragon Crashers, to fake the blur (which is expensive on mobile devices) I used a blurred edge texture. The use of Sprite Shape is only limited by your imagination. It takes just a few seconds to edit a shape, which is a great time-saver when you need to tweak your environment. I like how you can make sharp geometric shapes or use Continuous Mirrored Point Mode to make them more rounded. Sprite Shape also generates 2D Colliders saving you time on setting them up manually.If you haven’t used Sprite Shape, try it soon to see how it can improve your workflow.TimelineAndy Touch (a senior content developer at Unity) made almost all of the systems in Dragon Crashers with Timeline. This made the creation process seamless: I could hop on and make some small changes to any of the timelines without breaking anything. I love how modular the system is and how easy it is to edit a cutscene or any other gameplay element based on Timeline. And nesting timelines in each other made the whole process even more efficient.Affinity Designer is available for use on Mac, Windows, and the iPad. It supports vector and raster workflows and tools for 2D game artists.The Pen feature in Designer has many useful shortcuts that will help you make any shape you want without switching to another tool. Start with the shortcuts that are displayed at the bottom of the Designer window.Make your art as editable as possible. The editable Compound feature will help with this. Normally when you want to combine paths, they will become one solid path without the capability for future editing. Click on one of the geometry buttons on the toolbar and at the same time hold down Alt (or Option for Mac users) and the Compound path will form a group, but every layer will have an option on how it interacts with the other layers. You can choose between Add, Intersect, Subtract, and X modes. It’s very handy!Use the Document color palette. These are colors that are set globally for your document. Any object that uses the given color will update when you change the color in the palette. It’s handy for creating variations of objects and characters.The above image shows a blue-colored warrior character. His armor legs, arms, helmet, and weapon are all blue. Let’s say you want to change his color to green. By using a document color on every part you can change the color from the swatches palette and instantly have a different character.Use Symbols. Often you will have many duplicate objects placed around your canvas, such as level tiles or bricks. But what if you want to change all of the duplicated objects? You can use Symbols. Create one object and turn it into a Symbol. Then duplicate it. Whenever we change something in one of the Symbols, the others will change too.Organize with the Assets panel. Place all of your objects in this panel, and you’ll get an overview of all the things in the game in one place. You can group them by any criteria you want: the level that the object is used on, type, color, etc. Then you can drag and drop these objects to any document you have open. You can check for visual consistency, scale, how they appear in another level, and so on. You can also make mockup screens or “screenshots” of your game.Furthermore, you can store UI elements in the Assets panel like button designs, switches, and icons, and use them when designing your game’s interface.Affinity Photo is a full-suite photo editing solution available for macOS, Windows, and iOS.The suite of Affinity apps is set up to be used interchangeably: You can open your document in either Designer or Photo, no matter which app you saved it in first. You can switch between them by using the menu command File – Edit in Designer (or File – Open in Photo).Both apps share most features; Asset Panel and some vector features are available in Affinity Photo as well. The interfaces are similar making it fast to switch between the two.The most important feature in any raster app is the brush feature. Affinity Photo has a brush engine that’s very fluid and provides all the needed functions, such as table support. You can also export and import your own brushes. I love the stroke stabilization option: When you turn it on your brush lines become very clean, which is good for making outlines.In addition to the great raster graphics and brushes, a major feature I like to use is the Live Filters. They allow you to dramatically change the look of your art without losing editability. I love the perspective filter in particular because it enables you to deform layers to match the perspective which is useful for placing windows on buildings, posters on walls, or textures on surfaces. With Live filters, you also get Live Adjustments Layers and Blend Modes, features that enable you to see results instantly.Finally, I like Layer Effects, which enables you to add gradients, drop and inner shadows, outlines, 3D effects, and more. With a bit of creativity, you can achieve almost anything with them and they’re also non-destructive.Thanks to Jarek for taking the time to share his tips on 2D art, Unity, and Affinity Designer and Photo. If you are new to Unity, learn more about Unity’s 2D toolset here.]]></description><link>https://unity.com/archive/blog/games/2d-art-creation-in-dragon-crashers</link><guid isPermaLink="true">https://unity.com/archive/blog/games/2d-art-creation-in-dragon-crashers</guid><pubDate>Fri, 30 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Marketing products in hyper-realistic ways with Unity ArtEngine]]></title><description><![CDATA[How does an office furniture manufacturer leverage 3D product visualization technologies to improve its customer experience? Given the bespoke nature of its products, Flokk decided it was time to revamp its entire web platform. A key part of this project involved digitizing all of Flokk’s chair materials and projecting them onto 3D models, which it did with the help of its trusted solutions partner, Forte Digital, and a scanning workflow that leveraged Unity ArtEngine.Flokk is a market leader in the design and manufacturing of premier workplace furniture. Sold in over 80 countries, its products include those from brands such as HÅG, Offecct, Giroflex, RH, Profim, 9to5 Seating, BMA, RBM and Malmstolen. Each day, its 2,000 employees work together to realize a common vision: Inspire great work.Design is at the heart of Flokk’s products. Each of its products can be customized, thanks to its highly efficient supply chain and manufacturing processes. However, design wasn’t always at the center of its online customer experience. In 2019, Flokk decided to change that by making a large investment in a new e-commerce platform, with the help of its trusted partner Forte Digital. A critical piece of work involved digitizing the company’s chair materials using Unity ArtEngine and integrating them into an 3D configurator developed in-house that would enable customers to design a chair in 3D within the comfort of their web browser.The results:Increased web traffic by enabling online self-serve checkout for the first timeInternal efficiencies associated with the lower requirement for physical photoshoots since Flokk can now generate high-resolution photos with a 3D configuratorIncreased reliability of the ordering experience, resulting in fewer order errors and returns, and more satisfied dealers and customersConsistency across Flokk’s branding and positioning; Flokk’s value for design is now exhibited not only in its products, but throughout all stages of the customer journeyA sustainable competitive advantage by differentiating itself in a traditional industry, where investment in real-time 3D technology can be laggingFlokk’s chairs are bespoke and have millions of potential configurations, which creates significant complexity in the company’s supply chain and ordering process. For example, for a particular office chair SKU, a customer can choose from among dozens of fabrics, specify characteristics about the seat size, lift, foot base and wheels, and add additional accessories such as a neck rest and arm rests – an experience not so dissimilar to buying a car.Design is one of the Flokk’s core tenets. The company prides itself in creating aesthetic, high-quality, durable products that its customers love. (Indeed, a single office chair is priced at $700–$2,000 USD). Customers expect Flokk’s values of quality and design to manifest in all touchpoints with the company, including the online ordering experience.However, prior to 2019, Flokk did not have the most streamlined web experience. Behind the scenes, static content posed a challenge to engaging customers. Recent acquisitions further compounded the issue of consistency and control. The old website infrastructure had low scalability and could not support the new complexity brought on by the additional brands and products, resulting in a subpar customer journey. Flokk also had no online self-serve channel.“We saw that both dealers and customers expected to find our products online, and wanted to see how they could customize them based on their needs,” explained Martina Winsell, E-Commerce Manager at Flokk. “Since our products are quite complex, it was important for us to focus on usability when thinking about the future state.”Indeed, a complete e-commerce platform overhaul was overdue. The project goals were ambitious, but clear: design a common infrastructure that unlocks the self-serve channel, enables the creation of tangential sales tools, scales with the company product portfolio, and facilitates the best customer experience possible.After deciding to make the investment, the next step was to find a trusted partner.Working at the intersection of technology, design and strategy, Forte Digital is a consulting company that builds digital products and services through long-term partnerships with its clients. Its portfolio includes companies that span many industries, such as Farmasiet (Norway’s largest online pharmacy), Nationaltheatret (a world-renowned theater), Gyldendal Akademisk (a large academic publisher), and NorgesGruppen (Norway’s largest retailer).Forte Digital’s interdisciplinary expertise has been core to its success in building solutions that create sustainable value for its customers. Such expertise also made the company an obvious choice as a partner to deliver on Flokk’s goals, and ultimately was selected to do so.At the center of the project was a common product visualization infrastructure (called the “Configurator”) that could accurately depict Flokk’s products and their many permutations, and be deployed across various web platforms, such as the customer-facing website, a new dealer tool called Flokk Hub, and other sales and marketing tools.Given Flokk’s goals for scalability and efficiency, it made sense for the Configurator to be based in 3D, in contrast to, for instance, physically photographing every chair and its configurations at every angle, which would be incredibly time and cost intensive.After aligning on the infrastructure, the next step was to do the work that would actually allow Flokk to represent its products virtually, including digitizing its many chair materials.Visual fidelity and accurate representation of Flokk’s materials were of utmost importance, and thus it made sense to adopt a scanning workflow to create digital twins of the company’s hundreds of chair materials. Other options included generating the materials procedurally (i.e., from scratch) using software, or purchasing scans from a public materials library. However, scanning Flokk’s actual materials was the only way to ensure the results would be true to life.Specifically, the project team decided to use a scanning workflow called photometric stereo, a technique that allows for the capture of a subject’s surface properties using several photographs taken with different light conditions. Using photometric stereo, one can extract data on not only albedo (i.e., color – just as a typical flatbed scanner can do) but normals (i.e., a surface’s relief pattern), and sometimes specularity and roughness, which are key inputs into creating a physically based rendering (PBR) material – the industry standard format.Given the number of materials to be digitized, the team needed the process to be as automated and consistent as possible. Piotr Bieryt, a 3D artist at Forte Digital, decided to build a custom, fully automated rig, and process the scans with ArtEngine.After assembling the rig using laser-cut plywood and 3D-printed elements, Bieryt covered the prototype’s interior with black velour to prevent discoloration and light reflections and installed a removable black plate on the bottom to capture transparency using illumination from below. The rig was then configured to be controlled by Arduino.“I love building things and automating processes, so I had a lot of fun!” Bieryt explained.He used a mirrorless Olympus 16 MP camera with a 60mm macro lens (Micro Four Thirds system) to capture the fine details on Flokk’s fabrics, and shot in RAW to ensure accurate white balance and colors. After color correction, Bieryt began his work in ArtEngine.Here’s an overview of Bieryt’s typical workflow in ArtEngine.In the example below, the sample was a 10x10 cm swatch of a semitransparent fabric from one of Flokk’s chairs. When digitizing materials, transparency requires an additional transparency channel, which can create complexity. To address this, Bieryt scanned the fabric twice, once with it lit from the sides (a standard photometric stereo capture process), and once lit from the bottom (to capture transparency).After importing into ArtEngine, he plugged each of the two image sets into a Multi-Angle to Texture node to combine the 16 images into three maps: albedo, normal, and transparency.He then applied Gradient Removal (similar to the High Pass filter in Photoshop) to both the albedo and normal maps to remove visible gradients and enable better tileability.After applying Compose Material to merge the three maps into a single material, Bieryt used Pattern Unwarp to correct for natural distortions in the fabric. Bieryt notes, “It’s worth spending time straightening a sample before scanning to reduce time spent post-processing, but if you can’t get all the kinks out, ArtEngine has great tools for correcting after the fact.”He then used Cropto frame a portion of the straightened texture with a 1:1 aspect ratio. Below is the node graph.Next came Mutation Structure, a node used to further improve tiling by using AI to recognize and eliminate repetitive patterns, while keeping the structure of the underlying pattern intact.“Mutation Structure is ArtEngine’s magic,” Bieryt notes. “It was a huge game-changer for us that allowed us to focus more on the artistic side of scanning, rather than fight with software or algorithms.”After adjusting several parameters, including the world scale factor and output dimensions, he arrived at a highly detailed 8K texture that was six times larger than the 10x10cm scanned sample and had no obvious tiling artifacts.Finally, Bieryt used Height Generation and Roughness / Gloss Generation to create height and roughness maps, as well as a final Compose Material to compile everything for easy export.Below is the final node graph.Materials that differed only by their color were scanned only once. Creating multiple colors of fabrics with the same underlying structure, as well as applying the materials to the 3D chair models and doing the final rendering, was done in Blender Cycles.Since the transformation began, Flokk has already seen tangible results. As online checkout has rolled out on a country-by-country basis, the company has seen a significant increase in web traffic. Its dealers and customers are more satisfied and delighted, boosting brand loyalty and reputation. The company also has fewer overhead costs associated with processing manual orders.The improvements are perhaps best visualized by taking a stroll through its consumer-facing website, Flokk.com. After selecting a chair of interest, users can customize nearly every aspect, view their configuration up close and different various angles, and understand the costs associated with changing certain features before deciding to place an online order.The project remains in flight as Flokk continues to expand self-service capabilities on country-specific websites and deploys new tools for its sales team and customers. For example, one current initiative aims to leverage the Configurator for a “Showroom mode,” an app installed on iPads in its showrooms around the world so customers can easily explore and order Flokk’s products while in-store.More broadly, the work has shown the entire company the importance of investing in the customer experience and adapting to shifting preferences as consumers increasingly feel more comfortable online, making purchases through the web or an app. To be sure, Flokk has positioned itself exceptionally well to compete, particularly in an industry like furniture manufacturing where investment in the end-to-end user journey can be lagging. Indeed, by choosing to continuously keep the customer experience at the forefront of its investment decisions, Flokk has created a sustainable competitive advantage that will carry the company forward through all its future successes.]]></description><link>https://unity.com/blog/industry/marketing-products-in-hyper-realistic-ways-with-unity-artengine</link><guid isPermaLink="true">https://unity.com/blog/industry/marketing-products-in-hyper-realistic-ways-with-unity-artengine</guid><pubDate>Tue, 27 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[10 rewarded video monetization lessons from meta match-3 games]]></title><description><![CDATA[Meta match-3 games are a subcategory of casual games that combine traditional match-3 puzzle mechanics (think Candy Crush) with meta layers, such as quests, collections, and mini-games. These additional layers create a series of linked cascading goals, in which users are motivated to accumulate currency and complete meta missions.Rewarded videos are an effective way to cater to and enhance these motivations, and when implemented smartly can increase session length, retention rates, and ARPDAU.But how do you unlock this potential? Below, Anna Popereko, ironSource's Game Design Consultant, shares examples of successful rewarded video implementations from meta match-3 games to help inspire you - whether you’re working in this genre or not.The importance of a good placement strategyWith good placements your rewarded videos will be highly visible and accessible. This will enable you to maximize engagement and usage rates, and in turn meet your ad revenue goals. Making rewarded videos available in the most valuable moments to the user is key to providing the best user experience.In terms of the rewards you offer users with each rewarded video, there are various possibilities. You might offer the ability to unlock in-game content and currencies, progression rewards, surprises, or even bonus levels. In order to appeal to a larger audience, it’s important to offer multiple types of rewards.10 rewarded video placements in meta match-3 gamesLet’s dive into some real life examples.1. Extra currency in home screen or shopExtra currency in the home screen or in-game shop is one of the most common types of rewarded video placements for meta match-3 games.Users in the game’s store show intent to access premium content. Most users won’t be willing to spend real money, so giving them the option to watch an ad in return for earning gems - which can then be used to unlock premium items - can be valuable to them and increase usage rates and ARPDAU for you. In the example below from Kitten Match’s in-game store, we see the rewarded video traffic driver is surrounded by the IAP offerings and is blue, helping it stand out from the green buttons around it.In Property Brothers, an ad placement for extra currency sits on the home screen and offers users 10 gems in return for watching an ad. Being specific with the number often helps drive up usage rates, because users know exactly what they’re getting in return.2. Double or triple rewards at the end of a levelEnd-of-level rewarded video placements can provide progression-based or monetary value to users. What does that mean exactly?When a user completes a level and earns a prize, you can offer them the opportunity to double or triple its value by watching a rewarded video ad. That’s what the publisher Special did in its meta match-3 title, Kitten Match. This placement seeks to tap into the positive and rewarding feeling the user has after completing a level.3. Add moves after failingIf users don’t pass the level in the amount of moves the game gives them, consider placing a rewarded video that gives them more moves. Typically we see 3 to 5 moves being offered for watching the ad - we’ve also seen developers use a wheel of fortune which contains different quantities of additional moves.To avoid IAP cannibalization, make sure you offer less moves through rewarded video than what you offer with in-app purchases. For instance, if you offer 5 moves for $1.99 in the store, give up to 3 as a reward for watching your ads. You should also limit the number of “Add moves” rewarded video placements users can watch per session - if this is unlimited, they’ll have no reason to pay for extra moves in the store.The example below is from Ohana Island - note how the rewarded video traffic driver stands out in blue.4. Extra life after running out of livesAlternatively, when a user runs out of lives, you can use a progression-based reward - like an extra life - that lets them keep playing in exchange for watching a rewarded video. In the example below, from Kitten Match, the user is able to unlock a free life after failing the level instead of waiting for their life to automatically restore. In this case, the user has double the incentive to save time and gain a life through watching the rewarded video.To increase the engagement rates for these placements, add a countdown to give users a sense of FOMO if they don’t engage. As always, you can test this out through A/B testing.You can also use more unpredictable end-of-level placements, for instance offering users a chance to spin a wheel full of prizes, or even opening a simple “surprise box”.5. Start with a bonusThis ad placement gives users extra help for the upcoming level. It can be used in different ways: the placement could offer a random power up, a specific power up, or additional moves.Take the example below, from Property Brothers: users can click “Play” to start the level, or they can click “Play” to start the level with 2 extra moves - which sounds more appealing. Note how the game shows the user the goal of the upcoming level, giving the user a sense of challenge - a feeling that perfectly aligns with the desire to gain extra moves via the rewarded video.6. Surprise chest boxesThere are various ways to use chest boxes with rewarded videos: the traffic driver for the mystery box could appear only after specific achievements, like collecting a certain number of bombs; it could appear on a timer basis, every few hours; or it could appear based on progress, such as every two or three levels. Alternatively, you can enable users to unlock a chest box immediately by watching a rewarded video placed on the homescreen.To increase engagement and usage rates for your chest box placements, take over the screen with the offer, rather than putting it as a small button in the corner of the screen. Check out the example below from Storyngton Hall - this screen takeover can be shown during a level or at the end. Note how the design is exciting and makes the box seem magical and valuable.7. Multiple videos in a rowInstead of showing a one off rewarded video placement, you can encourage users to watch multiple videos consecutively in order to win a lucrative reward.Offer a small reward for each one, and also test out adding a roulette or spinning wheel with a generous prize at the end as a bonus to the user.This can help encourage them to get to the end of the multiple rewarded video placement and ensures they end on a positive note. To help users better understand there are still more videos to watch, while giving them incentive to watch many in a row, add a checkmark next to every video they complete.Check out this example from Storyngton Hall - it offers users to watch 5 ads in a row, earning 50 coins for each video in addition to a special mystery reward after the fifth video.Make sure that the rewarded video provider you’re working with can guarantee zero latency, like ironSource does. You want to make sure the next ad is always available and ready to play - otherwise you risk damaging your game’s user experience.8. Daily bonusUse daily bonuses as a retention boosting mechanism. The placement can be used in different ways: for example, you could give users a daily bonus for free and use the rewarded video to multiply the offer, or you could provide rewarded videos to users as a way to unlock daily rewards that ordinarily cost real money.The example below is from Jam City's game, Vineyard Valley, which gives users 100 coins as a free daily bonus, and offers an additional, mysterious bonus through watching a rewarded video. Note that they clearly state what users need to do and what they get in return using copy. Also, they encourage users to log in again the next day for more rewards - clearly showing its objective of increasing retention.9. In-level bonusIn-level bonuses let users unlock boosters inside the game’s levels by watching rewarded videos. These placements help players pass the level - the more people win, the more they can continue playing. The longer people spend playing your game, the greater your opportunities are to monetize your content. In this regard, it’s a similar logic to the “add more moves” placement.In terms of the traffic driver itself, place it in the corner of the screen from the start of the mission, and make sure it’s animated enough to grab users’ attention while being non-disruptive to the gameplay experience. In Hell’s Kitchen, the developer places the traffic driver on the right side of the screen, using a video symbol to make it clear that it’s a rewarded video placement, and a purple background to help it stand out.Once the user opens the ad, they see a wheel of fortune that contains several types of boosters.10. Extra choiceRewarded ads that give users extra choices are particularly effective in choice-based or narrative games, where choosing from a selection of on-screen sentences or items directly impacts the gameplay experience.For example, in a narrative-based game, one choice might be a free but less appealing choice, while the other two options are much more appealing but require gems or in-game currency to select.Using rewarded video to give users extra currency to unlock the best options is an effective strategy for maximizing revenue while helping users get the most out of their experience.Step into your users' shoesUse these examples as inspiration, but be sure to A/B test everything you implement in your own game. Ultimately, putting yourself in your users’ shoes will help you provide the most valuable placements with the best user experience. If you focus on that, high engagement rates, usage rates, and ARPDAU will come naturally.Finally, continue looking for inspiration from other game genres, make sure to research what your competitors are doing, and stay updated with your genre’s benchmarks for engagement and usage rates. That way, you have a reference point to measure whether your placements are performing well or not.]]></description><link>https://unity.com/blog/rewarded-video-monetization-lessons-from-meta-match-3-games</link><guid isPermaLink="true">https://unity.com/blog/rewarded-video-monetization-lessons-from-meta-match-3-games</guid><pubDate>Tue, 27 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to attract users to your rapid delivery app and hang on to them]]></title><description><![CDATA[Rapid delivery apps, or apps that deliver groceries within 10-30 minutes of app order, are attracting millions of users as well as tons of big name investors. PitchBook estimates that investors have coughed up $14 billion into these services since the beginning of 2021, giving rapid delivery apps the capital to improve and optimize - and it makes perfect sense why they’re getting so much attention. Because of the pandemic, users have made it a habit to start ordering their groceries through apps, and receiving those groceries within 30 minutes of an app order is a pretty innovative concept.Rapid delivery apps are largely operating out of major cities across the UK, US, and Europe, with a few first movers leading the market in these areas - Getir, Flink, Gorillas, Gopuff, Weezy, Dija, Jiffy, Fancy and Snappy are all notable names. However, with competition rising (smartphone use of grocery delivery apps rose over 40% in 2020 according to eMarketer) and such a large amount of capital being poured into these services in only a year, it’s becoming challenging for rapid delivery grocery apps to attract and hang on to users. Ultimately, everyone is chasing market dominance, but only a few will get to be the app of choice.So, how can you crush the competition, reach more users for your rapid delivery app, and ensure they stick around? Here are three strategies to get you started.Reach users first and keep them longerMany users are already using rapid delivery apps, but the space is still fairly new - with most companies established just last year in 2020. There are millions of users who are unaware they can get Advil delivered in minutes without ever leaving the house, and it’s important to align your UA strategy to reach those users before the competition does first.Think about the potential for growth by reaching app users directly on devices while they’re setting up their new phones. With 95% of users downloading 40% of the apps that will be installed throughout the lifetime of the device (that’s a long time) during the first 48 hours after purchasing their new phone, device setup is a critical touchpoint to become the app of choice.For example, ironSource Aura uses contextual information to place your app in front of users who are likely to engage during a customized device set up experience.Especially in such a young industry, optimizing your marketing tactics towards attracting users that will be loyal to your app is vital to beating out the competition. But a solid UA strategy must accompany a solid product, which leads us to the next point.Choose the delivery model that optimizes convenienceUltimately, users order from rapid delivery apps because they want their items fast, and they are even willing to pay more for it. To attract and keep users, you should be doing everything you can to make your service the most convenient and efficient - and that starts with the delivery model you choose.With most users ordering from rapid delivery services for urgent essentials or last minute items, these companies are fitting into users’ lives for the in-between, spontaneous moments. As people continue to live hectic and demanding lives, it’s important to position your app as a convenience offering through an integrated model.Some rapid delivery apps claim a vertically integrated model - where they source and own their inventory. In these cases, the service handles the warehouse and delivery logistics. Other apps have taken it a step further by hiring couriers as full time employees, ensuring that there are always people on standby to deliver. At the end of the day, choosing one of these models and sticking to it will give you the upper hand in achieving the fastest speeds in the long run.Once the bones are good, you can start thinking about your value proposition that will set you apart.Differentiate your product offeringAs we mentioned, the number of rapid delivery apps has exploded in the past year, making it hard to stand out. To acquire users that will likely stick around, focus on building a product that offers something unique and valuable.Ultimately, you don’t have to be the fastest to get a leg up. You can differentiate your product according to service and type of items offered. For example, you can increase your delivery range, allowing you to reach users outside of major cities. You could also offer items from specific retailers, such as local or organic grocery stores. The Istanbul based app, Getir, not only boasts about its ability to deliver over 1,000 products, but also differentiates itself by delivering around the clock.It’s also important to consider differentiating your product by offering promotions. Since time is of the essence in the rapid delivery space, it’s important to take responsibility for underperformance - try offering some sort of compensation when an order is late. You could also entice users to sign up by offering a promo with the first order. You could use marketing channels, such as ironSource Aura which has a full screen offer placement, to show these promos.As an example, Getir increases its value by not charging a delivery fee for orders over £10. By showing users that you care about quality and their needs, you’ll retain more for the long-term - over 70% of users stick with a brand with friendly employees and quality customer service according to Nextiva.In this incredibly saturated market, differentiation is a must. There are infinite ways to make your product stand out, and it all comes down evolving and innovating in a unique way.Rapid delivery apps are among one of the most innovative and disruptive concepts that came out of the last couple of years - it’s rare for a new idea to affect the market as much as rapid delivery has. On top of that, investors across the world, including Ophelia Brown from Blossom Capital, are saying they have never seen anything like the amount of capital that has gone into rapid delivery all at once, allowing them to grow in an unprecedented way. So, it’s clear that rapid delivery apps are not going anywhere, and with all this funding and attention being poured into the industry, competition is only going to increase. It’s valuable to prepare yourself for that competition by finding new ways to attract users and keep them around. Looking at your business model, finding ways to differentiate your product, and analyzing your UA strategy are great places to start.]]></description><link>https://unity.com/blog/how-to-attract-users-to-your-rapid-delivery-app-and-hang-on-to-them</link><guid isPermaLink="true">https://unity.com/blog/how-to-attract-users-to-your-rapid-delivery-app-and-hang-on-to-them</guid><pubDate>Thu, 22 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Your toolkit for self-publishing a hit mobile game]]></title><description><![CDATA[Editor’s note: This article is based on Antti Hattara’s exclusive presentation at LevelUp 2021. Antti is a mobile games industry veteran based in Berlin. He’s currently the founder and CEO of indie studio Starberry Games. Check out the video from LevelUp 2021 below.Many developers at some point ask themselves the question: should we launch and run the game ourselves, or should we partner with a publisher? While it may seem daunting to do it alone, it is possible to succeed going down the solo route.There are two main parts to self-publishing: distributing a mobile game globally in the app stores on your own account, and operating the game as a service - which entails marketing, analytics, and support. We self-published Merge Mayor: Idle Village and learnt a lot along the way. Below, we’ll share the market tools we used during the tech launch, from conceptualization and production, in addition to the soft launch phase.Tech launchConceptThe conceptualization phase is all about market research and gathering customer insights. We used AppAnnie for insights on market size, trends, and our category's benchmarks. We also used Geeklab to test our concept, its theme, and art style by running low scale marketing campaigns that directed users to a simulated app store landing page. This is a great way to check if your ideas have market potential and strong appeal - there's no point investing time and resources in building a game that doesn't have an audience. It also helps guide your app store optimization, to see which colors, screenshots, and graphics bring about the highest conversion rates and lowest CPIs. Optimizing these metrics will enable you to scale your game in the most economically efficient way - so getting started as early as the concept phase is highly recommended.Once you’ve formed a stronger idea of what your game concept will look like, it’s time to start deepening your understanding of your target audience. This brings us to the customer insights part of the concept phase.We used three tools to better understand our players: PlaytestCloud, where we ran usability tests for our concept and tested our competitors’ games; Smartlook, where we collected real recordings from users playing our game, and observed how they progressed over multiple sessions (you should insert a pop up message to the users you're observing that allows them to opt-in to being tracked); and 12 Traits, which provide in-game questionnaires that allow us to build audience profiles and predict what our future audience would care about.ProductionWe’ve reviewed the game concept phase, and now we can move on to our next stage - testing a more built-up product. There is a simple set of tools I believe everyone should be using to test the games as early on as possible in the market. The first is Google Open Beta, which allows you to keep your game under the radar while still running UA campaigns. This means you can acquire paid users, and your game will receive no organic traffic from app stores - it won’t appear in searches or game category lists. Users can leave feedback but aren’t able to leave public reviews - helping you improve your game design and the user experience without the risk of negative public comments.Now your game is available to install, you want to drive some traffic. Facebook Ads are a great way to start: their campaigns are simple, effective, and suitable for small budgets. In addition, their ad creatives tool provides 30 second videos or banner carousels, using content you've simply captured from your device. For Merge Mayor, for example, we used Facebook Ads to acquire quality users from the UK at $0.35 per install. Once you begin driving installs from new users, you want to start using an analytics tool such as Facebook, Google Firebase, Unity, or GameAnalytics to measure your KPIs. At this stage, focus on essential metrics like early retention (Day 1 to Day 3), session lengths, and track how users progress through your levels. Soft launchUpgrading your analytics capabilitiesAfter this testing phase, you’ll step up your game's development as you prepare for a soft launch. As you build out your game, you'll need to answer more advanced questions about your user behavior and game metrics - and for that you need to upgrade your analytics tech stack.Try data warehouse tools like Google BigQuery, where you can build the data engineering yourself; DeltaDNA, which deals with the backend and lets you just operate your analytics; or use a full service tool that handles the backend and operations, like Dive. In addition, integrate an attribution partner to get data about post-install actions and where your installs are coming from. The top options are Appsflyer, Adjust, Singular, and Tenjin. Thinking about growthAt this stage, start thinking seriously about in-game monetization and expanding your user acquisition. For tracking in-app purchases, make sure to use in-app receipt validation, which helps keep your data clean - you can build it yourself or implement it through your attribution partner.It’s equally important to think about your ad monetization early on. For Merge Mayors, we use ironSource's mediation solution to manage our ad monetization strategy: we’re delighted with it, particularly its quick and efficient setup process, integration with AppsFlyer, and its cohort-based ad LTV reporting. The next stage is expanding your marketing efforts, using multiple UA channels like ironSource, Google Admob, and Unity Ads, in addition to Facebook Ads. Ahead of your soft launch you should experiment with different campaign types - from app install campaigns to event-focused campaigns. Also be sure to iterate your ad creatives and A/B test many variations to find the top performers. Expanding your marketing is as important as it is time-consuming - you should look into hiring someone to head this effort internally or use an agency.Laying the foundation for a big global launchLeveraging a combination of these tools will help set you up for a successful global launch. Once you’ve shipped your game and begun scaling UA, your work is only getting started. You need to constantly be optimizing your marketing and monetization, and dedicating resources to increase retention through liveops - from frequent game updates to in-game seasonal events. That’s a big topic which needs its own session - hopefully next year I’ll be back to take your through our liveops strategy with Merge Mayor.]]></description><link>https://unity.com/blog/your-self-publishing-toolkit-for-shipping-a-hit-mobile-game</link><guid isPermaLink="true">https://unity.com/blog/your-self-publishing-toolkit-for-shipping-a-hit-mobile-game</guid><pubDate>Tue, 20 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to build games at rapid speed: Q&A with Rappid Studios]]></title><description><![CDATA[ironSource sat down with our mediation partners Nikos Tourlos and Antonis Taglartzis, co-founders of the indie studio Rappid, to learn all about their gamedev journey - from developing games as university students to pursuing game development full-time.

Keep reading for a transcript of the conversation and more of Rappid Studio’s insights on how to build a game at rapid speed - with just two people at the helm.How did you first get started in gaming?We started making games for fun 7 years ago as computer science students at the University of Athens, we never imagined we would be successful at it at the time. After about a year of figuring things out, we started working at it on a more serious level and started producing bigger and better games. Ιt took us about 4 years of building up our professional game development experience to come up with Epic Battle Simulator.What’s your favorite part about developing games?Antonis: It’s incredible and seems surreal that we are able to apply theoretical knowledge – math, physics, etc. everything we were taught since childhood, comes to life in the games we make. We can see science coming to life through our games. It is extremely rewarding to know that so many people are enjoying our games and are engaged in them as we speak.Nikos: The most exciting part of developing games, for me, has to be when one of our games goes live and comes to life, as players are engaging with our ideas, our game mechanics, our graphics and we know they are having fun.Was it easier to build the game or grow the game?Nikos: We generally build games fast. We pretty much know what we want to make, how to do it, and how to make it profitable. Making the game isn’t the hardest part for us. Growing the game and keeping users engaged with it requires a lot of commitment and hard work.Antonis: For us it’s easier to make the game. Marketing the game and making it successful is trickier. You can make a great game that can just as easily turn out to be a huge success or flop. We’ve had experience with both outcomes.How long did it take to build the game from concept to production?Antonis: Our average time has been 2-3 weeks per game. We are fully dedicated, focused and efficient when making games and we complete each other as a team. Nikos works mornings and I work nights so it’s a 24-hour a day operation. Production moves quickly and that’s why we named our studio Rappid. We like making games fast.What is the most challenging part about being a game developer?Nikos: In Greece there is very little in the way of a gaming industry, there are no large gaming companies based here, no gaming hubs and not enough professional expertise at the developer level. It’s difficult finding world-class experienced game developers to work with, in order to create world-class games. We are doing our part, pitching in to help build this up, but it is a slow process.What inspired your games?Nikos: We create games we believe the players will enjoy playing, as well as games that we believe are missing from the field. We carry out a lot of market research into what games we should make. There are for example a lot of racing games out there and you might think that another racing game is going to be redundant. This is exactly where opportunities exist, filling the gaps you discover in otherwise saturated genres.What advice would you give to other indie developers trying to make it?Antonis: Keep at it and never give up. It might sound cliché but this is exactly what you need to do: make a lot of games and a lot of different kinds of games. Trial and error. Each time you get better, each time you make better games learning from your mistakes. It’s a learning and it’s an iterative process. Sticking with it and being consistent is critical. You can’t do that if you don’t love what you do, so that’s a good starting point.Nikos: We’ve made more than 60 games. We just kept making games, always keeping ourselves in the discovery process while making them, where we went wrong, how to do it better next time, learning from our mistakes. Learning to make better games through our failures, discovering if it was the concept, the mechanics, or the market. After experiencing more than 60 such iterations we are in a very good position to know what we need to make and we keep making it. So, I would say never stop creating.]]></description><link>https://unity.com/blog/indie-gamedev-spotlight-qa-with-rappid-studios</link><guid isPermaLink="true">https://unity.com/blog/indie-gamedev-spotlight-qa-with-rappid-studios</guid><pubDate>Wed, 14 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[ML-Agents plays DodgeBall]]></title><description><![CDATA[In the latest ML-Agents blog post, we announced new features for authoring cooperative behaviors with reinforcement learning. Today, we are excited to share a new environment to further demonstrate what ML-Agents can do. DodgeBall is a competitive team vs team shooter-like environment where agents compete in rounds of Elimination or Capture the Flag. The environment is open-source, so be sure to check out the repo.The recent addition of the MA-POCA algorithm in ML-Agents allows anyone to train cooperative behaviors for groups of agents. This novel algorithm is an implementation of centralized learning with decentralized execution. A centralized critic (neural network) processes the states of all agents in the group to estimate how well the agents are doing, while several decentralized actors (one per agent) control the agents. This allows each agent to make decisions based only on what it perceives locally, and simultaneously evaluate how good its behavior is in the context of the whole group. The diagram below illustrates MA-POCA’s centralized learning and decentralized execution.One of the novelties of the MA-POCA algorithm is that it uses a special type of neural network architecture called attention networks that can process a non-fixed number of inputs. This means that the centralized critic can process any number of agents, which is why MA-POCA is particularly well-suited for cooperative behaviors in games. It allows agents to be added or removed from a group at any point – just as video game characters can be eliminated or spawn in the middle of a team fight. MA-POCA is also designed so that agents can make decisions for the benefit of the team, even if it is to their own detriment. This altruistic behavior is difficult to achieve with a hand-coded behavior but can be learned based on how useful the last action of an agent was for the overall success of the group. Finally, many multi-agent reinforcement learning algorithms assume that all agents choose their next action at the same time, but in real games with numerous agents, it is usually better to have them make decisions at different times to avoid frame drop. That’s why MA-POCA does not make these assumptions, and will still work even if the agents’ decisions in a single group are not in sync. In order for us to show you how well MA-POCA works in games, we created the DodgeBall environment – a fun team vs team game with an AI fully trained using ML-Agents.The DodgeBall environment is a third-person shooter where players try to pick up as many balls as they can, then throw them at their opponents. It comprises two game modes: Elimination and Capture the Flag. In Elimination, each group tries to eliminate all members of the other group – two hits, and they’re out. In Capture the Flag, players try to steal the other team’s flag and bring it back to their base (they can only score when their own flag is still safe at their base). In this mode, getting hit by a ball means dropping the flag and being stunned for ten seconds, before returning to base. In both modes, players can hold up to four balls, and dash to dodge incoming balls and go through hedges.In reinforcement learning, agents observe the environment and take actions to maximize a reward. The observations, actions, and rewards for training agents to play DodgeBall are described below.In DodgeBall, the agents observe their environment through the following three sources of information:Raycasts: With raycasts, the agents can sense how the world around them looks. Agents use this information to detect and grab the balls, avoid walls, and target their opponents. Different sets of raycasts – represented by different colors below – are used to detect different object classes.State data: This information includes the position of the agent, the number of balls it currently holds, the number of hits it can take before being eliminated, as well as information about the flags in Capture the Flag mode. Agents use this information to strategize and determine their chances of winning.Other agents state data: This information includes the position and health of the agent’s teammates, and whether any of them are holding a flag. Note that, since the number of agents is not fixed (agents can be eliminated anytime), we use a Buffer Sensor for agents to process a variable number of observations. Here, the number of observations refers to the number of teammates still in the game.The DodgeBall environment also makes use of hybrid actions, which are a mix of continuous and discrete actions. The agent has three continuous actions for movement: One is to move forward, another is to move sideways, and the last is to rotate. At the same time, there are two discrete actions: One to throw a ball and another to dash. This action space corresponds to the actions that a human player can perform in both the Capture the Flag and Elimination scenarios.Meanwhile, we intentionally ensure that rewards given to the agents are rather simple. We give a large, final reward for winning and losing, and a few intermediate rewards for learning how to play the game.For Elimination:Agents are given a +0.1 reward for hitting an opponent with a ball.The team is given +1 for winning the game (eliminating all opponents), or -1 for losing.The winning team is also awarded a time bonus for winning quickly, equal to 1 (remaining time) / (maximum time).For Capture the Flag:Agents are given a +0.02 reward for hitting an opponent with a ball.The team is given +2 for winning the game (returning the opponent’s flag to base), or -1 for losing.While it is tempting to give agents many small rewards to encourage desirable behaviors, we must avoid overprescribing the strategy that agents should pursue. For instance, if we gave a reward for picking up balls in Elimination, agents might focus solely on picking up balls rather than hitting their opponents. By making our rewards as “sparse” as possible, the agents are free to discover their own strategies in the game, even if it prolongs the training period.Because there are so many different possible winning strategies that can earn agents these rewards, we had to determine what optimal behaviors would look like. For instance, would the best strategy be to hoard the balls or move them around to conveniently grab later? Would it be wise to stick together as a team, or spread out to find the enemy faster? The answers to these questions were dependent on game design choices that we made: If balls were scarce, agents would hold on to them longer to prevent the enemies from getting them. If agents were allowed to know where the enemy was at all times, they would stay together as a group as much as possible. That said, when we wanted to make changes to the game, we did not have to make any code changes to the AI. We simply retrained a new behavior that would adapt to the new environment.Compared to training a single agent to solve a task, it is more complex to train a group of agents to cooperate. In order to help manage a group of agents, we created the DodgeBallGameController.cs script. This script serves to initialize and reset the playground (this includes spawning the balls and resetting the agents’ positions). It assigns agents to their SimpleMultiAgentGroup and manages the rewards that each group receives. For example, this is how the DodgeBallGameController.cs script handles an agent hitting another with a ball.In this code, the ball thrower is given a small reward for hitting an opponent – but only once the last opponent is eliminated will the whole group be rewarded for their collective effort.MA-POCA handles agents in a SimpleMultiAgentGroup differently than it does individual agents. MA-POCA pools their observations together to train in a centralized manner. It also handles the rewards given to the whole group, in addition to the individual rewards – no matter how many agents join or leave the group. You can monitor the cumulative rewards that agents receive as a group in TensorBoard.Since both Elimination and Capture the Flag are adversarial games, we combined MA-POCA with self-play to pitch agents against older versions of themselves and learn how to beat them. As with any self-play run in ML-Agents, we can monitor the agents’ learning progress by making sure the ELO continues to increase. After tens of millions of steps, the agents can play as well as any of us.This video shows how the agents progress over time when learning to play Elimination. You can see that, early into the training, the agents learn to shoot but have poor aim and tend to shoot at random. After 40 million timesteps, the agents’ aim improves, though they still wander somewhat randomly in hopes of running into an enemy. When they do meet an opponent, they typically engage them one-on-one. Finally, after another 120 million timesteps of training, the agents become much more aggressive and confident and develop sophisticated strategies, such as charging into enemy territory as a group.And here are the agents learning how to play Capture the Flag: Early in the training, at 14 million steps, the agents learn to shoot each other, without actually capturing the flag. At 30 million, the agents learn how to pick up the enemy flag and return to base, but other than the flag-carrying agent, it’s not clear how the other agents contribute. By 80 million timesteps, however, the agents exhibit interesting strategies.Agents who aren’t holding the enemy flag will sometimes guard their own base, chase down an enemy who has their flag, or wait in the enemy’s base for the flag-bearer to return and pummel them with balls. If they have a flag, the agent might wait at their own base until their teammates can retrieve the flag so they can score. The following video highlights some of the interesting emergent strategies that the agents have learned. Note that we never explicitly specified these behaviors – they were learned over the course of hundreds of iterations of self-play.The DodgeBall environment is open source and available to download here. We’d love for you to try it out. If you’d like to work on this exciting intersection of Machine Learning and Games, we are hiring for several positions and encourage you to apply here.Finally, we would love to hear your feedback. For any feedback regarding the Unity ML-Agents toolkit, please fill out the following survey or email us directly at ml-agents@unity3d.com. If you encounter any issues, do not hesitate to reach out to us on the ML-Agents GitHub issues page. For any other general comments or questions, please let us know on the Unity ML-Agents forums.]]></description><link>https://unity.com/blog/engine-platform/ml-agents-plays-dodgeball</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/ml-agents-plays-dodgeball</guid><pubDate>Mon, 12 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to level up your rewarded video monetization]]></title><description><![CDATA[Rewarded videos are the king of ads - which when implemented smartly can be essential parts of a mobile game’s core loop. For users, rewarded videos provide access to a variety of rewards that offer in-game currency or progression boosts - often at times when they’re very much needed. Because they’re opt-in, meaning the user chooses to interact with the ad, the user experience is typically a very positive one. As a result, 32% of gamers see rewarded video as being twice as useful as all other advertising formats, according to Marc Milowski, Strategic Partner Manager at Facebook Audience Network.For game developers, rewarded videos serve as a meaningful revenue stream that also increases retention rates, by enabling users to progress faster and enjoy premium content for free. Rewarded videos are so beneficial to everyone involved that 79% of developers running both in-app ads and in-app purchases said rewarded video was their most successful monetization format.However, succeeding with rewarded video requires a well-thought out plan and partnering with the right mediation platform - one that has the strongest tech tools to support a high growth rewarded video strategy. Below, we share our best practices to ensure you maximize revenue and keep your users as happy as possible.1. Perfect the UX by removing latencyThe positive experience rewarded video creates for users strengthens game retention and lays the foundation for strong engagement rate and usage rates - and in turn ARPDAU.Preserving this positive user experience is key to ensuring a successful rewarded video strategy over the long-term, and latency is a key factor in dictating that UX - in other words, whether or not the ad is served instantly after a user clicks on the traffic driver or button for the ad, or if there’s a delay in filling the ad space that causes the user to stare at a blank screen.Developers generally choose from three options when managing latency’s impact on the user experience. The first approach is to only show users a rewarded video traffic driver when there’s an ad ready to display. The second option is to always display the traffic driver, and if the ad inventory isn’t filled, users are left staring at a blank screen until they exit out. The third option is the same as the second, just with a slightly better user experience - if an ad isn’t available, a pop up will appear that states this.The drawbacks of these options are clear, harming ARPDAU, the user experience, or both. That’s why in recent years, developers have dedicated considerable time to optimizing their monetization strategy - typically through hybrid bidding and waterfall setups - to find the balance between sophisticated auctions and reduced latency. However, even the most optimized setup can’t deliver zero latency.That’s why you need to find a mediation platform that has dedicated technology to remove latency entirely. ironSource, for instance, developed an industry-first mechanism known as progressive loading, which ensures that there is always a rewarded video ad available, with no waiting.Not only does this ensure a perfect user experience by enabling users to watch multiple rewarded videos without a delay in between, it also means developers don’t need to deal with the time-consuming burden of latency management.Progressive loading in actionSince progressive loading was implemented in ironSource’s mediation, we've seen revenue shoot up between 3% to 20% per app. This range is mainly affected by genre - the deeper the game, such as those in the casual or midcore categories, the more significant the impact of progressive loading. That's because these games by design provide more opportunities for users to watch rewarded videos. In addition, games in these categories have more complex in-game economies, which the ads' rewards provide real value to.Design tips to leverage progressive loadingTo maximize usage rates of your rewarded video ads and leverage the power of progressive loading, we recommend using stacked multiplier rewards for a strip of rewarded videos. For example, the user watches one video and unlocks a "double income for 4 hours" reward. If they watch another video in the strip, 4 more hours will be added to the boost. Typically, developers add a limit to this cycle, for example up to 12 hours worth of boosts.Another option is encouraging users to watch several rewarded videos in a row to get a mystery box or a specific reward. We’ve also seen developers offer users the ability to open a treasure chest by watching a rewarded video, and as soon as they open it, offer them the possibility of doubling their chest loot by watching another rewarded video.That’s not all - a user may decide to open up a standard rewarded video placement on the game’s home screen multiple times in a row - especially in idle games that revolve around currency accumulation or scaling production. Each rewarded video ad could offer a multiplier that doubles or triples the earnings from the previous ad. Whatever the scenario and session depth, users can experience multiple ads with zero latency between them thanks to progressive loading.Make sure you A/B test different types of rewards and see which ones have the biggest impact on engagement and usage rates for your rewarded video ad placements. Maximizing the value you provide your players and encouraging them to watch multiple ads should be your focus - progressive loading technology will take care of the zero latency part for these multiple ads to ensure a perfect user experience.2. Use in-app biddingThe right in-app bidding partner will help you get the most out of your rewarded video ad placement strategy by maximizing your ARPDAU.There are four ways it does this - first, bidding strengthens competition for every impression, which means ad networks will bid higher than they usually would in order to outbid their competitors and fill your rewarded video inventory with an ad.Second, because all ad networks have the opportunity to bid to fill your ad request - not just the networks at the top of the waterfall - you never leave potential money on the table for your rewarded video placements.Third, with in-app bidding, bids for impressions are received in real time, which is more accurate than the flat [tooltip term="ecpm"]eCPM[/tooltip] or historical data used in waterfalls. This ensures you, as the developer, never undersell your impressions.Finally, sometimes ad networks are willing to pay top dollar for specific ad impressions - we’ve seen CPMs exceed $200 in some cases. You might not have accounted for such a high bid in your waterfall instances setup - if you’ve set your top instance at $50, you’d miss out on this potential revenue. In-app bidding ensures you’re always able to maximize your earnings thanks to its auction-like methodology.3. A/B test a variety of placementsOne of the best attributes of rewarded video ads is their potential to be implemented in very creative and innovative ways that complement the game experience. This brings us to the world of placement strategy.There’s two reasons why your placement strategy is key. First, with good placements your rewarded videos will be highly visible and accessible: this will maximize engagement and usage rates, and in turn meet your ad revenue goals. Second, a good placement strategy is also key to providing the best user experience. It’s not enough to make your rewarded video ads just visible - you need to make them visible in the right situations, when the rewards will be most valuable to users.That’s why adding different types of rewarded videos that offer users progression or currency-based rewards at multiple spots throughout your game is recommended. Below we unpack some of the most popular placements we’ve come across.Extra currency in home screen or shopExtra currency in the home screen or in-game shop is a common type of rewarded video placement. The traffic driver in the home screen can be left there for a limited amount of time or indefinitely, giving users the option to earn rewards whenever they need - just keep a close eye on IAP cannibalization.When users are in the game’s store, they’re showing some kind of intent to access premium content. Most users won’t be willing to spend real money, so giving them the option to watch an ad in return for earning gems - which can then be used to unlock premium items - can be very effective.Extra life after failingWhen a user fails a level, you can use a progression-based reward - like an extra life - that lets them keep playing in exchange for watching a rewarded video. In some games, developers let users automatically gain an extra life without watching an ad - but they have to wait a minute or more to receive it. As a time-saving alternative, users can open the rewarded video ad in order to gain the extra life and resume their play session.Double or triple rewards at the end of a levelA popular rewarded video placement is to offer a multiplier at the end of a level. Here, the rewarded videos can provide monetary or progression-based value to users. What does that mean exactly? When a user completes a level and earns a prize, you can offer them the opportunity to double or triple its value by watching a rewarded video ad.Surprise chest boxesThere are various ways to use chest boxes with rewarded videos: the traffic driver for the mystery box could appear only after specific achievements, like collecting a certain number of bombs; it could appear on a timer basis, every few hours; or it could appear based on progress, such as every two or three levels.Daily bonusDaily bonuses are a type of rewarded video placement that developers use as a retention boosting mechanism. The placement can be used in different ways: for example, you could give users a daily bonus for free and use the rewarded video to multiply the offer, or you could provide rewarded videos to users as a way to unlock daily rewards that ordinarily cost real money.Reward your users, reward your businessAn optimized rewarded video strategy can be the difference between a game business struggling to make a profit and one meeting all its KPIs. Progressive loading is a game-changer that unlocks what all developers strive for: a perfect user experience, no time-consuming latency management, and increased ad revenue. In an industry where the finest of margins can make all the difference, this winning trifecta helps provide a competitive advantage to scale game growth.The combination of leveraging the power of progressive loading technology - available only on ironSource’s mediation - with in-app bidding and a mix of classic and innovative ad placements will lay the foundation for success. Specifically, these best practices will keep users happy and engaged in your game, keep them coming back to your rewarded video placements, and as a result, driving up your ARPDAU over the long-run.]]></description><link>https://unity.com/blog/how-to-level-up-your-rewarded-video-monetization</link><guid isPermaLink="true">https://unity.com/blog/how-to-level-up-your-rewarded-video-monetization</guid><pubDate>Wed, 07 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Indie GameDev Spotlight: Q&A with NimbleBit]]></title><description><![CDATA[ironSource sat down with our mediation partner Ian Marsh, co-founder at NimbleBit, to learn how he and his team made it big as an indie game developer.NimbleBit started developing games back in 2008, when the iPhone was just born, and since then has amassed millions of downloads across its portfolio - many even still play their games from 10+ years ago. Keep reading for a transcript of the conversation and more of Ian's insights on how to build a game that lasts.How and why did you first get started in gaming?My twin brother David and I were big fans of video games growing up, and in high school I started to learn how to program really basic stuff like, HTML and flash. Meanwhile, my brother started making levels for one of our favorite games at the time, Counter Strike, and some of their mods.In 2008, David, with another friend of ours, started NimbleBit and their first game, which was a cart racing game on Steam - an ambitious first project that included multiplayer real-time physics.2008! So you were really early to the space. What was it like to develop games back then?At the time, I put out a game called Hanoi - a really simple puzzle game where you had to move different size disks across the screen on different sized pegs. It's a classic computer science thought experiment. I put it up on the App Store for free because I thought eventually my family members and friends might get iPhones and I could show them what I made.Hanoi ended up reaching #1 on the App Store’s free download charts and getting millions of downloads.That was the biggest thing I've ever made. It was the first software I even published myself, so I was kind of blown away. We then put up an extended version of the game for $0.99, which ended up generating more money than my day job. That’s when I quit and started publishing apps under my own name.Being so early, how did you deal with the increase in market competition over the years?To get a leg up, we decided to try something creative and start doing these “free weekends” where we would put our $0.99 or $2.00 games up for free for the weekend. They would get a ton of downloads and then we'd flip them back to paid. The word of mouth from all the free players would lead to more sales during the week. It was more money than the money we lost putting it free for the weekend.We already had a sense that the free thing could be a big deal when Apple started rolling out the free-to-play functionality in iOS. Once they officially did that, we designed our first fully free-to play-game, Pocket Frogs. That ended up being the very first Editor's Choice on iOS.What’s been the most exciting part of your gaming career so far?Releasing Tiny Tower was the game-changer. It was Editor's Choice, and the game just blew up. It was kind of a phenomenon in 2011 when it came out, and even the New York Times and Wall Street Journal covered the game. Then we got a call from Apple, and found out that it was going to be chosen as the iPhone game of the year for that year's roundup!We released a bunch of new games and a lot of them got Editor’s Choice again, but they never really reached the same level as Tiny Tower. In retrospect, we should have just doubled down on Tiny Tower and just rode that thing into the sunset. Though now we’re concentrating on adding some real big, exciting, new features to the game for our 10th anniversary update.Some of our games have already hit 10 year anniversaries. Like Pocket Frogs. I talked to some people in the industry and they just can't believe that we have decade-old games that still have sizable active audiences that are still profitable 10 years later. We've been really lucky to grow the community of players we had over the years. I've found huge player-run discords for most of our games and join them and become parts of them.What is your favorite part about developing games?My favorite part has always been the enjoyment that our games bring to others, and the potential to find such large audiences, especially on mobile and especially with free-to-play now. If you're going to spend your time making games, why would you make a game for thousands of people when you can make one for millions of people?It's also just really humbling. We get emails to our contact that say, “I've been playing this game since I was in middle school, and I’m a parent now, and it's got me through a lot of rough times” Or “my mother played Pocket Frogs through chemotherapy and it was the one thing that just kept her focused and relaxed.” We get some incredible stories and I know that they're far and few between in the real world, but they really help keep you motivated.What do you think is the most challenging part about developing games?I'd say the most challenging thing is really just keeping up to date with how the industry changes. It's gone through a lot of changes since I started 10 years ago, and advertising is becoming more important. Trying to navigate the market, especially when you don't have a lot of resources, you need to be really smart with who you partner with and really try to maximize the resources you have.It’s also been difficult to figure out how we can profitably grow our games. The challenge is getting each game to the level where it's profitable enough to still grow with advertising, but doesn't turn away all the players who've come to expect a certain type of game from us.You mentioned people are still playing your games 10 years later. What advice would you give to other indie developers trying to make a game that lasts?Developers starting at this point in time definitely have a lot more challenges than we did 10 years ago. One of the best things you could do is to try to make sure you grow a community. People will try your game, but if you don't listen to what they have to say, you won't know what needs improvement or how to change it. Connecting with the players of your game and trying to really listen to what they have to say is incredibly valuable and can help you improve it into something that can appeal to an even wider audience.]]></description><link>https://unity.com/blog/indie-spotlight-q-and-a-with-nimble-bit</link><guid isPermaLink="true">https://unity.com/blog/indie-spotlight-q-and-a-with-nimble-bit</guid><pubDate>Sat, 26 Jun 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Unity Academic Alliance Arrives in Thailand]]></title><description><![CDATA[The Unity Academic Alliance, or UAA, is a program for postsecondary institutions that features competency-based curricular frameworks, discounts on Unity products, support for instructor and student certifications, and much more. With a strong dedication to using technology in its curriculum and seeing great value in Unity’s broad range of applications, the International Academy of Aviation Industry (IAAI) led the initiative for King Mongkut’s Institute of Technology Ladkrabang (KMITL) to become the first Unity Academic Alliance members in Thailand.Located near Suvarnabhumi Airport in Bangkok, KMITL-IAAI utilizes the Unity Academic Alliance resources to prepare students for competency in career-related areas of virtual reality (VR), augmented reality (AR), mixed reality (MR), engineering, artificial intelligence (AI), machine learning, simulation, serious games, and much more.The IAAI faculty, headed by Assistant Professor Dr. Soemsak Yooyen (Dean), currently offers a 4-year Bachelor of Engineering in Aeronautical Engineering and Commercial Pilot program as well as a Bachelor of Science in Logistics Management program. All programs at IAAI are taught in English, with a focus on innovative technologies. IAAI’s Unity Academic Alliance membership works in coordination with the IAAI Virtual research and development lab, and is now expanding to support the wider KMITL campus, which offers a robust selection of degree programs and certifications.With Unity at the top of the interactive content game and KMITL-IAAI emerging technology curriculum taking off, the Unity Academic Alliance is offering benefits to everyone involved. In fact, since its launch in 2018, the UAA has reached faculty and students in more than 100 postsecondary institutions and has helped them on the path to learning in-demand, industry 4.0 job skills.The Unity education team is dedicated to providing the tools and resources that post-secondary institutions need. The team works closely with member organizations, collecting feedback and adapting the program to assure success. As members of the program, KMITL-IAAI (as all member organizations) receives the opportunity for instructors to upskill and gain additional industry-recognized Unity certifications.Unity offers certifications appropriate for all learners, from the User certification for true beginners, to the Expert certification for industry professionals with over 5 years of experience. As the focus of the UAA is post-secondary education, UAA members can choose to offer students Unity Certified Associate or Unity Certified Professional courseware + exam bundles.UAA member institution representatives must maintain a Unity Certified Professional level certification (programmer or artist). With these Unity certifications and a CompTIA CTT+ Classroom Trainer Certification (or equivalent), one can become an official Unity Certified Instructor. UAA members have access to courseware, practice tests, and certification exams potentially worth over $33,000 USD to aid in a variety of learning and development paths. With all the options available for instructors and students to level-up their skills, the decision to join the UAA has been a clear win for KMITL-IAAI.Dr. Nuchjarin Intalar, a lecturer at KMITL-IAAI, is currently utilizing a Unity Certified Associate courseware voucher that was included with the UAA package. She says the online course is “well-organized” and “easy to follow at your own pace”. She is also impressed with how accessible it is, saying “It’s very easy to understand even if you have zero background in this field”. Dr. Intalar sums up a key takeaway by stating that “At the end of the course, you can create a real game that you and your friends can enjoy!” Now, students at KMITL-IAAI are joining Dr. Intalar in UCA courseware study.Dr. Intalar is also interested in virtual reality and says “Unity makes your imagination come true” and that it’s “user-friendly and full of features to help you enjoy the world of virtual reality.” She and her colleagues recently completed training for the new KMITL-Eon Reality Interactive Digital Center, learning how to create interactive lessons with Eon-XR and Unity’s XR Interaction Toolkit.KMITL-IAAI continues to discover new opportunities to integrate Unity Academic Alliance tools and resources into course curriculum, events, and competitions. From utilizing Unity for Humanity case studies in business ethics to Unity Monetization resources in marketing, the possibilities are endless. Equipped with the evolving Unity Curricular Framework, developed with input from Unity and other industry experts, KMITL-IAAI is well-positioned to help students master key learning objectives and enter the workforce with essential skills.KMITL-IAAI welcomes faculty, staff, and students who are interested in learning more about Unity or becoming a Unity Certified Instructor to contact us via our faculty website or our Facebook page. With KMITL-IAAI and the Unity Academic Alliance working together to bring you quality education and professional skills, the sky's the limit!Are you an innovative post-secondary institution looking to join the Unity Academic Alliance? Learn more about the benefits offered and explore frequently asked questions.Interested in becoming a Unity Certified Instructor? Learn how you can make an impact on Unity creators.]]></description><link>https://unity.com/blog/news/the-unity-academic-alliance-arrives-in-thailand</link><guid isPermaLink="true">https://unity.com/blog/news/the-unity-academic-alliance-arrives-in-thailand</guid><pubDate>Wed, 23 Jun 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2021.2 beta is available for feedback]]></title><description><![CDATA[Get a first look at what Unity is offering in this release cycle. These new features and improvements are available for you to try today. Recent releases have focused on stability, performance, and workflow optimizations. We’ve continued to emphasize these priorities in Unity 2021.2, but this release also lands many highly anticipated features, while numerous others are available in early testing. This blog post dives into some of these new features. These are some of the coding and general Editor highlights in 2021.2:Editor: Scene View tool overlays, quality-of-life improvements, Editor performance optimizations, a beta of the Apple Silicon Editor, the AI Navigation experimental package, feature setsScripting: Performance improvements, Asset Import and Scriptable Build Pipeline optimizationsProfiling: Better connectivity, platform, and Scriptable Render Pipeline (SRP) support in the Profiler, Experimental System Metrics Mali PackagePlatforms: Chrome OS support, Android ABB support, Android and WebGL improvements, Adaptive Performance updates, UDP improvementsUnity 2021.2 also offers a plethora of new features and tools that ready to share for feedback from artists and teams:High Definition Render Pipeline (HDRP): Volumetric clouds, Terrain details, Streaming Virtual Texturing, Nvidia DLSS, improvements to Path tracing and Decals UXUniversal Render Pipeline (URP): Scene Debug View Modes, Reflection Probe blending and Box Projection support, URP Deferred Renderer, decal system, Depth prepass, Light Layers, Light Cookies, SSAO performance improvements, new samples, and moreSRP: Lens Flare system, Light Anchor, GPU Lightmapper Lightmap Space Tiling, Enlighten Realtime GI, SRP settings improvementsAuthoring tools: Terrain tools updates, SpeedTree 8 vegetation, Shader Graph improvements, UI Toolkit runtime, better VFX graph and ShaderGraph integration, improved URP support, and more2D tools: 2D Renderer improvements, 2D Lights in Light Explorer, Custom Lighting node for Shader Graph, VFX support, new 2D URP template, Sprite Atlas v2 new APIs and folders, updates to 2D Animation, 2D Tilemaps, and 2D PhysicsCinematics: Experimental package Sequences, updates to Recorder, Alembic, and Python, Cinemachine simplified impulse, Unity Virtual Camera and Face capture in betaYou can get the latest beta from the Unity Hub or on our download page. As of today, it includes over 3000 fixes and more than 720 features and changes. Remember, the beta is not intended for use in production-stage projects. As always, make sure to back up your existing projects if you plan to use them with the beta.Your feedback is the most important part of the beta release. That’s why we’ve partnered with NVIDIA to offer you a chance to win one of 2 GeForce RTX™ 3090 graphics cards when you are the first to report an unknown bug that you encounter during testing. Find the details at the end of this blog post.Testing the latest releaseUnity teams look forward to seeing you explore and test new features. You can report any issues you find by using the Bug Reporter. By clicking Help > Report a Bug…, you can help us to efficiently investigate your issue and assign it a ticket in our system for faster resolution by our development teams. If you’re discussing the issue in the forum or in Unity Answers, sharing the Case ID is helpful to the team. Before you submit a bug report, you can make sure that your issue isn’t already known by checking our public Issue Tracker for any similar cases.There are benefits to actively reporting issues during betas. Besides helping us to iron out the remaining kinks and improving the release for everyone, each original and reproducible submission boosts your chances of winning one of our Beta sweepstakes prizes. Just make sure to add #Beta2021Win_NVIDIA to your bug report.Where you can help mostTheBeta and Experimental Forums are where the Unity community and staff connect to discuss pre-release technology and the beta. Participating in the forums helps Unity teams to evaluate the state of the beta, plan the product roadmap, and better understand developers’ needs and experience to fuel the evolution of Unity tooling. Please share any feedback that you have about the beta in the 2021.2 beta forum.If you’re interested in giving us feedback about your Unity experience in general and want to influence the future of Unity, you should join Unity Pulse. This is our new research platform and community where we conduct surveys, polls, roundtables, interviews, and group discussions that fuel how we prioritize our resources. You can learn more about it in this blog post.Now, let’s take a look at what you will find available for testing in this release.In Unity 2021.2, we continue to focus on quality-of-life improvements with significant Editor performance speedups and useful new workflow options.In this release, we overhauled the Scene View UX by adding overlays for artist-driven context-based tools, as well as customizable floating toolbars. We’re starting with Scene Tools (Move, rotate, scale, etc.), Component tools, Orientation, and Search. This system is extensible, so you can add custom tools and toolbars as overlays as well.You will also be able to find many improvements across the Editor to improve your efficiency, including:The Transform component can now constrain scale proportions.Project assets have copy/cut/paste support. Dragging multiple objects from the Hierarchy into Project window now produces multiple Prefabs.You can preview complex Prefabs more quickly in the Inspector, and “revert to Prefab” works with multiselection.The Game view “maximize on play” includes new options.We improved the number fields math expressions in the Inspector. For example sqrt(9) or *=2 that makes the value 2x larger across an entire selection. ToString() on various C# math types (for example Vector3) now prints two decimal digits by default instead of one digit.Clicking on a material slot in the Renderer component now highlights that material part in the Scene view.This release also includes many quality-of-life improvements for visual scripting. Opening an empty graph editor window prompts guidance on how to create or load graphs. Icons were adjusted for greater consistency with the Unity Editor. “Unit” has been renamed “Node,” and “Super Unit” is now “Sub-Graph.” We’ve reduced the amount of time it takes to import assets from a project using visual scripting. New nodes are available to simplify access to Script graphs and State graphs.We’ve also improved the workflows around Search. Use the new Table View to compare search results across multiple properties and sort items by names or description. Search can now be used to provide more relevant items when selecting a reference via the Asset Picker.In this release, the Package Manager includes feature sets, a new concept that groups together packages required for specific outcomes, like 2D game development or creating for mobile. They’re designed to work well together, and you can also access learning resources to help you get started quickly straight from the Package Manager.Additionally, we recently released the beta of our new Apple Silicon Editor, which provides M1 Mac users with a native Unity Editor experience. We’re looking for feedback during the beta period so we can make any necessary improvements prior to our full release in 2021.2. Learn more about how to access this beta and provide feedback in the forum.This release also brings a slate of improvements to asset workflows that will help you to speed up your iteration process throughout the development lifecycle in the new beta. The new Import Activity window helps you uncover what’s happening during the import process – which assets were imported/reimported, when it happened, how long it took, and it happened.This release also includes asset import speedups across the board thanks to accelerated texture imports, mesh import optimizations, and new importing options. See this forum post for more details on the improvements.Lastly, we’ve looked at optimizing the build process with Scriptable Build Pipeline optimizations and Build Cache performance improvements. We’ve also upgraded our player code build pipeline for Windows, macOS, Android, and WebGL with a solution that supports incremental C# script compilation. As a result, when you’re making small changes to your projects, the player build time will better correlate with the size of the changes you’ve made. We’re working on adding this improvement to the remaining platforms in future versions of Unity.A new IL2CPP Code Generation option in the Build Settings menu generates much less code (up to 50% less). This allows for both faster IL2CPP build times and smaller executable files. There may be a small runtime performance impact due to the different code generation methods, so this option is best suited for improving team iteration times. Let us know how this impacts your project speed in this forum thread.You can also find the AI Navigation Experimental release package, which offers additional controls for building and using NavMeshes at runtime and in the Unity Editor. Learn more in the documentation section and forum.We’ve included new performance improvements that will benefit coders, including:C# math performance improved by more aggressive inlining of functionsAsync Read manager API can be called from burst jobs, including APIs for async open, close, and cancelingAsset garbage collection code now multithreaded6x faster GUID hash generation for common data patternsThis release features many improvements for the profiling toolset:Improved Profiler connectivity with tethered Android devicesThe connection drop-down menu revamped into a tree view that groups player connections into local, remote, and direct connection categoriesImproved platform support for obtaining GPU timings of URP/HDRP codeNew APIs to pass arbitrary data to the Profiler and visualize it as a custom profiler module; enables exposure of performance metrics relevant to a game or any other systems in Profiler Window, as well as alternative visualizations of Profiler data to facilitate additional analysisImproved Memory module view in the Profiler Window. Forum discussion.AnExperimental release of the new System Metrics Mali package allows you to access low-level system or hardware performance metrics on mobile devices with Mali architecture for profiling or runtime performance adjustments. Learn more about it in the Documentation and in the forum thread. You can add it in the Package Manager using the feature “Add Package by name” and entering com.unity.profiling.systemmetrics.maliWe added four new Screen APIs, and these will provide greater control over the display settings in games, enabling players with multiple monitors to select which monitor the game window should appear on. These APIs are: Screen.mainWindowPosition, Screen.mainWindowDisplayInfo, Screen.GetDisplayLayout() and Screen.MoveMainWindowTo().The release includes support for Chrome OS within the Android Development environment. Unity will support x86, x86–64, and Arm architectures for Chrome OS devices. In addition, developers can build their own input controls to fully take advantage of keyboard and mouse setups or use built-in emulation. Since Chrome OS support is found within Unity’s Android ecosystem, this means less platform maintenance and an easier process for publishing to the Google Play Store. Read more in the documentation and our forum discussion.In 2021.2, Unity provides direct support for Android’s new expansion file format, Android App Bundle (AAB) for asset building. Using AAB, developers can meet the Google Asset Delivery requirements to publish any new apps to Google Play.Adaptive Performance 3.0 is available starting with 2021.2. This new version adds Startup Boost mode, which allows AP to prioritize CPU/GPU resources to help launch games more quickly. It also adds integration with the Unity Profiler to let you profile AP more efficiently in regular workflows. See the documentation and forum discussion for more information.Creators building for Android devices can now take advantage of new Android thread configuration improvements, including options that allow you to choose whether to optimize your apps to be more energy-efficient or more highly performant. While the default settings should be fine for most users, this feature gives more advanced users fine-grained control over how their apps run to maximize their performance on hardware.WebGL improvements include Emscripten 2.0.19, which gives faster build times and a smaller WebAssembly output for the WebGL Target.This release also includes features for future support of the WebGL Player in mobile web browsers, including gyroscope, accelerometer, gravity sensor and attitude sensor values (iOS and Android browsers). Other enhancements include forward- and rear-facing web cameras and the ability to allow full-screen projects to lock their screen orientation on Android browsers.Compressed audio support reduces the amount of memory used by the WebGL player in the browser for long-running background music and large audio files.You can now choose ASTC or ETC/ETC2 compressed texture formats to target mobile web browsers, as well as BC4/5/6/7 texture formats for higher-quality compressed textures on desktop browsers.Unity Distribution Portal (UDP) Improvements include support for the Editor’s Play Mode. Additionally, the game will fetch the IAP products defined in your project, and purchases and consumes will always be successful so that you can test your fulfilment in Play Mode without any disruption from UDP methods waiting for their callbacks.We’re also adding a guide to help you through your UDP implementation. Once it knows how you intend to implement UDP (directly, or via Unity IAP) it will provide you with step-by-step instructions, as well as code samples. It’s accessible through the Menu structure, where you should look for the Implementation Guide.2021.2 includes many improvements to our cinematic tools, as well as new packages.The new Experimental package Sequences (com.unity.sequences) offers a new workflow tool for cinematic creation that keeps a film’s editorial content organized, collaborative, and flexible. Check out the documentation for more information.The latest release of Recorder integrates Arbitrary Output Variable (AOV) recording, which is useful for creating separations in VFX and compositing. We’ve also integrated Path Tracing and Accumulation Motion Blur for more realistic rendering effects.The latest release of Alembic format support includes the ability to stream an Alembic file from an arbitrary location, effectively bypassing import, as well as improved material handling.The Cinemachine simplified impulse greatly reduces the complexity of setting up how cameras react to in-game events such as explosions.Python for Unity facilitates Unity’s interaction with various media and entertainment applications to ensure that you can seamlessly integrate Unity into a broader production pipeline. In version 4.0, you no longer need to install Python.It also adds support for Python 3.7, and in-process Python is no longer reinitialized on domain reload. PySide sample is much simpler and runs in-process, and there’s limited virtual environment support. Check out the documentation and forum discussion for more information.In 2021.2, new Experimental Packages take aim at improving how you use advanced cinematics.Unity Virtual Camera is an iOS app that leverages Apple’s ARKit to drive the movement of a camera in the Unity Editor using real-world AR-tracked motion from your device.Unity Face Capture allows you to use your Face ID-enabled iPhone or iPad to capture, preview, and record performances, then bind them to a model in iOS. To gain access to Unity Virtual Camera and Face Capture, sign up for the Cinematics Open beta.Artists can add procedural Volumetric Clouds in HDRP. It’s easy to quickly tweak the default parameters to achieve different kinds of realistic clouds, while advanced users can access more settings and import their own maps for finer artistic control.NVIDIA Deep Learning Super Sampling (DLSS) is a rendering technology available for HDRP that uses artificial intelligence to increase graphics performance and quality. It allows you to run real-time ray-traced worlds at high frame rates and resolutions. It also provides a substantial performance and quality boost for rasterized graphics and improves the performance of VR applications so they run at higher frame rates. This helps to alleviate disorientation, nausea, and other negative effects that can occur at lower frame rates.To celebrate this powerful technology coming to Unity, we’ve partnered with NVIDIA to offer beta participants a chance to win one of two GeForce RTX™ 3090 graphics cards, along with an exclusive, limited edition Unity x LEGOⓇ Minifigure. Find the details at the end of this blog post.HDRP Path tracer improvements include added support for volumetric scattering to path-traced scenes (only linear fog was previously supported). This feature also offers hair, fabric, stacklit and AxF materials, as well better HDRI sampling for enhanced visual quality when lighting a scene with an HDRI.Volumetric density volume format and blending improvements include the ability to take a Render Texture or Custom Render Texture as a volume mask in the Density Volume component. Other new additions in this release include colored volume masks, higher-resolution volume masks (up to 256 cube configured in the HDRP settings), and a falloff mode for density volume blend distance (linear or exponential). The 3D Texture atlas was improved to support different 3D texture resolutions and RGBA 3D textures.Based on artists feedback, we have improved the UX for HDRP Decals placement, including the Pivot point tool, improved UV manipulation, scale transform support, Prefab support, editing of gizmo colors, and multi-selection editing.Streaming Virtual Texturing (SVT) is a texture streaming feature that reduces GPU memory usage and texture loading times when you have many high-resolution textures in your scene. It works by splitting Textures into tiles, then progressively uploading these tiles to GPU memory when they are needed. SVT is an experimental feature and is only supported inHDRP. This release brings further improvements, including PS5 platform support.Improvements in this release bring URP’s Scene Debug View Modes closer to parity with the options available in Built-in Render Pipeline. The Render Pipeline Debug Window is also included as a new debugging workflow for URP in this release. Users can use Debug Window to inspect the properties of materials being rendered, how the light interacts with these materials, and how shadows and LOD operations are performed to produce the final frame.Reflection probe blending and box projection support has been added to allow for better reflection quality using probes and bringing URP closer to feature parity with the Built-In Render Pipeline.The URP Deferred Renderer uses a rendering technique where light shading is performed in screen space on a separate rendering pass after all the vertex and pixel shaders have been rendered. Deferred shading decouples scene geometry from lighting calculations, so the shading of each light is only computed for the visible pixels that it actually affects. This approach gives the ability to render a large number of lights in a scene without incurring a significant performance hit that affects forward rendering techniques.The new decal system enables you to project decal materials into the surfaces of a Scene. Decals projected into a scene will wrap around meshes and interact with the Scene’s lighting. Decals are useful for adding extra textural detail to a Scene, especially in order to break up materials’ repetitiveness and detail patterns.This release adds support for depth prepass, a rendering pass in which all visible opaque meshes are rendered to populate the depth buffer (without incurring fragment shading cost), which can be reused by subsequent passes. A depth prepass eliminates or significantly reduces geometry rendering overdraw. In other words, any subsequent color pass can reuse this depth buffer to produce one fragment shader invocation per pixel.Light Layers are specific rendering layers to allow the masking of certain lights in a scene to affect certain particular meshes. In other words, much like Layer Masks, the lights assigned to a specific layer will only affect meshes assigned to the same layer.URP Light Cookies enables a technique for masking or filtering outgoing light’s intensity to produce patterned illumination. This feature can be used to change the appearance, shape, and intensity of cast light for artistic effects or to simulate complex lighting scenarios with minimal runtime performance impact.Ambient Occlusion is used to approximate how bright (or dark) a specific surface should be, based on the geometry around it. This release brings several SSAO improvements, including enhanced mobile platform performance and support for deferred rendering, normal maps in depth/normal buffer, unlit surfaces, and particles.A new converter framework from Built-in Render Pipeline to URP makes the upgrade tooling more robust and supports more than material conversion.Motion Vectors support provides a velocity buffer that captures and stores the per-pixel and screen-space motion of objects from one frame to another.URP Volume System Update Frequency allows you to optimize the performance of your Volumes framework according to your content and target platform requirements.Discover new samples in the Package Manager for URP that provide use cases of features by showcasing their configuration and practical use in one or more scenes. These samples are provided to help facilitate teams’ onboarding and learning.The following features are compatible with URP and HDRP.This version introduces a new Lens Flare system. Lens Flares simulate the effect of lights refracting inside a camera lens. They are used to represent really bright lights, or, more subtly, they can add a bit more atmosphere to your Scene. The new system, similar to the one present in the Built-in Render Pipeline, allows stacking flares with an improved user interface and adds many more options.Light Anchor makes lighting for cinematics easier and more efficient by providing a dedicated tool to manipulate lights around a pivot point instead of in world space. Various presets allow lighting artists to quickly place lights around a character or any center of interest. This feature is also available for the Built-in Render Pipeline.GPU Lightmapper Lightmap Space Tiling. The tiled baking technique helps to reduce the GPU memory requirements by breaking the baking process into manageable chunks that can fit in the available GPU memory at any time. As a result, you can use the GPU Progressive Lightmapper for faster bakes, even when larger Lightmap resolutions are involved.Enlighten Realtime GI enables you to enrich your projects with more dynamic lighting effects by, for example, having moving lights that affect global illumination in scenes. Additionally, we’ve extended the platform reach of Enlighten Realtime GI to Apple Silicon, Sony PlayStation(R) 5, and Microsoft Xbox Series X|S platforms.The SRP settings workflow improvements are a series of UI/UX improvements intended to impact workflows and provide consistency between the SRP render pipelines. For this iteration, the focus was mainly on aligning the light and camera components between URP and HDRP. The changes consist of aligning header design, sub-header designs, expanders, settings order, naming, and the indentation of dependent fields. While these are mostly cosmetic changes, they have a high impact.In this release, the following features are now available in the Terrain tools:New Terrain sculpting brushes to bridge, clone, noise, terrace, and twist terrainErosion heightmap-based tools (Hydraulic, Wind and Thermal)Improved material painting controls with noise- and layer-based filtersGeneral quality-of-life interface improvements to streamline Terrain authoring workflows with the Terrain Toolbox.SpeedTree 8 vegetation has been added to HDRP and URP, including support for animated vegetation using the SpeedTree wind system, created with Shader Graph.In 2021.2, the Visual Effect Graph includes the following changes:Refactored ShaderGraph integration allows you to use any HDRP shader made with Shader Graph (unlit, lit, hair, fabric, and so on) to render primitives in the Visual Effect Graph. This change replaces the Visual Effect target in Shader Graph which is consequently deprecated (but still supported) for HDRP. It also allows you to modify particles at the vertex level, enabling effects like birds with shader-animated flapping wings or wobbling particles like soap bubbles.Signed Distance Field Baker is a new tool to directly and quickly bake a static geometry in texture 3D as a signed distance field in the Editor.We’re adding functionality to Bounds helpers that will help you set up your particles’ bounds to improve culling performance or prevent culling particle systems due to incorrect bounds.Structured/graphics buffer support adds a new possibility of passing data to the Visual Effect Graph using structured/graphics buffers in addition to textures. This feature is oriented at programmers who want to add complex simulations like hair or fluid movement or programmatically assign dynamic data such as multiple enemies positions using the Visual Effect Graph.Improved URP Support enhances the Visual Effect Graph’s stability and compatibility with URP on compute-capable devices. We’re adding support to render lit particles on URP and 2D Unlit Sprite shader.Shader Graph in 2021.2 includes the following changes:Shader keyword limits have effectively been removed. We added a more efficient API to work with keywords and made a very clear separation between global and local shader keywords. Learn more in the forum discussion.We’ve updated the ShaderLab Package Dependency syntax. Previously, there was no way to express dependencies between shaders and packages in tools and assets aiming to work with multiple render pipelines, which impacts both Asset Store and in-Editor developers. Tool authors would work around this limitation by shipping separate packages, one for each rendering pipeline supported. The ShaderLab Package Dependency feature removes this limitation by extending ShaderLab syntax and providing a possibility for shader authors to explicitly express the dependencies of shaders on packages.In 2021.2 UI Toolkit can now be used as an alternative to create runtime UI for games and applications. It provides dedicated tools for visual authoring and debugging UI, renders beautiful and scalable text with TextMesh Pro, provides crisp-looking textureless rendering, and can be used alongside Unity UI (UGUI). Learn more on the documentation, or join the forum discussion.Several URP/2D Renderer improvements can be found in this release.New SceneView Debug Modes in URP are relevant for 2D developers using the 2D renderer, who can now access the views: Mask, Alpha channel, Overdraw or Mipmaps. The Sprite Mask feature has been adjusted to work correctly in SRP. You can access it by going to Window > Analysis > Rendering Debugger > Material Override.The 2D Renderer can now be customised with Renderer Features which allow you to add custom passes.2D Lights are now integrated in the Light Explorerwindow, and they are no longer labeled as Experimental. 2D Shadows are being optimized, some of these improvements are implemented in this release, including refactoring work, rendering shadows to a single channel, and per-light shadow culling.2D Light textures produced by the 2D Lights are now accessible via the 2D Light Texture node in Shader Graph. One application of this is the creation of emissive materials for Sprites.VFX Graph now supports 2D Unlit shaders. In this first iteration, the Visual Effect renderer will not be affected by 2D lights. We look forward to hearing from your experience in this forum thread.A new 2D URP default template has been added. It includes all verified 2D tools, precompiled, so new projects load faster with the entire 2D toolset at your disposal, including URP and the configured 2D Renderer. The template also includes packages and default settings that are optimal for a 2D project.Other 2D improvements are Sprite Atlas v2 with folder support and new APIs to find duplicated sprites in several atlases for a single sprite, query for MasterAtlas and IsInBuild. 2D Pixel Perfect’s Inspector UI has a more intuitive setting display. 2D PSD Importer has new UX improvements, better control over the Photoshop layers, and Sprite name mapping. There’s a new option to flatten layer groups in Unity, and the tool can now autogenerate physics shapes, which can be convenient when you import scene elements that are not characters.2D Animation updates include bone colors, which can now be set in the visibility panel. This setup can help you to better differentiate colors or organization. UX improvements include shortcuts visible in the tooltips of the skinning editor’s tools, and a new tool to see sprite influences over bones.2D Tilemaps added the ability to override existing tile palette buttons or add new functionality to help you create custom tooling for tilemaps. API changes include the addition of TileChangeData struct,whichallows you to set a Tile at a position with color and transform it all at once, instead of invoking several calls. New APIs allow you to get information about animated Tiles, and get a range of tiles. We’ve improved performance when using APIs for setting multiple Tiles at once, such as SetTiles (Tile array and TileChangeData) and SetTilesBlock.In 2D Physics, you can now read and write primitive physics shapes (Circles, Capsules, Polygons, and Edges) using a new unified shape group feature. This new API provides the ability to add primitive shapes to a physics shape group or retrieve them from any Collider2D or all Collider2D attached to any Rigidbody2D. Additionally, a new CustomCollider2D provides the ability to write a shape group directly to it, providing fast and direct access to the Collider2D internals. The CustomCollider2D allows you to reproduce all existing Collider2D or create new simple Collider2Ds or complex procedural ones. In the future, the physics shape group will form the basis of new features including new physics queries and interaction with Sprite physics shapes.To celebrate the release of DLSS in preview, our partners at NVIDIA have provided two GeForce RTX™ 3090 GPUs for our Beta Sweepstakes so that our lucky winners can add all the power and efficiency of ray tracing and DLSS to their next HDRP project!To enter the draw, identify and report at least one original bug in a 2021.2 version while the submission period is open. The sweepstakes begin Monday, June 21, 2021 at 9am PST and the submission period ends Sunday October 2, 2021 at 5pm PST.An original bug is one that has not yet been reported at the time of submission and has been reproduced and acknowledged by Unity as a bug. Make sure to add #Beta2021Win_NVIDIA in your bug report submission. Every additional valid submission increases your odds of winning, but no participant can win more than one prize.No purchase necessary. Void where prohibited. See the full rules here. We will contact the winners directly.Access ray tracing tools and training using NVIDIA’s technology platforms by joining the NVIDIA Developer Program here.Want to provide feedback directly to Unity teams? Sign up for Unity Pulse, our new product feedback and research community. We created this community because we believe your experience and insights are vital to Unity’s evolution. By joining, you’ll have the opportunity to connect with Unity’s product teams, gain access to new product concepts and give feedback on beta products which will help us make the best products and experiences for you. We’re interested in your feedback. Sign up or Log In with your Unity IDUnity is looking for game creators to join us in revealing the next Unity platform release. Partner with us on marketing and PR efforts and help educate other developers on what’s new and available in the platform.If you’d like to be considered, we’d love to hear about your game! Tell us about your project here.The following is intended for informational purposes only, and may not be incorporated into any contract. No purchasing decisions should be made based on the following materials. Unity is not committing to deliver any functionality, features or code. The development, timing and release of all products, functionality and features are at the sole discretion of Unity, and are subject to change.]]></description><link>https://unity.com/blog/engine-platform/unity-2021-2-beta-available-for-feedback</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-2021-2-beta-available-for-feedback</guid><pubDate>Mon, 21 Jun 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making robots more accessible with Forge/OS and Unity]]></title><description><![CDATA[We’ve seen our robotics customers do some really amazing things using Unity—from testing and training a robot in simulation to operating a real-life robot. But we love use cases that even we didn’t think of, like: using Unity to train the human operators of the robots.That’s the approach that READY Robotics, with the goal of making robots more accessible to end users, is taking with their latest Forge/OS robot software. After all, the robot revolution won’t happen if everyone needs PhDs to operate them!Unity’s core belief is that the world is a better place with more creators in it. Learn how READY Robotics is using Unity with Forge/OS to enable more robotics creators in this guest post by READY’s Co-Founder and Chief Innovation Officer, Kel Guerin, and their VP of Marketing, Erik Bjørnard.Robots have always captured the imagination. Because they represent a human creation that can interact with the physical world in the same way that people do, it's no wonder that we see them constantly represented in movies and TV. More recently, with devices like the Roomba, robots have entered our daily lives, but we often forget the millions of robots that help to make the things we use every day. Commercially, these industrial robots have been around since the 1960s, sharing that rough birthday with the first mass-produced computers. This is ironic, since computers have become a completely pervasive technology in the world, while there are comparatively few robots.The relative lack of robots deployed in the world is problematic. As we have seen poignantly in the last year, a manufacturing layer built almost entirely on human labor is very brittle, leading to shortages of critical medical components, microprocessors, and even lumber. Anyone in manufacturing will tell you that they would like to be using more automation, but they can’t.Why? Because robots are hard. They take a huge amount of knowledge to program and install, requiring advanced degrees or months of training. To compound the problem, every brand of robot is completely different, so those months of training only apply to the robot brand you originally learned, and switching to another brand means doing it all over again. This would be like buying a new laptop and having to learn a new operating system, which is again ironic, because this is exactly the problem that computers faced during the late 70s. Every manufacturer released different computer hardware and software that required specific expertise. They were not accessible and, like robots today, there weren’t that many of them.What solved this problem for computers is the same thing that can solve it for robots. In the 80s, computers were revolutionized by two things: a focus on usability (Apple, who set the trend, with others following) and common platforms (Microsoft DOS and Windows). When computers were accessible, like those from Apple, people immediately found applications for them. When there was a common platform like Windows, each computer ran the same software, so people could pick the right computer for the job without having to relearn everything. It's this lesson, and these two transformative ideas, that inspired us at READY Robotics to provide a software platform that runs on any robot and actually makes robots easy to use.Forge/OS was built by READY as the first end-user-focused operating system for robots. Forge does for robots what Windows did for computers (and Android did for phones) by providing a common set of interfaces so the same software “app” can work on any robot. To increase robot accessibility for everyone, we have started by building our own easy-to-use apps on Forge, just like the apps on your phone or computer. One such app is a robot-programming app called Task Canvas, which lets users program robots using simple building blocks in a flow chart. Task Canvas lets anyone easily learn how to program a robot in minutes, and begin working on serious tasks in less than a day. This is a pretty extreme advancement, considering the average industrial robot normally takes 70+ hours to learn. And since Forge runs on any robot, a person only needs to spend that short time to learn Task Canvas once then, just like using Excel on any computer, the user will be able to control any robot running Forge/OS via Task Canvas.One of the key remaining limitations to learning robots on any level, however, is access to hardware. Even Forge/OS and Task Canvas, which reduce the training time for using a robot from weeks to just a few hours, necessitates that you have a physical robot to work with. This is a huge issue, because while industrial robots are coming down in price, they still cost thousands of dollars, and are thus not accessible to everyone that wants to learn how to use them. Since READY’s core vision is to make robots accessible to anyone, we started looking at widely used simulation software. The idea was that any person with a computer could learn Forge/OS and Task Canvas by programming a simulated robot on their PC, instead of a physical robot in the real world.Our search led us to Unity and its game engine. Unity is used extensively by video game developers, but is also being adopted by professionals in other industries like manufacturing. This is because Unity has built a premier set of accessible tools for creating hyper-realistic simulated environments, with realistic textures, physics and lighting - a simulation tool that has gotten so good that it is often confused for reality. On top of that, Unity recently released a specific set of tools for simulating robots called Unity Robotics, including a new ArticulationBody GameObject, such that a robot in Unity behaves in a realistic manner when compared with its physical counterpart.For these reasons it was a natural move to build a robot simulator for Forge/OS in Unity, which we showed off in May at our Forge/OS 5 launch event. The Forge Robot Simulator connects the easy programming of Task Canvas with a simulated robot in Unity, which can be controlled just as you would control a real robot. Moreover, because of the powerful tools built into Unity, we were able to create incredibly realistic environments in which to use those robots.Everything from simple environments where you can learn the basics of robot motion, all the way to complete industrial workcells. Additionally, because you need to have a complete robot system to work with, we simulated items such as grippers and machine tools with Unity, enabling these devices to be programmed and work alongside robots to complete a task.The result is a realistic robot experience, where you can create a robot program to grab objects, trigger other devices, and generally perform industrial-like tasks, all on your PC, without physical hardware. And once you have learned Forge in simulation and are ready to take the plunge with a real industrial robot, everything you have learned in the simulator will directly apply to a real-world system, because they run Forge/OS too.We are so excited for the day when anyone, whether they are a student learning about robots or a professional preparing for a career in robotic automation, can boot up a computer and learn how to program a real robot. We believe Forge/OS has the power to unlock robots for everyone by making them accessible in the same way that Windows and Apple made computers accessible. And we believe the Forge Robot Simulator as the most accessible way for anyone to get started with Forge/OS in a compelling, realistic simulation powered by the Unity engine.Forge/OS is now available on the READY Robotics website. Look for the Forge Robot Simulator later this summer.Unity’s Digital Developer Day – Attend Unity’s upcoming virtual event where READY’s Co-Founder and Chief Innovation Officer Kel Guerin will be presenting. Register for free.Unity Robotics GitHub – Get started with Unity Robotics by going through some of our examples and tutorials today! Learn more.Unity Robotics mailing list – Want to stay up-to-date on the latest features and updates from Unity Robotics? Join our mailing list!]]></description><link>https://unity.com/blog/industry/making-robots-more-accessible-with-forgeos-and-unity</link><guid isPermaLink="true">https://unity.com/blog/industry/making-robots-more-accessible-with-forgeos-and-unity</guid><pubDate>Mon, 14 Jun 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Say hello to the new Starter Asset packages]]></title><description><![CDATA[As part of our dedication to empowering creators, our dev team has released the new Starter Asset packages. Find out what this means for your workflow below.What are Starter Assets?Starter Assets are Unity-created free and lightweight first- and third-person character base controllers for the latest Unity 2020 LTS and above, using Cinemachine and the Input System packages. Older versions of Unity may also work with Starter Assets, in some cases with slight modifications. They are designed to give you a quick start into prototyping and building character controllers for various game genres,through systems and methods that allow you to easily build and expand on just about any type of project.The Starter Assets are split into two separate Asset Store packages: A first-person character controller and a third-person character controller. You can quickly download and import the controller you need for your project directly from the Asset Store. Both controllers are built in the same modular way and based on the same scripts and logic.The project uses the built-in render pipeline, but the default materials can be upgraded to either URP or HDRP through the standard upgrade paths.What's inside the new Starter Asset packages?Character controllers: At the core of the new Starter Assets is a set of two lightweight character base controllers, adapted for third-person and first-person control.Input System: Starter Assets utilize the Input System. This way, you can modify controller input for various input methods, such as a gamepad, mouse, and keyboard setup, or a touchscreen mobile device (supporting both joysticks and touch zones). If your project is using the old Input Manager, you can enable simultaneous support for both systems in the Project Settings.Cinemachine: With the help of Cinemachine, the camera settings are customizable so they can be tailored to your project's needs. The character prefabs have several exposed values that are easy to adjust to your liking, so you can speedily customize the character’s movement and Cinemachine camera settings to suit your project.Visual assets: The Starter Asset packages are supplied with a humanoid-rigged armature that can support various animations, as well as an environment for testing character movement, and a basic joystick set for touchscreen controls.Compatibility: Both packages are separate and highly modular, which makes them adaptable to a large variety of use cases. The packages also include ready-to-use prefabs for more efficient integration.How are the packages used?Whether you’re completely new to Unity and want to add a player character into your scene, or you’re an experienced game developer looking to quickly test your own features and functionality, the Starter Assets can get you up and running before you know it!The Third Person Controller package includes an original armature, fully rigged with custom animations that use a humanoid character rig. This simplifies replacing the armature with another character that uses a humanoid avatar. Even more, animations can be changed and adjusted to create an original character for your own project.How does this change improve the user experience?The Starter Asset packages allow you to jump right into Unity 2020 LTS – no matter your previous experience or expertise. These starter packages provide a solid base to practice using Cinemachine and the Input System in a character controller with the built-in CharacterController component.Be sure to check out the package documentation located in the download package to learn how to leverage Starter Assets for your next project. We aim to ensure that these assets remain readily available and up to date for your use. Stay tuned for more announcements as we expand our support for Starter Assets.First Person Character ControllerThird Person Character ControllerWe hope that you find value in the new Starter Asset packages and look forward to hearing your feedback. Head on over to our forum discussion with any questions or comments that you want to share with us!]]></description><link>https://unity.com/blog/games/say-hello-to-the-new-starter-asset-packages</link><guid isPermaLink="true">https://unity.com/blog/games/say-hello-to-the-new-starter-asset-packages</guid><pubDate>Thu, 10 Jun 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 A/B tests to increase revenue and users for your hyper-casual game]]></title><description><![CDATA[At the latest Hyper Games Conference, Lior Shekel, Strategic Partnership Team Leader at ironSource, presented the top 5 A/B tests every hyper-casual game developer should run to increase revenue and drive more users. Read on for a summary of Lior’s presentation or watch it below.Test 1: Creatives that boost your game metricsAs a hyper-casual developer, you likely already test many concepts and iterate them, A/B tests videos with interactive end cards to find the best combo, and continue challenging winning creatives to achieve low CPI, high ARPU and scale.But that’s where the process usually ends - once you find a “killer creative” that explodes on social and SDK networks and drives great engagement, what should you do next? Lior suggests integrating it into the game and A/B testing the change. For example, you can integrate it as ‘epic challenge level’ like Supersonic did -once every few levels, users were given the choice to “GO EPIC” or continue”, which led to a 10% ARPU uplift.If you make any changes to that killer creative, be sure to reflect those changes into your game, for example, different backgrounds, new colors, characters and more. Always A/B test the changes and see how it impacts your game.Test 2: In-app biddingIn-app bidding has many benefits, it helps maximize your ad revenue, saves precious time using automation, and enables full data transparency. User acquisition strategies are impacted as well - with a chance to bid for every single impression, you can increase reach and scale much quicker.Make sure you’re constantly testing the impact of in-app bidding on your games. If you find one month of in-app bidding doesn’t bring the ARPDAU lift you’re looking for, try again the next month. Mediation platforms are constantly adding new bidding networks and updating logic that could positively influence your revenue.ironSource data shows that in-app bidding impressively outperformed the traditional waterfall in 94% of A/B tests, resulting in a 10% ARPDAU uplift on average.Test 3: InterstitialsInterstitials are the basis of any hyper-casual monetization strategy and making sure they’re performing at maximum capacity is key to success. Lior reviews two critical tests every hyper-casual game developer should run. First, pacing, which is the frequency at which you show an interstitial in your game. In an A/B test for different pacing periods (25, 35, and 40 seconds), results showed that 25 seconds between interstitials performed best (in 80% of tests), with a 10% uplift in ARPU.The second interstitial test (below) centers around the stage of the game the interstitial is shown. Here, the test group shows the interstitial between the level end page and the win page, while the control group shows the interstitial at the end, after the user chooses to skip the rewarded video. In this test, the outcome showed an increase in interstitial engagement rate by 20% and a 150% increase in impressions per DAU. Although only 55% of the test groups won, you’ll want to test this with your game to maximize your ARPU (increased by 5% in this case).Test 4: Follow the ROASROAS is the most important KPI for user acquisition, especially for hyper-casual as this is where most of your profit comes from. To improve ROAS, try A/B testing a blanket bid vs bidding differently per source.For example, in a test in which the same bid was made on two sources with different LTVs, results showed a negative margin on source A and a positive margin on source B. Both sources showed the same results for install scale.Meanwhile, bidding granularly per source showed different results. By decreasing the bid on source A and increasing the bid on source B, margins were optimized and the scale of installs on source B doubled. These results show the importance of challenging your current UA strategies and testing source bidding to optimize and increase your ROAS.Test 5: Keeping your users within your portfolioBecause hyper-casual developers ship games often and quickly, it’s likely you have a pretty hefty portfolio. Keeping users within your portfolio is crucial - and the best way to do that is implementing a cross promotion strategy.Lior explains a test a publisher made comparing user acquisition with cross promotion, and user acquisition without. The test was run through the ironSource cross promotion tool, available on the ironSource platform. The cross promotion tool allows you to split and separate cross promotion activities between different users and groups.In the test, Group A ran cross promotion and group B didn’t. Cross promotion results showed zero impact on retention, and interestingly, ARPU slightly decreased (approximately a $0.01 difference). This outcome was the effect of the opportunity cost for cross promotion, an ad that you are paying for and the opportunity cost of not showing a different ad.Looking at the whole portfolio, it’s interesting to see the difference in LTV of users engaging with cross promotion starting on different days. In this case, cross promotion engagement starting on Day 2 drove the highest LTV. “With more than $0.30 difference between groups, this test shows how important it is to segment your users and run cross promotion within your game, until you find the sweet spot," Lior says.Key insightsRemember to continue challenging your setup with A/B testing, whether it’s user acquisition, monetization strategies or interstitial timing. Define your KPIs in advance and stick to them all while exploring new growth opportunities - it’s always possible to improve your game.]]></description><link>https://unity.com/blog/5-a-b-tests-to-increase-revenue-and-users-for-your-hyper-casual-game</link><guid isPermaLink="true">https://unity.com/blog/5-a-b-tests-to-increase-revenue-and-users-for-your-hyper-casual-game</guid><pubDate>Wed, 09 Jun 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[UPM Dependency Confusion & AssetBundle Security in the Editor]]></title><description><![CDATA[Security is an important aspect for development of all kinds of software, and Unity projects are no different. As part of Unity’s Responsible Disclosure policy, we work closely with external researchers on possible vulnerabilities or issues that arise within the Unity environment. Recently we have been in contact with security researchers at IncludeSecurity. Working with them in the model of coordinated disclosure, we want to share information about insecure development practices that Unity developers may encounter. The two topics covered in this blog post are dependency confusion and AssetBundle security.Supply chain security vulnerabilities are a serious issue that all Unity developers need to take into consideration when creating their games.One of these vulnerabilities is known as dependency confusion. Dependency confusion occurs when an attacker is able to influence a developer's environment and tools to download a malicious package. This attack leverages the use of unsafe default behavior within some package managers and private repositories.The Unity Editor has its own package manager, Unity Package Manager, which supports fetching packages from NPM registries. This means a Unity developer using a private NPM registry could face the same risks of the dependency confusion vulnerability described above.Take for example, a Unity project that pulls from a private registry and a public registry like npm.io. A developer can upload Package A to the private registry, as a standard development practice. If the package manager scopes are too broad or if the private registry proxies a public registry, then a malicious attacker can upload a malicious Package A with a higher version number to the public repository. Due to its higher version number, the malicious package may be downloaded to the Unity project, which would result in code execution on the developer’s machine at dependency load time, or on any machines running the Unity project.NOTE: Unity does not recommend using public registries, such as the NPM public registry. Many packages in these public repositories are not supported in the Unity editor, and some features are not supported by the Unity Package Manager.By using private packages in the Unity editor with a private registry that proxies a public repository, a developer may leave themselves vulnerable to a dependency confusion attack. This attack is what IncludeSecurity describes in their article here.IMPORTANT: The default configuration of the Unity Package Manager is not vulnerable to a dependency confusion vulnerability. The developer must modify their manifest.json file, as detailed below, to become vulnerable. See below in the ‘Mitigations’ section to understand if you’ve modified your local package configuration in a vulnerable manner, and how to update your configuration to mitigate the vulnerability. The vast majority of developers should not be concerned, but should familiarize themselves with content nonetheless, in order to understand how they can continue to keep their codebase and customers protected.In the example vulnerable configuration below, a proxied registry is used as the only scoped registry, one that pulls from the private registry and from the public NPM registry. Since the packages defined in the scope share the same registry, a malicious attacker can upload “com.private.vulnerable.package” with a higher version to the NPM registry, which can result in the malicious package being downloaded to the user’s environment when the developer updates their packages.Example Vulnerable Configuration:The typical mitigations such as scoped packages for NPM are not supported in Unity Package Manager. Instead, using Scoped Registries can prevent this type of issue. By explicitly defining packages in the scopes of a scoped registry, the source of the package will be strictly locked down to what is defined in the scoped registry configuration file.Note that if a private registry also proxies NPM, then the Unity Package Manager cannot differentiate between a private published package or publicly published one. The mitigation needs to be applied at the registry level, which IncludeSecurity describes in their article.The following configuration fixes the vulnerable configuration by splitting the registries into their own scoped registry blocks, and explicitly defines which packages are used by each registry. This means a malicious package will not be downloaded into the user’s environment, even if the package has a higher version on a public registry.Example Secure Configuration:AssetBundles are a commonly used feature in the Unity engine that are used to deliver assets in a standardized format. They are commonly used to download additional assets to a user’s game when the asset is needed, cutting down on the amount of data required to be initially downloaded to play a game. In some cases, AssetBundles can even be used to distribute custom content for modding or customization in a Unity project.When using AssetBundles, it is important that they are downloaded from a trusted source. Even though AssetBundles cannot contain executable code, IncludeSecurity found that a specially crafted AssetBundle file could allow an attacker to exploit a vulnerability in the game code or the Unity runtime. This is the issue described by IncludeSecurity.Objects like AnimationEvent, UnityEvent, and SendMessage all have a similar attack surface in that they allow arbitrary methods to be called on components. If untrusted AssetBundles are going to be used, consider disabling these objects altogether or sanitizing them.As such, AssetBundles that are downloaded off the internet should be treated no differently than any other piece of software that is downloaded from the internet:Only use AssetBundles that are from trusted sources.Ensure that AssetBundles are transmitted through secure communication channels, such as TLS.If untrusted AssetBundles must be used, consider the following mitigation strategies:Use an explicit list of allowed OS-level C# methods that can be called in objects.Instead of an allowlist, another yet less effective action is to create a blocklist of all dangerous methods. For example, methods that access URLs, or manipulate the local file system. Blocklists must be maintained as new methods to bypass the list are discovered by malicious actors.For AnimationEvents specifically:Do not accept scripts. Consider removing AnimationEvents entirely when loading an untrusted object.Disable event handling altogether on Animators (see our documentation)As content creators, there are risks associated with the tools and services that are relied upon to help create amazing experiences. Taking the time to ensure that your own developer toolchain is secured and configured properly will provide the benefit of security to both yourself and your users.3 Ways to Mitigate Risk When Using Private Package Feeds, MicrosoftDependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies, Alex BirsanFind out more about Unity Security and all Unity security advisories.]]></description><link>https://unity.com/blog/engine-platform/upm-dependency-confusion-assetbundle-security-in-the-editor</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/upm-dependency-confusion-assetbundle-security-in-the-editor</guid><pubDate>Wed, 09 Jun 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Analyzing cohort reports: The what, why, when, and how]]></title><description><![CDATA[What are cohort reports?In today’s market, analytics is a prerequisite to turning a game into a profitable business. Analytics allow you to track how various changes you make, such as introducing a new ad unit, impact KPIs and overall game health; it’s a way to reduce uncertainty, make smart decisions, and optimize performance.To gain a holistic understanding of your game’s health and accurately measure and track two of the most important metrics, retention rates and LTV, cohort reports are key. A cohort is a group of users who performed an action on a specific day - for example the day on which a group of users installed your game. Cohort reports provide insight into the behavior of user cohorts, by analyzing retention and LTV metrics. Why cohort reports are keyCohort reports are a crucial tool for unearthing the real picture of your game’s performance. Because they are based on the install date of user groups, cohort reports can show the impact on user LTV and retention from changes in your UA or monetization strategy. Nothing is ever as good as it seems...Cohort reports allow you to go a layer deeper than the surface-level metrics offered by user activity and performance reports. For example, perhaps these two reports show a rise in ARPDAU and DAU in a specific time frame; on the surface, it would seem like your app is hitting your monetization and UA goals. However, if you use a cohort analysis of the same time frame, you might see a reduction in user retention and LTV, despite the positive uplift in ARPDAU and DAU.What could possibly explain this? Maybe you’ve added a new interstitial ad placement and invested a bigger budget into UA to acquire users more aggressively, but the quality of these users is poor, and the new ad placement is disruptive to the user experience. As a result, despite the rise in ARPDAU and DAU these changes triggered, retention rates are decreasing as well as user LTV - which does not reflect a healthy growth strategy....Or as bad as it seemsConversely, you might see a drop in ARPDAU and DAU in your user activity and performance reports, and as a result try to make a change to your strategy, for instance increasing the frequency of interstitial ad placements. However, it’s feasible that retention and LTV are steadily increasing for user cohorts during the same period, and therefore making a change is unnecessary and potentially detrimental.Ultimately, the ability to analyze cohort reports on a regular basis is key to optimizing how you monetize your content and increases the likelihood of creating a profitable game over the long-run. Let’s look into how to actually analyze cohort reports - and when you should do it.How to analyze cohort reportsUnderstanding what you’re looking atCohort reports tracks the retention rate and revenue generated by different groups of users. Each row on the far left column represents a different user group, and the row at the very top shows the number of days since each user group installed your game.For every cohort, day 0 has a 100% retention rate, and as the days progress this number drops. The shade visually signals the strength of the retention rate or revenue value, allowing you to easily see any anomalies. For example, the April 29 cohort has a much higher Day 3 retention rate than the other cohorts and can be easily identified due to its darker blue shade. This could be due to a change in monetization strategy, for instance adding a new rewarded video ad placement in the game that helps users progress during a difficult level.This example shows a 14 day period, but you can choose different timeframes. Looking at cohorts from a few months ago can be useful as a point of comparison with more recent cohorts, and can shed insight on the effectiveness of your current monetization strategy and game design. Aside from customizing the time period, depending on the mediation or analytics platform you’re using, you can also select specific geos and, if you have multiple games, specific titles from within your portfolio.The same goes for revenue. As you can see below, this game’s users drive more value the longer they’re playing the game.
When to analyze cohort reportsOn a daily basisYou should aim to look at your cohort report every day. First check your high level metrics in your performance and user activity reports, and then go to the cohort report to see the impact of your monetization and UA strategy on retention and LTV. By checking daily, you can stay agile with your strategy and make speedy, informed decisions to maximize the value of your users.After changing your growth strategyIn addition to checking in every day, it’s important to analyze your cohort report soon after making a change to your growth strategy. On the monetization side, for example, perhaps you remove an ad network from your waterfall, or roll out a new ad unit in your game.User activity and performance reports will show relevant metrics like eCPM, fill rate, ad engagement rates and revenue, but the only way to understand the impact on retention and LTV is through your cohort report.This is also true for your UA strategy - if you increase your bid and scale your installs as a result, it’s vital to check the impact of this on retention and LTV. Even though boosting your UA budget might drive an increase in DAU, if it’s bringing poor quality users, in turn lowering retention rates and LTV, then it's paramount you identify this issue early on. Otherwise, you risk wasting your budget.After changing your appChanges to your app, such as a new version update, should also be closely monitored using cohort reports. Perhaps the update triggers a short-term drop in ARPDAU, but because you fixed certain bugs and improved the user experience, retention and LTV of users is increasing.Analyzing cohort reports will contextualize such changes and give you a holistic view of their impact on your game’s business performance.The most successful game developers today are the ones who constantly optimize their game design and growth strategies. Cohort reports are a means to this end: they help you contextualize your other KPIs, measure the impact of changes you make, and ensure you’re never blinded by potentially misleading surface layer metrics. With cohort reports, you can always keep a close eye on the most important metrics for long-term success: retention and LTV.]]></description><link>https://unity.com/blog/analyzing-cohort-reports-the-what-why-when-and-how</link><guid isPermaLink="true">https://unity.com/blog/analyzing-cohort-reports-the-what-why-when-and-how</guid><pubDate>Tue, 01 Jun 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Announcing the Unity for Humanity Rare Impact Challenge winners]]></title><description><![CDATA[We partnered with Rare Beauty’s Rare Impact in October of 2020 to open a call for immersive experiences that address mental health and well-being. This challenge was designed to underscore the powerful role that real-time 3D can play in supporting the world’s mental health landscape. Today, we are proud to introduce the winning projects: Apart of Me and What It’s Like to Be Me.Creators from around the world submitted to the Unity for Humanity Rare Impact Challenge, sharing powerful stories and experiences using RT3D to support mental health and well-being. Fueled by their personal experiences and connections to underserved populations, the submissions powerfully illustrated how RT3D can raise awareness for, normalize mental health conversations, reduce barriers for treatment, and increase access to mental health support. We were floored by all of the incredible work creators are doing, and are proud to introduce the two Rare Impact Challenge winners, Apart of Me and What It’s Like To be Me.Read on to learn how these projects are supporting the mental health of critically underserved communities: tackling the unprecedented grief in adolescents exacerbated by the pandemic, and the unique stressors that make members of the LGBTQ+ community 3-4 times more likely to suffer from anxiety and depression.Designed by experts in grief, Apart of Me is a mobile game that helps young people and their families navigate through the heartbreak and confusion of grief. The game guides users through a beautiful, calming 3D world built to provide a safe space for making sense of loss, remembering loved ones, and connecting to wisdom shared by other youth who have experienced the loss of a loved one. By introducing powerful practices, including self-compassion, creativity, and community, young people discover new ways to live fully despite their losses.The global pandemic has brought on immeasurable loss. Apart of Me Co-Founder, Louis Weinstock, noted that “when we launched this app a couple of years ago, little did we know how badly our app would be needed today. Sadly, this pandemic has left over 4 million children and young people around the world grieving for loved ones.” With the Unity for Humanity Rare Impact Challenge award, this team will be able to expand their reach and meet the growing demand for the app.Apart of Me works in partnership with Child Bereavement organizations in the UK including Child Bereavement UK, Grief Encounter, and Winstons Wish. Download the free Apart of Me app from the Google Play and Apple App stores here.What It’s Like to Be Me is a VR experience that invites users to understand what it can be like for members of the LGBTQ+ community confronting stress in their everyday life brought on by negative attitudes about their sexual and/or gender identities. What It’s Like to Be Me is about witnessing and engaging with the stories of LGBTQ+ individuals as they navigate the world to recognize the mental, emotional, and physical strain, and also the resilience and strength developed through their experiences. This project validates common stories in the LGBTQ+ community to provide a source of comfort in knowing community members are not alone, and that happiness and joy are still possible.This project was created by two social scientists, Marc Svensson and Kate Luxion, who are completing their PhDs focused on LGBTQ+ mental health and minority stress at University College London (UCL). The LGBTQ+ identifying team behind the project believe that, “the most efficient way to improve mental health in our community and help LGBTQ+ people live happier lives is to educate the general population about the issues we are facing, as a community and as individuals. With education and improved understanding comes acceptance, inclusion, and empathy.” Kate Luxion, explains that the experience is “built around five true-life stories. Users are immersed in their experiences in the hope that more people understand what it’s like to experience and work through prejudice, discrimination, and stigma as an LGBTQ+ person,”With the grant funding, the team will complete the project, sharing the first 5 VR stories. Ultimately What It's Like To Be Me will become an integral part of the training workshops run by Helsa, the company Marc Svensson founded in July 2019 to be a digital platform for LGBTQ+ mental health support and training. Helsa offers extensive helpful resources for the LGBTQ community, including research, training, and support.Created with Rare Beauty’s Rare Impact, this challenge is a part of the existing Unity for Humanity Program within Unity Social Impact, which celebrates and empowers creators who are using real-time 3D to inspire change. If you are using real-time 3D to build environment-focused content, consider submitting to the Environment & Sustainability grant by June 3. Join the Social Impact Mailing List to stay up-to-date on these projects, upcoming grant opportunities, and more.]]></description><link>https://unity.com/blog/news/announcing-the-unity-for-humanity-rare-impact-challenge-winners</link><guid isPermaLink="true">https://unity.com/blog/news/announcing-the-unity-for-humanity-rare-impact-challenge-winners</guid><pubDate>Wed, 12 May 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why this college is teaching real-time 3D to the next generation of automotive designers]]></title><description><![CDATA[The College for Creative Studies (CCS) in Detroit, Michigan has been at the forefront of innovation for over 110 years. We’ve partnered with this leading art and design college to create a series of hands-on courses to better equip post-secondary students with real-time skills for the automotive industry.At Unity, we believe that the world is a better place with more creators in it. This is why we partnered with CCS to inspire and educate students to ensure they have the skills they need to enter ever-changing industries. As a leading design institution, CCS typically partners with automotive original equipment manufacturers (OEMs) on curriculum projects to develop new ideas for vehicles. After graduation, their students and alumni go on to work at some of the world’s leading automotive manufacturers, design firms, and technology companies like Unity.Anuja Dharkar, head of academic and non-profit solutions at Unity, recently sat down with Paul Snyder, co-chair of the Transportation Design program, and David Gazdowicz, associate professor for the Entertainment Arts program at CCS, to chat more about design at CCS, the future of automotive design, and why the college is teaching with Unity.OEMs have been utilizing the power of real-time 3D across their workflows for years. Leading manufacturers such as Volvo, Honda, Toyota, Lexus, and BMW have seen great success using Unity in a variety of ways. As the next generation of automotive designers enters the industry, they bring new ways of thinking and are equipped with real-time tools, such as Unity, to excel within the industry.Since partnering with Unity, Transportation Design and Entertainment Arts students have been given the opportunity to delve deeper into out-of-the-box ideas and explore forward-thinking using real-time 3D for their semester project – Vehicles of the Future. Students were split into five teams for the 15-week course, composed of automotive designers working on the interior and exterior of the vehicles and entertainment arts designers working on the futuristic environments to place the vehicles in.“It’s a very difficult project but it’s also very imaginative. When you open projects up to the extent that you’re asking students “what will the future look like, what will people be like, and what sort of vehicles will they need”, then they really have to push their imaginations,” says Snyder.Students were encouraged to conduct cultural and environmental research to explore unusual topics which stimulate iteration – a foundational principle of design. Through multiple iterations and feedback from faculty and Unity staff, the students further developed their vehicle designs to improve functionality, proposed integrated technologies – such as in-car experiences – and overall ingenuity. This iterative process is what Snyder, and his colleagues at CCS, believe to be a fundamental part of the student’s education.Gazdowicz agrees to say that the Entertainment Arts students follow a similar process through traditional methods such as sketching prior to moving to three-dimensional modeling.“The awesome thing about using Unity is that students can get to the [3D modeling] process faster and ideate quicker. So the more they are able to get into the software, into the game engine, and rebuild, design, and develop – they can see the end product really quickly. Then students go through the ideation process all over again to see if something doesn’t click and if the idea is working towards the desired outcome,” says Gazdowicz.Along with this iterative process, Snyder says these skills are truly setting the students up for real-life success. “Without really knowing it, the automotive industry had been preparing itself for COVID-19 for several years. Then when it hit, pivoting into digital and real-time 3D for surface evaluation, theme evaluation, or real-time virtual reality presentations became almost seamless,” says Snyder.Unity and CCS are now working together on a new project to engage students in developing concepts for in-vehicle human-machine interfaces (HMI). This project focuses on the use of real-time 3D to encourage future thinking and collaboration.***Learn more about the College for Creative Studies and check out how you can prepare students for in-demand jobs.Want to teach Unity? Learn more.]]></description><link>https://unity.com/blog/industry/why-this-college-is-teaching-real-time-3d-to-the-next-generation-of-automotive-designers</link><guid isPermaLink="true">https://unity.com/blog/industry/why-this-college-is-teaching-real-time-3d-to-the-next-generation-of-automotive-designers</guid><pubDate>Fri, 07 May 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[ML-Agents v2.0 release: Now supports training complex cooperative behaviors]]></title><description><![CDATA[About one year ago, we announced the release of the ML-Agents v1.0 Unity package, which was verified for the 2020.2 Editor release. Today, we’re delighted to announce the v2.0 release of the ML-Agents Unity package, currently on track to be verified for the 2021.2 Editor release. Over this past year, we’ve made more than fifteen key updates to the ML-Agents GitHub project, including improvements to the user workflow, new training algorithms and features, and a significant performance boost. In this blog post, we will highlight three core developments: The ability to train cooperative behaviors, enable agents to observe various entities in their environment, and harness task parameterization to support training multiple tasks. These advancements combined move ML-Agents closer to fully supporting complex cooperative environments.In our 2020 end-of-year blog post, we provided a brief summary of all the progress we had made from our v1.0 release in May 2020 through December of that same year. We also unpacked three main algorithmic improvements that we had planned to focus on for the first half of 2021: Cooperative multi-agent behavior, the capacity of an agent to observe a varying number of entities, and establishing a single model to solve several tasks. We can now proudly say that all three major improvements are available in ML-Agents.In addition to these three features, we made the following changes to the main ML-Agents package:Added a number of capabilities that were previously part of our companion extensions Unity package – i.e., Grid Sensors component and Match-3 game boards. Enhanced memory allocation during inference. In some of our demo scenes, we observed up to 98% reduction.Removed deprecated APIs and reduced our API footprint. These API-breaking adjustments necessitated our version upgrade from 1.x to 2.0. See our Release notes and Migration guide for further details on upgrading with ease.In the remainder of this blog post, we will expand on the roles of cooperative behaviors, variable length observation, and task parameterization, along with two incremental improvements: Promotion of features from the extensions package, and overarching performance. We will also provide an update on our ML-Agents Cloud offering and share a preview of our exciting new game environment that will highlight complex cooperative behaviors, ahead of its release in just a few short weeks.In many environments, such as multiplayer games like Among Us, the players in the game must collaborate to solve the tasks at hand. While it may have been previously possible to train ML-Agents with multiple agents in the scene, you could not define specific agent groups with mutual goals up until Release 15 (March 2020). ML-Agents now explicitly supports training cooperative behaviors. This way, groups of agents can work toward a common goal, with the success of each individual tied to the success of the whole group.In such scenarios, agents typically receive rewards as a group. So if a team of agents wins a game against an opposing team, everyone is rewarded, even the agents who did not directly contribute to this win, which makes it difficult to learn what to do independently. This is why we developed a novel multi-agent trainer (dubbed MA-POCA for Multi-Agent POsthumous Credit Assignment; full arXiv paper coming soon) to train a centralized critic – a neural network that acts as a “coach” for the whole group of agents.With this addition, you can continue to give rewards to the team as a whole, but the agents will also learn how to best contribute to their shared achievement. Agents can even receive individual awards, so that they stay motivated and help each other attain their goals. During an episode, you can add or remove agents from the group, such as when agents spawn or die in a game. If agents are removed mid-episode, they will still be able to understand whether or not their actions contributed to the team winning later on. This empowers them to put the group first in their actions; even if they end up removing themselves from the game through self-sacrifice or other gameplay decision-making. By combining MA-POCA with self-play, you can also train teams of agents to play against each other.More than this, we developed two new sample environments: Cooperative Push Block and Dungeon Escape. Cooperative Push Block showcases a task that requires multiple agents to complete. The video below exhibits Dungeon Escape, in which one agent must slay the dragon, causing it to be removed mid-episode, so that its teammates can pick up the key and escape the dungeon.Read through our documentation for details on how to implement cooperative agents into your project.One of the most commonly requested features for the toolkit has been to enable game characters’ reactions to varying numbers of entities. In video games, characters often learn how to deal with several enemies or items at once. To meet this demand, Release 15 (March 2020) now makes it possible to specify an arbitrary length array of observations called the “observation buffer.” Agents can learn how to utilize an arbitrary-sized buffer through an Attention Module that encodes and processes a varying number of observations.The Attention Module serves as a great solution in situations where a game character must learn to avoid projectiles, for example, but the number of projectiles in the scene is not fixed. In this video, each projectile is represented by four values: Two for positioning and two for speed. For each projectile in the scene, these four values are appended to a buffer of projectile observations. The agent can then learn to ignore the projectiles that are not on a collision trajectory, and instead pay extra attention to the more dangerous projectiles.What’s more, agents can learn the importance of entities based on their relations across entities in the scene. For instance, if agents must learn how to sort tiles in ascending order, they will be able to figure out which tile is the next correct tile based on the information of all other tiles. This new environment, dubbed Sorter, is now available as part of our example environments that you can download and use to get started.Read through our documentation for details on how to implement variable length observations into your project.Video game characters often encounter several tasks in different game modes. One way to approach this challenge is to train multiple behaviors separately and then swap between them. However, it is preferable to train a single model that can complete multiple tasks at once. After all, a single model lowers the memory footprint in the final game, and by extension, shortens overall training time since the model can reuse some parts of the neural network across multiple tasks. To this end, we added the ability for a single model to encode multiple behaviors using HyperNetworks in our latest release (Release 17).In practice, we use a new type of observation called a “goal signal,” as well as a small neural network called a “HyperNetwork,” to generate some of the weights of another bigger neural network. This bigger network is the one that informs the agent’s behavior and enables the behavior’s neural network to have different weights, depending on the goal of the agent, while maintaining some shared pieces across goals when necessary.The following video shows an agent solving two tasks present in the ML-Agents examples (WallJump and PushBlock) at the same time. If the bottom color is green, the agent must push the block into the green zone. But if the top-right square is green, the agent must jump over the wall onto the green square.Read through our documentation for details on how to implement task parameterization using goal signals in your project.In November 2020, we wrote about how Eidos developed a new type of sensor in ML-Agents called Grid Sensor. This Grid Sensor implementation was added to our extensions package at the time, before we went on to iterate on the implementation and promote it to this latest release of the main ML-Agents package.In Release 10 (November 2020) of ML-Agents, we introduced a new Match-3 environment and added utilities to our extensions package to enable the training of Match-3 games. We’ve since partnered with Code Monkey to release a tutorial video. Similar to Grid Sensors, we made our utilities for training Match-3 games a part of the core ML-Agents package in our latest release.Our goal is to keep on improving ML-Agents. After hearing your feedback on the amount of memory allocated during inference, we promptly made significant allocation reductions. The table below shows a comparison of the garbage collection metrics (kilobytes per Academy step) in two of our example scenes between versions 1.0 (released May 2020) and 2.0 (released April 2021). These metrics exclude the memory used by Barracuda (the Unity Inference Engine that ML-Agents relies on for cross-platform inference):In our v1.0 blog post, we first shared some details on ML-Agents Cloud. Our ML-Agents Cloud service lets you kick off multiple training sessions that run on our cloud infrastructure in parallel, so you can complete your experimentation in a timely manner. Today, ML-Agents Cloud’s core functionality gives you the ability to:Upload your game builds with ML-Agents implemented (C#).Start, pause, resume and stop training experiments. You can launch multiple experiments at the same time and leverage high-end machines to spawn many concurrent Unity instances for each training experiment – all with faster completion times.Download results from multiple training experiments.Throughout the rest of 2021, we plan to accelerate the development of ML-Agents Cloud, based on Alpha customer feedback. Additional functionalities will focus on the ability to visualize your results, manage your experiments from a web UI, and harness hyper-parameter tuning. In fact, we are still accepting applicants to the Alpha program today. If you are interested in signing up, please register here.In this post, we outlined three core improvements that move ML-Agents closer toward supporting complex cooperative games. We demonstrated each of these three improvements in isolation, and also discussed the sample environments recently added to the toolkit. What we did not yet reveal is another upcoming showcase environment called Dodgeball. Dodgeball is a team versus team game that highlights the way that all three features work together. Agents must reason in complex environments to solve multiple modes, cooperate with teammates, and observe varying entities in a scene. We plan to release this environment in the coming weeks, alongside another dedicated blog post. Till then, check out this sneak peek of our agents training to play Dodgeball.On behalf of the entire Unity ML-Agents team, we want to thank you all for joining us on this journey with ongoing support over the years.If you’d like to work on this exciting intersection of Machine Learning and Games, we are hiring for several positions and encourage you to apply here.Finally, we would love to hear your feedback! For any feedback regarding the Unity ML-Agents toolkit, please fill out the following survey or email us directly at ml-agents@unity3d.com. If you encounter any issues, do not hesitate to reach out to us on the ML-Agents GitHub issues page. For any other general comments or questions, please let us know on the Unity ML-Agents forums.]]></description><link>https://unity.com/blog/engine-platform/ml-agents-v20-release-now-supports-training-complex-cooperative-behaviors</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/ml-agents-v20-release-now-supports-training-complex-cooperative-behaviors</guid><pubDate>Wed, 05 May 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Are you stereotyping the mobile gamer?]]></title><description><![CDATA[ironSource VP Sales, US Marketplace Mike Schoelch sat down with Digiday this month at their Gaming Advertising Forum to discuss diversity among mobile gamers and the perceptions (and misconceptions) amongst advertisers. The fifteen minute chat, along with the just-released infographic, serve as a preview of upcoming joint research between ironSource and Digiday into the behaviors and attitudes of the heterogenous, broad base of players that engage with mobile games regularly.Watch the talk here:And take a look at some of our key findings:]]></description><link>https://unity.com/blog/are-you-stereotyping-the-mobile-gamer</link><guid isPermaLink="true">https://unity.com/blog/are-you-stereotyping-the-mobile-gamer</guid><pubDate>Fri, 23 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mortenson releases Unity on Climate Pledge Arena]]></title><description><![CDATA[Mortenson used Unity to create a virtual reality (VR) walkthrough of Climate Pledge Arena, the new home of the Seattle Kraken. The immersive and collaborative virtual environment enables project, sales and marketing, and ownership teams to review designs and give tours before the arena is built.U.S.-based Mortenson is a top-20 builder, developer, and provider of energy and engineering services. Its Seattle office has been building complex projects in the Northwest for over 36 years. In 2018, Mortenson was named the new general contractor on a KeyArena redevelopment project for the Seattle Kraken, the National Hockey League’s (NHL) 32nd franchise, set to play its inaugural season in 2021.Recently renamed Climate Pledge Arena, this extensive $1 billion project will reposition the venue as the premier sports and entertainment destination in the Pacific Northwest. The arena is aiming to be the first International Living Future Institute net Zero Carbon certified professional sports venue in the world. The institute’s net Zero Carbon Certification requires that 100% of the energy used to operate the building be offset by new renewable energy. In addition, all of the embodied carbon emissions associated with the construction and materials of the project must be disclosed and offset.Mortenson’s experience as one of the nation's largest sports and entertainment builders—recently completing the Las Vegas Raiders’ Allegiant Stadium and the Golden State Warriors’ Chase Center—taught them the importance of ensuring ownership groups develop clear conceptual knowledge of the physical realities of the design direction. When Oak View Group, the majority owner of the Climate Pledge Arena, asked Mortenson to provide a walkthrough of premium spaces as they neared the end of conceptual design for the Climate Pledge Arena, they turned to Unity to create an immersive VR experience.Mortenson saw the value of VR early and created a Virtual Insights team to integrate visualization technologies into its design and customer experience. It made them experts in using Unity to deliver interactive VR and 360 video experiences for a wide variety of use cases, such as design reviews and sales/marketing initiatives for construction and healthcare clients.“The AEC industry has been experimenting with the use of VR for well over 20 years. It has successfully provided value and ROI. However, for many projects, the form factor, technical requirements, and user friction for delivering walkthroughs prevented it from realizing its potential as an accessible and broadly-used communication and collaboration tool,” says Will Adams, VR Developer at Mortenson. “Now, the new generation of real-time 3D development platforms and standalone, six degrees of freedom (6DOF) headsets are ushering in a new era of VR utility in the AEC industry.”This new era signals a paradigm shift for the AEC industry’s use of immersive VR. It’s no longer a technical tool that companies are curious about from an individual standpoint. It’s an invaluable tool that empowers customers and development teams to collaborate in real-time 3D and speed up design reviews through interactive and at-scale VR experiences.“Various hardware and software improvements are reducing friction for users and facilitating comfort for longer periods of use,” says Adams. “These improvements have resulted in groups of people remaining immersed together for longer than previously possible. Users are experiencing environments intuitively, as if they were walking together, discussing issues and features naturally. It played a pivotal role in creating Climate Pledge Arena.”The renovation has been likened to "building a ship in a bottle” as crews lifted and suspended a 44-million-pound roof over the project site as the arena’s footprint is expanded underground and the walls are rebuilt. The complexity of the project meant Mortenson had to rely on intense team collaboration, top-down construction, and digital tools to simulate the built environment.When bringing the Climate Pledge Arena model into VR, Mortenson focused on the club level, suites, press bridge, arena bowl, structure, and atrium. Mortenson needed to port different design models from partners and building information modeling (BIM) data to build the arena in Unity.The structural, precast stadia, walls, and other data were ported from Autodesk Revit. The renowned architectural firm Rockwell Group provided Mortenson with assets from Rhino and Autodesk 3ds Max for the high-design spaces, including the club level and suites.After creating the model in Unity and assessing project needs, Mortenson decided to develop the environment for the Oculus Quest headset. “We chose the Oculus Quest for greater usability and flexibility. Because it’s easy to set up and maintain each headset, we can smoothly support 10 or more people in the environment simultaneously,” says Adams.Mortenson’s research has shown that the key to a successful VR environment is to reduce friction. An overly complicated, hard to learn environment breaks immersion and the willingness of the user to engage. It’s important to create an inviting and accessible experience for all users. Mortenson implemented a wide variety of features to create the best virtual environment possible.“We found that the use of ‘teleportation’ for primary navigation creates a psychological disconnect between users and the environment. It can reduce their ability to interact with other users socially and cause vertigo or motion sickness,” says Adams.To combat this, Mortenson pushed the device's limits for positional tracking by leveraging a large 40-foot by 100-foot open space at its project office. This created a virtual environment where walking and moving naturally in the space was the primary mode of navigation.Mortenson took it a step further by aligning the virtual environment with the physical walkthrough space. By using code development, networking, and a simple process of alignment, Mortenson could ensure that users' avatars are in the same place as their physical bodies. “It’s extremely important for users to interact normally in conversation, as it allows them to feel each other's presence through an accurate virtual representation of their position in respect to their voice,” says Adams.The Unity VR walkthrough has been a valuable tool for both the project team and the ownership group. Given the customers’ focus on creating live world-class sports and entertainment experiences, it was critical for Mortenson to deliver a smooth and successful arena operation. Utilizing an immersive VR environment enabled the arena’s operation personnel to be prepared and familiar with the space before it’s even open, ensuring a spectacular experience for fans.“We facilitated VR walkthroughs for more than 100 people with an average time-in-environment of well over one hour per person,” says Adams. “Ken Johnson, Project Executive at Oak View Group, has spent well over 10 hours in the environment. He’s become our best arena tour guide and has led tours for more than 30 people.”After experiencing the power and realism of the virtual environment, Oak View Group wanted a version of the environment for the sales team. Additional modeling was done in 3ds Max and Unity to create a high-fidelity version the Seattle Kraken sales center could use to show customers and fans. Mortenson provided the virtual environment and six Oculus Quest headsets and trained the team on how to do VR walkthroughs. It has been highly effective and the highlight of their sales pitch.---Learn more about Unity for AEC and see why industry leaders are embracing real-time 3D technology to change the way buildings are designed, created, and operated.]]></description><link>https://unity.com/blog/industry/mortenson-releases-climate-pledge-arena-vr-walkthrough</link><guid isPermaLink="true">https://unity.com/blog/industry/mortenson-releases-climate-pledge-arena-vr-walkthrough</guid><pubDate>Fri, 16 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Join Unity Pulse, the community at the heart of building a better Unity]]></title><description><![CDATA[Are you interested in providing feedback directly to Unity teams? Sign up to become a member of Unity Pulse, our new product feedback and research community that we created because we believe your experiences and insight into product features are vital to Unity’s evolution.Unity Pulse is a new online feedback community created by the market research team at Unity where you may have the opportunity to connect directly with Unity product teams, gain access to product concepts before they reach the public and give feedback on Beta products to help us make the best products and Unity experiences for you.Shape the future of Unity with usEngage with us to give feedback on early features and prototypesConnect in closed groups with Unity product teamsPolls, surveys, discussion and ideas sharing boards, virtual roundtables and moreGet points for participating in certain activities and redeem points for rewardsWe promise not to spam you with notifications. We’ll reach out only when we have content that’s relevant to you as we will tailor your Unity Pulse experience according to your profile.Sign up nowThe goal of Unity Pulse is to have a centralized source of solicited user feedback. We will be sun setting the Advisory Panel, so if you would like to continue to provide feedback as part of our research projects, please sign up for Unity Pulse. We will be redirecting some of the feedback opportunities for the Beta Program to Unity Pulse as well. And, don’t worry, there will still be opportunities for you to provide your insights and experiences through other parts of the Unity site including forums and Product Board.We want to learn and connect with users working in any industry, using any product or service, even if you are new to Unity, your previous experience and knowledge is valuable to us. We know that your time is important and we appreciate you spending some of it with us and the Unity Pulse community.We believe the world is a better place with more creators in it, and we want to provide you with the best products and experiences to make it as easy as possible for you to bring your creative vision to life. Join us on our journey and help us build a better Unity.—Have questions? Email us at unitypulse@unity3d.com.]]></description><link>https://unity.com/blog/news/join-unity-pulse-the-community-at-the-heart-of-building-a-better-unity</link><guid isPermaLink="true">https://unity.com/blog/news/join-unity-pulse-the-community-at-the-heart-of-building-a-better-unity</guid><pubDate>Thu, 15 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Bursting into 2021 with Burst 1.5]]></title><description><![CDATA[Our High Performance C# (HPC#) compiler technology, Burst, has gone from strength to strength. In the latest version Burst 1.5, we’ve made some major improvements. In this post we’ll take you through the headline features, and show you how to make the most of Burst in your projects.In collaboration with our partners at Arm, we’ve added Arm Neon hardware intrinsics to Burst 1.5. These let you target the specific hardware instructions available on Arm platforms, including the amazing vector technology Neon in all its glory.Arm Neon intrinsics were first introduced as an experimental feature in Burst 1.4, and we're happy to announce that in Burst 1.5 Neon intrinsics are now fully supported.Burst currently supports all Armv8-A intrinsics. Armv8.1-RDMA, Armv8.2-DotProd and Armv8.2-Crypto intrinsics are an experimental feature in Burst 1.5, full support will be added in the next Burst version.Arm Neon intrinsics make use of the v128 type, familiar from Intel intrinsics, and also the v64 type. These types comprise bags of 128 or 64 bits, respectively. It's up to you to make sure you are correctly treating vector element type and count; after all, in the CPU it is represented as a SIMD register.A simple usage example:Keep in mind that the IsNeonSupported value is being evaluated at compile time based on your target CPU, so it doesn't affect the runtime performance. If you want to provide multiple intrinsics implementations for Arm and Intel target CPUs, you'd want to have more of the IsXXXSupported blocks in your code.An important thing to consider is that Neon intrinsics are supported only on Armv8-A hardware (64-bit). On Armv7-A (32-bit) IsNeonSupported will always be false. If you are still targeting older 32-bit Arm devices, you can still rely on Burst to optimize your managed code automatically, without using Neon intrinsics directly.We’ll be following up on Arm intrinsics in a subsequent blog, sharing more details on Neon intrinsics.Hardware intrinsics are targeted at advanced users who want to get the absolute maximum performance out of the compiler, and want to fine-tune their code trying to squeeze down a few more CPU cycles. If you accept this challenge, we are happy to hear your feedback!A prominent new feature in Burst 1.5 is what we refer to as Direct Call. With Burst, we began focusing on jobs to accelerate tasks that run on Unity’s job system with our HPC# compiler. We then added function pointers, so you can manage and call into bits of Burst code from just about anywhere:The code proceeds to run through Burst. Note that Direct Call methods only work this way (as shown above) when called from the main thread.In Burst 1.5, we’ve added ample new and interesting functionalities to give you some extra optimization superpowers.Hint.Likely, Hint.Unlikely and Hint.AssumeOne key request that has continued to come up focuses on the use of intrinsics to inform the compiler whether something is likely or unlikely to happen. In Burst 1.5, we’ve added two new intrinsics to Unity.Burst.CompilerServices – Likely and Unlikely:These intrinsics enable you to tell the compiler whether some boolean condition (like the condition of an “if” branch) is either likely or unlikely to be hit. This allows the compiler to optimize the resulting code.We’ve also added an Assume intrinsic:This intrinsic informs the compiler of certain trends that will always occur. For instance, you can use Assume to tell the compiler that a pointer is never null, an index is never negative, a value is never NaN, and so forth. Be careful though – the compiler won’t check if your Assume is actually valid, so please ensure that your assumptions are actually true.IsConstantExpressionWe’ve also added an intrinsic to query whether an expression evaluates to a constant expression at compile time:This query can be used as shown above, to ensure that some value is constant. Otherwise, it can be used in algorithms with faster paths, if, for example, something is definitely not NaN or null.[SkipLocalsInit]In C#, all local variables are zero initialized by default. Sometimes developers want to skip the cost of doing this zero initialization, so we added an attribute [SkipLocalsInit] to do just that. Simply apply this attribute to any function that you don’t want to have the zero initialization happen on. This mirrors .NET 5’s SkipLocalsInitAttribute functionality, but brings it to Burst sooner.Check out these smaller but equally awesome improvements in 1.5, in no particular orderBurst now supports ValueTuple structures (int, float) within Bursted code – so long as types don’t stray across entry-point boundaries. For example, you can’t store them in a job struct or return them from a function pointer.We added Bmi1 and Bmi2 x86 intrinsics to Burst 1.5 – gating them on AVX2 support. Any CPU that has AVX2 support can now make use of these incredible bit manipulation instructions directly in their code.In Unity 2020.2 or newer versions, you can now call new ProfilerMarker("MarkerName") from Bursted code.We also re-enabled the Burst warning BC1370, exclusively in player builds. This warning tells you where throws appear in a function unguarded by [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] – which isn’t supported in player builds.Finally, there is a whole slew of performance improvements surrounding the use of LLVM 11 as our default code generator, along with optimizations for stackalloc hoisting, dead loop removal, compile time improvements and much more.Burst 1.5 is the last version to support Unity 2018.4. Our next version will have a minimum requirement of Unity 2019.4.Burst is a core part of our technology stack that you can start using today. It is a stable and verified package, already employed in thousands of projects, and counting. While our DOTS technology stack leverages Burst to provide highly optimized code, Burst also serves as a stand-alone package outside of DOTS.It supports all the major desktop, console and mobile platforms, and works with Unity 2018.4 or newer.If you have any thoughts, questions, or would just like to let us know what you are doing with Burst, then please feel free to leave us a message on the Burst forum.]]></description><link>https://unity.com/blog/engine-platform/bursting-into-2021-with-burst-1-5</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/bursting-into-2021-with-burst-1-5</guid><pubDate>Wed, 14 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to design and optimize creatives for mobile apps]]></title><description><![CDATA[Engaging ad creatives are key to succeeding on an ad network, and are often the difference between acquiring users at scale and struggling to get liftoff. But what does it take for apps, from categories ranging from education and travel, to entertainment and finance, to create killer ad creatives that convey the right message, engage users, and drive installs? By the end of this article, you’ll know just how to achieve this.Read on for top tips from Giacomo Maragliulo, Art Director at ironSource, and Shay Elkoby, Creative Operations Lead.1. Be authenticAuthenticity is key for apps to drive installs from the right users; the kinds who will stick around long term and build a strong connection with your product. Here are a couple pointers to make sure your ad is authentic:First, understand your USP and what motivates your audience. This will enable you to conceptualize your key messaging in your ad creatives, and what you need to highlight using various audio or visual effects.Jiggy, for example, knew that their target audience especially enjoys creating amusing dance videos for family members. Even more specifically, their motivation is to use the videos as light-hearted pranks. This shines through in their ad creative focuses on using “grandma” in the various dance animations, and uses copy like “prank” and “hilarious”. The developers also know that their users are strongly motivated by viral memes and gifs, so they make sure to showcase the many options that are available within the app.Second, be sure to show both the core app experience and the end product. The core product might be photo editing, but if the end goal is for users to share the photos on social media, make sure to show that too in the ad with strong visual cues - like screenshots of the user interface.2. Educate your audienceExtending on the authenticity tip, you want to make sure the creative is educational - by the end of the ad, the user should know exactly what to expect from your app and why they should download it.There are two methods for doing this - you should run A/B tests to determine which works best. First, try showing your app using a degree of creative license and a relatable storyline; for a delivery app, for example, this could involve using human actors in a home setting, debating what to do for dinner, before taking out their phone and ordering dinner via the app. The user gets to see the app in use and understands its value, but in a less direct way.Alternatively, you can test a different creative strategy - one that tells users straight away, explicitly, what the app is and why they need it. This could mean using creative elements like animations, testimonials, or in-app screenshots or videos in the first few seconds, and focusing on demonstrating the app’s core features for the duration of the ad.Whatever approach you go for, ensuring the creative is educational will mean only the most relevant users will install, meaning they’ll stick around longer and increase your ROAS and LTV. Remember that it won’t be possible to convey all your messages and selling points in a short ad - prioritize what’s most important, and leave some room for curiosity among users that will lead them to head to the store and install the app.3. Leverage audio effectsAudio, especially when paired with strong visuals, can be very effective in improving the user experience and in turn boosting IPMs for app ad campaigns. Get inspired by what others are doing - look out for the use of voiceover narration, crescendos, and the different musical styles and sound effects used in the background.TeasEar used both music and audio effects in its video ad: the music has a fast rhythm to complement the vibrant and dynamic visuals and generating excitement, while the audio effects when the different stickers are used highlights the ASMR aspect of the app. In this case, the audio effects could be described as educational, by helping reinforce that this app is in the ASMR category.Note that while audio elements can be combined together, like music and sound effects, forcing too many audio elements into one creative doesn’t necessarily mean it’ll increase its IPM - it might even do the opposite. Make sure to A/B test different versions and combinations of audio elements to find what’s right for your specific ad campaign.4. Research ad creative trendsCompetitive intelligence is a key part to building ad creatives that achieve excellent IPMs. If you can emulate the key features and components of your most successful competitors’ ads - while adapting them and making them your “own” - you’re already on the way to making a high-impact creative. Scour App Annie, Sensor Tower, Youtube, Facebook, and Instagram to see what’s hot. Here’s a few features to put on your checklist:Ad typesSee what ad types other apps in your category are using to guide your own strategy. Are they using static ads or videos? What about interactive end cards? Either way, you should experiment with several different types of creatives, but it’s always useful to see what your competition is doing.LengthHow long are your competitors’ video ads? 10 seconds or 30 seconds? We’ve found that for apps, short is sweet - around 15 seconds is generally the optimal length. Shorter than this and you risk failing to educate users about your app and conveying your key message; longer than this, you risk users losing engagement and dropping off before they finish watching your video. Having said this, be sure to run plenty of A/B tests to determine the optimal length for your specific campaign - 15 seconds is a good place to start, but users might prefer even shorter video ads depending on the product.On-screen effectsHow are your competitors using prompts or other visual effects to help convey their message? For instance, they could be using human hands to point at something and emphasize it; they could use a human protagonist to tell the story, or on-screen copy; they might use live actors.]]></description><link>https://unity.com/blog/design-and-optimize-creatives-mobile-apps</link><guid isPermaLink="true">https://unity.com/blog/design-and-optimize-creatives-mobile-apps</guid><pubDate>Thu, 08 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Enter the Boss Room: our new multiplayer sample game]]></title><description><![CDATA[Explore Unity’s new, experimental netcode library and the underlying patterns of a multiplayer game in our small scale cooperative RPG, Boss RoomCreating multiplayer games is not easy, and it’s common to feel overwhelmed when exploring the development of a multiplayer game – even with SDK docs provided. You need advice on what to do with the provided SDKs and patterns you can use as building blocks for your own games. It’s our goal as the Unity Multiplayer Networking team to equip and support developers (like you) with the tools needed to build great multiplayer gaming experiences for your players. Part of that promise involves providing not only the foundational networking technology but also the documentation and educational templates needed to understand its application. That’s where our multiplayer samples come in – with Boss Room being the first educational content of its kind.As Boss Room is being developed, tutorials on the different aspects of networking the sample will be written for developers on our new documentation site. These tutorials will cover many critical pieces of networking a small cooperative game, such as how to choose between RPCs vs NetworkVariables, or how to design your game to be responsive with lag compensation techniques.Now let’s dive into our new, early access co-op sample: Boss Room.Enter the Boss RoomWelcome to the Boss Room, an official sample project built on 2020 LTS that showcases Unity’s native suite of tools, graphics, and experimental networking technology – available now as Early Access through Github. Boss Room leverages the new experimental netcode package to bring up to eight players together to defeat imps and a boss in this adorable vertical slice of a cooperative RPG dungeon. Eager for more Boss Room? Don’t sweat – it will continue to evolve alongside the community as our multiplayer solution evolves too.Get started here, or read on to see a quick tour of what to expect in Boss Room today.The premisePlayers will begin Boss Room by hosting or joining a game server, which will be hosted on one of the players’ devices.Once connected, players will select a Hero from one of the eight available, and join a lobby and select your character while waiting for all party members to be ready to play. When all players are ready, a short timer shows and then all Heroes are transported into the Boss Room environment.Once in the Boss Room, players must work together to get past enemy minions and defeat the boss.NetworkingWith the main goal of Boss Room being to teach developers the underlying concepts and patterns behind a multiplayer game, the networking aspects of the sample are crucial.Part of the main value designed in Boss Room is the multiplayer patterns it shows: action animation anticipation, lobby, state vs RPC, and more. The goal is to provide users with not only the implementation of such patterns, but also documentation to help them understand it. Be sure to keep an eye on our documentation site to stay up-to-date with these articles as they’re published over the coming months.The networking model used in Boss Room is a client-hosted server, and players can connect to each other through an integrated Photon Relay and IP direct connection.Characters and classesFor Player Characters, we have four 3D character classes (Mage, Warrior, Rogue, and Archer), three races (Elf, Human, and Dwarf), and two genders represented today. These characters have two primary abilities and a few emote animations included for each. For AI / Enemies, we showcase imps and a dungeon boss – each with their own unique abilities.The characters in Boss Room are all based on a common character model we lovingly call the “U” – designed to be reused and scaled into new shapes and sizes. Since they all share a common structure, they’re designed for reuse. Boss Room uses the UCL license, which means you'll be able to reuse all our assets and build on top of them in your own Unity project, so by all means… mod away!As previously mentioned, Boss Room demonstrates a variety of action gameplay techniques that are commonly found in co-op RPGs, along with the coding patterns and techniques that are useful when implementing said actions. This includes server-driven pathfinding and movement with client-side interpolation as well as having the Action System be a generalized mechanism for characters to “do stuff” in a networked way.Actions include everything from your basic character attack to a fancy AOE skill like the Archer's Volley Shot. Below is a list of action archetypes implemented using this system:Melee attack with a physics-based hitbox check.Area-of-effect attack. The attack is centered on a point provided by the client to show client-side area selection with a server-driven effect.Ranged Projectile attack which spawns a server-driven projectile. Also includes a variant of this action with an ability to "charge" the shot by holding down the action button.Stunned action that prevents AI-driven agents from doing anything.Stealth action that toggles stealth mode for rogue.A buffing action with an included ability to charge it by holding down the action button. Produces extra effect on the maximum level of charge.Emote actions that play silly character animations – these show player communication.Chase action that makes your character follow the chosen targetTarget selection that is used for actions that can aim at a target, if one is chosen.Trample action that Boss executes and pushes unwary heroes aside – this shows patterns for networked physics.Revive action that allows heroes to bring each other back to life.Dungeon and gameplayThe Boss Room environment is designed to let players have a few moments to test their character’s skills before they face the boss.The dungeon features an antechamber and a boss room, with a simple coop switch puzzle to get into the Boss’s area. The goal is simple, defeat imps, solve the puzzle, take down the boss – and get to the treasure at the end!A note from our teamThe goal of Boss Room is greater than just API education. Multiplayer is one of the areas of game making which will influence your game design, not just your implementation. Knowing good practices like "when is it ok to be client driven vs server driven if I have a server driven, physics impacting NPC like the boss" or "tricks where you can use ramp up animations to hide latency" will help you make a better multiplayer game. Boss Room's whole feature set is examples of these practices and patterns.Our team's goal is to give you a reference for the whole engineering process around multiplayer game development so you're able to build a multiplayer game from A to Z for specific types of games. This will involve design, implementation, testing and how to handle a live environment. We're starting with Boss Room as the reference – our docs around it are currently being written.Boss Room's secondary goal is dogfooding the new experimental GameObject netcode package (an evolution of MLAPI). The samples team and the SDK team work hand in hand to improve MLAPI, give UX feedback, and raise issues. As MLAPI adds new features and updates the SDK, we'll keep using these features and make sure they make sense in a project development context.What’s up next?As our networking solution continues to grow and improve, so will this sample. Here are ways to stay involved.Follow this project on Github, and explore its capabilities with this guideFollow the core netcode progress on GitHub and add requests for updates or features to our public roadmapChat with us on Discord or in the Unity Multiplayer forum and share your experiences or ask for help]]></description><link>https://unity.com/blog/games/enter-the-boss-room-our-new-multiplayer-sample-game</link><guid isPermaLink="true">https://unity.com/blog/games/enter-the-boss-room-our-new-multiplayer-sample-game</guid><pubDate>Thu, 08 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tales from the optimization trenches: Saving memory with Addressables ]]></title><description><![CDATA[Efficient streaming of assets in and out of memory is a key element of any quality game. As a consultant on our Professional Services team, I’ve been striving to improve the performance of many customer projects. That’s why I’d like to share some tips on how to leverage the Unity Addressable Asset System to enhance your content loading strategy.Memory is a scarce resource that you must manage carefully, especially when porting a project to a new platform. Using Addressables can improve runtime memory by introducing weak references to prevent unnecessary assets from being loaded. Weak references mean that you have control over when the referenced asset is loaded into and out of memory; the Addressable System will find all of the necessary dependencies and load them, too. This blog will cover a number of scenarios and issues you can run into when setting up your project to use Unity Addressable Asset System – and explain how to recognize them and promptly fix them.For this series of recommendations, we will work with a simple example that’s set up in the following way:We have an InventoryManager script in the scene with references to our three inventory assets: Sword, Boss Sword, Shield prefabs.These assets are not needed at all times during gameplay.You can download the project files for this example on my GitHub. We’re using the preview package Memory Profiler to view memory at runtime. In Unity 2020 LTS, you must first enable preview packages in Project Settings before installing this package from the Package Manager.If you’re using Unity 2021.1, select the Add package by name option from the additional menu (+) in the Package Manager window. Use the name “com.unity.memoryprofiler”.Let’s start with the most basic implementation and then work our way toward the best approach for setting up our Addressables content. We will simply apply hard references (direct assignment in the inspector, tracked by GUID) to our prefabs in a MonoBehaviour that exists in our scene.When the scene is loaded, all objects in the scene are also loaded into memory along with their dependencies. This means that every prefab listed in our InventorySystem will reside in memory, along with all the dependencies of those prefabs (textures, meshes, audio, etc.)As we create a build and take a snapshot with the Memory Profiler, we can see that the textures for our assets are already stored in memory even though none of them are instantiated.Problem: There are assets in memory that we do not currently need. In a project with a large number of inventory items, this would result in considerable runtime memory pressure.To avoid loading unwanted assets, we will change our inventory system to use Addressables. Using Asset References instead of direct references prevents these objects from being loaded along with our scene. Let’s move our inventory prefabs to an Addressables Group and change InventorySystem to instantiate and release objects using the Addressables API.Build the Player and take a snapshot. Notice that none of the assets are in memory yet, which is great because they have not been instantiated.Instantiate all the items to see them appear correctly with their assets in memory.Problem: If we instantiate all of our items and despawn the boss sword, we will still see the boss sword’s texture “BossSword_E ” in memory, even though it isn’t in use. The reason for this is that, while you can partially load asset bundles, it’s impossible to automatically partially unload them. This behavior can become particularly problematic for bundles with many assets in them, such as a single AssetBundle that comprises all of our inventory prefabs. None of the assets in the bundle will unload until the entire AssetBundle is no longer needed, or until we call the costly CPU operation Resources.UnloadUnusedAssets().To fix this problem, we must change the way that we organize our AssetBundles. While we currently have a single Addressable Group that packs all of its assets into one AssetBundle, we can instead create an AssetBundle for each prefab. These more granular AssetBundles alleviate the problem of large bundles retaining assets in memory that we no longer need.Making this change is easy. Select an Addressable Group, followed by Content Packaging & Loading > Advanced Options > Bundle Mode, and go to Inspector to change the Bundle Mode from Pack Together to Pack Separately.By using Pack Separately to build this Addressable Group, you can create an AssetBundle for each asset in the Addressable Group.The assets and bundles will look like this:Now, returning to our original test: Spawning our three items and then despawning the boss sword no longer leaves unnecessary assets in memory. The boss sword textures are now unloaded because the entire bundle is no longer needed.Problem: If we spawn all three of our items and take a memory capture, duplicate assets will appear in memory. More specifically, this will lead to multiple copies of the textures “Sword_N” and “Sword_D”. How could this happen if we only change the number of bundles?To answer this question, let’s consider everything that goes into the three bundles we created. While we only placed three prefab assets into bundles, there are additional assets implicitly pulled into those bundles as dependencies of the prefabs. For example, the sword prefab asset also has mesh, material, and texture assets that need to be included. If these dependencies are not explicitly included elsewhere in Addressables, then they are automatically added to each bundle that needs them.Addressables include an analysis window to help diagnose bundle layout. Open Window > Asset Management > Addressables > Analyze and run the rule Bundle Layout Preview. Here, we see that the sword bundle explicitly includes the sword.prefab, but there are many implicit dependencies also pulled into this bundle.In the same window, run Check Duplicate Bundle Dependencies. This rule highlights the assets included in multiple asset bundles based on our current Addressables layout.We can prevent the duplication of these assets in two ways:1. Place the Sword, BossSword and Shield prefabs in the same bundle  so that they share dependencies, or2. Explicitly include the duplicated assets somewhere in AddressablesWe want to avoid putting multiple inventory prefabs in the same bundle to stop unwanted assets from persisting in memory. As such, we will add the duplicated assets to their own bundles (Bundle 4 and Bundle 5).In addition to analyzing our bundles, the Analyze Rules can automatically fix the offending assets via Fix Selected Rules. Press this button to create a new Addressable Group named “Duplicate Asset Isolation,” which has the four duplicated assets in it. Set this group’s Bundle Mode to Pack Separately to prevent any other assets no longer needed from persisting in memory.Using this AssetBundle strategy can result in problems at scale. For each AssetBundle loaded at a given time, there is memory overhead for AssetBundle metadata. This metadata is likely to consume an unacceptable amount of memory if we scale this current strategy up to hundreds or thousands of inventory items. Read more about AssetBundle metadata in the Addressables docs.View the current AssetBundle metadata memory cost in the Unity Profiler. Go to the memory module and take a memory snapshot. Look in the category Other > SerializedFile.There is a SerializedFile entry in memory for each loaded AssetBundle. This memory is AssetBundle metadata rather than the actual assets in the bundles. This metadata includes:Two file read buffersA type tree listing every unique type included in the bundleA table of contents pointing to the assetsOf these three items, file read buffers occupy the most space. These buffers are 64 KB each on PS4, Switch, and Windows RT, and 7 KB on all other platforms. In the above example, 1,819 bundles * 64 KB * 2 buffers = 227 MB just for buffers.Seeing as the number of buffers scales linearly with the number of AssetBundles, the simple solution to reduce memory is to have fewer bundles loaded at runtime. However, we’ve previously avoided loading large bundles to prevent unwanted assets from persisting in memory. So, how do we reduce the number of bundles while maintaining granularity?A solid first step would be to group assets together based on their use in the application. If you can make intelligent assumptions based on your application, then you can group assets that you know will always be loaded and unloaded together, such as those group assets based on the gameplay level they are in.On the other hand, you might be in a situation where you cannot make safe assumptions about when your assets are needed/not needed. If you are creating an open-world game, for example, then you cannot simply group everything from the forest biome into a single asset bundle because your players might grab an item from the forest and carry it between biomes. The entire forest bundle remains in memory because the player still needs one asset from the forest.Fortunately, there is a way to reduce the number of bundles while maintaining a desired level of granularity. Let’s be smarter about how we deduplicate our bundles.The built-in deduplication analyze rule that we ran detects all assets that are in multiple bundles and efficiently moves them into a single Addressable Group. By setting that group to Pack Separately, we end up with one asset per bundle. However, there are some duplicated assets we can safely pack together without introducing memory problems. Consider the diagram below:We know that the textures “Sword_N” and “Sword_D” are dependencies of the same bundles (Bundle 1 and Bundle 2). Because these textures have the same parents, we can safely pack them together without causing memory problems. Both sword textures must always be loaded or unloaded. There is never concern that one of the textures might persist in memory, as there is never a case where we specifically use one texture and not the other.We can implement this improved deduplication logic in our own Addressables Analyze Rule. We will work from the existing CheckForDupeDependencies.cs rule. You can see the full implementation code in the Inventory System example. In this simple project, we merely reduced the total number of bundles from seven to five. But imagine a scenario where your application has hundreds, thousands, or even more duplicate assets in Addressables. While working with Unknown Worlds Entertainment on a Professional Services engagement for their game Subnautica, the project initially had a total of 8,718 bundles after using the built-in deduplication analyze rule. We reduced this to 5,199 bundles after applying the custom rule to group deduplicated assets based on their bundle parents. You can learn more about our work with the team in this case story.That is a 40% reduction in the number of bundles, while still having the same content in them and maintaining the same level of granularity. This 40% reduction in the number of bundles similarly reduced the size of SerializedFile at runtime by 40% (from 311 MB to 184 MB).Using Addressables can significantly reduce memory consumption. You can get further memory reduction by organizing your AssetBundles to suit your use case. After all, built-in analyze rules are conservative in order to fit all applications. Writing your own analyze rules can automate bundle layout and optimize it for your application. To catch memory problems, continue to profile often and check the Analyze window to see what assets are explicitly and implicitly included in your bundles. Check out the Addressable Asset System documentation for more best practices, a guide to help you get started, and expanded API documentation.If you’d like to get more hands-on help to learn how to improve your content management with the Addressable Asset System, contact Sales about a professional training course.]]></description><link>https://unity.com/blog/technology/tales-from-the-optimization-trenches-saving-memory-with-addressables</link><guid isPermaLink="true">https://unity.com/blog/technology/tales-from-the-optimization-trenches-saving-memory-with-addressables</guid><pubDate>Wed, 31 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Build stunning mobile games that run smoothly with Adaptive Performance]]></title><description><![CDATA[Learn how to use Adaptive Performance to tune your mobile game – balancing frame rates and graphics. Get the latest details on Adaptive Performance’s updates for device simulator, samples and scalers.Developers must pay close attention to their game’s performance on players’ devices, especially when building more complex mobile games. After all, performance issues can affect gameplay and drain the device’s battery. An excessive amount of heat generated by mobile phones, more specifically, can also cause thermal throttling, which leads to dropped frame rates – an issue that is tough to recover from.So why does thermal throttling affect your mobile game's performance? Well, as your game attempts to do more work, such as rendering or processing game logic, CPUs and GPUs use more power. This increase in power means that more heat is produced, which slows down device performance in an attempt to reduce its temperature.With Unity and Samsung’s Adaptive Performance, you can now monitor the device’s thermal and power state to ensure that you are ready to react appropriately. While playing for an extended period of time, for instance, you can reduce your level of detail or LOD bias dynamically to see that your game continues to run smoothly. Adaptive Performance allows developers to increase performance in a controlled way, which in turn, minimizes graphics fidelity.Adaptive Performance works for all Samsung Galaxy devices. In other words, only Samsung devices can benefit directly from Adaptive Performance implementation.Samsung is the leading Android device manufacturer, with more than a third of the global market share according to AppBrain. This means that adding Adaptive Performance to your game is a sure way to improve performance on hundreds of millions of devices.While you can use Adaptive Performance APIs to fine-tune your application, Adaptive Performance also offers automatic modes. In these modes, Adaptive Performance determines the game settings to tweak based on several key metrics, including:Desired frame rate based on previous framesDevice temperature levelDevice proximity to thermal eventDevice bound by CPU or GPUThese four metrics dictate the state of the device so that Adaptive Performance tweaks the adjusted settings to reduce the bottleneck. This is done by providing an integer value, known as an Indexer, to describe the state of the device. The Indexer is a system that keeps track of your device’s thermal and performance state and provides a quantified quality index.Scalers represent individual features in your game, which can include, but are not limited to, graphics and physics settings. Scalers adjust themselves based on the Indexer’s value. You can view which Scalers are available in Device Simulator’s Adaptive Performance extensions.Simulating bottlenecks can be difficult, but thanks to Adaptive Performance’s integration with Device Simulator, you can test various scenarios directly in the editor instead of waiting for the device to heat up before benchmarking.With the Thermal settings in Device Simulator, you can set the device to Throttle, or to send out a warning when throttling is imminent. You can also adjust levels and trends to positive, which indicates that the device is generating heat.The Performance settings, meanwhile, allow you to set any current bottlenecks to CPU, GPU or Target Frame rate. Similarly, you can set CPU and GPU levels to simulate the frequency of their performance.Both Thermal and Performance settings affect how Adaptive Performance alters your game’s performance via Indexers and Scalers. With Device Simulator, you can enable different Scalers to see how Adaptive Performance accommodates your device when it is throttling.For example, you can allow Adaptive Performance to tweak the Shadow settings when the GPU is set as your bottleneck and the warning level is set to Throttling with an increase in both thermal trends and levels. You can also override the Scaler with the slider to test individual settings.Adaptive Performance empowers the creation of custom scalers to enhance and expand on the ways that game settings are controlled. This includes settings that are not automatically provided.To implement a custom scaler, you must implement the AdaptivePerformanceScaler class.Setting the QualitySettings.masterTextureLimit, for instance, prompts you to describe the texture quality and size per level.Based on the current level of the scale, you can override the OnLevel virtual function and implement a scaling logic. The CurrentLevel that Adaptive Performance reports back can inform you to set the QualitySettings.masterTextureLimit to a higher value, which will then use a lower scaled texture mipmap of all the textures. When dealing with texture sizes, you can see that your custom scaler impacts visuals and specifically targets the GPU.Describing a max level and boundary also ensures that your game’s visuals are not entirely lost, as higher leveled mipmapped textures make up half the dimensions of a lower leveled mipmap texture.Adaptive Performance provides out-of-the-box features that allow your game to react appropriately to the current state of the device. To learn more about Adaptive Performance, you can view the samples we’ve provided in the Package Manager by selecting Package Manager > Adaptive Performance > Samples. Each sample interacts with a specific scaler, so you can see how each scaler impacts your game. We also highly recommend viewing the End User Documentation to learn more about Adaptive Performance configurations and how you can interact directly with the API. The documentation, along with other relevant links, can be found below.Watch the video to learn more about Adaptive Performance. You can also find out how to implement Adaptive Performance with our documentation.]]></description><link>https://unity.com/blog/games/build-stunning-mobile-games-that-run-smoothly-with-adaptive-performance</link><guid isPermaLink="true">https://unity.com/blog/games/build-stunning-mobile-games-that-run-smoothly-with-adaptive-performance</guid><pubDate>Tue, 30 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How much do media buyers know about mobile gamers?]]></title><description><![CDATA[According to App Annie’s 2021 State of Mobile Report, mobile gaming grew 20% year over year in both users and total consumer spend. But is that jump reflected in mobile marketers’ media plans for 2021? ironSource surveyed 211 advertising industry professionals across agencies and programmatic partners to find out and gauge how much of their media strategies focus on mobile gaming.Advertisers are ready to spend more in-game in 2021- Our survey found that ad spend in mobile games is set to increase this year, with 49% of those who have previously run in-game campaigns, and 32% of those who haven’t, planning on expanding in-game budgets in 2021. Meanwhile, 48% of those who have historically run in-game campaigns plan to continue to do so at existing spend levels.- 73% of survey respondents currently buy in-app ads- 51% of survey respondents currently buy in-game ads; 49% of these plan on increasing their spend from 2020, 48% plan on keeping it flat- 35% of those who did not buy in-game in 2020 plan on starting to buy in 2021Buyers who do not purchase in-game underestimate the size of the marketDespite the increase in spend and adoption, many media professionals continue to hold onto biases regarding who plays games, what kind of games are popular, and what ad formats work best in mobile games. This is particularly true of those who have never run campaigns on in-game inventory - as most found it difficult to identify the scale of the global gaming audience, their demographic makeup, or the revenue generated by the mobile gaming market.Out of buyers who do not purchase in-app:- 58% underestimate the number of gamers worldwide, which Newzoo reported in 2020 as over 2.6 billion- 60% understate the average age of a gamer, which is 36- 86% assume that people playing most frequently earn salaries between $50K-$149K, when in actuality it $250K+- 75% underestimate the revenue generated by the gaming market. Mobile games made up $76 billion of revenue in 2020, according to Newzoo. As a comparison, global revenue for other entertainment channels like streaming remains lower than gaming - e.g., streaming audio ($26 billion), streaming video ($42 billion).Buyers of all kinds continue to hold misconceptions about the gaming audience today- 73% of buyers - regardless of whether or not they buy in-game ads - underestimate how much of the app audience would engage with rewarded video to unlock content. According to eMarketer, 74% of users would watch an ad in exchange for in-app rewards or currency, whereas most media buyers assumed the number was 65% - and those who do not buy in-game ads were likely to estimate it at 51%.- Across 15 questions about mobile audiences and gaming, the average score was 45% correct among the media professionals surveyed, even for those who had previously run campaigns on in-game inventory.- 83% of buyers know casual games are the most downloaded genre of mobile games. However, 67% incorrectly identify puzzles as the most popular sub-genre of casual games, versus the 15% who correctly identified it as arcade- 63% of buyers assumed casual games were the top genre for time spent, while only 15% correctly identified RPG, strategy and action gamesWhat does this mean for ad buyers - and developers?It’s reassuring to see an increased investment in gaming as more advertisers understand the reach and impact of the mobile gaming audience. The findings indicate that there remains an opportunity to educate media buyers about the power and potential of in-app and in-game advertising, and of the benefits of interactive formats such as rewarded video.]]></description><link>https://unity.com/blog/how-much-do-media-buyers-know-about-mobile-gamers</link><guid isPermaLink="true">https://unity.com/blog/how-much-do-media-buyers-know-about-mobile-gamers</guid><pubDate>Mon, 29 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Zutari uses Unity to design renewable energy sites for a more sustainable future]]></title><description><![CDATA[See how Zutari, a South African engineering consultancy, is using Unity’s real-time 3D development platform to automate large-scale solar photovoltaics (PV) projects to reduce the time required to develop design-level insights and decrease costs.Zutari’s mission is to co-create innovative engineering solutions that deliver real impact and enable environments, communities, and economies across Africa to thrive. Among its core areas of expertise, Zutari works to deliver sustainable energy solutions—like hydro, solar, hybrid, storage, and wind power—that fit unique local needs, terrain, and constraints. To accomplish that, Zutari and its visualization team embrace emerging technology throughout a project’s lifecycle.“By bringing storytelling and creative technology together, we create immersive and interactive project experiences that better communicate the vision of major infrastructure and built environment projects,” says Murray Walker, Expertise Leader in Interactive Visualization at Zutari.At the heart of the company’s emerging technology is Unity’s real-time 3D development platform. Zutari is using Unity to change the way large-scale solar projects in South Africa are designed, created, and operated.Sun tracking and shadingTaking on a solar project is a huge endeavor. Some sites can be as large as 112 square miles. That’s about 2.5 times bigger than the city of San Francisco. To get an entire site into Unity, 3D models are spawned after projects are exported and coordinates are added for each of the components. Autodesk Revit and AutoCAD models are brought into Unity to create an immersive, interactive virtual environment.Solar panels need to be placed in the correct position relative to the earth and project site in order to optimize each panel to convert as much sunlight into energy as possible. Every site is going to be different and come with its own set of challenges, whether it’s in Brazil, Malawi, or Canada.In Unity, Zutari can do sun tracking and shading for each solar panel. For example, it enables them to see if panels are too close together and shading each other at a specific time of day or year, which is going to be different in the winter than it is in the summer.The terrain can also play a factor, complicating sun shading even more. The geographic location might not allow a panel to be placed as planned. By tracking sun and shading, Zutari is able to optimize its solar sites and install as many panels as possible to increase the energy output.While it is typical that these issues are accounted for using more traditional engineering and design tools, this highly immersive visualization allows Zutari’s engineers to quickly review the impact of design decisions under any possible condition throughout a year of operation.Shedding new light on construction monitoringConstruction monitoring helps provide scheduling guidance for when and where components should be installed. Unity enables developers early insight into what is happening on-site throughout various stages of the project lifecycle with a virtual model that multiple stakeholders can access simultaneously.Zutari tracks progress by leveraging drone footage captured at various stages of construction. The drone footage is then used to place the objects accordingly within the virtual environment. Updated visualizations are sent to the client every week.This provides them with an interactive progress report, the ability to “tour” the site virtually throughout the process, and validation that the build is consistent with what’s being paid for. Zutari is always looking for ways to improve the process even further.“Our goal is to eventually use Unity to train machine learning algorithms that can help us determine the completion percentage of a site, where the drones can automatically discern a bush from a pole we’ve constructed in the ground and perform an accurate calculation of the site’s completeness,” says Walker.An internal solar PV design solutionTo improve and accelerate design even further, Zutari is using Unity alongside AutoPV, a computational design solution also developed by Zutari with its top PV design engineers to automate the design process of large utility-scale solar PV facilities.The solar design process is quite laborious and time-consuming, taking weeks or even months for large utility-scale projects. It requires numerous iterations to optimize the routing, length and cable sizes, and the placement of inverters and junction boxes for each facility. Manually calculating these routings, locations, and engineering parameters is complex and even minor errors can result in setbacks and rework. With AutoPV, the cable and inverter layouts and engineering parameters can now be calculated automatically in a matter of seconds. This allows near-instant design-level detailed bills of materials, equipment schedules, cable losses, and other detailed engineering parameters from very early project development stages. The power that Unity brings to AutoPV allows Zutari’s engineers and clients to interactively visualize, review and optimize designs as many times as they should wish. Something that is currently not possible to achieve due to long design lead times. Unity’s advanced visualizations also provide rich material for interaction with other stakeholders right from the first steps of development.Energy for more use casesUnity is also being leveraged in a number of additional capacities across Zutari’s business, including wind turbine design and construction, trucking logistics for material transport, and more. Zutari is also actively developing virtual reality (VR) solutions to train operators of high voltage electrical equipment and installations in the safety of their own offices. These training solutions will have a significant impact on the future of operator and contractor training.See why industry leaders are embracing real-time 3D technology to change the way buildings are designed, created, and operated.Learn more about Unity for AEC]]></description><link>https://unity.com/blog/industry/zutari-uses-unity-to-design-renewable-energy-sites-for-a-more-sustainable-future</link><guid isPermaLink="true">https://unity.com/blog/industry/zutari-uses-unity-to-design-renewable-energy-sites-for-a-more-sustainable-future</guid><pubDate>Thu, 25 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mapping what’s next for in-car navigation experiences]]></title><description><![CDATA[We’re teaming up with HERE Technologies, the world’s leading location platform that collects data from over 100,000 sources and powers maps in over 150 million vehicles, to reimagine in-car experiences. Check out our shared vision for the future of embedded automotive human-machine interfaces (HMIs) in a new demo made with Unity and featuring HERE 3D city-data.We believe every screen – and how people interact with these screens – can benefit from real-time 3D technology. Unity’s real-time 3D brings disjointed HMI design and development workflows together to create visually compelling, immersive HMI experiences in cars and other industrial products.We’re working with the broader HMI ecosystem to extend the power of this technology everywhere to the benefit of both creators and consumers. Following our collaborations with Elektrobit and NXP Semiconductors, we’re teaming up with HERE Technologies, the leading provider of map content and location-based services to the automotive industry.To provide a glimpse of our shared vision of the automotive user experience, we’re debuting a futuristic, wide-screen demo of an embedded in-vehicle infotainment (IVI) system. It showcases our combined capabilities by integrating a 3D map of San Francisco from HERE Premier 3D Cities data with Unity.The demo has been tested on the Qualcomm Snapdragon SA8155, a popular automotive System on Chip (SoC). This prototype serves as inspiration for a world where automotive original equipment manufacturers (OEMs) can create more immersive infotainment systems that blend 3D location data with dynamic, high-end design capabilities.“The goal of our collaboration with Unity is to meet our customers’ desire for a more stimulating in-car navigation experience,” said Jorgen Behrens, Chief Product Officer at HERE Technologies. “Unity’s robust 3D rendering engine makes HERE 3D city data, route guidance and navigation look impressive, providing a rich and immersive in-dash experience to the driver.”Current HMI design workflows are rife with inefficiencies and pain points. Typical processes start with a designer’s concepts and guides, which are then interpreted by remote tier 1 integration engineers. After OEM design review, it goes back to the designer for design review and changes – sometimes taking days or weeks per cycle. Collaboration occurs across multiple tools with limited interoperability, resulting in incomplete and inefficient implementations of concepts as well as lackluster graphics performance. Only a small portion of design concepts and visuals are able to make their way to mass production.Unity’s real-time 3D unlocks more efficient HMI workflows, bringing user interface (UI) and user experience (UX) design and development together in one end-to-end experience. Visually compelling, highly interactive concepts, mockups, and final designs appear and perform as they would in target HMI hardware (chipsets and screens).This real-time workflow enables design and engineering teams to collaborate in a rapid, agile way and seamlessly transition from initial prototypes to final production implementation. Vision becomes reality faster and without the many compromises, teams typically have to make along the way.In comparison with other real-time 3D engines, Unity’s runtime scalability enables designers and HMI engineers to create one HMI system yet be able to deploy to both high-end and low-end SoCs, saving OEMs millions of dollars when working with multiple carline variants.To create this demo, HERE’s 3D Concepts & Prototyping team in its Vertical Products division leveraged Unity’s extensibility and Unity Scripting API to create a custom, simplified version of the Unity Editor. The beauty of Unity is that anyone can tailor it to the way their teams work; in this case, HERE’s team reconfigured Unity to better support HMI design processes, removing components in the inspector or hierarchy that were not required and creating a simplified design-focused UI and workflow.To build this proof-of-concept demo, HERE’s team created UI elements from familiar content creation tools as well as Unity prefabs. Teams could drag-and-drop these pre-prepared elements, including HERE Premier 3D Cities content, into the HMI design. The team also integrated samples of HERE’s location data, such as routing and weather, and point-of-interest (POI) indications, such as gas stations and restaurants. Map content was styled and enhanced with location-specific animatable objects and Unity prefabs, and used for navigation, situational awareness views as well as location-based services (LBS).With the custom Unity Editor featured in the demo, HERE’s designers were able to use Unity with no prior experience. They used Unity for UI logic and all interactive elements, rendering, visual effects, and animations.Unity provided the flexibility to create UIs and 3D map visual configurations in multiple styles and interactively adjust them by time of day.Thanks to Unity, they could also continually test the performance of their design on their target display and make adjustments to rapidly iterate the design. This “what you see is what you get” (WYSIWYG) development shows how OEM teams can shorten design cycle times and greatly reduce development costs.The future looks bright for HMI design and development when combining the awesome power and features of the Unity engine and HERE’s rich automotive-grade location data and services.Want more information? Get in touch with a Unity expert to explore bringing Unity and HERE into your HMI projects.Explore Unity for HMI]]></description><link>https://unity.com/blog/industry/mapping-whats-next-for-in-car-navigation-experiences</link><guid isPermaLink="true">https://unity.com/blog/industry/mapping-whats-next-for-in-car-navigation-experiences</guid><pubDate>Wed, 24 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2020 LTS and Unity 2021.1 Tech Stream are now available]]></title><description><![CDATA[We know that creators work differently. That’s why we offer two release versions, Tech Stream and Long-Term Support (LTS), so you can choose the solution that better fits your needs.The Tech Stream release gives you access to the latest in-progress features, so you can explore new capabilities for your project and pressure-test components as we continue to build them.The LTS version of Unity prioritizes proven stability. This release rolls up mature builds of the features and improvements made over the previous calendar year’s Tech Streams into a single install with two years of support.Release versions offer you greater control over how you create and deploy real-time 3D experiences – and that means more freedom in how you build imaginative experiences for your players and greater confidence that we have your back.Our role is to power and support your work, so you can be successful. In 2020, we doubled down on our commitment to delivering a high-quality creative environment that facilitates your productivity while improving performance for both your workflows and your players’ experience.Over the last 12 months, this work has allowed us to deliver a more robust and stable Unity Editor for your creative foundation, regardless of which release stream you use. We raised our quality bar by focusing on two annual Tech Stream releases rather than our previous three, extending the stabilization period for even the newest features.We also changed the package lifecycle for how we label the readiness of individual features to better clarify what you can expect in terms of packages’ stability and functionality.The work on our Data Oriented Technology Stack (DOTS) continues, with Burst Compiler and C# Jobs Systems available in both the 2020 LTS and 2021.1 Tech Stream for you to use in any project. These represent two of the three core DOTS features, the other being Entities.Entities represents a revolution in highly performant game creation. But because of its potential, and because our dedication to quality tooling continues to grow, we’re ensuring we stick to the highest standards for quality and stability. That way, we know it will meet your needs as modern game creators and that Entities will be accessible, not just functional. To stay updated, check out the expanded DOTS forums.We remain committed to delivering quality, productivity, and performance for games and teams of all shapes and sizes. Let’s dig in to see what that means for you.Quality: Stable workflows for you, beautiful experiences for your playersProductivity: Efficient iteration and workflows for your teamPerformance: More horsepower to seamlessly create and deliver world-class game experiencesOptimized workflows help you reduce the time it takes to bring your projects from concept to final render as you build anything from the lightest 2D game to an immersive 3D world. Read on for a brief overview of what’s included in the releases, and check out the release web page here and linked below or the 2020 LTS release notes and 2021.1 Tech Stream release notes for more detail.Take advantage of optimized workflows to create cinematic content and gameplay sequences that engage players from the very first pixels.2020 LTSWith improvements across the Universal Render Pipeline (URP), Shader Graph, VFX Graph, Cinemachine, Animation Rigging and more, the 2020 LTS includes workflow enhancements that help you stay in the flow with fewer interruptions.2021.1 Tech StreamBy integrating visual scripting into the Unity Editor and continuing to invest in the URP, High Definition Render Pipeline (HDRP) and 2D tools, the 2021.1 Tech Stream offers enhanced features and optimized workflows for stunning results on the widest variety of platforms.Learn more about what’s included in each release to help you create stunning visuals.If you prefer to get under the hood, we’ve got something for you, too. Our newest releases offer you greater freedom as you create optimized, high-performing games with an enhanced coding experience, improvements in testing, building and profiling, and a continued focus on making sure it’s stable so you can create with confidence.2020 LTSProjects’ growth in complexity can impact productivity since the build process needs to account for more code and greater functionality. In 2020, we overhauled many subsystems within the Unity compilation engine to optimize build times. A new configuration setting means that you can get into and out of Play Mode more quickly; C# 8 support gives you greater efficiency when writing code, and our Roslyn Analyzer integration monitors your code quality and standards. Safe Mode and our profiling tools will help you to code faster while building higher performance into your game.2021.1 Tech StreamWe now integrate and ship the latest graphics packages with the core Unity engine. This shift will simplify your efforts to harness cutting-edge graphics capabilities while ensuring you’re always working with the latest verified code, and it includes the most recent versions of the URP, HDRP, Shader Graph and VFX Graph. And of course, we’ve also improved your coding experience across the board with code coverage, better support for profiling and simulation, and even more compilation improvements.Learn more about what’s included in the releases for optimized coding workflows.Getting – and keeping – your game in players’ hands is crucial to your success.Our network of deep industry partnerships helps you to build your experience once and deploy it everywhere. This makes it possible for you to stay ahead of the curve in a fast-changing industry and take your game to the latest platforms, even on Day One.With a special emphasis on AR, VR and mobile development, the 2020 LTS and 2021.1 Tech Stream releases boast new features and enhancements to make this process even smoother.2020 LTSThe 2020 LTS release includes support for OpenXR and the Oculus Quest 2 to help maximize your reach on a wide range of AR and VR devices. Additionally, AR Foundation 4.0 supports ARKit scene mesh reconstruction using LiDAR sensors on the iPhone 12 Pro and iPad Pro, bringing a new level of realism to your AR experiences as they blend seamlessly with the real world. Lastly, Adaptive Performance 2.0 comes with new sample projects to showcase its features.2021.1 Tech StreamThe XR Interaction Toolkit (Pre-release) allows you to add interactivity to your AR and VR experiences without having to code the interactions from scratch. The toolkit now includes major bug fixes and workflow improvements, additional interactions and new samples that demonstrate all the toolkit’s interactions. AR Foundation 4.1 also provides access to the latest AR features created by ARKit and ARCore, including depth textures and automatic occlusion.Starting in 2021.1, we are changing the way we publish, show and label packages in the Package Manager. This new system is meant to provide clearer guidance regarding a package’s stability, anticipated support level, expected release date and Unity’s long-term commitment to the package. This new lifecycle is the result of many rounds of feedback with the community and promises to clarify and improve the Package Manager experience. You can read the details here. Creators who want to discover and try Pre-release and Experimental packages can continue to do so by visiting a new dedicated forum space.Curious about the new netcode solution that you heard about at the GDC Showcase? We’re pleased to announce that it is now live as an Experimental package on GitHub. Access the resources you need to start exploring networking multiplayer games on our new documentation site.Join our Developer Advocate team as they provide a hands-on overview of some of the key features included in the 2020 LTS and 2021.1 Tech Stream releases.The 2020 LTS Webinar takes place April 20, and the 2021.1 Tech Stream webinar takes April 22. Registration is open.We believe the world is a better place with more creators in it, so we’re constantly striving to build a better platform for you. That means ensuring that you have a strong foundation and powerful tools for anything you want to make. Learn more about the releases here.You can provide feedback on the new features and updates in our forums. We invite you to share your input on the 2020 LTS release here and on the 2021.1 Tech Stream here. As always, you can also find the complete list of updates in our 2020 LTS release notes and 2021.1 Tech Stream release notes.]]></description><link>https://unity.com/blog/engine-platform/unity-2020-lts-and-2021-1-tech-stream-are-now-available</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/unity-2020-lts-and-2021-1-tech-stream-are-now-available</guid><pubDate>Tue, 23 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[A new Package Manager experience in Unity 2021.1]]></title><description><![CDATA[The Package Manager is a modular system and API designed to speed up your workflows and optimize the size of your runtime by offering Unity-developed features as optional packages.This move away from a monolithic architecture where every feature used to be embedded as part of the core editor gives you the power to customize your development environment to be purposeful and performant.We’ve continued to invest in improving the Package Manager experience over the years, and we want to share upcoming changes you’ll see in the 2021.1 Tech Stream release.We heard you loud and clear about how lack of clarity around package readiness, supported packages and quality concerns affected your workflows. By ensuring that packages are clearly labeled and categorized you will be able to identify what are supported vs pre-release easily and quickly. Hopefully these changes can give insight into how a package moves through each phase and what to expect in each ultimately winding up with the gold standard for packages in Unity. What does this mean?Packages are getting a new categorization labeled either “Released” or “Pre-release” in the editor. Experimental packages (the third category) will not show up UNLESS they have been manually installed. With one glance and you’ll be able to tell what will be the optimal package for your project via visual icons.The Experimental phase contains exploratory and cutting-edge packages. They have not been tested for production, and they are not necessarily part of any roadmap. While individuals or teams might offer direct support to users for Experimental packages, they are not maintained by official Unity support channels. Experimental packages can be deprecated without being released.Given the potential risk associated with using Experimental packages in production projects, they will not be discoverable in the Editor’s Package Manager, however you can find information about ongoing Experimental packages in the forum and through Unity beta communications, where you can also find instructions on how to add them to your test projects and discuss them with the developers.The following summarizes each phase of this new lifecycle.Pre-release packages are actively being developed and need feedback from early adopters. It is expected that those packages will stabilize and reach the Released phase by the next Unity LTS (long term support) release of the year. Pre-release packages are officially supported by Unity and are part of the roadmap. To discover these packages in Package Manager, you need to enable this option in the Project Settings. Information about these packages will also be shared in Unity beta communications.“Experimental” and “Pre-release” will no longer be discoverable by default in the Package Manager, however they will still be available to you. Your feedback on these early versions of packages is invaluable to us and is a critical part of the package lifecycle process. We’re building out a dedicated forum and a webpage to keep you up-to-date and communicate all the latest available Experimental and Pre-release packages, and we will share details in our beta communications as well.Released packages are the equivalent of the Verified phase of the previous lifecycle. They constitute the default discovery experience in the Package Manager window, ensuring that all packages discovered in the Package Manager by default are fully validated by Unity and safe to use in production projects. What this means is that releases are tested, validated and you know it meets our team’s rigid release standards. Create with confidence.You can find information about specific Released and Release Candidate packages in the Unity Manual.What happened to packages that were previously available as Preview?All Preview packages will be classified as Experimental in Unity 2021.1. Teams at Unity will promote these packages to Pre-release state when they are on track to become Released by the next LTS release of Unity and they are heading towards a set of stable APIs.Packages can remain in the Experimental stage for an indefinite amount of time. They are unsupported and might not ever be Released.How can Experimental packages be discovered or tested?You will be able to learn about Experimental packages through beta-related communications and in the forum. These packages are high risk and intended only for testing purposes. They will typically be announced for product feedback or specific testing needs.How will deprecated packages be announced?Information about Experimental packages will be shared in a package’s dedicated forum thread.Released packages that are being deprecated will be announced publicly as part of the general communications.Which Unity versions use which lifecycle?Unity 2018 to Unity 2020: Lifecycle v1 (Preview, Verified phases)Unity 2021 and newer: Lifecycle v2 (Experimental, Pre-release, Released phases)How can newer versions of Released packages be discovered and tested?Newer versions of the packages will be released in the Pre-release stage, which is discoverable if you have enabled this option in Project Settings.Where can I find non-released packages that are now not visible?If the packages don’t get to the Pre-release state, we can’t guarantee their availability or support. We recommend that you visit their forum threads to learn about the status so we can help you find an answer.—We look forward to hearing from you about the new Package Manager experience and appreciate all the feedback so far that has enabled us to bring this to you! For any questions or comments, head over to the forums!]]></description><link>https://unity.com/blog/engine-platform/new-package-manager-experience-in-2021-1</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/new-package-manager-experience-in-2021-1</guid><pubDate>Mon, 22 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get to know Dragon Crashers – our latest 2D sample project]]></title><description><![CDATA[Back in Unity’s 2019 release cycle, we realized our vision of empowering 2D artists and creators with a complete suite of 2D tools. The release of our 2D packages included character skeletal animation and Inverse Kinematics (IK), level design with tilemaps, spline shapes and pixel art tools. Check out our 2D website for an overview.Our 2D team has since optimized those workflows and refined the graphics technology: the 2D Renderer inside of the Universal Render Pipeline. There’s no better way to put these tools to the test and see how they can make your 2D visuals shine than by exploring a new sample project. Dragon Crashers is now available for free on the Asset Store.Download from Asset StoreDragon Crashers is an official sample project made in Unity 2020.2 that showcases Unity’s native suite of 2D tools and graphics technology. The gameplay is a vertical slice of a side-scrolling Idle RPG, popular on mobile platforms today.While the party of heroes auto-attack their enemies, you can trigger special attacks simply by touching/clicking on the different avatars.The sample project has been tested on desktop, mobile and web platforms.In addition to the information shared in this article, please join us for our online Dragon Crashers overview webinar on April 14 at 11:00 am EST (5:00 pm CET) for key tips and a live walkthrough from our global content developer, Andy Touch. Take me to the registration section.Make sure you have Unity 2020.2 or 2020 LTS to get the project on the Asset Store. First, start a new 2D project, then go to Package Manager > My Assets to import Dragon Crashers. You will see some Project Settings pop-up messages; accept them all.If you encounter any issues, please let us know in the 2D dedicated Dragon Crashers forum.Once the project is imported, you should see a new option in the menu bar that offers shortcuts to the project’s scenes. Select Load Game Menu and press Play to try it.We recommend using high-definition display settings in the game view, such as the full HD (1920×1080) setting or 4K UHD (3840×2160).Our party of heroes and base enemies are diverse, and decked out with different outfits, accessories and variations. However, they are all bipeds that have a similar build.To avoid animating every single one of them with their respective 2D IK constraints, we created a mannequin. The animator used this mannequin, while the character artist created unique skins and accessories for the characters.The Mannequin Prefab (PV_Character_Base_Bipedal.prefab) was used to create Prefab variants for each character. The only difference in those variants is the Sprite Library Asset, where we swap the visual appearance of the biped character.All of the character Sprite Library Assets have the same Category and Label to define the body parts and their variants. For example, the knight and skeleton enemies both have a category named “mouth,” with sprite variants labeled as “mouth open,” “mouth teeth” and “mouth normal” used during animation.To apply the animations to all characters, ensure that each character’s visual asset or PSB has a similar rig. In other words, they must have bones named in the same way, attached to parts of the body of the same Category and Label. To save time, you can copy the mannequin’s skeleton (or reference character bones), and paste it to the different characters. This option is available in the Skinning Editor, part of the Sprite Editor.The Prefabs include features that make the characters more lively, like Inverse Kinematics and Normal and Mask maps for improved integration in the 2D lit environment.There’s no need to set your level design in stone so early in the process during prototyping. The worldbuilding 2D tools included in Unity enable you to have fun designing levels, and then easily iterate on them. The Tilemap Editor and Sprite Shape help automate tasks, such as setting up colliders to conform to object or terrain shapes, whereas the Scene view is your playground to make the game more exciting and aesthetically pleasing.The most important aspect is to have all your “brushes” ready in the Tile Palette, which can contain repeatable tiles, animated tiles, isometric or hexagonal tiles, or even GameObjects that render them all performantly, with just one renderer (Tilemap Renderer). For all the elements in the grid, refer to the Palette_GroundAndWalls Tile Palette.Another often overlooked feature that can be useful in level design is Sprite Draw Mode. Tiled sprites used for background layers can cover a large scene area with a small sprite to create a nice parallax effect.A Tilemap grid might not be the most practical solution to add more organic-looking objects, or spline-based elements to your project. Instead, we recommend a spline-based tool, such as 2D Sprite Shape,which draws much like a vector drawing software. Use it in background props or as part of the gameplay. The SpriteShape Renderer enables you to efficiently render many sprites attached to the spline or border of your shapes. See Prefab P_MineCartTracks_A to observe how the tracks are drawn with the spline line, and the supporting structure artwork is made from the fill texture of the Sprite Shape Profile.Prefab P_Bridge or P_MineCartTracks_B are other examples that demonstrate how a Sprite Shape border doesn’t need to be a simple line, but rather represents more elaborate elements – in this case, a bridge and a railtrack.With the 2D Renderer, use the Sprite-Lit shader for advanced lighting effects. Take full advantage of these effects by giving your sprites Secondary Textures.Normal maps can be added in the Sprite Editor. These RGB images represent the XYZ direction that the pixel is facing and signal the 2D lights how much to affect them. Mask maps can also be harnessed by the 2D Renderer data asset (RenderData_2D.asset in the project), part of the Light Blend Styles feature. The Light Blend Style called “Fresnel” is used to accentuate the rim light around characters and sprites. To achieve the fresnel effect, for instance, select to use the R channel information from the Mask maps. In this particular project, we only have one Light Blend Style, so the three channels – R, G and B – look the same (black and white). This makes the process of creating Mask maps more convenient.Shader Graph is frequently used in the demo to animate props without taxing the CPU. You can observe elements like wind moving the spiderwebs (P_SpiderWeb_Blur prefab), crystals glowing (P_Crystals_Cluster), as well as the lava flowing animation (P_Lava_Flowing_Vertical), which leverage a flow map texture to control the direction of the main texture’s UV coordinates. The flow texture uses the colors red and green to indicate the XY direction that pixels follow in every frame. Open the SubGraph FlowMap to learn how to achieve this effect.In the same dragon battle scene, there is another shader animation technique called “animated alpha clipping,” which creates smooth animation from a single texture. This occurs by showing a specific range of pixels in each frame based on their alpha values. Visual effects like the lava splatter (ParticleSystem_Splatters) or hit animation (P_VFX_HitEffect) were made using this technique with Shader Graph.The art style of the demo was created with consideration to 2D lights – and their many possibilities. As you can see, sprites enhanced by the handcrafted Normal maps and Mask maps are relatively flat. Some sprites, like the tilemap floor, are grey scale; meaning they are colored using the Color option from the Tilemap Renderer combined with the lighted areas from the environment.Real-time 2D lights allow you to spend more time in the final game scene in Unity Editor. Observing the direct results while composing your scene with lights and objects, or even being able to play the level as you go, allows you to better establish the desired mood and atmosphere for your game.Additionally, you can increase the immersion by animating those elements. For example, the P_Lantern_HangingFromPost Prefab shows how to attach a light to an animated object, or give the witch character a staff with Sprite-Lit particlesAnother benefit of using 2D lights in your project is the ability to reuse elements. Environments and props can look very different depending on the lighting conditions, which allows you to recreate many different levels with the same sprites.For creating, structuring, managing and iterating on the gameplay, our demo project used a combination of Scriptable Objects and Prefabs.All seven characters, regardless of whether they are heroes or villains, inherit their core structure from the base Unit Prefab and use the same behavior code. To differentiate values between characters, we used Scriptable Objects for different ‘blocks’ of unit-based values. Hard-coded values make it difficult to balance the game for non-programmers and cause gameplay to be rigid, so we set up unit values such as ‘Attack Damage Amount,’ ‘Ability Cooldown Time in Seconds’ and ‘Unit Health’ in Scriptable Objects; for anyone working on the project to make quick adjustments. Those value changes are then handled by the gameplay code dynamically.Each Unit Prefab has a core ‘UnitController’ script that acts as the unit’s ‘brain’ and handles internal-prefab script references and behavior sequencing. When the Dragon is attacked, for instance, the ‘UnitController’ executes related behavior events, such as transitioning to a flinch animation, playing a roar sound effect and reducing the Dragon’s health amount. These core behaviors adhere to the concept of encapsulation and only handle their own respective purposes and tasks. For example, UnitHealthBehaviour only handles logic, including setting and removing health values of a unit, and reporting important event callbacks, such as ‘HealthChanged’ or ‘HealthIsZero.’ However, the ‘UnitController’ sends values to ‘UnitHealthBehaviour’ based on the scenarios and actions that occur during gameplay.In some instances, systems external to Units would require updating if a specific event happens. Delegates are utilised for these setups.For example: When the Witch receives damage from an attack, and ‘UnitHealthBehaviour’ executes the event ‘HealthChanged(int healthAmount)’, then the external-subscribed ‘UIUnitHealthBehaviour’ can update the Witch’s Health Bar according to that value.Using Delegates allows us to isolate and test areas without dependency on other systems. For example; this included testing the performance of the pop-up Damage Display Number System in a separate scene, without needing to simulate the battle gameplay.Unity’s Timeline feature was used in two areas: Linear cutscenes and each Unit’s ability sequences.The linear cutscenes take place at the beginning and end of a battle. They handle sequencing for a variety of areas, such as camera transitions (using Cinemachine), character animations (using Animator), audio clips, particle effects and UI animations. Each track was bound to the relevant scene instance.A Timeline Signal was embedded at the end of the intro Cinematics to invoke a Unity Event when the Cutscene is finished. This ‘signals’ when to begin the battle gameplay logic.Timeline was used to create prefab-embedded ability sequences for each unit. This enables each Unit to have their own special abilities that are connected and associated to their character; similar to champion abilities in a MOBA game.Each unit contains two ability timelines; one ‘basic’ auto-attack and one ‘special’ manually-activated attack. The ‘UnitAbilitiesBehaviour’ script handles the logic for both ability timelines in terms of the ability currently playing, the ability sequence queue and starting/stopping ability cooldowns (depending on high-level gameplay logic, like whether the intro cutscene is playing, or if a unit has died). Ability Timeline Tracks bound to local systems of the Unit Prefab, including Character’s Animator for attack animation and Particle Systems for VFX. This allowed both the programmer and artist to create, playback and iterate on a Unit’s specific ability in isolation using Prefab Editing Mode before applying the changes to each instance of the Unit Prefab in the game.Timeline Signals were used for when an ability was to apply some kind of value modifier to a Unit target’s health. When the Knight swings his sword, for example, we want the damage applied as soon as the sword reaches a critical point in the animation, rather than the beginning or the end of the sword swing. As timing for animations and VFX iterated during development, the artist repositioned the ‘Ability Happened’ signal to the new desired point of the sequence in a very quick workflow, without relying on the programmer to change any values in the code.This also allowed us to add multiple ‘Ability Happened’ signals in a continuous attack, such as the dragon breathing fire at the group of heroes.Senior global content developer Andy Touch hosted a webinar running through an in-editor demonstration of the Character Pipeline Workflow that was used to create the project. This webinar unpacked how to:Export a 2D character from Photoshop into UnitySet up a character’s sprite rigSet up IK for a character’s limbsUse Sprite Swapping for different character visualsUse Nested Prefabs for weapon attachmentsApply Sprite Normal and Mask maps for 2D lighting stylesSequence character abilities using TimelineAs a token of appreciation for exploring Dragon Crashers with us, we would like to share a set of wallpapers, Zoom backgrounds and other visuals to inspire you throughout your 2D game dev journey. Get the Dragon Crasher backgrounds here.For those starting a new 2D project, there are already some great guides on the blog and forums. If you’re new to the tools, we recommend checking the 2D web page, 2D Tips Lightning Round blog and presentation for useful tips. For even more, check out a deep dive into our skeletal animation system here, or our previous project, the Lost Crypt and its corresponding webinar. As always, we also recommend perusing our latest docs, and of course, the 2D Renderer section for more information on specific features or APIs.]]></description><link>https://unity.com/blog/games/get-to-know-dragon-crashers-our-latest-2d-sample-project</link><guid isPermaLink="true">https://unity.com/blog/games/get-to-know-dragon-crashers-our-latest-2d-sample-project</guid><pubDate>Fri, 19 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile ad mediation: What is it and how does it help app developers?]]></title><description><![CDATA[Mobile ad mediation: What is it and how does it help app developers?Mobile ad mediation platformsIf you’re looking to monetize your game through ads, you’ve likely come across the term "mobile ad mediation." By the end of this article, you’ll understand everything you need to know about ad mediation and how it works.What is mobile ad mediation?Most mobile game developers today use ads, or a combination of ads and in-app purchases, to monetize their content and turn their games into profitable businesses. To monetize with ads, you need to work with ad networks, which connect you with advertisers looking to acquire new users.It’s best practice to work with multiple ad networks - more ad networks means more opportunities to fill your ad requests with the right ads, which means more opportunities to make money. However, each ad network requires its own SDK integration, and too many SDKs in your app can slow it down and create a lot of manual overhead to maintain. You would need to find a way to evaluate the performance of each network’s ads in real-time, and decide which one of them will be chosen to fill your available ad slot. Scaling this process is very tricky.Mediation platforms centralize multiple ad networks in just one platform and manage your monetization operations through a single dashboard. You can then turn different ad networks on and off inside your mediation dashboard at the click of a button.But that’s not all they do - the best mediation platforms today also offer a variety of sophisticated optimization tools to maximize your revenue, such as in-app bidding and A/B testing. Check out the top fetures every mediation solution should have.Who uses mobile ad mediation?The short answer, app developers.The long answer, app developers who are looking to leverage ad inventory from several ad networks so they can better optimize revenue generated from their app.How does mobile ad mediation work?The top mediation platforms today leverage in-app bidding technology to manage the monetization process. The in-app bidding ad serving model works like an auction, and asks all the ad networks at the same time how much they’re willing to pay to serve the ad. The ad network that bids the highest wins the auction and gets to serve the ad.In-app bidding setups today are often combined with traditional waterfalls. Such hybrid systems are beneficial for developers because they provide access to both network bidders and high quality networks that only operate waterfalls. In essence, this maximizes the number of ad networks competing to fill your ad requests, in turn maximizing the revenue you make - so make sure you can access strong hybrid setups through your mediation platform.Why is mobile ad mediation important for app developers?Partnering with the right mediation platform will transform your ability to create a successful games business. Below, we explain the key advantages you can leverage with a great mediation platform.1. Ad media platform: Maximize ad revenue and eCPMsThrough in-app bidding technology, ad mediation platforms enable you to maximize your ad revenue - up to 3x in fact. There are three aspects to this - first, stronger competition for every impression means ad networks will bid higher than they usually would in order to outbid their competitors.Second, because all ad networks have the opportunity to bid to fill your ad request - not just the networks at the top of the waterfall - you never leave potential money on the table.Finally, with in-app bidding, bids for impressions are received in real time, which is more accurate than the flat eCPMs or historical data used in waterfalls. This ensures you, as the developer, never undersell your impressions.2. Maximize fill rateFill rate is the number of ads the ad network serves (impressions) compared to the number of ads you request (requests). Just because your app requests an ad from a given network, doesn’t necessarily mean it’s going to be served. Perhaps that ad network doesn’t have any interstitial ads to show to a user in South Africa at that moment in time.But, if you connect to multiple ad networks through a mobile ad mediation platform, there’s a much higher chance that one of the networks will have an ad available to serve to your users - no matter where they’re located. That’s because each ad network is known to have a stronger presence in certain regions. So leveraging several mobile ad networks makes sure you cover all your bases. Fill rate is important because if your fill rate is low, it means you’re not getting the most out of your app’s ad inventory and leaving potential revenue on the table.3. Reduce SDK bloatThere is such a thing as too many SDKs. Manually managing 4-5 different SDK ad networks can slow down your app and affect performance. The more SDKs in your app, the more unpredictable and inconsistent the app’s user experience will be. Instead, a mediation solution requires just one SDK, aggregating all those ad networks inside it. This saves you coding time and minimizes the SDK bloat that’s so common today.4. Save time through automationNot only does mediation save you time integrating multiple SDKs into your app, but it also saves you time looking after and manually managing your ad monetization strategy. Of course, someone should always be keeping an eye on the mediation platform - but if you don’t have the resources to hire a monetization manager, the mediation platform can do all the work for you. Once you’ve set up your bidder networks, there’s little to no technical or manual labor involved. Bottom line - you can focus on game development and improving your product, and let the mediation take care of the nitty gritty monetization part.5. Access additional solutions that fuel revenue growthThe leading mediation platforms today offer a variety of optimization tools that you can use to fuel your game growth. One such tool is A/B testing. ironSource mediation, for example, offers three different A/B testing tools: the quick bidding test to easily determine if bidding is right for your game, the quick A/B testing tool for optimizing waterfalls, and a robust A/B testing tool for testing changes like capping and pacing of ad placements and new ad placements.An equally important feature of mediation platforms is easy and accurate reporting: as a developer you want to make sure you’re staying on top of your app’s performance and any changes to your KPIs. The strongest mediation platforms, such as ironSource, make it convenient to navigate through your reporting dashboard, and see all the data you need within a few clicks. Understanding what’s working and what needs improvement is the first step on your journey to maximizing revenue and growing your game over the long-term.Now you know exactly what ad mediation platforms do, and why they’re so important for growing your game into a profitable, long-term business. The mobile gaming industry is so competitive and dynamic that not taking advantage of the growth products offered by the leading mediation platforms will leave you playing catch up.]]></description><link>https://unity.com/blog/what-is-mobile-ad-mediation</link><guid isPermaLink="true">https://unity.com/blog/what-is-mobile-ad-mediation</guid><pubDate>Thu, 18 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tackling profiling for mobile games with Unity and Arm]]></title><description><![CDATA[Learn how to take on mobile performance issues with profiling tools from Unity and Arm. Go in depth on how to profile with Unity, how to optimize performance drop offs and tips and tricks on getting the most out of your game assets.In this blog, we examine how to identify performance problems in a mobile game through the use of profiling tools from Unity and Arm. We also introduce best practices for optimizing mobile game content.In order to identify performance problems in your game, you should first test it on a range of different devices. The best way to do this is to capture a performance profile on a real device. Tools such as the Unity Profiler and Frame Debugger can provide you with great insight into where elements of your game are taking their resources. Additionally, tools like Arm Mobile Studio enable you to capture performance counter activity data from the device, so you can see exactly how your game is using the CPU and GPU resources. While the device we used has a Mali GPU, the concepts introduced here also apply to other mobile GPUs.The game we are testing is an action RPG, where the player must fight waves of incoming enemy NPCs with melee and spell attacks. This type of game can quickly become GPU bound on a mobile device, with increasing numbers of foes on screen as well as multiple particle and post-processing visual effects.Tackling profiling for mobile games with Unity and ArmWe ran the game through the Unity Profiler to identify any slowdown in performance. We found a few high-priority suspects, post-processing, and fixed Timestep and instantiation spikes.The post-processing effects were a central cause of the game’s poor CPU performance.Of all the post-processing effects, the bloom pass, which makes bright areas in the scene glow, was the most taxing.In the screenshot above, you can see that the Render Camera is taking a huge amount of time and crosses the frame boundary. The main thread then waits until the rendering commands are complete before preparing the next frame. Let’s look at the Unity Frame Debugger to figure out what is going on.The first thing to notice in the Frame Debugger is that the game is being rendered at the device’s full screen resolution. For an average mobile device, this puts undue pressure on the device’s GPU, given the complexity of the content. Reducing the resolution to something more reasonable like 1080p or even 720p would significantly reduce the costs of rendering the game, especially the post-processing effects.The next point of observation is that the bloom effect occurs in 25 draw calls for the bloom pyramid. Each draw call represents a target buffer with a size starting at half the resolution of the fullscreen device resolution. This resolution is then halved with every iteration. Reducing the initial rendering resolution is one way to reduce the potential number of iterations. Another alternative would be to modify the bloom effect source code to reduce the number of iterations taking place, and impose some sensible limit. However, in this case, it would be better to disable the post-processing effects for now, due to the considerable amount of time it takes to handle those effects. That is, at least until the rest of the game can be made to run smoothly at 30 frames per second.Another improvement for the project would be to reduce the frequency of the fixed Timestep interval. We can see that it is currently short enough to be called multiple times a frame; by default, Unity sets this to 0.02 or 50Hz. You can try a fixed Timestep value of 0.04 for mobile titles aiming at 30 fps. The reason for this is because, at 0.333, which would match 30 fps, there is the chance that one frame spikes in time and you end up with two calls in the next frame. This means that it takes longer – and you can never break the cycle of a slightly longer frame. The user can also set the maximum allowed timestep to prevent any catch up from taking more than the desired amount of time.This Timestep duration affects scripts using the FixedUpdate function and any Unity internal systems that update on the fixed update interval, for example, physics and animation.For the purposes of this project, only physics and Cinemachine contributed heavily to the time taken, around 3ms per call; a call meaning that the system was entirely updated (though being called an additional 5 times meant that this could add up to 15ms per frame of wasted time).This occurs due to the slow post-processing effects. Turning them off reduces the time spent, however, the earlier recommendation of reducing the fixed Timestep frequency to avoid unnecessary work for the CPU still stands.During profiling, spikes could be seen in the frame time. Tracking them down in the CPU profiler hierarchy view shows that they stem from the instantiation of NPCs.The most common solution for this is to instantiate the characters ahead of time and keep them in an idle state, in some sort of object pool. These NPCs can then be grabbed from the pool at no instantiation cost. If more are needed, then the pool can be expanded as required.The same issue is also seen when abilities are being used, as they are also instantiating objects.Object pooling is the easiest way to solve these problems. It may affect loading times, but allows for a much smoother frame rate at runtime, which is the lesser of two evils in this case.We’ve also used Arm Mobile Studio to gain more insight into the game’s behavior. With the tools in Mobile Studio, we can get performance counteractivity data for the CPU and GPU, so we can see exactly how the game is using the device’s resources.You can download Arm Mobile Studio for free here. There are 4 tools included:Performance Advisor – to generate easy-to-read reports and get optimization adviceStreamline – a comprehensive performance profiler to capture all the counter activityMali Offline Compiler – to check how a shader program would perform on a Mali GPUGraphics Analyzer – to debug graphics API calls and analyze how content was renderedPerformance Advisor provides us with a quick summary of game performance, and is intended to be used as a regular health check. It’s quick to generate a report, particularly if you build it into a continuous integration workflow, alongside your nightly build system. Performance Advisor provides us with a quick summary of game performance, and is intended to be used as a regular health check. It’s quick to generate a report, particularly if you build it into a continuous integration workflow, alongside your nightly build system.During the first 2 minutes of the game, Performance Advisor tells us that we are only averaging 17 frames per second. The green section at the start of the frame rate analysis chart indicates where the game is loading, then suddenly, the chart turns blue, indicating that the game has become fragment bound, and it stays that way throughout. This means that the GPU in the device is struggling to process fragment workloads, which suggests that the game is either requesting too much work, or that it is not processing pixels efficiently.As we’ve added region annotations to the game, the frame rate analysis chart shows our custom region names. Where the chart shows a marker labeled with ‘S,’ Performance Advisor has taken a screenshot of the game to help us identify what is happening on screen at that point. You can configure screen captures to be taken when the fps drops below a specified value. Here, because the fps stays low throughout, Performance Advisor takes a screenshot at the default interval of every 200 frames.Take a look at the GPU cycles per frame chart, where we’ve added a budget of 28 million cycles per frame for this device. We’ve estimated that this is the maximum number of cycles that this device should be able to handle, while still achieving a frame rate of 30 fps. Here, we can see that the number of GPU cycles significantly exceeds this budget, and that the number of cycles increases over time.Performance Advisor provides optimization advice when it finds a problem. If we look at the shader cycles per frame chart, we see that the number of execution engine cycles is high. Inside a Mali shader core, the execution engine is responsible for processing arithmetic operations. Performance Advisor has flagged this as a problem and advises us to reduce computation in shaders.There is a simple fix for this. You can reduce the precision of shader variables to mediump, rather than highp, with no noticeable change on-screen. This will significantly reduce shader cost. For information on how to do this, refer to Shader data types and precision in our documentation. Additionally, as we discovered earlier with Unity’s Frame Debugger, the game is currently rendering to the device’s full screen resolution. Any changes we make to reduce the game’s rendering resolution (to 1080p or 720p) will also reduce the fragment shading cost.We had set a budget of 500,000 vertices per frame for this device. The budget is exceeded around 45 seconds in and the number increases steadily over time.Looking at the primitives per frame chart, we notice that the total number of primitives being processed increases over time, even though the number of visible primitives stays relatively constant. In the first 2 minutes of the game, the only new objects that are created are the enemy NPCs, which then get destroyed in a blast of lightning by our hero. This suggests that when the enemies are destroyed, their geometry is still present, even though it is not visible.There are several reasons why the GPU may not be able to handle the game’s demands, so we need to explore Arm’s profiling tool further with Streamline. Streamline will tell us more about this heavy fragment workload, and by looking at the other counters, we can find clues on how to lighten the load.Looking at the same section of the game in Streamline, we can explore a range of charts that show the GPU counter activity for the different stages of geometry and pixel processing. This illustrates how the game’s content is processed by the GPU, and whether there is unnecessary processing.Mali-based GPUs take a tile-based approach to processing graphics workloads, where the screen space is split up into tiles, and each tile is processed to completion in order. For each tile, geometry processing executes first, then the pixels are colored in during pixel processing.We already know that the GPU in the device is maxed out with fragment workloads, so we need to look for ways to reduce pressure on the pixel processing stage.One way to reduce the pixel processing load is to lower the complexity of the geometry that gets sent for pixel processing in the first place. Geometry that is completely off screen or backfacing is killed before pixel processing, but small triangles which only partially cover 2×2 pixel quads can erode fragment efficiency and have high bandwidth cost per output pixel.The Mali Geometry Usage and Mali Geometry Culling Rate charts in Streamline show how efficiently the GPU processes geometry. We can see the number of primitives being sent to the GPU, and how many of them are culled during geometry processing. Work that is culled at this stage won’t get passed through to pixel processing. This is good news, but we could organize the content more efficiently, so that non-visible primitives aren’t passed through at all.In the Mali Geometry Usage chart, we can see that , 1.07 million primitives enter geometry processing (orange line) in the selected timeframe (about 0.05 seconds), but 700,000 primitives are culled at this stage (red line).The Mali Geometry Culling Rate chart shows why they are culled. Around half are culled by the facing test (orange line), which is expected, as these are the backfacing triangles of our 3D objects. What is more concerning is that 31.9% of primitives are culled by the sample test (purple line) – ideally, this number should be less than 5%. The sample test indicates that these primitives were too small to be rasterized, failing to hit a single sample point, and therefore, considered invisible. This can happen when objects with complex meshes are positioned far away from the camera, and triangles in the mesh are too small to be visible. Higher numbers could indicate that the game object meshes are too complex for their position on screen.This problem gets worse for primitives that are big enough to pass the sample test but still only cover a few pixels. These ‘microtriangles’ are passed through to pixel processing and are expensive to process. This is because, during fragment shading, triangles are rasterized into two-by-two pixel patches, called quads. Tiny triangles only hit a subset of the pixels inside a quad, yet the whole quad must be sent for processing. This means that the fragment shader will run with idle lanes in the hardware, making shader execution less efficient.To check whether we have a problem with microtriangles, we can use the Mali Core Workload Property chart in Streamline to monitor the efficiency of coverage. Ideally, this should be less than 10%. We can see here that in some sections, the partial coverage rate (green line) is very high, over 70%. This value suggests that the content has a high density of microtriangles, which confirms the issue that was flagged earlier by the high sample culling rate.Geometry that does end up on screen needs to be appropriately sized for its position. A complex piece of scenery that is far away does not need to be very detailed, as it does not contribute much to the scene. We could use Level Of Detail (LOD) Meshes for objects that are further away from the camera, to reduce complexity and save processing power and DRAM bandwidth. Or, instead of using geometry, we could use textures and normal maps to build surface details for objects.Through the Performance Advisor report, we discovered that our shaders could be too expensive, and that we could benefit from reducing their precision. In Streamline, we can use the Mali varying usage chart to see the number of cycles where 32-bit (high precision) or 16-bit (medium precision) interpolation is active. Here, we can see that 32-bit interpolation is used in most cycles. 16-bit variables interpolate twice as fast as 32-bit variables, and use half the space in shader registers to store interpolation results, so it is recommended to use mediump (16-bit) varying inputs to fragment shaders whenever possible.To explore shaders, we can use Arm Mobile Studio’s static offline compiler tool, to generate a quick analysis of the shader program.To do this, you need to grab the shader code from the compiled file that Unity gives you, then run Mali Offline Compiler on that file:1. In Unity, select the shader you want to analyze, either directly from your assets folder, or by selecting a material, clicking the gear icon and choosing Select shader.2. Choose Compile and show code in the Inspector. The compiled shader code will open in your default code editor. This file contains several shader code variants. 3. Copy either a vertex or fragment shader variant from this file into a new file, and give it an extension of either .vert or .frag. Vertex shaders start with #ifdef VERTEX and fragment shaders start with #ifdef FRAGMENT. They end with their respective #endif. (Don’t include the #ifdef and #endif statements in the new file).4. In a command terminal, run Mali Offline Compiler on this file, specifying the GPU you want to test. For example: malioc –c Mali-G72 myshader.frag Refer to Getting started with Mali Offline Compiler for more instructions.We chose to analyze the fragment shader that was responsible for the dissolve effect that occurs when the enemy NPCs die. Here is the Mali Offline Compiler report, with highlighted sections of interest:We can see that only 2% of arithmetic computation is done efficiently at 16-bit precision. The shader will operate more efficiently if we reduce precision from highp to mediump. This reduces both energy consumption and register pressure, and can double the performance. There are situations where highp is always required, such as for position and depth calculations, but in many cases there is little noticeable difference on-screen when reducing precision to mediump.The report provides an approximate cycle cost breakdown for the major functional units in the Mali shader core. Here, we can see that the arithmetic unit is the most heavily used.In the shader properties section, we see that this shader contains uniform computation that depends only on literal constants or uniform values. This produces the same result for every thread in a draw call or compute dispatch. Ideally, this kind of uniform computation should be moved into application logic on the CPU.We can also see that the shader can modify the fragment coverage mask that determines which sample points in each pixel are covered by a fragment, using the discard statement to drop fragments below an alpha threshold. Shaders with modifiable coverage must use a late-ZS update, which can reduce efficiency of early ZS testing and fragment scheduling for later fragments at the same coordinate. You should minimize the use of discard statements and alpha-to-coverage in fragment shaders where possible. Refer to the Arm Mali Best Practices guide for advice on using discard statements.In Arm Mobile Studio’s Graphics Analyzer, you can see all the graphics API calls that the application made, and step through them one by one, to see how the scene is built. This helps to identify objects that are too complex for their on-screen size and distance from the camera. Here are a few examples we found in this game:The brickwork over in the far corner of the scene is built with geometry and uses 2064 vertices. The detail is not extremely visible in the final output, so this is wasted processing.We found the same issue for the floor tiles – these are 1170 vertices each, but even though the object is close to the camera, the scene does not really benefit from this complexity. It would be more efficient to use a normal map here, to represent the bumps and angular edges rather than building it with triangles. Additionally, we can see that these objects are drawn using separate draw calls. Reducing the number of draw calls by batching objects together or using object instancing could increase performance.Another example is the statues at the back of the scene – 6966 vertices each. You can see that the mesh is quite complex, which will give a great visual result when the player gets close to the statues, but from this camera position, they are hardly noticeable. It would save a lot of processing power to use Mesh LODs here to represent these objects when they are this far away from the camera.Remember that reducing complexity for many similar objects adds up to a huge saving in geometry processing, which subsequently reduces the amount of fragment shading required. Not only will this bring the fragment workload down and increase our frames per second, it will also reduce the install footprint of the APK.We’ve uncovered several areas where we could make changes to the game to improve performance. Here are the ones we chose to implement, and how we did it.Fixed Timestep is a frame rate-independent interval that controls when physics calculations and FixedUpdate() events are performed. By default, this is set to run at 50 fps. While 50 or even 60 fps is sustainable on high-end mobile devices, more mainstream devices run at 30 fps, which this title is targeting. Go into Edit > Project Settings, and then into the Time Category, to set the Fixed Timestep property to 0.04. This will ensure that your physics calculations, FixedUpdate(), and updates are all running in sync.After the adjustments were made to the fixed Timestep in Unity, the fixed update portion of the main game loop was only called once per frame, for an average of 1.5ms. This is a huge improvement from the 12ms that it had taken previously – anda simple solution to a common performance pitfall.At the startup of the app, data for all objects referenced by built-in scenes or in the Resources folder are loaded into the Instance ID cache. These assets are treated like one big asset bundle, so there is metadata and indexing information that is always loaded into memory. Once an asset from this bundle is used, it can never be unloaded from memory.The recommended method for handling assets and resources when aiming to improve your memory consumption is through the Addressable Asset System, which provides an efficient way to unload content that’s no longer needed from memory.In our environment, we have many objects that appear multiple times. Walls, floor tiles and other environment props are all duplicated to build out this scene. We can save draw calls by enabling GPU instancing on the objects’ material. GPU instancing renders identical meshes with a small number of draw calls, and allows each instance to have different parameters, such as color or scale. This modification can add an uplift to CPU performance. Below, you can see Performance Advisor data before GPU instancing was enabled.And here, you can see the same portion of the application, but with GPU instancing enabled – a small but measurable gain toward our target of 30 fps.Render textures are a way of adding 3D elements to your UI, as well as many other use cases. If you have a camera rendering to the render texture, be sure to disable the camera when it’s not onscreen. There is no need to render something that the user won’t see. Use Graphics Analyzer or Unity’s Frame Debugger to make sure that these textures are not being updated offscreen.Rather than putting extra work on the CPU by creating and destroying the same objects over and over, try object pooling. Object pooling is a design pattern that prompts you to create the objects you will need up front, front loading the work of the CPU. Then, rather than destroying them, you can add them back to the pool to be reused when an object of the same type is needed again. This is a fantastic way to relieve the processing power of the CPU, so it can work freely on more important tasks for your game.With the move to object pooling, there is no spike attached to the waves of enemies appearing onscreen that can be identified in the Unity Profiler captures, as well as no discernible effect on the frame rate.When a Mesh is onscreen, the GPU spends time rendering all of the triangles in the mesh, no matter how small. In games where your camera or assets can move, this often creates a situation where you can spend a lot of the GPUs resources rendering triangles of meshes that are too small to be seen in the frame. To address this, use Level Of Detail (LOD) Meshes . This lets your game leverage less complex meshes as the camera moves away from the assets, which decreases the amount of mesh complexity that the GPU must render and reduces the vertex count per frame, giving larger triangles to pixel processing. Not only does this improve efficiency, it keeps the artistic integrity of the scene intact.For other asset optimization tips, be sure to check out the Game Artist Guides from Arm.When you know that some assets with the same material properties will be used in the same scene, you can batch them together. Combine their texture data into a single texture atlas, which will save draw calls by drawing them at once, and result in a smaller footprint when compressed, compared to multiple separate files.When writing your own custom shaders, or using Shader Graph, you can decide on what precision to use: float or half. Choosing half, wherever possible, will make for more performant shaders – but remember that you will likely need to use float for anything that deals with world-space positions or depth calculations!When you start to plan the post-process effects for your project, you have two options to choose from: the legacy Integrated feature set, or the new Post Processing v2 feature set. Below, you can see the game using the Integrated feature set.Every 3–4 frames, we see a spike in V-Sync, where the system is waiting on the frame to render. This causes the game to drop below 30 fps, consistently, and wastes power on the device. ere, however, you can see the game’s profiler data using the same effects, this time, with the Post Processing v2 feature set.This profiler graph is much better, as Post Processing v2 is optimized to run on mobile hardware. Use it in your project to get the best post-processing performance.Adding post-processing effects to your game can add a nice layer of polish and visual depth to your project. But it’s also important to balance these effects with performance. After all, these effects can get expensive. Turning these off on mass-market devices can save a lot of power, and stop a device from heating up in your players’ hands.Once the other optimizations were in place, we could still see spiking in some areas. By using binary searching, turning things on and off, we eventually tracked down two things: One was the post-processing stack that was being used. This helped with the total time, but the frame rate eventually levelled out once we turned off anti-aliasing–so much so that some of the post-processing was able to stay on, even on the lowest spec devices we were using to test.After optimizing the game, we ran it through Arm Mobile Studio again, to look for any differences. The Performance Advisor report now shows that we have achieved an average fps of 28.9 (previously 17), and reduced overall fragment boundness. Fragment activity is still high in some sections of the game, so we still have work to do, but with good data to guide our investigation, we should be able to optimize these sections to further improve performance.The number of vertices per frame is now well under our 500,000 budget, and you can see regular dips where the enemy NPCs are destroyed.Geometry usage and culling is now much more efficient, with the number of visible primitives at a much healthier percentage of the number of input primitives. The facing test is responsible for around 50% of culled primitives, as expected, and those killed by the sample test is below 10%, showing that we have reduced the number of very small triangles.By using Unity’s Profiler and Frame Debugger, along with Arm Mobile Studio, we have been able to discover multiple ways to improve performance and reduce the pressure on the CPU and GPU on a mobile device. Some of the problems we uncovered could be avoided in future titles, by sticking to a set of best practices for content.Of course, we don’t want optimizations to reduce the quality of the onscreen visuals. Here’s how the optimized version of the game looks beside the original version.Tackling profiling for mobile games with Unity and ArmPerformance testing often happens quite late in the development cycle. It’s great to find further opportunities to optimize, but what if there’s no time to fix the issues before your release deadline? It’s much more practical to design content optimally to start with. It can be useful to set content budgets around mesh complexity, shader complexity and texture compression, to give your team the best chance to design efficiently for mobile. Here are some resources that could help your team:Arm guide for Unity developersDeveloper guides for best practices on MaliUnity learn course, 3D Art Optimization for Mobile ApplicationsOnce you know that most of your application and assets follow a set of best practices, you can do regular performance testing throughout your development cycle, to catch any issues early enough to fix them.Teams that use a continuous integration system can take advantage of automated performance testing, available with Arm Mobile Studio professional edition. This edition can run across multiple devices in a device farm, and takes the pain out of manual profiling. The reported data can even be fed into any JSON-compatible database, so that you can build visual dashboards and alerts to monitor how performance changes over time, to flag issues sooner.Unity’s built-in profiler is a great place to start. Read about how to profile your application in the Unity documentation. Or, explore Frame Debugger, which lets you investigate how an individual frame is constructed.Download Arm Mobile Studio for free from the Arm Developer website and check out the starter guides for Performance Advisor, Streamline, Mali Offline Compiler and Graphics Analyzer, to get up and running quickly.For additional help profiling with Unity’s Profiler and Frame Debugger, please feel free to ask questions in our forum.For further support while working with Mali devices or Arm Mobile Studio, go to Arm’s Graphics and Gaming Forum, where you can ask questions, and Arm will be happy to help.]]></description><link>https://unity.com/blog/games/tackling-profiling-for-mobile-games-with-unity-and-arm</link><guid isPermaLink="true">https://unity.com/blog/games/tackling-profiling-for-mobile-games-with-unity-and-arm</guid><pubDate>Thu, 11 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Best practices for maximizing revenue from interstitial ads in your app]]></title><description><![CDATA[Apps attract all kinds of users - some might play for weeks and engage with all the content features, while some might just hop in and out after a day or two. To make sure you’re monetizing the majority of your users, interstitial ads are an important addition to your ad strategy.In-app purchases and rewarded video ads are powerful revenue generators, effective for making money from your most engaged users who are committed enough to spend their time or money in the app. But what about the significant number of your users who aren’t engaged enough to interact with your in-app store or rewarded video ads? That’s where interstitial ads come into play. By the end of this article, you’ll understand what they are and our latest best practices for placement, frequency, and segmentation for your game’s interstitial ads, so you can begin maximizing your revenue.What are interstitial ads?Interstitial ads are full screen ad units that contain static creatives, videos, or even gifs. They are system-initiated, which means you as the developer decides when the user sees them. This is in contrast to user-initiated ads like rewarded videos, which the user chooses to open and interact with in exchange for a reward.A successful interstitial ad strategy will maximize your ad revenue without causing any meaningful reduction in user retention. Let’s take a look at how to achieve this.Placement of interstitial adsPlacement has a huge impact on the success of your interstitial ad strategy, and should be your first focus. A bad placement, such as one that interrupts the app flow, will damage the user experience and can lead to a drop in retention. Generally speaking, try to make sure you’re only serving these ads at natural breaks in play - although there are some exceptions as we’ll cover shortly.For IAP-heavy games, it's best to be more cautious, showing interstitials only at the end of game sessions, or when users do not engage with your rewarded video ads or your IAP offers. Each time you try one of these placements, make sure you’re A/B testing to see what works best with your specific player base.For an ad-based game, like in the hyper-casual genre, placing interstitials when the user opens the game, loses a level, returns to the homepage, or gives up on watching a rewarded video can be effective at maximizing ARPDAU. For starters, try A/B testing the impact of showing the interstitial before or after the end-level pop up screen.After end-level screenShowing the ad after the end-level screen is the most common practice in the hyper-casual space.When the user finishes the level, a pop up appears on the screen with an offer to increase the winnings by watching a rewarded video ad. If the user ignores this offer and exits away from the pop up, they are shown an interstitial ad. While this can be effective in terms of ARPDAU uplift, it can sometimes have a negative impact on the user experience. To be shown an interstitial ad at this point can, as a result, frustrate them.Before end-level screenTo avoid this, a different approach that we’ve seen work in the hyper-casual space is to show the interstitial ad before the end-level pop up screen with the rewarded video offer. As you can see below, the ad appears immediately after the level is completed.In this approach, the offer to increase the winnings via a rewarded video ad appears after the interstitial ad. This flow is often better for the user experience, helping increase ARPDAU while minimizing any potential effect on retention rates. It's a particularly good fit for games where users typically win every level, such as puzzle games.Mid-levelIn addition, in hyper-casual games where levels are over the 45 seconds mark - such as some games in the i-o category - we recommend testing the impact of mid-level interstitial placements. For these games, waiting until the end of each level is too long of an interval and misses out on potential revenue. Even though mid-level placements interfere with the gameplay, our data has shown that Day 7 and Day 14 retention is not significantly affected by this placement - while ARPU can increase significantly.Timing of interstitial adsOnce you’ve chosen your placements, you need to decide when to show users an interstitial ad for the first time. The truth is it depends largely on the genre of your app. In the hyper-casual category, where games are predominantly ad-based, users have a relatively short lifetime and tend not to stick around for too long. Because of this, concentrate on monetizing users while you can - we recommend showing interstitial ads from day 1 in order to maintain a positive return on investment (ROI) for your user acquisition campaigns. If you wait until day 7, for example, the user may have churned already and therefore you'll have missed the opportunity to monetize them and recoup the money you spent on acquiring them.But at what moment in the game should you show users an interstitial for the first time on Day 1? While some might assume it’s best practice to display an interstitial right away, on Level 1, we’ve in fact seen stronger retention and ARPU performance from showing the ad at a slightly later level, from Level 3 to Level 8. By waiting until a slightly later level, you can earn the engagement of the user and avoid the risk of causing them to churn at the first opportunity. Whatever your game and category, make sure to A/B test this approach and see if it works for you.While Day 1 is a good starting point for hyper-casual games, in game genres like casual, midcore, and hardcore, we recommend waiting at least two weeks before showing interstitial ads to your users. In these games, where users tend to have longer lifetimes, you have more time to try to convert users from non-payers into payers, or for them to engage with user-initiated ads like rewarded videos. In fact, rewarded videos are a useful tool for converting users into payers, by giving them a “taste” of premium content for free. During these two weeks, it’s a good opportunity to get to know your users’ behavior, understand who’s a payer, who’s an ad whale, and who generates minimal value - this will guide your segmentation strategy, which we’ll cover later on.Frequency and pacing of interstitial adsAfter breaking the ice and showing your users interstitial ads for the first time, you then need to figure out how often they’ll see these ads per session, and the interval of time between each ad. This is what frequency (or capping) and pacing is all about.The number of ads you can show your users without damaging your retention really depends on your app's genre: for example, people who play hyper-casual games are used to seeing lots of ads, while RPG or strategy gamers have a lower tolerance for system-initiated ads.Do your research and get familiar with your genre’s benchmarks to guide you in the right direction. Then you’ll need to A/B test to find the exact number that works for your specific app. The metrics to look out for when A/B testing different pacing and capping strategies are impressions, retention, and ARPU. Allow enough time and a large enough volume of users before stopping your tests - around 2 weeks is usually enough.If you increase the frequency of your system-initiated ads, and you see after two weeks that D1 retention dropped, without a big enough increase in your ARPU, then try reducing the frequency or tinkering with the placement. Alternatively, if you increase the frequency and you see ARPU rise after a couple of weeks of testing - with no significant impact on retention - then you can roll out this change to your full audience.Learn how Neon Play and ZiMAD ran A/B tests on the ironSource platform to find the optimal frequency for their interstitial ads and level up their ARPUUser segmentation for interstitial adsUser segmentation is one of the most important strategies to leverage with your interstitial ads. It is particularly crucial for games which have users with longer lifetimes and a complex in-app economy. There are several tools to set up segmentation, including one we have in ironSource’s mediation platform, which lets you break down your users into different groups like payers and non-payers. This is the most common form of segmentation, because the potential negative impact on retention caused by serving interstitials to paying users isn’t worth the incremental revenue uplift from interstitial ads.Another useful segmentation is between ad whales and non-ad whales, which differentiates between users who generate significant revenue for your app through rewarded videos, and users who generate a smaller amount of revenue. For ad whales, who are valuable for your ARPU and more likely to convert into payers, we don’t recommend serving interstitial ads. For your non-ad whales - users who are engaged enough to watch rewarded videos, but not frequently enough to generate significant revenue - you can serve them interstitials with a measured approach. Run A/B tests to check the optimal frequency and to determine the value these ads generate in relation to their impact on retention and overall ARPU.]]></description><link>https://unity.com/blog/best-practices-for-maximizing-revenue-from-interstitial-ads-in-your-app</link><guid isPermaLink="true">https://unity.com/blog/best-practices-for-maximizing-revenue-from-interstitial-ads-in-your-app</guid><pubDate>Sun, 07 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Teaching robots to see with Unity]]></title><description><![CDATA[The world of robotics is full of unknowns! From sensor noise to the exact positioning of important objects, robots have a critical need to understand the world around them to perform accurately and robustly. We previously demonstrated a pick-and-place task in Unity using the Niryo One robot to pick up a cube with a known position and orientation. This solution would not be very robust in the real world, as precise object locations are rarely known a priori. In our new Object Pose Estimation Demo, we show you how to use the Unity Computer Vision Perception Package to collect data and train a deep learning model to predict the pose of a given object. We then show you how to integrate the trained model with a virtual UR3 robotic arm in Unity to simulate the complete pick-and-place system on objects with unknown and arbitrary poses.Robots in the real world often operate in and must adapt to dynamic environments. Such applications often require robots to perceive relevant objects and interact with them. An important aspect of perceiving and interacting with objects is understanding their position and orientation relative to some coordinate system, also referred to as their “pose.” Early pose-estimation approaches often relied on classical computer vision techniques and custom fiducial markers. These solutions are designed to operate in specific environments, but often fail when their environments change or diverge from the expected. The gaps introduced by the limitations of traditional computer vision are being addressed by promising new deep learning techniques. These new methods create models that can predict the correct output for a given input by learning from many examples.This project uses images and ground-truth pose labels to train a model to predict the object’s pose. At run time, the trained model can predict an object’s pose from an image it has never seen before. Usually, tens of thousands or more images need to be collected and labeled for the deep learning models to perform sufficiently. Real-world collection of this data is tedious, expensive, and, in some cases like 3D object localization, inherently difficult. Even when this data can be collected and labeled, the process can turn out to be biased, error-prone, tedious, and expensive. So how do you apply powerful machine learning approaches to your problem when the data you want is out of reach or doesn’t actually exist for your application yet?Unity Computer Vision allows you to generate synthetic data as an efficient and effective solution for your machine learning data requirements. This example shows how we generated automatically labeled data in Unity to train a machine learning model. This model is then deployed in Unity on a simulated UR3 robotic arm using the Robot Operating System (ROS) to enable pick-and-place with a cube that has an unknown pose.Simulators, like Unity, are a powerful tool to address challenges in data collection by generating synthetic data. Using Unity Computer Vision, large amounts of perfectly labeled and varied data can be collected with minimal effort, as previously shown. For this project, we collect many example images of the cube in various poses and lighting conditions. This method of randomizing aspects of the scene is called domain randomization1. More varied data usually leads to a more robust deep learning model.To collect data with the cube in various poses in the real world, we would have to manually move the cube and take a picture. Our model used over 30,000 images to train, so if we could do this in just 5 seconds per image, it would take us over 40 hours to collect this data! And that time doesn’t include the labeling that needs to happen. Using Unity Computer Vision, we can generate 30,000 training images and another 3,000 validation images with corresponding labels in just minutes! The camera, table, and robot position are fixed in this example, while the lighting and cube’s pose vary randomly in each captured frame. The labels are saved to a corresponding JSON file where the pose is described by a 3D position (x,y,z) and quaternion orientation (qx,qy,qz,qw). While this example only varies the cube pose and environment lighting, Unity Computer Vision allows you to easily add randomization to various aspects of the scene. To perform pose estimation, we use a supervised machine learning technique to analyze the data and generate a trained model.In supervised learning, a model learns how to predict a specific outcome based on training a set of inputs and corresponding outputs, images, and pose labels in our case. A few years ago, a team of researchers presented2 a convolutional neural network (CNN) that could predict the position of an object. Since we are interested in a 3D pose for our cube, we extended this work to include the cube’s orientation in the network’s output. To train the model, we minimize the least squared error, or L2 distance, between the predicted pose and the ground-truth pose. After training, the model predicted the cube’s location within 1cm and the orientation within 2.8 degrees (0.05 radians). Now let’s see if this is accurate enough for our robot to successfully perform the pick-and-place task!The robot we are using in this project is a UR3 robotic arm with a Robotiq 2F-140 gripper, which was brought into our Unity scene using the Unity Robotics URDF Importer package. To handle communication, the Unity Robotics ROS-TCP Connector package is used while the ROS MoveIt package handles motion planning and control.Now that we can accurately predict the pose of the cube with our deep learning model, we can use this predicted pose as the target pose in our pick-and-place task. Recall that in our previous Pick-and-Place Demo, we relied on the ground-truth pose of the target object. The difference here is that the robot performs the pick-and-place task with no prior knowledge of the cube’s pose and only gets a predicted pose from the deep learning model. The process has 4 steps:An image with the target cube is captured by UnityThe image is passed to a trained deep learning model, which outputs a predicted poseThe predicted pose is sent to the MoveIt motion plannerROS returns a trajectory to Unity for the robot to execute in an attempt to pick up the cubeEach iteration of the task sees the cube moved to a random location. Although we know the cube’s pose in simulation, we will not have the benefit of this information in the real world. Thus, to lay the groundwork for transferring this project to a real robot, we need to determine the cube’s pose from sensory data alone. Our pose estimation model makes this possible and, in our simulation testing, we can reliably pick up the cube 89% of the time in Unity!Our Object Pose Estimation Demo shows how Unity gives you the capability to generate synthetic data, train a deep learning model, and use ROS to control a simulated robot to solve a problem. We used the Unity Computer Vision tools to create synthetic, labeled training data and trained a simple deep learning model to predict a cube’s pose. The demo provides a tutorial walking you through how to recreate this project, which you can expand by applying more randomizers to create more complex scenes. We used the Unity Robotics tools to communicate with a ROS inference node that uses the trained model to predict a cube’s pose. These tools and others open the door for you to explore, test, develop, and deploy solutions locally. When you are ready to scale your solution, Unity Simulation saves both time and money compared to local systems.And did you know that both Unity Computer Vision and Unity Robotics tools are free to use!? Head over to the Object Pose Estimation Demo to get started using them today!Now that we can pick up objects with an unknown pose, imagine how else you could expand this! What if there are obstacles in the way? Or multiple objects in the scene? Think about how you might handle this, and keep an eye out for our next post!Can’t wait until our next post!? Sign up to get email updates about our work in robotics or computer vision.You can also find more robotics projects on our Unity Robotics GitHub.For more computer vision projects, visit our Unity Computer Vision page.Our team would love to hear from you if you have any questions, feedback, or suggestions! Please reach out to unity-robotics@unity3d.com.CitationsJ. Tobin, R. Fong, A. Ray, J. Schneider, W. Zaremba, P. Abbeel, “Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World” arXiv:1703.06907, 2017J. Tobin, W. Zaremba, and P. Abbeel, “Domain randomization and generative models for robotic grasping,” arXiv preprint arXiv:1710.06425, 2017]]></description><link>https://unity.com/blog/industry/teaching-robots-to-see-with-unity</link><guid isPermaLink="true">https://unity.com/blog/industry/teaching-robots-to-see-with-unity</guid><pubDate>Tue, 02 Mar 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Experimenting with Shader Graph: Doing more with less]]></title><description><![CDATA[You can improve the runtime efficiency of your shader without sacrificing the quality of your graphics by packing physically based rendering (PBR) material information into a single texture map and layering it into a compact shader. Check out this experiment.This experiment works in both the Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP). To get the most out of this article, you should have some familiarity with Shader Graph. If you are new to Shader Graph, please explore our resources for an introduction and more detail about this tool for authoring shaders visually.When working with art assets in a terrain-like environment, multiple layers of tileable material are typically preferred as they produce better blending results. However, the GPU performance cost of multiple texture samples and growth of memory use with each layer added to the shader can be prohibitive for some devices and inefficient in general.With this experiment, I aimed to:Do more with lessMinimize the memory footprint and be frugal with texture sampling in representing a PBR materialMinimize shader instructionsPerform layer blending with minimum splat map/vertex color channelsExtend the functionality of splat map/vertex color for extra bells and whistlesWhile the experiment achieved its goals, it comes with some caveats. You’ll have to set your priorities according to the demands of your own project in determining which trade-offs are acceptable to you.Before layering, the first thing you need to do is figure out the PBR material packing. PBR material typically comes with the parameters for Albedo (BaseColor), Smoothness mask, Ambient Occlusion, Metalness, and Normal defined.Usually, all five maps are represented in three texture maps. To minimize texture usage, I decided to sacrifice Metalness and Ambient Occlusion for this experiment.The remaining maps – Albedo, Smoothness and Normal Definition – would traditionally be represented by at least two texture maps. To reduce it to a single map requires some preprocessing of each individual channel.The final result of the PBR Material packed into a single texture. Red = dHdu (Derivatives Height Relative to the U direction) for Normal Definition#. Green = dHdv (Derivatives Height Relative to the V direction) for Normal Definition#. Blue = Linear Grayscale shade representing Albedo (color reconstructed in shader). Alpha = Linear Smoothness map (standard Smoothness map). Note: The texture is imported into Unity with sRGB unchecked and compressed with BC7 format. When porting to other platforms, switch to the platform-supported equivalent 4-channel texture format.Processing the mapsAlbedoAlbedo is normally defined as an RGB texture; however, many terrain-like materials (rock, sand, mud, grass, etc.) consist of a limited color palette. You can exploit this property by storing Albedo as a grayscale gradient and then color remapping it in the shader.There is no set method for converting the RGB albedo to a grayscale gradient. For this experiment, The grayscale Albedo was created through selective masking of the original Albedo map channels and Ambient occlusion; to match the prominent color in the shader color reconstruction, just eyeball any manual adjustments.SmoothnessSmoothness is considered very important for PBR material definition. To define smoothness more precisely, it has its own channel.A simple multiplier was added to the smoothness in the shader for some variation in the material.Normal definitionThe Normal map is important for showing the detailed characteristics of a surface. A typical PBR Material uses a tangent space normal map. In this experiment, I chose a pre-converted derivatives map using surface gradient framework for the reasons below. (SeeMorten Mikkelsen’s surface gradient framework for more information).To pre-convert tangent space normal maps to derivatives, use this Photoshop action.Using a pre-converted Derivatives map has several advantages:Can be directly converted to surface gradient, using fewer instructions than a standard tangent space normal map, which requires derivatives conversion in the shaderCan be stored in two channels (dHdu and dHdv), resulting in a lower memory and texture cache footprint in runtimeDoes not require blue channel reconstruction in the shader, which is typical when processing tangent space normal maps, since the surface gradient framework takes care of the normal reconstruction (fewer shader instructions)Works correctly when adjusted in Photoshop – that is, by blending, masking or reducing intensity – and does not require renormalization. For example, to reduce intensity, simply blend the map against RGB(128,128,0).In conjunction with the surface gradient framework, the advantages further include:Normal bump information can be blended and composited in the shader the same way as albedo blend/composite, with the correct result.Increasing, reducing and reversing bump contributions is trivial and accurate.But pre-converted derivatives from tangent space normal map also have some disadvantages:Using Photoshop conversion, normal definition gets clamped at an angle greater than 45 degrees, to balance precision in an 8-bit texture.Artists are used to working with tangent space normal maps and require the maps to be pre-converted via Photoshop as part of their workflow.Note: Clamping at an angle greater than 45 degrees does not apply to shader-based derivatives conversion.Depending on your use case, the limitation may have a lesser or greater effect. In this experiment, a normal direction less than 45 degrees does not have a noticeable negative impact on the end result. In fact, in this case it provides a benefit by reducing unwanted reflection from extreme normal direction.The full unpacking processThe complete Sub Graph to unpack the Compact PBR texture to output colored Albedo, smoothness and surface gradient.Note: Surface gradient conversion to Normal is done outside the Sub Graph so that the material can be easily blended based on the output of the UnpackedSubGraph.For this experiment, I chose a tier-based layering method on a single channel remap. The Sub Graph does five linear interpolations (plus the base, forming six layers).There are many ways to blend layer weights. This method has the simplicity of a single vector input, which suits the experiment goal. This allowed lots of layering without burning through multiple channels in splat maps or vertex channels.The drawback of this method is that you cannot control the weight of an individual layer’s contribution. The blending will always be a transition from the previous layer. Depending on the use case, this can be a limiting factor compared to a traditional per-channel blend.The Sub Graph to remap a single channel to represent the six layers.The Sub Graph shown above is predefined for six layers of tier-based blending. To create more layers, divide 1 by the desired number of layers blended, subtract 1, and then remap each layer based on that value range.For example, for a nine-layer blend material, each layer remap range is 1/(9-1) = 0.125.Be aware that as you divide the single channel into smaller portions, you have less shading range.Layer blending requires only a single channel (the red vertex channel). The remaining three vertex channels offer extra functionalities. The final Shader Graph produces results using the remaining vertex channels.In this experiment, vertex painting was done inside Unity Editor using Polybrush (available from the Package Manager). Suggested Vertex Paint color palette for this shader.Red: Used to weight the layer contribution. Red vertex channel painting demoGreen: Sets the surface gradient property, to flip, reduce or add normal bump contribution (remapped to -1 and 1).0 reverses the normal bump (-1)0.5 value zeroes out the normal bump (0)1 sets the normal bump to the original value (+1).Green vertex channel painting demoBlue: Controls smoothness and surface gradient bump scale to create a wet water look0 = no alteration255 = maximum smoothness and flat normal map (wet look)Blue vertex channel painting demoAlpha: Controls the weight of the Albedo layer, setting the base color to white,with the contribution based on the y axis of the surface normal. It does not alter the smoothness and takes advantage of the original surface layer smoothness and bump property.0 = no snow255 = solid snowAlpha vertex channel painting combined with previous channels to showcase how the whole layers interact with the snowThe combined results of the different vertex painting channels:You can adjust the shader blending method and the settings for the various vertex channel/splat map functionalities according to your project’s requirements.The purpose of this experiment was to extend the functionality of the Shader Graph while minimizing resources. The texture was preprocessed and unpacked, but is there a payoff in runtime efficiency?Performance profiling shows the efficiencies these efforts produced.A standard six-layer blend shader was created for comparison with the compact six-layer blend shader. Both shaders were created using an identical blending method with the same functionalities. The main difference is that the standard shader uses three different textures to represent a single layer.For profiling, a single mesh was rendered on screen with blend material using the Universal Render Pipeline in the targeted platform.Mobile memory and performance profileTexture compression for mobile (Android):Standard PBR with Albedo, Mask and Normal map at 1024x1024 for mobile:6x Albedo map ASTC 10x10 = 6x 222.4 KB6x Mask map ASTC 8x8 = 6x 341.4 KB6x Normal map ASTC 8x8 = 6x 341.4 KBTotal Texture memory usage 5.431 MBCompact PBR at 1024x1024 for mobile:6x PackedPBR Texture ASTC 8x8 = 6x 341.4 KBTotal Texture memory usage 2.048 MBWith the compact six-layer material, there is approximately 62% Less texture memory consumption on Mobile (Android), savings of more than half. Mobile Android/Vulcan with Adreno 630 (Snapdragon 845); Snapdragon profile results:Approximately 70% less texture memory read in runtime.Standard took 9971020 clocks to render.Compact took 6951439 clocks to render.Compact material renders on screen approximately 30% faster. Profiling result from Snapdragon Profiler.PC memory and performance profileStandard PBR with Albedo, Mask and Normal map at 1024x1024:6x Albedo map DTX1 = 6x 0.7 MB6x Mask map DXT5/BC7 = 6x 1.3 MB6x Normal map DXT5/BC7 = 6x 1.3 MB Total Texture memory usage 19.8 MBCompact PBR at 1024x1024:6x PackedPBR Texture BC7 = 6x 1.3 MBTotal Texture memory usage 7.8 MBThe compact six-layer material uses 60% less texture memory consumption on PC (savings of more than half).PC laptop with Radeon 460 Pro rendering at 2880x1800; RenderDoc profile results:Draw Opaques for standard 6-layer blend: 5.186 ms.Draw Opaques for compact 6-layer blend: 3.632 ms. Compact material renders on screen approximately 30%* faster. *RenderDoc profile value fluctuates; 30% is an average of samples.PC desktop with nVidia GTX 1080 rendering at 2560x1440; nSight profile results:Render Opaques for standard 6-layer material: 0.87 msRender Opaques for compact 6-layer material: 0.48 msCompact material renders on screen approximately 45% faster. Profiling results from nSight.Console performance profileOn PlayStation 4, using compact material yields 60% memory savings, identical to that for PC as the PS4 uses the same compression.PS4 base rendering at 1920x 1080; Razer profile results:Render Opaques for standard 6-layer material: 2.11 msRender Opaques for compact 6-layer material: 1.59 msCompact material renders on screen approximately 24.5% faster.Profiling result from PS4 Razor profiler.In summary, using a compact six-layer PBR shader offers performance gain and significant memory savings. The variation of GPU performance is interesting but expected, as unpacking the material consumes more ALUs than sampling more textures.This sample project with Shader Graphs and Sub Graphs can be downloaded here:[DOWNLOAD HERE], Unity 2020.2.5f1 with HDRP 10.3.1[DOWNLOAD HERE], Unity 2020.2.5f1 with URP 10.3.1[DOWNLOAD HERE], Photoshop action to pre-convert tangent space normal map to derivatives.Screenshot from Universal Render Pipeline version of the project.The main components of this experiment are:Shader Graph for custom materialPre-converted DerivativesSurface gradient frameworkAlbedo color reconstructionSingle-channel layer blendingUpVector blend technique, smoothness and bump control via vertex channel blendThis experiment showcases how you can use Shader Graph to produce beautiful graphics that are also efficient. Hopefully, this example can inspire artists and developers to push aesthetic boundaries with their Unity projects.Rinaldo Tjan (Technical Art Director, R&D, Spotlight Team) is a real-time 3D artist with an extreme passion for real-time lighting and rendering systems.Having started his career in the PlayStation 2 days, he has more than a decade of end-to-end artist workflow knowledge, from texturing to final rendered scene creation. Prior to joining Unity Technologies, he helped deliver AAA games such as BioShock 2, The Bureau: XCOM Declassified, and Mafia III.He currently works with Unity clients to help them augment their projects and realize their true potential using Unity, while helping drive the internal development and standards of Unity rendering features.]]></description><link>https://unity.com/blog/engine-platform/experimenting-with-shader-graph-doing-more-with-less</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/experimenting-with-shader-graph-doing-more-with-less</guid><pubDate>Thu, 25 Feb 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Persistent data: How to save your game states and settings]]></title><description><![CDATA[Saving data is critical for any game. Whether you need to save high scores, preferences, or a game state, Unity offers a variety of methods – from PlayerPrefs to serializing data, encrypting it, and writing to a file.Updated June 23rd, 2021: As part of Unite Now 2020, I created a session with tips on data persistence in Unity. It covers some of the common ways to save and load data in your Unity project, but it’s by no means an exhaustive list. That is to say, there are more ways to serialize data than you’ll ever need, and each approach solves a particular problem and comes with its own set of strengths and weaknesses. This blog post will cover the same common methods that I discussed in the Unite Now session.PlayerPrefs are not made to save game states. However, they’re useful, so we’ll discuss them. You can use PlayerPrefs to store a player’s preferences between sessions, such as quality settings, audio volume or other non-essential data. PlayerPrefs are stored somewhere on your device, separate from your project. The exact location varies depending on your operating system, but it’s usually somewhere that’s globally accessible and managed by your OS. The stored data is in simple key-value pairs. Because of their ease of access, they aren’t safe from users who wish to open and modify them, and they can be deleted by accident since they’re saved outside of the project and managed by your OS.PlayerPrefs are relatively easy to implement and require only a few lines of code, but they only support Float, Int and String-type values, making it challenging to serialize large, complex objects. A determined user can overcome this limitation by converting their saved data into some format represented by one of these basic types, but I don’t recommend it since there are better tools to store your data.Finally, since each Unity application stores all its PlayerPrefs in a single file, it’s not well-suited for handling multiple save files or cloud saves, both of which require you to store and receive save data from a different location.JSON is a human-readable data format. That is, it’s easily understood by people and machines alike – which has both advantages and disadvantages. It’s much easier to debug your saved data or create new save data for testing purposes when you can read and understand it, but, on the other hand, it’s easy for players to read and modify the data as well. The ability to read and change data is useful if you support modding but detrimental if you want to prevent cheating. In addition to these concerns, since JSON is a text-based format, it's more expensive for machines to parse. That is, it's slower to read and uses more memory than binary alternatives. So, if you have lots of data, you may want to consider options that aren't text-based. Every use case is different, and it's these kinds of tradeoffs that lead developers to create many other data formats.JSON is standardized and widely used in many different applications. As a result, all platforms support it strongly, which is helpful when building cross-platform games. JSON was developed as a communication protocol for web browsers, making it inherently good for sending data over a network. Because of this, JSON is excellent for sending and receiving data from a server backend.JsonUtility is Unity’s built-in API for serializing and deserializing JSON data. Similar to PlayerPrefs, it’s also relatively easy to implement. However, unlike PlayerPrefs, you must save the JSON data yourself, either in a file or over a network. Handling the data storage yourself makes it easy to manage multiple save files because you can store each file in a different location. To make this easier, I wrote a basic file manager, which is available in this example repository.It’s important to mention that JsonUtility isn’t a fully featured JSON implementation. If you’re used to working with JSON data, you may notice the lack of support for specific features. If you’re interested in comparing the performance of different JSON solutions, try this benchmarking project. Keep in mind that it’s best to test on your target device if possible.The same limitations constrain JsonUtility as the internal Unity serializer – that is to say, if you can’t serialize a field in the Inspector, you won’t be able to serialize it to JSON. To work around these limitations, you could create Plain Old Data types (or PODS) to hold all your save data. When it comes time to save, transfer your data from their runtime types into a POD, and save that to a disk. If needed, you can also create custom serialization callbacks to support types that Unity’s serializer doesn’t support by default.On the topic of JsonUtility, EditorJsonUtility is another useful tool. Whereas JsonUtility works for any MonoBehaviour or ScriptableObject-based object, EditorJsonUtility will work for any Unity engine type. So you could create a JSON representation of any object in the Unity Editor – or go in the other direction and create an asset from a JSON file.Aside from the built-in serialization options, there are other external libraries that you could use as well. Unless you specifically need to use a text-based format for their readability, it’s best to go with a binary-based serializer:Binary ToolsMessagePack is an efficient binary serializer. It’s performant and relatively easy to use. Like JSON, it’s available on nearly all platforms, so you can use it to send data across networks to communicate with backend servers. You can read more about it here.ProtoBuf and Protobuf-net is another similar binary serializer. It’s also fast and efficient. Google developed it as a performant alternative to existing formats like XML. Like JSON and MessagePack, It’s also well suited for communication over networks.BinaryFormatter is a DotNet library to store your objects in a binary format directly. However, BinaryFormatter has dangerous security vulnerabilities and should be avoided. I repeat, do not use BinaryFormatter. Learn more information about the security risks here.Text ToolsEasySave is a well-supported and popular plug-in available on the Unity Asset Store. It allows you to save all your data without writing any code, which is excellent for beginners. It also has a powerful and flexible API that makes it ideal for advanced users as well. It isn’t free, but it’s worth the price if you’re looking for a fully featured out-of-the-box solution.JSON.Net is a free and open source JSON implementation for all DotNet platforms. Unlike the built-in JsonUtility, it’s fully featured. However, this comes at a cost because it’s significantly less performant than the built-in JsonUtility. The standard version doesn’t support all of Unity’s platforms, but there is a modified version available in the Unity Asset Store that adds support.XML is an alternative data format. Like JSON, it’s relatively human-readable and has some features that may be useful for your specific application, such as namespaces. DotNet has built-in support for XML.When security comes up, most people think of encryption first. However, when it comes to storing data locally on a player’s device, encryption is relatively easy to overcome. Even without breaking the encryption, users can manipulate the data directly in memory with freely available tools. In other words, it’s safe to assume that anything that’s stored locally is untrustworthy.If you need real security, your best option is to keep your data on a server where users can’t modify it. For this to work, the application shouldn’t send any data directly to the server because users could still manipulate it. Instead, the application can only send commands to the server, let the server change the data, and then send the results back to the application. So if data security is vital for you, it’s best to know as soon as possible because it will affect your project’s architecture.For more information about serialization, check out the manual page. If you’d like to see this in action, check out the accompanying Unite Now session.]]></description><link>https://unity.com/blog/games/persistent-data-how-to-save-your-game-states-and-settings</link><guid isPermaLink="true">https://unity.com/blog/games/persistent-data-how-to-save-your-game-states-and-settings</guid><pubDate>Tue, 23 Feb 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[The app marketer’s guide to working with a mobile ad network]]></title><description><![CDATA[There are many advantages to incorporating ad networks into your media plan, which you can learn more about here. In addition to gaining a competitive edge over other apps in your category, running user acquisition campaigns on multiple mobile ad networks such as ironSource, is an excellent way to increase ROAS and scale.There are three steps to running a user acquisition campaign on a mobile ad network: getting your media plan together, setting up the campaign itself, and then optimizing the campaign. Read on to learn more about each step of the process.1. Getting your media plan togetherThe first step to working with an ad network is setting a media plan. That means preparing the research and creating an initial plan for your app’s marketing strategy. Before going into the nitty gritty, it’s important to take note of what your competitors have already done and accomplished in this space.With mobile ad networks arriving on scene more than a decade ago, it’s likely that some of your competitors may have already run UA campaigns on ad networks. You can find these competitors through sources like App Annie, Sensor Tower, the app stores, and other intelligence services. Be sure to talk to your ad network partner to analyze the geos they’re targeting, the media sources they’re running on, and the creatives they’re relying on.Once you’ve chosen the best media sources and ad networks for your app’s UA strategy and analyzed the competitors in your space, there are a few last preliminary actions to complete on your checklist. This includes setting a ROAS goal, which is the amount of ad spend you want to recoup (check out our blog post or webinar on how to calculate a ROAS goal for your app). From there, you can determine your base bid. Once your checklist is complete, the next step is to actually set up your campaign.2. Setting up your campaignBefore you can actually launch your campaign, you should get to know the mobile measurement platform you’ll be using, in which you’ll need to fill in everything regarding your app’s campaign and attribution window - the amount of hours or days that an ad can get credited for an install after a user sees it. If you’ve only run campaigns on social and search channels, attribution platforms may be new to you, since social and search are typically self-attributing. However, mobile ad networks need third-party platforms to credit publishers and networks for the installs they successfully drove.Make sure to activate view-through attribution, which, in contrast to click-through attribution, ensures you are measuring your UA campaign by counting how many users install your app from the store after viewing your ad. This way you can make sure you are crediting the right ad network for the install. It’s also vital to keep track of who to show your ad to, based on who hasn’t downloaded your app, with a dynamic suppression list to avoid wasted ad spend. Lastly, make sure your post-install events are making it back to your ad network, so that you can get a deeper analysis of your campaigns’ quality performance.To optimize your ad performance from the start, have a set number of creatives that you are confident in and prepared to launch. Ultimately, you want to begin advertising with your best performing ads and it’s important to decide which ones before the launch date. You can test the performance of these ads on platforms like Facebook, and use the winners on the ad network.Once all of this is turned and ready to go, you’re ready to successfully launch your campaign on the mobile ad network. The real optimization, however, will come after the first ad is shown.3. Optimizing the campaignAs soon as your campaign is launched, you’ll begin seeing how well your creatives are increasing your IPM (installs per thousand ad impressions) and whether your bids are optimized towards your ROAS goal. From there, you will be more equipped to make decisions.Let’s start by discussing bid optimization. To better optimize your bids, utilize automated optimizers, such as ironSource’s ROAS optimizer. You can easily feed these tools your ROAS goals, which calculate the perfect bid for all of your apps and then update the bids automatically in real-time. Not only does this save you time and manual effort, but the optimizers generally deliver better results than most humans can manage - since they update thousands of campaigns to high degree of granularity.In terms of creatives, each ad network has its own benchmarks and best practices to optimize your IPM, so it's vital to constantly A/B test and refresh your creatives. Use in-ad data such as funnel analysis, time to engage, time to complete, and more to understand where users are dropping off to iterate your creatives and improve performance. For more about optimizing creatives, check out this eBook.Ultimately, you want to put yourself in the best position to drive quality traffic from your ad network campaigns. If you’re considering starting to work with an ad network, follow these three steps to break down the process, and get in touch with us to learn more.]]></description><link>https://unity.com/blog/the-app-marketers-guide-to-working-with-a-mobile-ad-network</link><guid isPermaLink="true">https://unity.com/blog/the-app-marketers-guide-to-working-with-a-mobile-ad-network</guid><pubDate>Thu, 18 Feb 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[A lightning round of great tips for 2D games]]></title><description><![CDATA[Are you planning to make a 2D game with Unity? Then take a look at these handy tips from our 2D Technical Product Manager Rus Scammell and 2D Product Marketing Manager Eduardo Oriz, that will help you get started quickly and work efficiently throughout your entire project.2D Game with UnityUse the 2D Template to get started fast with a new project. The template is available from the Unity Hub. Unique settings include:A default scene that uses a 2D view and comes with a camera set to orthographic projection and clears to a solid colorThe Editor set to 2D Mode by default so that new textures are imported as SpritesReal-time Global Illumination disabledInstallation of 2D packages, including 2D Animation, 2D Pixel Perfect, 2D PSD Importer, and 2D SpriteShape, as well as the necessary dependenciesFrom 2020.2 onwards, the 2D menu items are displayed as top-level menus for GameObject and Asset creation. These include a set of primitive 2D Sprites for quick prototyping. Menus are also added for newer features such as SpriteShape and the Pixel Perfect Camera.Pixels Per Unit (PPU) is an important concept in 2D development. A Sprite’s PPU determines how many pixels of width or height in a Sprite image correspond to one unit of distance in world space.Consider the PPU of your Sprites as early as possible. Apart from controlling pixel density, the PPU also affects how Sprites are used by the Sprite Renderer draw modes as well as other systems like Tilemap. Choose a pixel density that suits the design of your game and target platform, and avoid unnecessarily large textures.The 2D PSD Importer imports layered Adobe Photoshop PSB files into Unity. It enables you to use features such as Mosaic to automatically generate a Sprite Sheet from the imported layers and character rig. Unity then reassembles the Sprites of a character as they were arranged in their source files. The Importer is designed to work optimally with the 2D Animation system and multilayered character workflows.Aim to reduce the number of passes required to draw the final color to the screen. When pixels are semi transparent, you must consider each overlapping pixel when calculating the final color. Overdraw of overlapping transparent pixels slows down GPU performance, especially on less powerful devices or when higher frame rates are required. All of the Sprites in your scene will be considered transparent, but there are ways to reduce the overdraw.Unity will overdraw the pixels only inside your Sprite Mask. With full rect, the complete area will overdraw, but if the Mesh Type is set to Tight the area to overdraw is reduced since the generated mesh follows only the outline of your Sprite, ignoring the empty areas. If you want to have more control over the outline of the mesh, you can change it from the Sprite Editor.You can also reduce overdraw by merging overlapping static Sprites. If the Sprites don’t have to move or you don’t need them for a parallax effect, consider merging them once your level design is finalized.When you have many Sprites with static 2D Colliders, combine them with the Composite 2D Collider component. This provides better performance and a smoother collision with the entire surface. The Composite Collider can be used with Tilemaps; in the image above, the purple tiles on the screen are used as Colliders. You enable it by adding the component and checking the Composite box.A Composite 2D Collider can also be used with parent GameObjects. Make sure the child Colliders are enabled by checking the box Used by Composite. Another way to optimize Colliders is to manually draw a simple polygon that works well with your GameObject.Every Renderer attached to a GameObject like a Sprite has some overhead. To display many static Sprites efficiently use the Tilemap Renderer for a more performant and convenient way of designing your game. You can render hundreds of Sprites with just one Renderer. When you have many Sprites to render but you don’t require sorting, use Tilemap Chunk Mode to reduce CPU and memory usage, which is important if you’re targeting low-end devices. To use it, put all the static tiles in the same Tilemap, and enable Chunk Mode.Make sure that all tiles are also in the same Sprite Atlas. The tiles might not be displayed correctly in the Scene View, but they will be sorted correctly when you enter Play Mode. One approach is to design your level using Individual Mode and change to Chunk when you are ready to publish.If you need Sprites to be sorted correctly, for example, to move a character in front and behind the individual tiles, use Individual Mode. For Sprites that need to be moved or have gameplay functionality, use Regular Mode.Sprite Shape is the 2D tool to design organic shapes and levels. By default, the Sprite Shape API allows you to change the nodes of the spline at runtime, which can impact performance. If you don’t require that runtime change then you can bake or cache the geometry of the spline for better performance. Select Sprite Shape Controller, enable Edit Spline and then Cache Geometry to bake the mesh. If you use Unity 2019 LTS or later versions and are modifying the spline at runtime, then you can get a big performance improvement by installing the Burst package. Go to the Package Manager and install Burst version 1.3 or later.You can use Sprite Shape Profiles to design environments similar to how you would with vector drawing software. The Profiles can be used for both gameplay and decorative elements. They work well for different art styles and filling large areas fast, all while using fewer assets.The Draw Modes of the Sprite Renderer help you save on the size of your assets and make the process of designing levels more fun. With Tileable Sprites, you can have different GameObjects using the same Sprite in different sizes without stretching it. Go to the Sprite Editor and move the yellow handles to frame the part of the Sprite that will be tileable. Apply it and then go to the GameObject and change the Sprite Renderer Draw Mode to Tile Mode.You can also design your level with 9-slicing Sprites, using blocks that look sharp and proportionate while you scale and arrange them. In the Sprite Editor, select the area that should be tileable and make sure that the corners fit in the corner area that won’t be repeatable, and then select Draw Mode to slice.When you are designing 2D games, there will be situations where some of your GameObjects will be in the same sorting layer and order. You could create many layers and some logic behind your moving Sprites to show them in the right order, but this isn’t efficient. The way we tell Unity the right order to render a Sprite in those situations is with the Transparency Sort Mode under Project Settings. Unity sorts Sprites in the order described by the direction of a Vector2 (defined by the axis X and Y in these settings). See how Unity’s Eduardo Oriz, product marketing manager and Rus Scammell, product manager, set up this optimization at around the 9:15 mark in their Unite Now talk.Creating a frame-by-frame animation clip in Unity is simple. Select a sequence of Sprites in the Project window and drag them into the Scene view or the Hierarchy window. An animation clip and an Animator will be made for you automatically.If you want to add the animation clips on an existing Animator, simply drag those animation frames onto the Animator’s GameObject. The clip will be added to the Animator. Hold down the Alt or Option key while dragging the animation frames into the hierarchy if you want to create a different GameObject for each Sprite.Unity supports both frame-by-frame and bone-based animation. Here are the key differences between the two approaches:Frame-by-frameEach frame uses a unique SpriteAdditional animation clips require more SpritesFrame rate and speed are usually constantTransition animations require additional SpritesDoes not work with 2D Inverse Kinematics (2D IK)Bone-basedEach animation frame uses the same SpritesEach animation clip uses the same SpritesWorks well for variable animation speedAnimation system can create transitions for clipsWorks with 2D IKInstall the Burst/Collections packages to optimize 2D animation performance for high bone counts and Sprite meshes with high vertex counts. Animated Sprite deformation at runtime will also get a performance boost. This works by allowing the 2D Animation package to use Burst compilation and low-level array utilities to speed up Unity’s processing of the Sprite mesh deformation.Make sure you are using Unity 2020.2 as well as 2D Animation 5.0.x. When you install the Burst package 1.3.3 or newer you should also install Collections which is a Preview Package.When preparing a Sprite for rigging, you have complete control over the mesh. To start quickly, the Skinning Editor provides an automatic tessellation option. However, you can customize this by using the mesh tools to add and remove vertices to craft the mesh that you need.Add 2D Colliders and Rigidbody 2D components to bone-based characters to drive motion via the 2D Physics system. In the example image above from Eduardo’s and Rus’s talk, Capsule Colliders were added to each bone as well as to Rigidbody 2D components. They were then connected with Hinge Joints. You can use angle limits on each joint to limit the range of motion and you can also toggle whether the Rigidbody components connected via a joint collide with each other.Keep a consistent pixel density across all of your assets. If your project has 32 PPU, for example, you can expect one unit to contain 32 pixels, like the tile to the left side of the above image.The default 2D Camera expresses size in vertical units from the center of the camera. In the example image here, we can fit 10 tiles vertically:If your assets appear too small when you add them to the Scene view, compared to your original reference image, it’s most likely due to a mismatch of resolutions.Unity’s default PPU for sprites is set to 100. When we change the Sprite Asset configuration to our project’s 32 PPU, the sprite will then be the correct size.By default, Bilinear Filtering is enabled for assets to smooth out hard edges, but if you want a retro-style pixelated look then you change the Filter Mode to Point to get sharp-looking visuals that take up the screen space defined at the start.When you have many assets to import to your project, changing the setting for each individual Sprite to match your project settings will be time-consuming. Instead, create an Import Template or Preset so that every imported asset will have the predefined configuration that you want. To do this:1. Select an asset with the configuration that you want2. Click on the Settings icon next to the Sprite Asset to create a template from it3. Save it with a name that helps you remember what it does4. Make it the default so that all new imported assets will have that configuration (you will see the Preset Asset in your Project view)If you are working with pixel art, make sure that the screen always shows the same number of pixels and that all those pixels stay the same size. First, go to your Camera and add Pixel Perfect Camera. Set the Asset PPU to the one that you use in your pixel art.Once you add the Pixel Perfect Camera component, it will take control of the Camera on Play Mode, but you can also see the changes in the Editor if you enable Run in Edit Mode.In your project, characters and objects can change their position, rotation, or size. By default, they will have a smooth interpolation, but if you want to stay true to the pixel art limitations indicated by the PPU of your project, enable Upscale Texture. The GameObjects will move in increments of one pixel. The rotation and scale changes will also respect the visual constraints. Learn more about tips to create retro-looking 8-bit and 16-bit games.Sorting Groups: Sorting Groups allow you to group 2D renderers together. You might be using Sorting Layers and Order in Layer to make sure the rendering order is correct for each character, but this won’t work if there is overlap and the individual parts become interlaced.You can place a Sorting Group on the root GameObject for each character to group the Renderers and sort them as one. With the Sorting Groups, the characters no longer interlace and sort as a group. Sorting Groups work with all 2D Renderers as well as Particle Systems.Sprite Atlas: This Asset packs several Sprites into a single combined texture. Unity can then use this single texture to increase performance by issuing a single draw call instead of multiple draw calls for each Sprite that is located in a single folder.By adding a folder to a Sprite Atlas, you can freely add and remove Sprites from your Sprite Atlas over the course of your production by simply changing the contents of the packed folders.It is also possible to create variants of Sprite Atlases that are at different sizes or have different compression settings to target a range of platforms with the same source assets.You should consider an atlasing strategy that works for your game. Sprite Atlas has been designed so that you can find a balance between productivity, flexibility, and performance.See how we’re empowering 2D artists; learn about how Odd Bug used 2D lights to create mood in their game Tails of Iron; download the 2D sample project The Lost Crypt, and read this in-depth guide on choosing the best resolution for your 2D assets. Finally, you can watch Eduardo’s and Rus’ Unite Now presentation here.]]></description><link>https://unity.com/blog/games/a-lightning-round-of-great-tips-for-2d-games</link><guid isPermaLink="true">https://unity.com/blog/games/a-lightning-round-of-great-tips-for-2d-games</guid><pubDate>Tue, 09 Feb 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Hyper-casual games: What are they & how do you monetize them?]]></title><description><![CDATA[Since the App store surfaced 10 years ago, we have seen mid-core, casual, and (debatably) hard-core games take off in the mobile space, yet today a fourth category is dominating the app charts - hyper-casual.In the past few years, hyper-casual games have seen unprecedented growth, and their momentum is only getting stronger.So what exactly makes these games so successful? And where do we see hyper-casual going? Here’s our complete guide on the fast ascendance of hyper-casual games, and a look at how best to monetize them.What are hyper-casual games?As the name suggests, hyper-casual games are lightweight games with simple mechanics that offer instant gameplay. Literally “tap to play.”Because of their fundamental ‘simplicity,’ hyper-casual games are not only instantly playable but infinitely replayable, making them highly addictive and engaging. Think - how many hours have you spent playing Join Clash this week? (be honest).The combination of simple mechanics with minimalistic UI provides a very accessible and incredibly engaging user experience, so no tutorial is necessary. Even more so than casual games, players can instantly jump into gameplay and get hooked on their goal.Unlike other genres, which have very specific audiences, hyper-casual games are built for the masses. “If you can show your hyper-casual game in an ad, and people instantly understand what the game’s about, you’ve succeeded - that’s a hyper-casual game. It needs to appeal to a wide audience,” Paul Woodbridge, Director of Design at MAG Interactive shared on an episode of LevelUp.The ascendance of hyper-casual games: Where did they come from?Hyper-casual games aren’t exactly “new”, especially in the sense that they are, in some ways, a revival of 70s arcade games. However, they only recently grew into the sensation they are today, grabbing 10 out of the top 15 spots in the top downloaded charts, versus when they held a ‘mere’ 3 spots on the top charts just a few years ago.The ascendance of hyper-casual games can be credited to three main factors: that hyper-casual remains a global phenomenon, that IPM for hyper-casual grew 70% in the last year (ultimately leading to more installs), and that there are simply more hyper-casual developers on the scene. In fact, the low barriers to entry has helped several previously unknown developers make it to the top of the charts.“As casual games implement deeper, mid-core features they become more engaging, but also more complicated. This, in turn, opens up a segment for hyper-casual games to dominate - games that are easy to start and fun to play,” said Deconstructor of Fun founder and Rovio's Director of Product Management, Mishka Katkoff in his interview with ironSource LevelUp.IAP revenue vs. scale across game genresAlthough hyper-casual games are dominating the download charts, most hyper-casual games still can’t compete with Clash of Clans for highest grossing games - and nor do they need to. While these mid-core and casual games make the bulk of their revenue from IAPs, hyper-casual games mainly monetize through ads, a business model which is sustainable for them due to the huge scale they see in terms of downloads. “While the in-app revenue of their games is relatively low, the scale is great, and through video ads and cross-promotional work, the companies are able to operate a massive volume of business,” said Katkoff.With such great scale, developers creating multiple hyper-casual titles don’t necessarily need to rely on revenue from IAPs, and for this reason some hyper-casual games don’t even bother to include them.“The business model is different. You’re not interested in building this long-term relationship with a player where they feel the need to spend money. You have a much more short-term relationship, where you want them to quickly die and watch an ad to continue,” explained Tom Kinniburgh, founder at Mobile Free to Play said on LevelUp.Hyper-casual game monetizationAs we’ve pointed out, due to their relatively unsophisticated in-app economies, hyper-casual games rely on ads as their primary form of monetization, so picking the correct ad units and monetization technologies is hyper important. Both are key for reaching hyper-casual’s ultimate monetization goal - which is to increase ARPU.Beyond evaluating specific ad units, developers should consider factors like session length and number of sessions per day when designing their ad implementation. Both elements present opportunities to serve more impressions to users, which in turn drives more revenue. Some top hyper-casual titles with great monetization strategies include Supersonic's Join Clash and Samurai Flash.Hyper-casual game revenue and ideasBelow are few different tactics, ideas, and strategies to boost revenue for hyper-casual games.Rewarded videoWhen it comes to monetizing users, in many ways rewarded video is the most rewarding ad format (see what we did there?). In addition to generating more revenue for developers, incorporating rewarded video also increases retention and session length (unlike interstitial and banner ads, which can in some cases have the opposite effect).While it may be more challenging to incorporate rewarded video in hyper-casual games lacking strong virtual economies, it’s well worth your while to think about creative ways to incorporate the ad format. Developers looking to incorporate more rewarded video can try adding different layers to their games, or providing various valuable rewards such as gems, extra time, extra lives, etc. in order to drive more engagement. A 40% plus engagement rate, and 4 impressions per user per day are good goals to aim for.(For a more in-depth look at which metrics are important for your in-app ad monetization strategy, you can check out our presentation on that very topic on Slideshare.)Banners and interstitialsEven when developers have optimized their rewarded video strategy, they may still see that more than half of their users don’t engage with the ad unit (and even fewer make purchases in the virtual store). This makes interstitials and banner ads a hyper-casual game developers best friend, helping them successfully monetize all their users.For interstitials there are two main factors to look at. The first is the number of ads shown per second, and the second is the type of interstitial - static, video, playable. It’s also critical to decide if the ad will have a skip button, and if so after how many seconds will it appear? While taking a more aggressive approach - (more impressions per session, including playable and video ads, a ‘skip ad’ button that pops up only after 5 seconds) - will generate higher ARPDAU, it may also simultaneously hurt retention and session length and alienate your users - so approach with caution.Ultimately it’s all about finding the ‘sweet spot’ that balances user experience and monetization to maximize LTV and ARPU. The best way to find the setup that generates the highest LTV is by A/B testing. For a benchmark, we recommend aiming for 3 impressions per session.For developers looking to implement an even more sophisticated monetization strategy, it’s also worthwhile looking at building tailored ad implementations for different segments. For example, for users that engage with rewarded video and make purchases in the store, taking a softer - i.e. less aggressive - approach to ads shown makes more sense, since these are high-engagement, likely also high-retention users. For users that generate zero revenue through IAPs or rewarded ads, taking a more aggressive approach can work in order to yield more hyper-casual game revenue.Impression level revenueWhile in hyper-casual games, the vast majority of hyper-casual revenue comes from ads, getting a look at device-level data on ad revenue is just as important as getting it for IAP-focused games. The more important a revenue stream ad monetization becomes, the more important this information will be for both user acquisition and overall monetization activities. In a way, ads are actually very similar to IAPs, in the sense that just as you have ‘whales’ who spend a lot in-app, you can also have ‘ad whales’ - i.e. users who generate significant hyper-casual revenue from engaging heavily with ads. As such, it’s important for app developers to adjust their implementation and strategies based on device-level data on ad engagement and revenue. For example, ironSource’s impression level revenue solution enables developers to see which user segments are not engaging with rewarded video at all, and can therefore be shown more interstitial and banner ads.In-app biddingIn addition to implementing the ad units, the monetization stack that powers those ad units is just as important for hyper-casual developers to focus their monetization strategy on. By functioning as an auction among ad networks, in-app bidding, which in the past year has gained significant traction, lets app developers effectively automate monetization while still garnering the highest value for each impression.Because hyper-casual games rely so heavily on ad monetization, and it’s common for hyper-casual developers to have large portfolios, activating in-app bidding can help reduce the operational overheads that come with monetization optimization. Essentially, instead of spending hours manually optimizing several waterfalls to maximize eCPM, in-app bidding technology automatically serves the impression to the highest paying ad network.ironSource’s in-app bidding solution, for example, is the first on the market to grant developers immediate access to top in-app bidding networks like Facebook Audience Network.Hyper-casual game mechanicsIdle mechanicsPuzzle mechanicsTidying mechanicsResizing mechanicsStacking mechanicsRising and falling mechanicsSwerving mechanicsAgility and dexterity mechanicsColor-matching mechanicsTurning mechanicsCapture the territory mechanicsDrawing mechanicsAiming mechanicsTap and timing mechanicsPushing mechanicsDirection mechanicsThe best and top hyper-casual games of 2021According to Sensor Tower, these are the top hyper-casual games worldwide according to downloads in 2021.Join Clash by Supersonic StudiosDOP 2 by Say GamesSushi Roll 3D by Say GamesProject Makeover by Bubblegum GamesRoof Rails by VoodooPhone Case DIY by Crazy LabsOh God by AlictusHit Master 3D by AzurStacky Dash by Supersonic StudiosThe future of the hyper-casual marketAs Katkoff points out, “hyper-casual and ad monetization are proving to go hand in hand” - changing the landscape of the monetization game. With so many hyper-casual titles popping up every week, developers may have to begin implementing deeper features in order to stand out from their competition, and it will be interesting to see how they do so within the category’s natural parameters. Hyper-casual games have opened up a realm of new possibilities in the market and it will be exciting to track the category’s progress over the next year.Listen to the first episode of our hyper-casual podcast mini-series. Want to learn what goes into making the world’s most popular games? Subscribe to LevelUp to never miss an update.]]></description><link>https://unity.com/blog/what-are-hyper-casual-games-and-how-do-you-monetize-them</link><guid isPermaLink="true">https://unity.com/blog/what-are-hyper-casual-games-and-how-do-you-monetize-them</guid><pubDate>Sat, 23 Jan 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Augment assembly work planning with digital human simulations]]></title><description><![CDATA[Learn how Unity is supporting the MOSIM research project to simulate and analyze complex, realistic human motions for a range of manufacturing use cases. With the ability to simulate assembly worker tasks in minutes rather than weeks, companies can improve production planning, increase worker productivity and safety, and reduce risk and costs.The MOSIM project is a consortium championed by auto manufacturer Daimler in partnership with Unity and more than 20 other partners. It seeks to provide an open standard for digital human simulations for industrial applications.Download MOSIM on GitHubEven in today’s age of automation, assembly of vehicles and other manufactured products still requires significant manual work. Much about the production planning process can be improved, as workers’ tasks are typically not visualized in 3D but described in text. Additionally, validation for these tasks occurs on hardware prototypes. Simulation can make this experience more efficient, but generating a process simulation has historically been time-consuming and required tools for experts.While it’s possible to simulate specific, individual actions (e.g., affixing a part), simulating a joint sequence of actions – for instance, walking to a part, picking it up, walking to the vehicle, and affixing the part – requires extensive manual effort and physical motion capture of the actual location and setup. Aside from very specific, high-risk scenarios that might justify the complexity and time investment, most companies are deterred from making this effort.“Manual assembly for a car or bus requires a lot of different actions, and currently there is no existing tool that can simulate those scenarios comprehensively. The challenge is bringing these individual sequences together, so we wanted to create a framework for digital human simulations that could help us do that,” says Felix Gaisbauer, PhD Researcher at Daimler Buses - EvoBus GmbH and Technical Coordinator for MOSIM.As the production of cars, trucks, buses, and more become increasingly more complex and competitive, the need to maximize efficiency is paramount. Reliance on physical testing and optimization not only hinders productivity and inflates costs, but often leaves manufacturers lacking confidence in their operational efficiency.“While these efforts have improved over the last decade, dynamic simulation of humans is more or less not being done. Right now is really a prime moment for simulation in production,” says Thomas Bär, Manager at Daimler Buses - EvoBus GmbH and Project Leader for MOSIM.With MOSIM’s modular, Unity-based human simulations, manufacturers can easily piece together a series of character animations into a comprehensive simulation. They can:Visualize and verify the assembly steps in real-time 3DSimulate hypothetical scenarios to determine the feasibility and optimal sequence of tasksConduct metric-based assessments (e.g., ergonomics, buildability)Optimize and improve processes before completing physical setups or training teams, which greatly reduces costs and inefficienciesSimulations can be created in mere minutes, as compared to the roughly two weeks it would take to create a comparable simulation manually. From identifying ergonomic opportunities during the assembly process to improving worker productivity, safety and training, MOSIM has enormous potential to impact numerous stages of production.“This opens up a lot of new possibilities. When you can simulate humans moving realistically through assembly sequences, it provides additional opportunities to investigate optimization potential in the factory, such as adjusting shelf positions in order to shorten walk paths. It can even be used to provide immersive training for workers on how to complete their tasks,” says Gaisbauer.Leveraging Unity’s real-time 3D platform at the core of MOSIM’s framework opens up new possibilities for visualization and simulation, enabling digital avatars and animations that elevate the entire experience. Unity allows for fast prototyping as well as easy deployment to devices like virtual reality headsets.“I really like the way Unity’s programming works, the large Asset Store, and that most of our project partners have more experience with Unity than other engines. The comprehensive package Unity provides is what makes the difference for us,” says Gaisbauer.MOSIM can be accessed via a web-based application as well as in Unity. It is capable of automatically generating worker assembly simulations in 3D using standardized text descriptions, such as “Pick Up & Put Down.”Inspired by the Functional Mock-up Interface (FMI) approach, the industry open-source standard for computer simulations, MOSIM offers Motion Model Interfaces (MMIs) and their implementations called Motion Model Units (MMUs), which range from simple animations like walking to complex tasks like climbing a ladder.MOSIM includes a library of predefined human motions in its open-source repository on GitHub and encourages the Unity community to contribute to the creation of more MMUs. A Unity-based “MMU Generator” enables the creation of custom MMUs from FBX and other file formats without requiring programming knowledge.“This is something special. We don’t have this for any other gaming engine – it is unique to Unity,” says Gaisbauer. “It simplifies development and we hope it will attract more animation artists and developers to provide more MMUs.”Check out the MOSIM repository on GitHub and bring the power of digital human simulation to your application.]]></description><link>https://unity.com/blog/industry/augment-assembly-work-planning-with-digital-human-simulations</link><guid isPermaLink="true">https://unity.com/blog/industry/augment-assembly-work-planning-with-digital-human-simulations</guid><pubDate>Tue, 19 Jan 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[The 4 KPIs you should be monitoring to optimize in-app bidding performance]]></title><description><![CDATA[In the past year, we’ve seen a surge in the amount of game and app developers who have adopted in-app bidding into their monetization strategy. But like with any new technology, and especially one that automates manual operations, it’s important to retain as much control as possible and get full transparency into its performance. By relying on hard data, you’ll be better equipped to optimize and control the automated setup, make the right decisions for your business strategy, and manage the conversation with your ad network partners.Here are 4 KPIs you should be monitoring through your mediation platform to make sure your in-app bidding setup is performing at maximum efficiency.1. ARPDAUIn a traditional waterfall, developers have complete control to set price floors or CPMs for each network, and use eCPM to measure the impact on network performance. However, in an in-app bidding stack, the networks’ algorithms determine CPM in a real-time auction, and there’s less developers can do themselves to increase a specific network’s performance. Accordingly, eCPM is no longer a relevant or actionable KPI for measuring monetization performance. That’s why, ARPDAU, or average revenue per daily active user, has become the go-to metric for measuring in-app bidding performance.ARPDAU measures the revenue from in-app purchases, ads, or both on any given day, by summing the revenue on that day and dividing it by the number of unique active users. It provides a holistic view of overall app revenue, and can indicate the health of your monetization stack.2. Bid rateEach time an app calls to load an ad, the in-app bidding auction sends a bid request to each bidding network, and asks if they’d like to bid and how much. The bidding network can choose whether or not to provide a bid. Here, bid request represents the number of times a bidding network is asked to participate in the auction, and bid response represents the number of times a bidding network responds to the request with a valid bid.Putting this all together, the bid rate KPI is the percentage of times that a bidding network chooses to participate in the auction, and is measured by dividing bid responses by bid requests. Think of it as the equivalent metric to fill rate in the traditional waterfall.It’s important to keep in mind that bid rate can vary significantly between networks, due to differences in strategy, technology, and demand - meaning bid rate is not the best indicator of individual network performance. Rather, you can use bid rate to compare a network’s performance across your app portfolio and identify server tech issues in each. For example, if on average, you see the ironSource network has a 99% bid rate, but on one app you see it’s at 70%, that’s a signal something is wrong. Meanwhile, a 0% bid rate most likely indicates a setup issue.3. Win rateWin rate is the percentage of times a bidding network wins the in-app bidding auction and gets to load the ad, and is calculated by dividing bid wins by bid responses.Analyzing win rate can help you determine the strength of a bidding network, and pinpoint any opportunities to optimize your monetization setup. For example, a decline in a network’s win rate may be due to competition that’s improving performance, or a change in the network’s demand. Meanwhile, an increase in a network’s win rate may encourage you to use that network across other games in your portfolio, or other segments or countries in that game. Additionally, a drop in win rate across all bidding networks at the same time may signal setup issues - perhaps bids aren’t sorted by eCPM or rates are set incorrectly.Note, however, that networks that have lower bid rates and are more selective with the bid requests they choose to respond to, tend to have higher win rates. Ultimately, win rate as a KPI is most valuable when compared over time, and also when used alongside render rate, which we’ll dive into next.4. Render rateRender rate is the percentage of times a bidding network bids in the auction and then serves an impression. It’s measured by dividing bid response by number of served impressions.Comparing render rate against win rate can alert you if there are operational issues with your in-app bidding stack. For example, large discrepancies between win rate and render rate may suggest that the network is bidding on fewer engaged users, there’s a poorly placed traffic driver, or that you didn’t call to show the ad. Take note that when measuring these in-app bidding KPIs, it’s critical to analyze them according to network, geo, app or ad unit, rather than overall. Doing so will lessen the load, and make the numbers easier to decipher.Render rate is useful for more than just troubleshooting technical issues. This metric can be used to understand the level of competition within a network, by showing you how many impression opportunities manifested into a real impression. That’s because though the auction takes place on the impression level, not every opportunity for an impression manifests into an ad served.These 4 KPIs should be at top of mind when looking to optimize your monetization bidding stack. Be sure to leverage the transparency into reporting that your platform is offering you, in order to better control your business strategy and increase your app’s revenue.]]></description><link>https://unity.com/blog/kpis-monitor-in-app-bidding-performance</link><guid isPermaLink="true">https://unity.com/blog/kpis-monitor-in-app-bidding-performance</guid><pubDate>Tue, 19 Jan 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 innovative projects tackling pandemic challenges with real-time 3D]]></title><description><![CDATA[Learn how enterprises are overcoming COVID-19 challenges by turning to immersive technologies, and how these tools will continue to affect the way we work in 2021.The COVID-19 pandemic took the world by storm, introducing a myriad of unprecedented challenges. From adapting to remote work to the difficulties of social distancing, companies faced workplace and facility interruptions, canceled events, and more.With the physical world upended, teams turned to virtual tools to stay on track: A Unity survey found that 63% of surveyed companies used immersive technologies like real-time 3D, augmented reality (AR), and virtual reality (VR) to navigate the challenges of COVID-19*.On top of a considerable pivot in working conditions during the pandemic, industry experts anticipate that the wide range of ways companies have embraced these tools will continue to shape work in 2021. Learn more about how experts at Unity, Microsoft, Oculus, and NVIDIA predict enterprise adoption of AR, VR, and more will be affected in our 2021 Immersive Technology Trends report.Watch this video to see a snapshot of these trends:Although many of these trends have been on the rise for years, some are just beginning to emerge in response to the pandemic and innovators have been quick to adopt. Even with the sudden shift to remote work, organizations were able to tackle business challenges with real-time 3D to enable human connection and cross-functional collaboration regardless of geographic location.Read on to discover how 5 organizations are overcoming hurdles with the help of Unity:Automotive design firm Pininfarina has been using virtual reality for a number of years, however, they did not realize how useful it would be as they transitioned to remote work. Its 900 employees were able to continue collaborating and conducting design reviews seamlessly across three continents despite lockdowns around the globe.Siemens continues to connect employees and customers with a virtual simulation lab that they created in two weeks. The lab is a digital twin representation of the physical Siemens location in Munich and allows them to continue demonstrating projects virtually, such as their dust remover demonstrator. To top it all off, it was a winner of the Unity Awards in 2020.As physical events began to be canceled, Stratasys had to change its plans surrounding the global launch of its new Stratasys J55 3D printer. Working in partnership with Visionaries 777, they created an AR mobile application to help customers across the world visualize the new 3D printer in any physical space at 1:1 scale from the safety of their own home or office.With the cancellation of the Geneva International Motor Show, a key event for Volkswagen, the automaker made history by hosting its very first virtual motor show. Working with Endava, VW showcased 36 vehicles in great detail with a 360°, real-time 3D experience and allowed visitors to interact with its new models from their web browser anywhere in the world.Proper use of personal protective equipment (PPE) is critical to staff and patient safety, but effective training materials are critical for healthcare workers. At the onset of the COVID-19 pandemic, the U.S. Department of Veterans Affairs (VA) worked with the studio Immersion to provide healthcare workers and service members an interactive, web-based safety training experience for putting on and removing PPE.***Download our 2021 Immersive Technology Trends Report*Unity Research study “2020 Immersive Tech Trends survey”, 130 Unity industrial customers, conducted on October 27-Nov 2, 2020.]]></description><link>https://unity.com/blog/industry/5-innovative-projects-tackling-pandemic-challenges-with-real-time-3d</link><guid isPermaLink="true">https://unity.com/blog/industry/5-innovative-projects-tackling-pandemic-challenges-with-real-time-3d</guid><pubDate>Thu, 14 Jan 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Create state-of-the-art car cockpits with Elektrobit’s EB GUIDE and Unity]]></title><description><![CDATA[The growing prevalence of high-performance computing platforms in cars combined with the increasing sizes and numbers of displays are driving demand for more immersive in-vehicle human-machine interface (HMI) experiences. To make these advanced user interfaces (UIs) possible, Unity is collaborating with Elektrobit (EB), whose EB GUIDE platform powers in-car UIs for more than 50 million vehicles from manufacturers such as Audi, GM, and Volkswagen.Learn more about the Unity-EB HMI collaboration at our upcoming session during CES 2021. Join us on Tuesday, January 12 at 9 a.m. PST / 5 p.m. GMT to get your questions answered and see a demo of an automotive cockpit UI that brings together EB GUIDE and the Unity Editor.Register nowTraditional HMI processes for going from design to device are not only time-consuming but require the key collaborators – automotive manufacturing, design partners, HMI system Tier 1 suppliers, and key system-on-chip (SoC) vendors – to make many trade-offs and compromises. When design visions are not reflected as originally imagined in the production UI and HMI implementation, a major reason is that teams use different software, speak different terminologies, and explore different workflows during the design and development stages.In the end, a lot of work needs to be repeated and recreated. An integrated HMI toolchain that facilitates the design process all the way through to implementation can drive major efficiencies, reducing the design-to-development time, effort, and complexity required to bring these experiences to vehicles.Proof of concept HMI demo created using Unity and EB GUIDE, running on an NXP i.MX 8QM-based platform and Yocto LinuxUnity believes real-time 3D technology brings significant improvements to this process. It paves the way to transform HMI workflows from a disconnected series of related activities into a streamlined, efficient, and cost-effective delivery system for superior user experiences.Because Unity’s real-time 3D enables what you see is what you get development, all content can be developed in the same context, previewed, and iterated on together. Teams can preview designs much earlier and directly deploy them to embedded targets (e.g., automotive-grade chipsets) – not just during development. This is a game-changer that can help eliminate compromises and complexities that typically occur as projects transition from design to development.To bring the power of real-time 3D to this field, Unity is committed to working with the broader HMI ecosystem and market leaders like EB. EB offers one of the industry’s most widely used HMI platforms, EB GUIDE, and is one of the leading companies addressing functional safety.Our collaboration with EB enables Unity to help power the creation of automotive-grade HMIs that integrate 2D, 3D, and safety-relevant content into a single experience. Teams can design and develop state-of-the-art HMI experiences easier and faster while ensuring they meet the safety needs and legal regulations of the automotive industry.Learn more about the Unity-EB collaboration from Thomas Moder, product manager of EB’s HMI solutionsThe Unity-EB collaboration introduces a new end-to-end workflow to get from UX design to embedded design seamlessly. It integrates the Unity Editor and EB GUIDE, facilitating a direct co-development experience between the platforms.Teams can create content in each application – for instance, the UI in EB GUIDE and 3D assets and animations in Unity – then preview the combined content in EB GUIDE Studio. To show what’s possible, EB and Unity created a joint, proof-of-concept demo running on an NXP i.MX 8QM-based platform and Yocto Linux.Content from the Unity Editor can run simultaneously in EB GUIDE Studio, enabling an instant preview of how the HMI will appear on target hardwareThe instrument cluster and safety-relevant content are created in EB GUIDE Studio, while contemporary 3D navigation and 3D in-car games are made with Unity. It provides a glimpse at how EB GUIDE customers can diversify the content placed in the automotive cockpit leveraging Unity’s real-time 3D rendering and graphics capabilities.--For a deeper dive into the Unity-EB collaboration and to see a demo, make sure to attend our upcoming webinar on January 12.Learn more about Unity for HMI]]></description><link>https://unity.com/blog/industry/create-state-of-the-art-car-cockpits-with-elektrobits-eb-guide-and-unity</link><guid isPermaLink="true">https://unity.com/blog/industry/create-state-of-the-art-car-cockpits-with-elektrobits-eb-guide-and-unity</guid><pubDate>Fri, 08 Jan 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Explore, learn, and create with the new HDRP Scene template]]></title><description><![CDATA[We are excited to share our brand-new template for the High Definition Render Pipeline (HDRP), which helps beginners get started with multi-room lighting setups, physically based lighting intensities, and much more.The scene has been created by a small group of game industry veterans composed of 3D environment artists, VFX artists, lighting artists, and technical artists. They worked previously on world-renowned game licenses such as Assassin’s Creed, Batman: Arkham, Crysis, FIFA, Grand Theft Auto, Need for Speed, Red Dead Redemption, and Watch Dogs.You can run the HDRP template on your machine by downloading Unity 2020.2 and starting an HDRP project in the Unity Hub. Create a New Project, Select the High Definition Render Pipeline template, and hit the Create button.I also encourage you to stream the template from the cloud using Unity’s Furioos cloud platform – you only need a web browser! This template requires mouse and keyboard inputs, and your session time will be limited to 5 minutes.HDRP has a feature set tailored for high-fidelity graphics on high-end hardware (desktop PC and game consoles). Some techniques and concepts used in HDRP can be difficult to understand for newcomers or anyone who’s not familiar with industry standards and photographic concepts. This is why we created this new HDRP template as a learning tool.For the past couple of years, you might have used the following template, which features a tiny construction site. This template lacks a physically correct lighting setup, which is a major drawback when it comes to understanding HDRP’s features.To be more precise, the sun intensity in the older template was set at ten thousand lux, 10 times lower than its real counterpart. This has dramatic implications on the entire lighting setup, notably on the exposure, and the calibration of other light sources. This incorrect setup created a lot of confusion for artists and designers who wanted to adopt a physically based workflow, and beginners were bound to be confused by the randomness of the selected values.Listening to user feedback, we heard that you want more examples for interior and exterior transitions. These scenarios can be very difficult to handle due to the immense exposure variations between a brightly lit outdoor area and a darker, artificially lit interior.To help you understand how the lighting is set up, I prepared a cheat sheet with important values. You will find color temperatures and intensities of common light sources, and exposure values, set via the Exposure Volume Component, for several types of scenes.Finally, HDRP’s Volume System, although common in many AAA engines, can be daunting for beginners who aren’t familiar with the hierarchical concepts of global volumes and local overrides that are necessary to handle rendering settings on a per-location basis. As a consequence, the former template, made of one area only, was not able to showcase the great potential of the volume system.The new template is set up in a physically based way, with a realistic sun intensity at 100,000 lux and correct exposures for each location. Beginners now have a good setup to start lighting their scenes, and they can experiment confidently with this template, knowing that the lighting is already correctly tuned.Once you open the HDRP template, you will find three interconnected rooms with distinctive vibes and lighting setups. Each area has its own set of local volumes to handle the exposure using the brand-new Automatic Histogram mode. They also include various other HDRP settings, such as Volumetric Fog and White Balance to simulate the natural action of your brain or the auto white balance of a camera.Feel free to also explore the environment by jumping into Play mode to get a sense of the scale and appreciate the environment from a human perspective. Press the WASD keys on your keyboard to move and use the mouse to look around.The first room consists of a circular sunlit arena with a large concrete platform, perfect to test your assets in a low-noise environment. The area makes extensive use of HDRP’s Decal Projectors to simulate grime and water puddles, and they also provide more visual variations by breaking up the apparent tiling on the concrete materials.Taking the stairs down to the second room, you’ll discover a naturally lit interior featuring a windowed tree cage with advanced materials such as transparency, subsurface scattering, and tessellation. The area also offers a couple of GPU-based special effects, in the form of floating dust, and butterflies inside the tree cage. A custom Density Volume simulates the higher humidity in the vicinity of the cage and creates beautiful rays of light.The room is a perfect showcase for the capabilities of the GPU Lightmapper since the majority of the indirect lighting is provided by the sole opening in the ceiling. This lets the sun and sky lighting bounce around to simulate beautifully smooth gradients of light, emphasized by the vibrant paint used on specific walls.If you follow the ramp leading to the third and last room, you will discover an ultra-minimalist living space featuring real-time spotlights, a set of three ceiling lamps, and a long, emissive strip light that once again takes advantage of the GPU Lightmapper.The majority of the illumination in this space is generated by artificial lights, making extensive use of soft shadows, light cookies (projection textures), and carefully placed Reflection Probes. As you approach the lamps, subtle specks of dust light up as they traverse the beam of light.First of all, the main constraint for this project was a 100 megabytes limit! By today’s standards, this is a very small amount of data, especially when it comes to texture budgets, notably for albedo, normals, lightmaps, and reflection probes. However, a small template size allows users to download and import the HDRP package very quickly, no matter where they are in the world, and it complied with the internal size limitations for Scriptable Render Pipeline (SRP) templates at the time of its production.To make the best use of our data budget, we decided to adopt a brutalist architectural style with strong shapes, simple materials and a small number of reusable props. Nevertheless, we weren't shy about using complex geometrical shapes for this environment, particularly curved and tilted ones, which can cause numerous problems when it comes to the light baking and the placement of box-shaped rendering GameObjects, such as Reflection Probes and Volumes.To handle the skybox, we decided not to include a custom (and memory-intensive) HDRI texture, as it would have radically increased the size of the template. Instead, we rely on the built-in, low-resolution, HDRI from HDRP. The main drawback is that it doesn’t include a sun disk.Finally, one of the main victims of this 100 MB limit was Reflection Probes. A maximum resolution of 256 pixels had to be used in order to minimize the memory footprint of the 18 Reflection Probes in the scene.This kind of resolution is common in games. Nevertheless, if you require pin-sharp reflections for your mirror-like assets, nothing prevents you from increasing the Reflection Probe resolution in a HDRP asset, then rebaking the Reflection Probes on your local machine. Obviously, the performance impact on memory will increase depending on the resolution and the size of the Probe Cache.The template offers multiple levels of quality to perform on a wide variety of hardware. Head to Edit > Project Settings > Quality, and choose between Low, Medium, and High settings. For instance, in the Low quality mode, Volumetric Fog is disabled to maximize the framerate. On the other end of the scale, the High setting offers soft shadows with penumbra approximation and effects with a higher sample count across the board.The project uses a mixture of real-time lights, lightmaps and light probes. The entire structure and the largest assets take advantage of the GPU Lightmapper. Therefore, most lights are set to Mixed, and the light bake is generated using the Baked Indirect mode. This provides a soft light bounce as well as beautifully smooth occlusion shadows while ensuring the direct lighting and shadowing remain entirely real-time.Small objects, by contrast, rely on a network of Light Probes distributed across the entire scene, rather than on the slower lightmapping approach. I always recommend spending some time minimizing the baking times by forcing smaller objects to only Receive GI from Light Probes, and/or preventing them from Contributing GI altogether in the Mesh Renderers Inspector window.Additionally, to let you experiment with different levels of indirect lighting quality, I provide several Light Baking presets for the GPU Lightmapper, accessible via the Lighting Settings asset under Window > Rendering > Lighting. For example, when using a reasonable Geforce RTX 2070 Super, the Draft preset should produce an extremely quick yet blotchy result in 10 seconds, ideal for quick iterations, whereas the Ultra settings will yield extremely clean lightmaps in just four minutes for production-quality renders.Nevertheless, depending on your GPU, your mileage may vary. Therefore, I recommend that you experiment with different parameters which can greatly influence both the quality and the baking time, especially the Indirect Sample count and the Texel density.As new HDRP features emerge, the template will be updated to showcase them, so keep an eye on future releases of Unity and HDRP. Stay tuned for my upcoming Unite Now Talk, where I will explain in more detail how I set up the lighting in this new template, as well as the volumes, exposure, lightmapper, post-processing effects, and many other HDRP features. Also, register for this upcoming NVIDIA webinar where I will let you know how to enable and tune the ray tracing effects in this template. When you register and attend the entire webinar, you have a chance to win an NVIDIA Quadro RTX 5000!In the meantime, have a look at my previous Unite Now session, titled Achieving high fidelity graphics for games with the HDRP, where I present important HDRP features and physical concepts such as exposure and lighting intensities. You can also find more HDRP learning resources in this blog article, Create jaw-dropping graphics with these High Definition Render Pipeline resources.We hope you will find this new template educational, and we look forward to seeing how you experiment with it.Pierre Yves Donzallaz (Technical Art Manager, R&D, Graphics) is an experienced lighting artist with over a decade of AAA experience in the field of real-time rendering. He has a strong technical and artistic background and specializes in lighting, level beautification, UX, tools design, and workflow improvements.He has worked on award-winning games and large AAA productions including the Crysis series, Ryse: Son of Rome, Grand Theft Auto V, and Red Dead Redemption 2.He is currently a member of Unity’s R&D Graphics team, where he leads fellow technical artists whose mission is to improve artists’ efficiency, educate users globally, and to develop new tools, workflows and graphical features alongside engineers and designers.]]></description><link>https://unity.com/blog/engine-platform/explore-learn-create-with-hdrp-scene-template</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/explore-learn-create-with-hdrp-scene-template</guid><pubDate>Thu, 07 Jan 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Become a better Unity developer with these tips from the community]]></title><description><![CDATA[Every Tuesday, Unity users share their best tips on Twitter with the #UnityTips tag. We’ve put together a list of the top tips from the past four months to help you enhance your visuals and improve your workflows. Get ready to take your Unity skills to the next level!Even if you’re not an artist, these tips will up your graphics game to help your project stand out from the pack and get noticed.Use Shader Graph to create a stylized waterfall shader.If you’re using the built-in renderer and you prefer writing shader code, this tip shows you how to create a stylized water shader.MudBun is an impressive package for building real-time volumetric effects. See what’s possible through these volumetric water particles.For more technical users, check out this advanced approach to building your own fluid particle rendering system.Tired of that default Unity lighting look? Follow this guide to see how you can remove it, and learn a little more about Unity lighting along the way.Here’s a simple way to fake background volumetric lighting using line renderers.Learn about fur shells for a simple hair and fur effect.Try this easy way to add simple outlines to your mesh with Shader Graph.Learn how to add color to your shadows using raytracing in Unity.You can animate vertices in Shader Graph using the new Master Stack.If you’re interested in raytracing, why not check out this 60-second raytraced reflections tutorial?See here how you can make your objects disintegrate.Learn how to outline selected objects using command buffers.In case you missed it, the Unity Editor has had some great improvements in 2020, and you can further customize and tweak it using these tips to do your work faster and smarter than ever before.You can define your automatic naming scheme for duplicate objects.Scripting defines are now displayed as an Inspector array, which is much nicer to use than the old comma-separated list.Presets are a convenient new feature that you can use to quickly copy default parameters between objects.Check out the device simulator to more accurately test your UI across multiple devices.Did you know you can use these built-in tags to automatically remove objects from your build?Did you know that the Particle Editor has handy keyboard shortcuts?Try this free custom hierarchy package to keep your game object hierarchy organized.Missing a project’s Unity version? Rather than looking through the download archives, try this Unity Hub feature to install Unity versions with one click.There’s an experimental project setting that allows you to jump into playmode instantly by disabling the automatic domain reload.Programmers will appreciate these handy little shortcuts and code snippets. Tuck these away in your code arsenal so you’ll be ready the next time you encounter one of these situations.Use these snippets to calculate a random point on a circle or sphere.Use this code to convert between radians and degrees.Did you know you can add functionality to enums with extensions?You can use name of to reference your fields in Inspector field scripts for easier code maintenance.If you like to keep your serialized fields private, you might try these different ways to fix that pesky 0649 warning.If you use interfaces, you’ve probably struggled with the reference still being valid, even when the underlying object is null. Here's a nice way to fix that problem.Did you know you can accurately predict physics trajectories by separately simulating the physics?Did you know Unity has a physics debugger? You can use it to find invisible triggers or solve confusing collision issues.This is a clever way to automatically distribute an expensive function over multiple instances of the same object.--We hope you learn something new from these helpful tips. For more, search for the #UnityTips hashtag on Twitter, and you can also get involved with the community by sharing your own tips and best practices every Tuesday. Don't forget to follow @Unity3d for a weekly #UnityTips Tuesday reminder!]]></description><link>https://unity.com/blog/games/become-a-better-unity-developer-with-these-tips-from-the-community</link><guid isPermaLink="true">https://unity.com/blog/games/become-a-better-unity-developer-with-these-tips-from-the-community</guid><pubDate>Wed, 06 Jan 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[The best tutorials of 2020]]></title><description><![CDATA[Planning to scale up your skillset over the holidays? This collection of our most-watched tutorials from 2020 is a great place to start.As the year comes to an end, there’s no better time to reminisce about what we’ve been up to in the last 12 months. So we’ve compiled a list of some of our favorite and most-watched tutorials of 2020.In January, we released a tutorial showing how to use Machine Learning to make a Kart Racing Game with the ML-Agents Toolkit and our Karting Microgame Template. It demonstrates how to train an AI agent to travel around the track autonomously with reinforcement learning by simulating seeing with raycasts and steering to avoid obstacles. You should definitely check this one out if you’re interested in machine learning.Some of our favorite content this year arrived as part of the Prototype Series, where André Cardoso walks through his process for creating amazing game logic and level design using different Unity features. He kicked this series off in June with a video showing us how to Implement an Ability System similar to the ones we see in many games.We know many of you love creating shaders, with or without the Shader Graph, which is why we made this step-by-step video showing you how to create a tropical water shader using the Universal Render Pipeline. We used Shader Graph to produce this effect as part of our Boat Attack demo’s tropical island feel.André also blessed us with a Prototype Series episode about Creating a procedural boss (?). He uses animation rigging to generate boss movement, and the outcome is amazing. Definitely check out this video if you’re interested in procedural generation or animation rigging – and if you are wondering about the assets he uses, you can find a link to the project materials in the video description.Last but certainly not least, we want to include Creating a Third-Person Camera using Cinemachine. This easy-to-follow guide aims to make your life a little bit easier – or at least filming your 3D sequences. The video uses assets from the Unity Royale project.These are tutorials we were most excited about this year, but we’d love to hear from you. What were your favorite tutorials of 2020? And what topics would you like us to cover in 2021?]]></description><link>https://unity.com/blog/news/best-tutorials-of-2020</link><guid isPermaLink="true">https://unity.com/blog/news/best-tutorials-of-2020</guid><pubDate>Tue, 29 Dec 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Improve your mobile game creative strategy with these 4 expert tips]]></title><description><![CDATA[As we continue to see automation become a part of almost every part of a user acquisition strategy, creatives are one of the few remaining pieces where a human touch matters. Devising an innovative creative strategy that makes an impact by attracting and engaging users is essential for an effective campaign.To give your creative strategy a boost, we spoke with Elad Gabison, Creative Lead and Game Designer at ironSource Playworks, about how to improve mobile game creatives and hook users into next year.1. Adopt a squad mentalityBalancing excellent ideas for game creatives with great execution can be a tricky balance. Waiting too long to go from ideation to execution could prevent your creatives from ever getting off the ground or hurt the success of the overall strategy as you rush the design. The ideal situation is to execute your good idea quickly while maintaining quality. And to do this, you should adopt a squad mentality.Rather than keeping teams separate and moving the creatives from one group to the next, a squad mentality means involving the performance, operations, and creative teams all together in the creative strategy. Or if you’re a lean operation and one person represents all 3, then the goal is to make sure the creative strategy is aligned across all parts of the business. When all parts of the game execute on creatives together, it improves the efficiency and quality of the creatives while ensuring the designs remain true to the idea of the game. In general, players aren’t likely to be game designers so comments from people outside your creative circle - like a developer from the performance team - can reveal important findings about the creatives. And, getting feedback from different people in your organization can help inspire new and unique creative ideas.2. Hyper-casualize your designsThink about how hyper-casual creatives are easy for users to understand, quick, and engaging - this attracts a much wider audience. Thinking like a hyper-casual creative designer when you go to optimize your own creative strategy can help you simplify your design or tap into player emotions to boost engagement and conversions.For example, we’ve seen success with testing a version of creatives that frustrate players, such as a playable or video showing a deeper level or boss level of the game. Hyper-casual games are defined by their simplicity and increasing difficulty as players progress - as they get deeper into the game, frustration is often a theme that emerges and encourages people to keep playing, since they want to win. Showing failure or frustration in your creatives inspires a feeling in the users that they can do better themselves and can encourage conversions.3. Use data to inspire your creativityCreative decisions backed by performance data are more likely to succeed, so be sure to check on the creatives from other apps that are shown in your game, the apps that you’re advertising on, and the KPIs of your competitors’ apps. Taking into account the data from all of these sources can help provide a more complete view of the performance of your creatives and affirm your findings.Before launching your creative set, look at data from apps that are performing well and incorporate lookalike visuals or mechanics to try to attract traffic. You already know that users enjoy playing this type of game because supply-side, demand-side, and/or competitor data proves it - so you can design your creatives to appeal to that game’s players.Analyze data after a creative launch, too, so you can use this information to balance quality of users and scale. If your KPI is retention, and you notice initial [tooltip term="installs-per-mille"]IPM[/tooltip] was high and then users dropped off, it could indicate that the quality of the users was low as they didn’t stay to keep playing your game - something could only know this by checking your creative’s performance after launching. To fix that, look at previous creatives that met your quality benchmarks and see what parts you could apply to your current creative set. For example, it can help to expand the number of levels in a creative, so users get a fuller game experience and feel more emotional buy-in.4. Hook users with mini-game playablesMini-games are trending across game genres because they increase engagement and encourage users to play for longer - making them effective as creatives, too.Even if you don’t have mini-games implemented, you can still use the concept to inspire your creative strategy. Try out playables that highlight different types of mini-games, mix up the mechanics, or highlight various characters, to see what meets your KPIs. Just make sure the mini-game relates to your game’s theme and mechanics - you want users to understand your game’s concept and still be excited to play once they go to the app store to download it. And depending on how well the creatives perform, results could indicate mini-games would be an engaging addition to your game. This is one of many trends, so keep your eye out for other ones to use and adapt in your creative strategy and always be testing to find the balance between quality and scale.Gearing up your creative strategyIf you’ve read until here, then we should tell you - don’t take these 4 mobile creative tips as the be-all-end-all. A great creative strategy is all about reinventing yourself, finding what’s relevant for your game, and rebuilding every tip we’ve given you here so it’s adapted for your game design. Try out one of our suggestions - or all of them - and see what sticks. ]]></description><link>https://unity.com/blog/level-up-your-mobile-game-creatives-with-these-4-expert-tips</link><guid isPermaLink="true">https://unity.com/blog/level-up-your-mobile-game-creatives-with-these-4-expert-tips</guid><pubDate>Thu, 24 Dec 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[The road to 2021: The many dimensions of the 2D team]]></title><description><![CDATA[We recently shared our roadmap plans for 2021. Now we invite you inside Unity to meet some of the teams working towards these goals. In this third post of the series, we introduce you to the 2D team. Our Unity 2021 roadmap explains some of our focus areas for next year. We’re committed to updating production-ready features and delivering key new features based on what you have told us you’re missing from Unity. But we’re equally determined to improve workflows and your overall quality of life. This post is the third of a series that aims to give you a glimpse behind the scenes. Today we are meeting with Paul Tham, who leads the team behind 2D and tools, and Rus Scammell, the Product Manager of 2D.The dedicated 2D team provides creators of 2D experiences in Unity with a feature set that covers foundations, world-building, animation, graphics and physics in 2D (including tools like Sprite Renderer, 2D Tilemap Editor, 2D Lights). The core team today is 15 people strong, including software engineers, software quality engineers, a designer, a technical writer and a product manager, but several other individuals contribute their expertise to evolving 2D.“It’s a team built for multifunctional conversations,” says Rus.“The team is also diverse. They are Singaporean, American, Swedish, British, Indian, Malaysian, and Chinese. We share our cultures with each other and it makes our lunchtime discussions very lively,” adds Paul.Paul and Rus began their careers developing games together for the PlayStation 2. Paul later met some of the other current team members at Ubisoft. The team consists of passionate game developers involved in various areas of game production and tool development in support of both indie and large-scale projects.The team likes to engage with users (in the 2D forum and Beta forum) and keep a close eye on the conversation happening on Twitter, where, for example they connected with Odd Bug Studio, which was using 2D lights in its upcoming title, Tails of Iron.“At the community level,” says Rus, “we make announcements when a prerelease feature is available so that creators can try it out and give us their feedback. We are also doing more to make sure that performance is tested on a range of mobile devices. At a strategic level, our features are really driven by users.”The team closely observes how studios are using the 2D tools and listens to their feedback. This was the case with B2tGame during the making of the Lost Crypt and Glu Mobile for the development of Isometric Tilemaps.When users report problems or dissatisfaction or suggest solutions or ideas, the cross-functional team strives to understand what the user is ultimately trying to build. By examining a user’s problem space, the team can determine if there’s a larger need for a solution. For example, if a user reports “pixel art” as a problem space, the team evaluates common workflows and desired outcomes and makes sure that the resulting solution (features and resources), in this case the 2D Pixel Perfect package, can support those outcomes.“Design has also become a critical part of how a feature comes together,” states Rus, “and it is championed by a dedicated design team that spans the organization.” The team has a new UX Designer who frequently connects with the community in the forum to assess the user experience.While 2D features will remain familiar for creators who use them in their current workflows, 2D tools are evolving along with the underlying technology and will benefit from overall improvements.In Unity 2020.2 the team offered a more intuitive experience for new users. Working on 2D projects got faster with streamlined menus and better default assets. The team plans to keep integrating 2D menus and settings consistently across the Editor for future releases of Unity.In 2020, Unity established performance as a major area of focus, which will be evident in Unity 2021. The 2D team is carrying that forward, “to improve the performance of 2D projects made with Unity and streamline the workflows for creators of 2D games,” Rus says.Two current focus areas for the 2D team are 2D Animation with Sprite Swap workflows and 2D graphics.Rus and Eduardo (Product Marketing, 2D) shared some productivity and performance tips in a recent Unite Now session.2D Animation received improvements such as Burst compatibility in Unity 2020.1, and integrated 2D Inverse Kinematics (IK) in Unity 2020.2.For Unity 2021, the team has been hard at work on 2D Animation, refining the Sprite Swap workflows and making it easier to share animation clips across multiple characters.The team’s current mission, according to Paul, is to enable workflows for large projects. “If you have characters with many parts or games with lots of downloadable content (DLC), the characters should be able to share rigs, animations and parts.”Thanks to feedback from studios that are already using the new features, the team is further refining the user experience (UX). With these improvements, technical animators can set up the rig, a mannequin or reference so that a standard asset can be shared across the team. Then artists can make variants of the reference skeleton and animators can animate them.These inherited skeletons also help ensure that variants with missing parts or additional parts (like a tail or wings) aren’t problematic – they just work. The user needs to remove unneeded Sprites or add new Sprites or animated parts as child GameObjects of a bone in accordance with the typical Unity workflow for creating variants, but can also keep the flow of 2D Animation for animated parts.The aim is to ensure that the Sprite Swap workflow is part of the general Sprite workflow, not just for skinning within the Sprite editor for 2D Animation. We also want to make sure that 2D is present alongside 3D across various areas of the Editor. This is consistent with Unity’s broader vision of improved quality of life for all of our users, including 2D developers.The team anticipates that these changes and other minor updates will be available to try in the Unity 2021 cycle.Unity is in constant evolution and 2D tooling can benefit from new technology available. Paul describes how they work with other teams:“We are a big consumer of internal tech such as Burst and SRP. Whenever something is released internally, we will take the tech and adapt one of our features to it. By prototyping it on one feature, we will have a fairly clear idea if the new tech is a good fit for 2D. After a few rounds of testing and prototyping, we will put it on the internal roadmap.”One example of that collaboration is the Burst performance improvements in 2D Animation in Unity 2020.1, for challenging scenarios like animating a large number of skinned vertices. Another example is the boost for Sprite Shape mesh calculations, which is especially beneficial at runtime. The team also worked with the Cinemachine team to enable compatibility with 2D Pixel Perfect and the graphics team to refine the 2D Renderer.The team’s goal for 2021 is to make 2D graphics perform faster in the Universal Render Pipeline. They are also striving to improve the user experience for lights and shadows in 2D.The Universal Render Pipeline (URP) will eventually become the Unity default renderer, and that includes the 2D renderer being the default renderer for 2D projects. The team is working very hard on optimizing light render textures. They are paying close attention to frame rate, memory bandwidth, draw calls and general memory usage with 2D Lights.According to Paul, the work consists of low-level optimization code. “We are working closely with the team behind URP, using the same code base and review process, to ensure the renderer meets the needs of 2D projects.”As part of the 2D Renderer work, the team is also further improving the rendering pipeline of Secondary Textures (normal and mask maps for 2D Lights).Unity’s performance is continually benchmarked across a wide range of devices. To test the performance of all the 2D features combined in a single scene, the team used Lost Crypt, among other projects and measures.Overall improvements include enhancements to the user experience (UX) and making features easier to access, for example, managing texture size from the Inspector window in the 2021 cycle.Rus explains that they look at the desired outcomes holistically. “We do that by talking with studios and learning how they use the tools during production.”The team is hard at work to support the maturation of URP in 2021. The 2D Renderer is set to power the next generation of 2D graphics and workflow improvements that will keep enabling anyone – from artists to game designers – to animate characters, design levels or create great visuals directly in the Editor. We are looking forward to sharing the latest developments with you next year that will make sure Unity remains the best solution for your 2D project, regardless what platform you’re building for.This is the third episode of the dev diaries introducing you to some of the people working on future versions of Unity. If you missed them, you can check out the first two installments for some insight into what’s driving our Performance Optimization and Quality of Life teams into 2021.Tell us in the comments below if you would like us to cover any specific teams and feature areas in future blog posts.]]></description><link>https://unity.com/blog/engine-platform/road-to-2021-dimensions-of-the-2d-team</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/road-to-2021-dimensions-of-the-2d-team</guid><pubDate>Tue, 22 Dec 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Automate your playtesting: Create virtual players for game simulation]]></title><description><![CDATA[It’s easy to automate playtesting by creating a Virtual Player (a game-playing agent), then using Game Simulation to run automated playtests at scale. Read on to discover three case studies describing how iLLOGIKA, Furyion, and Ritz Deli created Virtual Players – offloading nearly 40,000 hours (~4.5 years) of automated playtesting to Game Simulation.Games are challenging to test for the same reason that they’re fun – players have the freedom to shape their own experience. Thus, games have a huge surface area for bugs and design flaws to appear. Developers must test frequently and with extensive coverage to resolve issues and reliably meet deadlines.In the past, developers chose between low-coverage tests with high frequency (unit tests in a CI pipeline) and high-coverage tests with low frequency (playtests before a major release).We built Unity Game Simulation to help developers test with the coverage of playtests and the frequency of unit tests. Unity Game Simulation enables developers to run automated playtests in the cloud. To use Unity Game Simulation:Create a Virtual Player (a game-playing agent).Use the Game Simulation package to instrument your game for simulation.  Use the Game Simulation package to create and upload a build of your game to our servers.Run your game thousands of times from the Game Simulation user interface (UI).This blog post focuses on step 1 – creating a Virtual Player for automated testing. Steps 2–4 are straightforward and covered in the Game Simulation documentation. You can try Game Simulation for free now.A Virtual Player emulates the input of a real player to test some aspect of your game. For simple tests, such as validating that your game can run for 60 minutes without triggering an exception, a Virtual Player can be as simple as a C# script with a few lines of code that launches a scene and performs random actions.For more complex tests, such as verifying that all weapons are roughly equal in strength or that each level can be completed, a Virtual Player can be created with the same methods commonly used to create non-player characters (NPCs). These include:Heuristic scripts: A script with a very simple rule or algorithmBehavior trees: - A visual representation of a plan consisting of conditions and tasksFinite state machines: A script with a few states that the Virtual Player alternates between, for example, seek and attackUnity AI Planner: A visual planning framework with an intuitive Unity Editor UIReinforcement learning and imitation learning using the Unity ML-Agents Toolkit: Check out how we created a Virtual Player for Jam City’s Snoopy Pop using ML-Agents.Below we highlight how three studios created Virtual Players, collectively offloading nearly 40,000 hours of playtesting to Unity Game Simulation. What’s particularly noteworthy is that all three studios were able to gain immense value with Game Simulation while relying on relatively simple approaches for creating their Virtual Player.Indie studio Ritz Deli developed Eraser Blast, a linker-style puzzle game featuring over 50 characters, each with unique gameplay characteristics. Ritz Deli used Unity Game Simulation to run hundreds of simulations to ensure that each character generates increasing scores and coin counts as their XP level increases.Ritz Deli’s CTO and tech lead Eric Jordan needed to create a Virtual Player capable of solving linker-style puzzles. He implemented a Virtual Player with C# script based on a simple heuristic greedy algorithm. For Eraser Blast, the algorithm matches the longest possible chain of bubbles of the same type:Create the set of all possible single bubble selections.  Select the bubble from the set of valid bubbles that has the greatest number of available matches.Repeat steps 1 and 2 until no available bubbles are valid matches.Update the metrics for the total score and coins rewarded.iLLOGIKA is the studio behind Rogue Racers, a player-versus-player (PvP) runner. Players create decks of cards that contain powerups that the player uses during a race. iLLOGIKA used Game Simulation to test every combination of cards to ensure that no card or deck is too powerful.The developers at iLLOGIKA created a Virtual Player using a C# script:Enable the Virtual Player to successfully navigate to the end of the race by performing raycasts to find upcoming obstacles and then avoiding them by switching lanes, ducking, or jumping.Add a series of rules describing when to use cards based on the state of the game, including the player’s current health, relative positions of the other players, their card abilities, etc. For each action described in steps 1 and 2, choose an incorrect but possible action to account for the unpredictability of a real player.Furyion is the developer of Death Carnival, a top-down shooter with a unique weapon socket system that enables the player to choose from over one hundred thousand possible combinations of weapon, ammo, and weapon module – each combination defining a unique gameplay experience.Herbert Yung, founder and director at Furyion, used a behavior tree creation tool called Behavior Designer to create a Virtual Player to estimate the average time of level completion for each combination of weapon, ammo, and weapon module. Herbert then ran thousands of simulations with Unity Game Simulation to test each weapon socket combination, saving more than 600 hours of playthrough.Herbert leveraged the intuitive Behavior Designer UI and many off-the-shelf tasks in Behavior Designer to create a Virtual Player:If an enemy is in range, attack that enemy.If no enemy is in range, move towards the exit until an enemy appears within range.Repeat steps 1 and 2 until no enemies remain.Navigate to the gate at the end of the level and once the level officially ends, call Application.quit().For more information on how to create a bot with Behavior Designer, see the documentation on Behavior Designer’s Asset Store page.The Unity Game Simulation team is committed to helping you create Virtual Players for automated testing, starting with Virtual Players for QA testing. Reach out to us if you’d like to be among the first to try our new tooling and features to create Virtual Players for QA testing.Find out more about getting started with Unity Game Simulation – you can even try it for free. And please reach out to the Game Simulation team with any questions.]]></description><link>https://unity.com/blog/games/automate-your-playtesting-create-virtual-players-for-game-simulation</link><guid isPermaLink="true">https://unity.com/blog/games/automate-your-playtesting-create-virtual-players-for-game-simulation</guid><pubDate>Fri, 11 Dec 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Unity Forma: Reimagine marketing with real-time 3D]]></title><description><![CDATA[We believe the world is a better place with more creators in it. That’s why we’re now making the power of real-time 3D accessible to marketing professionals with Unity Forma. It empowers these creators to produce interactive 3D product configurators and digital media from 3D product data in record time and without any coding skills.Marketing is one of the most compelling applications of real-time 3D. We’ve seen this technology used for groundbreaking mixed reality experiences, pushing the limits of photorealism, immersive product storytelling, product configurators, and much more.Real-time 3D offers the best of both worlds. It supports advanced media formats – interactive 3D, augmented reality (AR), virtual reality (VR), and mixed reality – that connect and engage consumers in a highly impactful, emotional, and interactive way, ultimately helping drive results like greater engagement and higher sell-through. It also supports marketers’ needs for traditional media like images and videos, while providing significant speed and cost advantages over common approaches like offline rendering, photoshoots, and productions.For these reasons and more, brands have been eager to embrace real-time 3D in their production pipelines, particularly those who need to work with complex 3D product data to market high-value items that come in multiple variations like cars, aircraft, appliances, furniture, and luxury goods.Typically, brands use a combination of in-house and agency resources to deliver digital marketing content. With an ever-increasing number of marketing channels demanding content, companies are finding that their marketing pipelines are becoming fragmented and inefficient. This inefficiency is often outsourced to agencies, but it is real nonetheless.The effort required to maintain product correctness and deliver fresh content to web, social, mobile apps, and other channels drives up costs and consumes efforts that could be put to better use. As one example, few companies have the ability to deliver personalized marketing content or deliver more deeply interactive experiences to engage consumers more thoroughly.Unity Forma is here to offer a new, better way to bring real-time 3D to your marketing.Unity Forma empowers marketing professionals to quickly create and publish marketing content and interactive experiences from 3D product data – without needing to learn the intricacies of Unity or how to code.It unlocks major efficiencies in marketing content production, enabling teams to rapidly import 3D product data, visualize models and all their variants in real-time 3D, and bring their vision to life with creative tools. You can easily showcase products in realistic visual quality, in any configuration, and in a variety of formats, including interactive 3D product configurators, images, and more.Once the creative process is complete, you can optimize content for your target platform, whether you’re using Unity’s cloud streaming service, Furioos, for web browsers, or publishing directly to mobile devices, the web, and more.Try Unity FormaBecause it is built on Unity and offers an open API, Unity Forma is extensible and can be customized to fit the exact needs of your team. You can create new capabilities that improve productivity and differentiate from the competition and implement custom tools and interfaces to tailor it to your workflows and to deliver brand-specific experiences.At the same time, it’s easy to divide and conquer work with creative agencies and other service providers in a cost-effective way – without compromising your ability to create the marketing content you need, whenever you want.Get a walkthrough of Unity Forma from Oliver Schnabel, the technical product manager for Unity Forma.In case you missed it, we debuted Unity Forma at a virtual event hosted by Unity’s chief marketing officer Clive Downie and featuring special guests from Volkswagen, including its head of global digital marketing, Candido Peterlini.Volkswagen is one of the early pioneers to use Unity in the automotive industry. The company leverages real-time 3D across its business, from R&D to marketing. It has turned to Unity to deliver a range of marketing experiences, from rendering millions of images in real-time for its website car configurators globally to creating mobile apps showcasing its vehicles in AR. Unity Forma will help take its efforts to the next level.To highlight what is achievable with Unity Forma, Volkswagen collaborated with Katana Studio and Unity to produce a new campaign video for the 2020 Volkswagen ID.4 EV, the automaker’s first fully-electric SUV. The teams used Unity Forma along with the Unity Editor to create a virtual production leveraging the ID.4’s manufacturing data and author a 45-second spot. The advertisement fuses together rendered car interiors, exteriors, and environments with shot patterns and angles that would have been impossible to achieve using a live camera production.“Volkswagen constantly seeks new paths to delight the user when experiencing our cars,” said Candido Peterlini, Head of Global Digital Marketing, Volkswagen. “With Unity, we found the right partner to enhance the product experience on the online configurator. Unity Forma comes with features that will help us to provide faster and higher quality real-time content like configurable product visualization.”“We will be able to design innovative and more immersive product experiences for our customers that give them a deeper understanding of our cars and the added value they get with highlight features like, for example, the innovative ID Light concept or our driving assistance features (IQ.DRIVE),” added Peterlini. “By this, the customer will get an even more realistic perception of the product already virtually at home.”We want to see what you can create with Unity Forma. That’s why we’re getting ready to launch the Unity Forma Challenge. It’s your chance to win a Volkswagen ID.4 EV.* Sign up here to get notified when the contest kicks off.*Unity may substitute prizes for cash or other equivalents as solely determined by Unity.Sign up to get notified about the contestTo use Unity Forma, you need a subscription to the Unity Industrial Collection or to both Unity Pro and Pixyz Plugin. Try or buy Unity Forma and stay tuned for more updates about Unity Forma in the months to come.Get started with Unity Forma]]></description><link>https://unity.com/blog/engine-platform/introducing-unity-forma-reimagine-marketing-with-real-time-3d</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/introducing-unity-forma-reimagine-marketing-with-real-time-3d</guid><pubDate>Wed, 09 Dec 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Learn the Input System with updated tutorials and our sample project, Warriors]]></title><description><![CDATA[With the Input System, you can quickly set up controls for multiple platforms, from mobile to VR. Get started with our example projects and new video tutorials for beginners and intermediate users.Input is at the heart of what makes your real-time projects interactive. Unity’s system for input standardizes the way you implement controls and provides new advanced functionality. It’s verified for Unity 2019 LTS and newer versions (see the documentation for a full list of supported input devices).Our new tutorial content can help you to get started quickly, even if you’re completely new to developing for multiple platforms. If you’re already familiar with the workflows, learn more about how to use the Input System to drive (other) Unity tools like Cinemachine or Unity UI with Warriors, our main example project.This Meet the Devs session from March explains why we created this new system and includes a demo that outlines workflows for setting up local multiplayer, quickly adding gamepad controls, spawning new players, and implementing mobile controls. Rene Damm, the lead developer of the Input System, also answers questions from the audience about tooling and the team’s roadmap.If you’re a beginner who just wants to get to know the basic input workflows for Unity, check the updated Roll-a-Ball project on Unity Learn. It walks you through first steps like installing the Input System package, adding a Player Input component, and applying input data to the Player.Our Prototype Series also uses the Input System, as you can see in this video and example project on creating a boss with procedural animation. The spaceship’s input action asset uses input for movement controls, shooting laser projectiles, and boosting.Warriors is a project that demonstrates more intermediate tooling and APIs with the Input System in a typical third-person local-multiplayer cross-platform game setup. It’s available for Unity 2019 LTS and will be updated for the 2020 LTS version when it’s released next year. You can download the project from GitHub, where we have three branches available:V1 captures the state of the project at the time of the Meet the Devs session mentioned above;V2 is what we’ve used for the most recent Input System Unite Now session (see below);We’re continuing our work in the Master branch.The project is built around characters that can be controlled in both Single Player and Local Multiplayer modes. When the Game Manager is set to Local Multiplayer, it will instantiate several instances of the Warrior prefab. As the Warrior prefab is set up to use the Input System’s Player Input component, each instance of the Warrior will automatically have a connected input device paired to it.The control scheme for this Warrior is set up for cross-platform play and auto-switches between the keyboard and different gamepads. This setup provides an example of applying smoothing to the raw runtime input data so that the character’s directional movement is even no matter which axes input (keyboard keys or gamepad joystick) the player uses. The following control scheme also uses a button press for a basic attack animation.The Warrior’s Input Action asset is also set up for two different Action Maps: one for controlling the character (Running and Attacking), and the other for controlling input for the menu. A game or any other interactive project usually has different states with different control requirements that share the same input bindings.For example, pushing a joystick in one direction will cause the Warrior to run toward that axis. However, when the game is paused, the player can use the joystick to navigate between different selectable buttons and options in the pause menu.Using the Input System, you can easily set up different Action Maps for various control scheme scenarios and switch them, per PlayerInput component, at runtime with a simple API:playerInput.SwitchCurrentActionMap(stringForMapName);Once you have set up an Action Map for interacting with the UI, actions can then be assigned to the Event System’s UI Input Module:In the Warriors project, each player can pause the game and interact with the pause menu. The overlay UI consists of a few option buttons and a context-changing panel on the right. The Input System UI Input Module applies actions assigned to interacting with any Unity UI component with Interactable enabled (such as Buttons and Sliders).This UI interaction will be isolated for the specific player that pressed pause. For example, if Player 3 pauses the game, then Player 1 and 2 will not be able to interact with it, and only Player 3 will be in control. When Player 3 unpauses the game, all Player controls are resumed. We do this by calling the following methods on a PlayerInput component:playerInput.ActivateInput();

playerInput.DeactivateInput();In the UI Menu, there is a context panel for runtime rebinding controls. This allows you to perform an Interactive Rebind for a specific Input Action and set a new input binding to it. For example, when using a PlayStation controller you could rebind the Attack action from the Cross button to another input button such as Triangle or R2.This rebind applies as an override to a specific PlayerInput component. For example, Player 2 will be able to rebind their Attack button to a different button, but this will not affect Player 3’s use of their Attack Input Action.The API for setting up an interactive rebind also contains an operation for when the rebind has completed. This allows you to set up your own control when updating the UI, saving the game state or changing any other gameplay element based on this event.Besides the Input System’s integration with the Event System and Unity UI, the Warriors project also demonstrates how it can be set up to work in concert with Cinemachine. A typical camera setup for a third-person game would feature an orbiting follow camera where the view direction is set by a mouse position or joystick push direction. The Cinemachine Input Provider component can be added to a Cinemachine Free Look camera rig, which allows an Input action to send Vector 2 axis data directly into Cinemachine’s axis control values. In the image below, you can see that the CinemachineInputProvider is using the input data from the Look Input Action.The Input System also contains a variety of APIs so that other systems can access data at runtime that can be displayed in the UI or other visuals. The Warriors example project uses data from Player Input to display information such as the current player device, player input ID, or even to update the UI-based rebind controls on the current binding. We created a custom system that takes the device and binding strings and returns a specific icon.For example, if the player is using an Xbox controller and the Attack action is bound to the northern context button, this will display a Y button icon. However, if the player is using a keyboard, then it will display a string for the currently bound keyboard key. You are welcome to extract and use this Device Display Configurator tool in your own projects.The Input System package also contains several extra samples that you can explore in the Package Manager. You can use these as a reference and extend or adapt them for your own projects. You can also find the official documentation there, including this Quick start guide.Input System 1.1 is currently in preview, and it brings lots of fixes and some improvements. You can now save and load rebinds as JSON (see the RebindSaveLoad.cs sample script) and Device layouts can now be precompiled, greatly reducing instantiation time and garbage collection (GC) heap cost for these devices.We hope that the sample project and the other learning materials will help you get started with using the Input System to bring your ideas to life. Please share what you want to learn next in the comment section below. Also, keep an eye on the Input System page for more tutorials and other resources.]]></description><link>https://unity.com/blog/technology/learn-the-input-system-with-updated-tutorials-and-our-sample-project-warriors</link><guid isPermaLink="true">https://unity.com/blog/technology/learn-the-input-system-with-updated-tutorials-and-our-sample-project-warriors</guid><pubDate>Thu, 26 Nov 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[In parameters in Burst]]></title><description><![CDATA[The Unity Burst Compiler transforms your C# code into highly optimized machine code. One question that we get often from our amazing forum users like @dreamingimlatios surrounds in parameters to functions within Burst code. Should developers use them and where? We’ve put together this post to try and explain them a bit more in detail.C# 7.2 introduced in parameter modifiers as a way to pass something by reference to a function where the called function is not allowed to modify the data.
In parameters are a really useful language concept because it enforces a contract between the developer and the compiler as to how data will be used and modified. The in parameter modifier allows arguments to be passed by reference where the called function is not allowed to modify the data. It pairs up with the out parameter modifier (where parameters must be modified by the function) and the ref parameter modifier (where parameter values may be modified).Let's look at the following simple job:The above code can be broken down into:Call the DoSomething method which takes two structs passed by value.It performs some operation on the data, then returns the result (the operation doesn’t really matter for the purposes of this demo).Note that we’ve placed [MethodImpl(MethodImplOptions.NoInlining)] on the DoSomething method. We do this for two reasons:It lets us pinpoint the specific method in the resulting assembly using the Burst Inspector.It lets us simulate what would happen if the DoSomething method was really a very large function that Burst would not have inlined anyway.Now if we pull up the Burst Inspector, we can begin to dive into what is actually produced by the compiler for the above code:Note the assembly we’ve highlighted in the red box - this is the number of bytes of stack required by the function. And now the Execute method itself:And again note the highlighted red rectangle region - this is doing a bunch of copies between some memory address in the register rax, and the stack in rsp. So why is it doing this you might ask? Welcome to the wonderful world of ABI - Application Binary Interface. Aeons and aeons ago when computers were bigger than most modern houses, some smart computer people realised that if two different people were going to write programs such that code from both of these people could be used together - they’d have to agree on the rules for doing that. When data is passed from a caller to a callee, using a function, the compiler has to agree where function parameters are located so that the caller knows where to put the data, and the callee knows where to retrieve the data from. Passing data from one function to another has a set of rules that the caller and callee have to both understand so that they can make sense of the right data in the right location. The rules in this case are called calling conventions, and there are lots of weird and wonderful varieties. Each operating system tends to have a different convention, some operating systems have multiple, but what is important is that both sides follow the same rules and not behave in a way you didn’t expect! Most calling conventions allow simple data (primitive types or small structs) to be passed by value and in registers - the most efficient way to pass data. But large structs, anything more than 16 bytes in size or so, will generally have to be passed indirectly. If we look again at the simple job we showed above, we’ve now modified it to show you what the compiler has had to do to the code to conform to the ABI:So the compiler has:Changed the arguments a and b to the ‘DoSomething’ function to be passed by reference instead.Added two new local variables InDataACopy and InDataBCopy in the Execute method.It has to take a copy of the data from InDataA and InDataB into these variables.Then call the DoSomething function passing these local variables by reference.Now if we look again at the Burst Inspector output:This is the assembly that the compiler generated copies map to. We’re copying a bunch of data. Now let’s instead look at the same example but using in parameters:Now let us look again at the stack allocation size of this new job:We can see that the stack size has shrunk to just 32 bytes from 192 previously. Next let's look at the call to the ‘DoSomething’ function:Here we can see that the loads and stores that we previously had to make a copy of ‘InDataA’ and ‘InDataB’ are now gone - because we’ve told the compiler that it doesn’t need them. Nice! Using in parameters here let us tell the compiler how to do a better job at generating code, and if you imagine the ‘DoSomething’ method was inside an inner loop that was really performance sensitive then we’ve just cut out a ton of instructions from that code.One slightly strange bit of C#’s in parameters is that you don’t have to explicitly mark the call site argument as having in, like you would with ref:What happens behind the scenes is that the compiler will insert a local variable, store 42 into it, and then pass that by in for you, like:So even though we’ve added in to the function, we’re still getting the copy that we were trying to avoid. One case where this comes up is with NativeArray - whose indexer returns the T by value and not by reference. We do this so as to avoid any dangling references to destroyed data in the NativeArray, and to ensure that no memory violations occur.Let’s add a variant of our job to explore this:In the new job we have:Changed it to be an IJobParallelFor.It now runs across arrays of data instead of a single element.The ‘DoSomething’ callsite does not have an explicit ‘in’ because the NativeArray indexer returns a value and not a reference.And let’s look at the assembly as shown in the Burst Inspector:The highlighted region shows that the loads and stores we were previously avoiding by using in parameters have returned, and we’re having to do them for every iteration of the loop now - doh! So how can we avoid this copy? By using a helper function as provided by UnsafeUtility:In the above example we’ve added a new helper method ‘GetElementAsRef’. This just takes a native array and an index, and uses the ‘UnsafeUtility.ArrayElementAsRef’ helper to return a reference to the element, rather than return by value. This code is unsafe because if you deleted the NativeArray, and thus removed the memory backing the allocation, referencing the element of the array would result in reading from either dead, or potentially reused, memory. As long as you’ve taken this consideration into account, we can now pass references into our native arrays explicitly by in to our ‘DoSomething’ method, and if we look in the Burst Inspector once again:We can see that the loads and stores to take a copy of the data are gone, and we’re back to efficient and performant code - nice!When the developers of C# announced in parameters they wrote a blog post talking about the performance characteristics of using them. One line I’ll quote from the post is: ‘It means that you should never pass a non-readonly struct as an in parameter.’The reason the advice is to never pass a non-readonly struct as an in parameter is because if you call an instance method on that struct, it can cause the compiler to have to generate a copy of the in parameter in case the instance method could have modified the state. Let's look at an example of this:So in the above example we’re passing a ‘SomeStruct’ as an in parameter to ‘SomeMethod’, and then calling an instance method on the struct. The C# compiler will notice this and generate a defensive copy of ‘s’ in ‘SomeMethod’:This is the IL generated by the compiler - and we can see that it will perform a ldobj and stloc.0 to take a copy of the in parameter.In nearly all cases, as long as the instance method does not modify the state of the struct, Burst can deduce this and remove the defensive copy:In the code above we can see that because the instance method did not modify the in parameter’s data, Burst has completely removed the copy. So although the general advice for C# code might be to only use in parameters with readonly structs, in Bursted HPC# as long as you do not store into the in parameter data you should be fine.In parameters are a really powerful and useful language construct that provide a contract between developers and the compiler - a contract that lets you get optimal performance. As we’ve explored in this blog post:If you have non-inlined functions that take large structs by value, making these ‘in’ parameters instead can lead to performance gains.You must be careful that at the callsite of the function that you have data that can be passed by ‘in’ without resulting in copies - explicitly using the ‘in’ modifier on the callsite will let the compiler tell you that this is the case.Using the Burst Inspector like we’ve shown here can give you tremendous insights into your code, please use it!If you haven’t started with Burst yet and would like to learn more about our work on the new Data-Oriented Technology Stack (DOTS), head over to our DOTS pages, where we will be adding more learning resources and links to talks from our teams as more becomes available.We always welcome your feedback - join the forum here to let us know how we can help you level up your Burst code in future.]]></description><link>https://unity.com/blog/engine-platform/in-parameters-in-burst</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/in-parameters-in-burst</guid><pubDate>Wed, 25 Nov 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Robotics simulation in Unity is as easy as 1, 2, 3]]></title><description><![CDATA[Robot development workflows rely on simulation for testing and training, and we want to show you how roboticists can use Unity for robotics simulation. In this first blog post of a new series, we describe a common robotics development workflow. Plus, we introduce a new set of tools that make robotics simulation in Unity faster, more effective, and easier than ever.Because it is costly and time-consuming to develop and test applications using a real robot, simulation is becoming an increasingly important part of robotic application development. Validating the application in simulation before deploying to the robot can shorten iteration time by revealing potential issues early. Simulating also makes it easier to test edge cases or scenarios that may be too dangerous to test in the real world.Key elements of effective robotics simulation include the robot’s physical attributes, the scene or environment where the robot operates, and the software that runs on the robot in the real world. Ensuring that these three elements in the simulation are as close as possible to the real world is vital for valid testing and training.One of the most common frameworks for robot software development is the Robot Operating System (ROS). It provides standard formats for robot descriptions, messages, and data types used by thousands of roboticists worldwide, for use cases as varied as industrial assembly, autonomous vehicles, and even entertainment. A vibrant user community contributes many open source packages for common functionalities that can bootstrap the development of new systems.Roboticists often architect a robot application as a modular set of ROS nodes that can be deployed both to real robots and to computers that interface with simulators. In a simulation, developers build a virtual world that mirrors the real robot’s target use case. By testing in this simulated ecosystem, users can iterate on designs quickly before testing in the real world and ultimately deploying to production.A common robotics development workflow, where testing in simulation happens before real-world testingThis blog post uses the example of a simple pick-and-place manipulation task to illustrate how users can leverage Unity for this simulation workflow.Following the above workflow, let’s say that our robot’s task is to pick up an object and place it in a given location. The six-axis Niryo One educational robot serves as the robot arm. The environment is minimal: an empty room, a table on which the robot sits, and a cube (i.e., the target object). To accomplish the motion-planning portion of the task, we use a popular set of motion-planning ROS packages collectively called MoveIt. When we are ready to start the task, we send a planning request from the simulator to MoveIt. The request contains the poses of all the robot’s joints, the cube’s pose, and the target position of the cube. MoveIt then computes a motion plan and sends this plan back to the simulator for execution.Now that we’ve set up the problem, let’s walk through how to use Unity in this simulation workflow.A robotics simulation consists of setting up a virtual environment — a basic room, as in this example, or something more complex, like a factory floor with conveyor belts, bins, tools, and parts — and adding to this environment a virtual representation of the robot to be trained or tested. The Unity Editor can be used to create endless permutations of virtual environments. But how can we bring our robots into these environments?When modeling a robot in simulation, we need to represent its visual meshes, collision meshes, and physical properties. The visual meshes are required to render the robot realistically. Collision meshes are required to calculate collisions between the robot’s “links,” the rigid members that connect joints, and other objects in the environment, as well as with itself. These meshes are typically less complex than visual meshes to allow faster collision-checking, which can be compute-intensive. Finally, the physical properties, like inertia, contact coefficients, and joint dynamics, are required for accurate physics simulation — that is, for computing how forces on the links result in changes to the robot state, e.g., pose, velocity, or acceleration.Lucky for us, when using the ROS development workflow, there is a standardized way of describing all these properties: Universal Robot Description Format (URDF). URDF files are XML files that allow us to specify these visual, collision, and physical properties in a human-readable markup language. URDF files can also include mesh files for specifying complex geometries. The example below shows an excerpt from the URDF file for the Niryo One robot.URDF of Niryo One robotTo make it easier for roboticists to import their robots into Unity, we’re releasing URDF Importer, an open-source Unity package for importing a robot into a Unity scene using its URDF file. This package takes advantage of our new support for “articulations” in Unity, made possible by improvements in PhysX 4.1. This update allows us to accurately model the physical characteristics of a robot to achieve more realistic kinematic simulations.When installed in the Unity Editor, this package allows the user to select a URDF file to import. It parses the XML file behind the scenes and stores the links and joints in the appropriate C# classes. It then creates a hierarchy of GameObjects, where each GameObject is an ArticulationBody component representing a particular link in the robot. It assigns properties from the URDF to the corresponding fields in ArticulationBody. When users add a robot to Unity, the URDF Importer automatically creates a rudimentary keyboard joint controller. Users can replace this controller with a custom controller using the ArticulationBody APIs.For example, here is the Niryo One Unity asset, created after importing the URDF file above.A virtual Niryo One robot in Unity, imported via URDF ImporterNow that the robot is in the Unity Editor, we should test our motion-planning algorithm, running in a set of ROS nodes. To support this, we need to set up a communication interface between Unity and ROS. Unity needs to pass messages to ROS that contain state information — namely, the poses of the robot, target object, and target location — along with a planning request to the mover service. In turn, ROS needs to return a trajectory message to Unity corresponding to the motion plan (i.e., the sequence of joint positions required to complete the pick-and-place task).Two new ROS–Unity Integration packages now make it easy to connect Unity and ROS. These packages allow ROS messages to be passed between ROS nodes and Unity with low latency; when tested on a single machine, a simple text-based message made the trip from Unity to a ROS subscriber in milliseconds and a 1036 x 1698 image in a few hundred milliseconds.Since communication in ROS uses a pub/sub model, the first requirement for ROS–Unity communication is classes in Unity corresponding to ROS message types. When users add the ROS-TCP-Connector Unity package to the Unity Editor, users can use the MessageGeneration plugin to generate C# classes, including serialization and deserialization functions, from ROS .msg and .srv files. The ROS-TCP-Connector package also includes scripts that the user can extend to publish messages from Unity to a ROS topic, subscribe in Unity to messages on a ROS topic, and create ROS service requests and responses. On the ROS side, a ROS package called ROS-TCP-Endpoint can create an endpoint to enable communication between ROS nodes and a Unity Scene using these ROS-TCP-Connector scripts.Let’s now take a look at how to use these ROS–Unity Integration packages for the task at hand. First, we use the ROS–Unity Integration packages to create a publisher in Unity to send the pose data to ROS over TCP. On the ROS side, we need to set up a ROS-TCP-Endpoint to subscribe to these pose messages.Next, we will create a “Publish” button in the Unity Scene along with an OnClick callback. This callback function makes a service request to the MoveIt motion planner. The service request includes the current pose of the robot, the pose of the target object, and the target location. When MoveIt receives the planning request, it attempts to compute a motion plan. If successful, the service returns the plan, i.e., a sequence of joint positions, and a Unity script executes the trajectory using the ArticulationBody APIs. Otherwise, it returns a failure message.The gif below shows a Unity simulation of the Niryo One arm successfully performing the pick-and-place task.Simulation of a pick-and-place task on a Niryo One robot in Unity using ROS and MoveIt for motion planningThis example is only the beginning. Developers can use this demo as a foundation on which to create more complex Unity Scenes, to add different robots, and to integrate other ROS packages. Stay tuned for future posts that cover integrating computer vision and machine-learning-oriented tasks into a robotics simulation framework.These tools lay the groundwork for a new generation of testing and training in simulation and make it easier than ever to use Unity for robotics simulation. Our team is hard at work enabling these next-generation use cases, including machine-learning training for robotics, sensor modeling, testing at scale, and more. Stay tuned for our next blog post in this series, which will show you how to train a vision-based machine-learning model to estimate the target object’s pose in the pick-and-place task.Get started with our robotics simulation tools for free. Check out our pick-and-place tutorial on GitHub.For more robotics projects, visit the Unity Robotics Hub on GitHub. To see how our team is making it easier to train computer vision systems using Unity, read our computer vision blog series.For more information on how Unity can be used to meet your robotics simulation needs, visit our official robotics page.If you’d like to contact our team directly with questions, feedback, or suggestions, email us at unity-robotics@unity3d.com.]]></description><link>https://unity.com/blog/engine-platform/robotics-simulation-is-easy-as-1-2-3</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/robotics-simulation-is-easy-as-1-2-3</guid><pubDate>Thu, 19 Nov 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 tips for scaling UA with ironSource's ROAS optimizer]]></title><description><![CDATA[that used ironSource’s ROAS optimizer to scale their UA. That’s because this tool automates and simplifies bid optimization for advertisers so they can save time, bid as accurately as possible, drive more installs, and maximize return on ad spend (ROAS) - all while getting full visualization into performance. The ROAS optimizer can benefit advertising campaigns for IAP and ad-based games alike, and there are a few tips and tricks that can help you scale and reach revenue goals more effectively.1. Select the right optimizer for your gameThere are three types of ROAS optimizers that can help you reach these goals: impression level revenue (ILR), in-app purchase (IAP), and combo (a mix of ILR and IAP).Each uses different types of revenue data, needs different durations for optimization, and has unique defining features. Games with a short LTV, lower bids, and high IPM include genres like hyper-casual and arcade, which are also the games that usually rely heavily on ads for revenue. The ILR optimizer shares these defining features. Meanwhile, the IAP optimizer shares its defining features - long LTV, high bids, and low IPM - with games that rely more on in-app purchases for revenue, like those in RPG and simulation genres.To know which is the right choice for you, start by considering your revenue breakdown and the optimizer’s prerequisites. The ILR optimizer is best if 90% or more of your app’s revenue comes from ads. Note, though, that this optimizer does require you to be on LevelPlay mediation.Choose the IAP optimizer if more than 90% of your ad revenue comes from in-app purchases. While the IAP optimizer doesn’t require you to be on LevelPlay mediation, it’s necessary to share post-install events (PIE).If your app’s revenue doesn’t meet the 90% threshold for either IAPs or ILR, go for the combo optimizer. Since the combo tool combines the features of the two other optimizers, it needs both PIEs and information from LevelPlay mediation to have all of the relevant data and optimize your campaign to the fullest extent.Neon Play shows the benefits of different types of optimizers with their game Idle Army - they switched from the IAP optimizer to Combo after two months to build upon their success. As a result of the switch and with ironSource’s guidance, their scale grew 350% and ARPU on D10 increased 300%. Mark Allen, Neon Play’s Director of Games, describes how ironSource helped them achieve this scale: “They asked us about our k-factors, the ROAS goals, and then with that they set up the optimizer on our behalf and we kicked it off. And to be honest it's been working really well since."2. Pay attention to the right metricsLooking at the right KPIs is important for measuring the success of the ROAS optimizer. As the name implies, ROAS is the most important metric for determining performance - it’s not CPI or retention like you might think, which are the traditional ways for advertisers to measure how effective their bids and ad creatives are. ROAS is the key metric for the optimizer because it closes the monetization loop - when profit increases, you can scale more revenue quickly and easily. However, you can also measure KPIs like scale and purchase rate, as these are often boosted by the tool as well. When choosing a ROAS goal, it’s necessary to consider a holistic set of data, including LTV, organic uplift, and ARPU curve. Then determine your margin, which ideally results in more profit at higher scale - increasing margins can lower CPI but also inhibit scale, while lowering margins can increase costs but lead to greater scale. It’s important to also factor in granular data, like geos and device type which can affect LTV. The team behind a popular simulation game initially focused on scale before using the ILR optimizer. When they decided that ROAS was a better metric for measuring revenue, they looked to it as their primary KPI and worked with the ironSource team to set up the ROAS optimizer. Using the tool, they exceeded ROAS goals, doubled scale - reaching as high as 3.5x more installs than before they began using the ILR optimizer - and the team was able to buy the best-quality traffic compared to any other SDK networks they were advertising with.3. Set up and analyze the right dataBefore launching the ROAS optimizer, it’s important to have enough data to let the tool do its job. The optimizer performs best when it has historical data to analyze so it can optimize bids more quickly and react faster when you add new sources or make campaign adjustments.After turning on the ROAS optimizer, looking at only matured and aggregated data is a must for measuring performance. Giving data time to mature avoids incorrect conclusions about the optimizer tool’s performance and ROAS goals - it could be 3-7 days until data has matured and results show, depending on the type of optimizer. For example, if you set a ROAS goal for D7, it doesn’t make sense to look at the data of a user who downloaded the game 5 days ago. That user can still impact total ROAS within the next 2 days of using the app. Therefore, you should look only at the data of users who have engaged with the app long enough - at least equal to or more than the optimization age.And regarding aggregated data, it’s not helpful to look at a day-to-day view of performance because ARPU will vary greatly even in the course of one day. Instead, looking on a week-by-week basis gives a more stable, accurate view of performance and the effect of the optimizer.Maintaining ROAS optimizer performanceOnce you’ve set up your optimizer - whether it’s the impression level revenue, IAP, or Combo - you can keep it performing at its best by adjusting ROAS goals and re-optimizing. Holidays, changes in ARPU trends or whale behavior, and game fatigue can all impact campaign performance and should be accounted for when setting new ROAS goals. We suggest updating your KPIs once every two weeks so you have at least 7 days of matured data to use as a benchmark.Learn more about the ironSource ROAS optimizer here or get in touch with us to activate it.
]]></description><link>https://unity.com/blog/3-tips-for-scaling-ua-with-ironsources-roas-optimizer</link><guid isPermaLink="true">https://unity.com/blog/3-tips-for-scaling-ua-with-ironsources-roas-optimizer</guid><pubDate>Thu, 12 Nov 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ringing the NYSE bell together: How Unity put the “U” in UPO]]></title><description><![CDATA[What happens when real-time 3D technology meets one of the oldest time-honored traditions in public stock exchanges? Learn how Unity transformed an initial public offering (IPO) – typically attended only by a company’s executives – into an employee-centered virtual event celebrated by thousands.When Unity decided to take action to become a public company, it was on one condition: it would be vastly different from a traditional IPO. Basing this approach on two of Unity’s core values – Go Bold and In It Together – we partnered with the New York Stock Exchange (NYSE) to build a completely different opening ceremony.The NYSE is a fixture in the world of public financial markets and, much like many other organizations, had to take a different approach to a historically traditional process and ceremony. Our 2020 IPO was an ideal opportunity to bridge the old with the new. Traditional IPOs typically follow a number of timed events such as the unveiling of the company’s banner on the NYSE facade, the bell ringing promptly at 9:30 am from the balcony, the physical signing of the book (a 150-year-old tradition), and a variety of meetings and interviews. The rest is up to the company to make its own.What was clear from the beginning of our IPO process was that all employees would have to be involved on the morning of the event. All 3000-plus of them. So by engineering the event according to our company values, we could create a “Unity” Public Offering or UPO. But what kind of real-time, web-based system would we have to build to make it happen?To start, we brought in teams from two recent acquisitions, Furioos and Finger Food Advanced Technology, to brainstorm. And then we brainstormed some more, filling up virtual whiteboard after virtual whiteboard. Our big challenges included: how could we enable thousands of people to ring a virtual bell and sign a virtual wall at the same time? Oh, and to further challenge ourselves – we needed to integrate NYSE live coverage with employee videos (filmed at home and on different devices) and curated Unity creator content as part of the event. Another Unity core value is Best Ideas Win and we put it to the test.With sleeves rolled up, we divided the development across multiple teams, both within Unity and at the NYSE. Since accessibility was critical, we set up a unique event website for everyone to easily reach and participate in the experience when the time came.Next, we tapped into the power of Furioos – a cloud-based streaming technology – to bring the same experience to all employees regardless if they were on a tablet, laptop or desktop, including older devices (Furioos runs 3D apps in the cloud and treats them as if they are on your local device).One of the big processing issues we had to resolve was that we needed to pass a lot of information via the web page (such as user authentication, environment data, and device capabilities) to the Unity app handling the content. Fortunately, the Furioos SDK simplified this so we had more time to focus on perfecting the user experience.To ensure full employee inclusion and participation, several weeks before the UPO we encouraged all Unity staff to contribute a short testimonial video about what Unity means to them. We received hundreds from around the world, giving voice to a large cross-section of employees, some of them sharing the Unity philosophy – “We believe the world is a better place with more creators in it” – in their native languages. We planned to integrate their contributions into a 3D video wall during the countdown to the bell-ringing ceremony.As part of the event, we also needed to integrate a variety of real-time broadcast streams such as interviews with Unity staff, panel discussions, and a dynamic feed of many Made with Unity projects to show how Unity creators are making a difference in multiple industries and initiatives. The goal was to curate an hour-long production of stories, interviews, and key moments to give the look and feel of an in-person event, all from employee homes around the world.With all of this rich content to be handled, it made perfect sense to build and render as much of it as possible using the Unity platform. For example, we used Unity to highlight video moments such as the raising of the NYSE banner and the transition to the virtual bell-ringing on the balcony. To add even more polish to these segments, we tapped Unity’s particle effects capabilities to represent the creators who help make Unity possible.Working closely with the NYSE, Vimeo, and our Furioos team, we enabled the virtual bell at precisely 9:29:50 am ET on September 18 and our CEO, John Riccitiello, invited all employees, shareholders, and guests to ring the bell together at the same moment.It was also then we encouraged participants to mark or sign their name on the virtual wall. This was an overlay we displayed just below the broadcast and included details to help set the context, thus combining the NYSE’s longstanding signature tradition with an innovation that allowed everyone at Unity to make their mark.In typical Unity fashion, we didn’t settle for what others had done before us. With ingenuity and creativity, the UPO team redefined what it means to IPO, setting a new standard for other companies to follow. At its core, the experience was meant to focus on what’s most important: the employees who are the lifeblood of any organization.Unity’s UPO was the first all-digital IPO hosted on the beta version of our new employee-centered, interactive platform, and it created two firsts for the NYSE: the first entirely remote bell-ringing to open the market, and the first time an entire company was able to participate in the event. “In It Together” certainly rang true here!Learn more about Furioos]]></description><link>https://unity.com/blog/news/ringing-the-nyse-bell-together-how-unity-put-the-u-in-upo</link><guid isPermaLink="true">https://unity.com/blog/news/ringing-the-nyse-bell-together-how-unity-put-the-u-in-upo</guid><pubDate>Thu, 05 Nov 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[What kinds of games work best with an offerwall?]]></title><description><![CDATA[There’s a lot to like about offerwalls: an eCPM as high as $1,500, 5x-7x higher retention, and ARPDAU up to $0.45 are just a few reasons why it’s an appealing ad monetization strategy. And, the offerwall can benefit your app’s entire monetization ecosystem, from boosting IAPs to increasing ad engagement rates There are certain instances where the offerwall is more effective, so let’s see what kinds of games the offerwall performs best with to help determine if it’s the right ad unit for you.Offerwall benchmarks in the US:Does your app have a deep in-app purchase economy?An offerwall gives users rewards for completing tasks, and in order for this to work, the reward needs to be appealing. Games with a complex economy that includes hard currencies - currencies that are difficult to accumulate and are often paid for using real money - do well with an offerwall because their rewards are highly valuable for users. The types of games that usually have these deep in-app purchase economies tend to be those with long-term retention and high engagement, like RPG, simulation, and strategy.With a deep app economy that lets you offer hard currencies as rewards, offerwalls can encourage users to make in-app purchases . In fact, offerwall users are 10-14x more likely to make an in-app purchase because as they earn rewards, they get to enjoy premium resources that often improve gameplay or lead to advantages that they want to maintain as they keep playing.In a webinar with game developers Kongregate about their experience using the ironSource offerwall, they discussed how integrating the offerwall across a dozen different titles led to an increase in IAPs from both paying and non-paying users. In 2019, the offerwall made up 19% of their total ad revenue, lifted IAP revenue from non-paying users by 10x-14x, and significantly increased the ARPU of paying users.Can your product team implement the offerwall creatively?Engagement rates tend to be high with offerwalls, so developers are able to achieve a high eCPM and boost revenue when it’s optimized. Take the fact that the offerwall eCPM for Android in the US can be more than $1,500 and ARPDAU can be higher than rewarded video:Games that can get creative with the placement, timing, user segmentation, and promotion of offerwalls can achieve these boosts to eCPM and ARPDAU. For example, product teams on RPG games can adjust the traffic driver icon for special promotions, otherwise known as currency sales, and they can segment users by their progressions in the game and offer higher rewards for experienced players. These creative approaches help optimize the offerwall and maximize revenue without affecting the user experience.DomiNations is a MMO combat strategy game that shows how a creative strategy using offerwall promotions can drive up ARPDAU and eCPM while giving their other monetization strategies a boost. They previously ran 2x credit promotions on their offerwall and then increased the payout to 4x during the US holidays. These offerwall promotions increased user engagement and subsequently led to a 50% increase in rewarded video revenue, 3x-5x higher ARPDAU, and a 50%-200% boost to eCPM.Do users tend to stick around for a long time?There’s a good chance that users who engage with an offerwall once will continue to use it as they earn rewards that encourage them to keep playing. The longer they play, the higher the retention rates, and offerwall user retention is 5x-7x higher than non-offerwall users at D7, D14, and D30:If your game has long-term retention already, an offerwall can give you an added boost that enhances your overall monetization strategy. As users play your game for longer, you have more monetization opportunities, like showing rewarded videos.Square Enix, the developers behind the simulation game WAR OF THE VISIONS FINAL FANTASY BRAVE EXVIUS experienced the benefits of the offerwall for retention and engagement, which led to higher incremental ad revenue and eCPM. They already implemented rewarded video and had a deep in-app purchase economy - then they implemented the ironSource offerwall. The offerwall helped preserve IAP rates while boosting ad revenues 2x, increasing ARPDAU 5x, and achieving an eCPM 2x the industry benchmark as users played the game longer and engaged with more rewarded videos.Can you check all of these boxes?If your game and team fulfill the criteria we just laid out, an offerwall could be a great fit with your existing monetization strategy. Driving incremental ad revenue and boosting in-app purchase rates - all while keeping users playing your game - are major benefits this ad unit offers to the right kinds of games. So take a second look at your app economy, consider your team’s creative strategies for implementation, and check your retention rates - is an offerwall right for your game?For further reading about the offerwall, check out our offerwall eBook.Learn more by checking out our other blogs, including ‘Mobile Gaming Industry Trends in 2021’, ‘What Is K Factor?’, and ‘Best Practices for Idle Game Design & Monetization’]]></description><link>https://unity.com/blog/what-kinds-of-games-work-best-with-an-offerwall</link><guid isPermaLink="true">https://unity.com/blog/what-kinds-of-games-work-best-with-an-offerwall</guid><pubDate>Wed, 21 Oct 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Sounds Hannam used Unity to turn a complex cultural space into an interactive 3D environment]]></title><description><![CDATA[The Sounds Hannam Project is an architectural visualization project that digitally created Sounds Hannam, a complex cultural space in Hannam-dong, Yongsan-gu, Seoul, using High Definition Render Pipeline (HDRP) in Unity. This project offers interactive content that lets you virtually explore the Sounds Hannam cultural space by navigating with a mouse and a keyboard. You can click on a store in the building that interests you to see the shortest path to it from your current location. A pop-up window will also display some details about the store you just clicked.This project utilized Unity’s HDRP, which allows for creating high-quality visuals, and Shader Graph, which lets you build shaders visually by using nodes instead of writing code. HDRP, Shader Graph, and other cutting-edge technology from Unity made it possible to present details such as internal lighting and natural sunlight overlapping in certain spots, external foliage swaying in the wind, and the glimmer of leaves reflecting light.Unity ArtEngine, the AI-powered tool that enables you to create ultra-realistic worlds , helped speed up the realistic visualization of the Sounds Hannam design by processing the texture of the buildings’ outer walls.Using ArtEngine’s Seam Removal function on real photos helped remove possible seams when processing textures, and the Contents-Aware Fill function helped fill in unnecessary, damaged, or missing parts of the scans. There are many other helpful features for creating textures with photographed images, such as doubly enhancing a JPEG image’s pixel data that was lost during file compression.PBR Material Generation was used on the external wall to calculate the albedo, normal, roughness, glossiness, height, etc. from standard photographs to create PBR material that dynamically reacted to the lighting.The Sounds Hannam Project Beautification can be largely divided into the buildings’ external appearance, the stores inside, and the interactive elements. The outside appearance was created by first modeling the overall construction. Then, landscaping for filling empty spaces and props such as tables, chairs, and umbrellas were created, while also including surrounding buildings as opaque virtual structures.The stores inside the buildings and the interior design were realized in a more limited way as the Sounds Hannam Revit data didn’t include the indoor information. The interior design of the external stores in the basement, 1st and 2nd floors, and the space above the 2nd floor were presented as scenes seen through glass windows.The way the view changes based on the lighting is one of the highlights of the Sounds Hannam Project. You can see how the buildings’ exterior changes under various lighting conditions as you switch the project’s mode between day and night.When we first received the Revit data, we thought it would be fun to include all the various details of the buildings as interactive elements. Most of it was dummy data because we couldn’t use the Revit data. We still included it so each store would display relevant BIM information.As the project allows for various types of interactions, we included a navigation feature that shows the shortest path possible to a selected store, a pop-up feature that shows details about the stores inside Sounds Hannam, and a color-changing feature for the props.The navigation feature was inspired by my impression that the stores were hiding here and there during my first visit to the physical building. Like GPS in a car, this feature helps you take a virtual tour of the stores inside. It was developed to make it easy to find stores when adding interactive elements to the project.One of the previous works by the Korean Office of Unity Technologies was the Seoul Office Project. The project received a lot of attention for realistically portraying the actual Seoul Office. It had many things in common with Sounds Hannam as well as some differences.The overall workflow was similar since both projects were architectural visualization projects and walkthroughs (intended as an examination of the plan to detect the design’s errors and correct them). We hoped to make the UI and interactive parts different from the Sounds Hannam Project. While the Seoul Office Project lets you experience going from one room to another in the building, Sounds Hannam took advantage of having access to the full models of the buildings. This allowed us to create a vivid experience, as if you’re looking at real buildings, by accurately depicting the exact location of stores within them.Seoul Office and Sounds Hannam were very different in terms of covered space and the original data received. The raw data of the Seoul Office had been provided by an interior design company, so it included the detailed SketchUp model of the interior design.On the other hand, the raw data of Sounds Hannam had been provided by the architecture firm, including various information for a total of five buildings in Revit, but the models themselves were relatively simple.Unity Engine’s strength lies in the fact that it allows for high-quality 3D visualization with simple settings and controls. It is highly expected that this advantage will help with promoting built structures in the architectural industry, increase the accuracy of designs, and enable you to test and develop experimental concepts.Creating visual materials for walkthroughs and presentations lets you interact with what the actual structure would look like from various angles. This makes it possible for timely identification and correction of flaws in the design. Moreover, the virtual tour lets you quickly adapt to the client’s needs and demands in the design and even test those changes, which can help encourage the client’s decision making.“This project done with Unity allowed us to present Sounds Hannam to our customers online and create various interactive content. I believe this will open new doors to introduce the beautiful and sensational spots of Sounds Hannam in an innovative and effective way.“ - Kim Jeong-Ho, CEO of Sounds Hannam]]></description><link>https://unity.com/blog/industry/how-sounds-hannam-turned-a-complex-space-into-an-interactive-3d-environment</link><guid isPermaLink="true">https://unity.com/blog/industry/how-sounds-hannam-turned-a-complex-space-into-an-interactive-3d-environment</guid><pubDate>Fri, 16 Oct 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tips for working more effectively with the Asset Database]]></title><description><![CDATA[The Asset Import Pipeline v2 is the new default asset pipeline in Unity, replacing the Asset Import Pipeline v1 with a rewritten asset database to enable fast platform switching. It lays the foundations for scalable asset imports with robust dependency tracking. Read on to explore how the Asset Database works and discover some time-saving tips.Since the release of Unity 2019.3, the new Asset Import Pipeline has been the default pipeline for new projects. Combined with many other improvements, this lays the foundation for a more reliable, performant and scalable Asset Import Pipeline. This rewrite changed the way the Library folder works in order to support new workflows.Let’s have a look under the hood at a number of situations you may encounter and how to manage them efficiently. You’ll learn how to spot and address some of the bottlenecks that cost you time and project performance.The tips you’ll find here apply to Unity 2019.3 and later versions. Remember, if your project is in production beyond prototyping, for maximum stability we recommend you use the latest Long-Term Support (LTS) version of Unity, Unity 2019 LTS.First, let’s talk about some of the things that happen when you’re creating a new project or opening a project where your asset Library isn’t already present.If you look at the Editor.log file, you’ll notice a lot of lines that look like:Start Importing …Done Importing …This is the way the Asset Import Pipeline leaves a trail of its operations so that they can be inspected at a later point in time.You can use this information to figure out a certain type of bottleneck, namely Asset Import Times.When you look at the output from each line, you can extract the following pieces data:Asset pathImport durationFile extensionParsing that data, we can then categorize by extension. Once you know which importer has imported which asset, you can aggregate that data into a pie chart showing you which types of asset take the longest to import. For example:This data can give you a clearer picture of where the bottlenecks for your project are.In this particular example, Textures, Models and Prefabs are the biggest time sinks, providing a starting point for investigating which assets could be optimized.Download this SimpleEditorLogParser sample project and use it as a base for your own parser.Being able to see which asset category takes the longest to import can help you plan where to direct your optimization efforts. If Texture Importing is the category that takes the longest, then examine the textures that take the longest to import and consider removing textures that aren’t supposed to end up in the final build.This will not only speed up your import times, but also improve the performance of your Continuous Integration Pipeline if you’re doing clean nightly builds or something similar.Being able to open your projects quickly is important. The minutes it takes to restart the Editor or open various projects throughout the day can add up to valuable time lost.As a project becomes more complex and uses more features, it takes longer to open. This can be due to a large number of factors, and prior to Unity 2019.3, there was no way to get the profiler up and running while the Editor launched.Among the several command line arguments you can supply upon opening Unity, the -profiler-enable command line argument allows you to profile the Editor during launch.This command tells the Editor to begin recording profiling data for the first frame of the application, which is all the code that is executed until the Editor is visible. Using this argument can help you see what happens during startup and what takes time. You can see whether it’s a system in Unity, an Asset Store package, or code specific to your project. This can help you figure out what to do next.In this capture, you can see that opening this particular project takes ~50 s.At first glance, it appears to take 43 s to load the AssetDatabase. Upon further inspection, it’s clear that 14 s are spent on calls to OnPostProcessAllAssets. Further down, the code that executes during RegisterScriptsAndTryLoadingExistingUserAssemblies adds up to 10 s, and 5.7s of that is loading the Domain, which is further slowed down by calls to Scripts that have the [InitializeOnLoad] attribute.This startup data can help you track down performance bottlenecks, and see whether the code is in your project or in Unity itself.The Library folder can now contain multiple import results for the same asset, so projects that use the new Asset Import Pipeline no longer have a “simple” GUID (global unique identifier) to folder mapping in the Library folder.Files in the Library folder are based on the hash of their contents plus a number of static and dynamic dependencies. This allows Unity to have features like fast platform switching, asset de-duplication, and skipping an import if the hash of an asset is already present in the Library folder.So this means that it is no longer trivial to find import results in the Library folder. Here is an example that shows you where you can find the import result of “Assets/Prefabs/MyPrefab.prefab”:Here are two gists for different versions of Unity:Version for Unity 2020.2 betaVersion for Unity 2020.1 and earlierThe samples are different because as the implementation of the Asset Import Pipeline has matured, a number of APIs have been moved from the Experimental namespace to the AssetDatabase’s own namespace.Often, you may want to find a particular asset in your project and do something with the result. You may even want to do this multiple times when you’re running Editor code.Calling AssetDatabase.FindAssets will traverse the entire project to match the query you’ve given to it. As projects get bigger, this can become a performance bottleneck as the time taken to search through different size projects grows linearly.As expected, the more assets a project has, the greater the time to search through them. Fortunately, the time to find each asset remains somewhat steady over time.As you can see, if your project has hundreds of thousands of assets, searching for assets can lead to a noticeable development slowdown. At 200,000 assets, there is already a 200 ms delay for a simple search query.Using the brute-force approach produces this common usage pattern:
Essentially, this code is traversing the entire project to find one texture and then do something with it.The AssetDatabase provides a way to lookup an asset’s path by GUID. You can think of it as looking up something in a Dictionary by key instead of by iterating an array for a match.The benefit of using this approach over brute force is that the AssetDatabase doesn’t need to look through the entire project to find the asset. It can just use the GUID as a database index and follow that path to load the asset into memory.You can find the GUID in an asset’s corresponding .meta file, for example:fileFormatVersion: 2
guid: 9fc0d4010bbf28b4594072e72b8655ab
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:In this case, the GUID for this asset is 9fc0d4010bbf28b4594072e72b8655ab.Given that information, you can do the following:var path = AssetDatabase.GUIDToAssetPath("9fc0d4010bbf28b4594072e72b8655ab");
var asset = AssetDatabase.LoadAssetAtPath<Texture>(path);Now your asset is ready to be used.As a side note, if you’re interested in speeding up searching within the Editor, you should also be aware of the following tools:Quick Search Package which allows you to search over multiple areas of Unity.TypeCache to search for Scripts derived from a type you know.Normally, the GUID of an asset is constant.However, in certain situations, an asset and its .meta file are duplicated, causing a conflict which the AssetDatabase resolves in the following ways:If you duplicate a folder inside a project to another place in the same project  Importing an Asset Store package multiple times or copying a folder from another project multiple times into your project  When AssetDatabase.Refresh executes, a lot of systems need to work together to present your project in a valid state. In my Unite Copenhagen talk, I detail the various steps of what happens when Refresh is called.Particular callbacks executed during a Refresh interact with code. This can affect how long it takes for the Refresh operation to complete.The more code that gets executed during a Domain Reload, the slower your Editor experience will be. To stay in the flow when iterating on code, think carefully about when code should be executed and whether it can be deferred to later in the project.During a Domain Reload, your code will be executed if it contains any of the following methods:1. Awake2. OnEnable3. OnValidateYour code in those methods should ideally be very fast or should be deferred to run at another time (not during a Refresh, for example). This is because these callbacks are supposed to help you restore certain states, but since there are no restrictions on what can be done within these calls, then any code that doesn’t scale (i.e., anything that traverses the entire project) slows down your iteration velocity for Scripts while the Editor is open.Another approach is to use EditorApplication.delayCall, where your code gets executed on the next Editor tick after the AssetDatabase has had a chance to detect and import all changes on disk.Follow this thread on the Unity Forums to stay up to date with news about improvements in this area.I hope you’ve found these tips useful. Let us know what other things you’d like to know about the Asset Import Pipeline or what your pain points are. We are actively working on improving the Asset Import Pipeline, and we want to make your iteration as close to instant as possible, so you can be more productive when working with the Editor and changing assets and/or scripts.]]></description><link>https://unity.com/blog/engine-platform/tips-for-working-more-effectively-with-the-asset-database</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/tips-for-working-more-effectively-with-the-asset-database</guid><pubDate>Tue, 06 Oct 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Fixing Time.deltaTime in Unity 2020.2 for smoother gameplay: What did it take?]]></title><description><![CDATA[Unity 2020.2 beta introduces a fix to an issue that afflicts many development platforms: inconsistent Time.deltaTime values, which lead to jerky, stuttering movements. Read this blog post to understand what was going on and how the upcoming version of Unity helps you create slightly smoother gameplay.Since the dawn of gaming, achieving framerate-independent movement in video games meant taking frame delta time into account:This achieves the desired effect of an object moving at constant average velocity, regardless of the frame rate the game is running at. It should, in theory, also move the object at a steady pace if your frame rate is rock solid. In practice, the picture is quite different. If you looked at actual reported Time.deltaTime values, you might have seen this:This is an issue that affects many game engines, including Unity – and we’re thankful to our users for bringing it to our attention. Happily, Unity 2020.2 beta begins to address it.So why does this happen? Why, when the frame rate is locked to constant 144 fps, is Time.deltaTime not equal to 1⁄144 seconds (~6.94 ms) every time? In this blog post, I’ll take you on the journey of investigating and ultimately fixing this phenomenon.In layman’s terms, delta time is the amount of time your last frame took to complete. It sounds simple, but it’s not as intuitive as you might think. In most game development books you’ll find this canonical definition of a game loop:With a game loop like this, it’s easy to calculate delta time:While this model is simple and easy to understand, it’s highly inadequate for modern game engines. To achieve high performance, engines nowadays use a technique called “pipelining,” which allows an engine to work on more than one frame at any given time.Compare this:To this:In both of these cases, individual parts of the game loop take the same amount of time, but the second case executes them in parallel, which allows it to push out more than twice as many frames in the same amount of time. Pipelining the engine changes the frame time from being equal to the sum of all pipeline stages to being equal to the longest one.However, even that is a simplification of what actually happens every frame in the engine:Each pipeline stage takes a different amount of time every frame. Perhaps this frame has more objects on the screen than the last, which would make rendering take longer. Or perhaps the player rolled their face on the keyboard, which made input processing take longer.Since different pipeline stages take different amounts of time, we need to artificially halt the faster ones so they don’t get ahead too much. Most commonly, this is implemented by waiting until some previous frame is flipped to the front buffer (also known as the screen buffer). If VSync is enabled, this additionally synchronizes to the start of the display’s VBLANK period. I’ll touch more on this later.With that knowledge in mind, let’s take a look at a typical frame timeline in Unity 2020.1. Since platform selection and various settings significantly affect it, this article will assume a Windows Standalone player with multithreaded rendering enabled, graphics jobs disabled, vsync enabled and QualitySettings.maxQueuedFrames set to 2 running on a 144 Hz monitor without dropping any frames. Click on the image to see it in full size:Unity’s frame pipeline wasn’t implemented from scratch. Instead, it evolved over the last decade to become what it is today. If you go back to past versions of Unity, you will find that it changes every few releases.You may immediately notice a couple things about it:Once all the work is submitted to the GPU, Unity doesn’t wait for that frame to be flipped to the screen: instead, it waits for the previous one. This is controlled by the QualitySettings.maxQueuedFrames API. This setting describes how far the frame that is currently being displayed can be behind the frame that’s currently rendering. The minimum possible value is 1, since the best you can do is render framen+1 when framen is being displayed on the screen. Since it is set to 2 in this case (which is the default), Unity makes sure that framen gets displayed on the screen before it starts rendering framen+2 (for instance, before Unity starts rendering frame5, it waits for frame3 to appear on the screen).Frame5 takes longer to render on the GPU than a single refresh interval of the monitor (7.22 ms vs 6.94 ms); however, none of the frames are dropped. This happens because QualitySettings.maxQueuedFrames with the value of 2 delays when the actual frame appears on the screen, which produces a buffer in the time that safeguards against dropping frames, as long as the “spike” doesn’t become the norm. If it were set to 1, Unity would have surely dropped the frame, as it would no longer overlap the work.Even though screen refresh happens every 6.94 ms, Unity’s time sampling presents a different image:The delta time average in this case ((7.27 + 6.64 + 7.03)/3 = 6.98 ms) is very close to the actual monitor refresh rate (6.94 ms), and if you were to measure this for a longer period of time, it would eventually average out to exactly 6.94 ms. Unfortunately, if you use this delta time as it is to calculate visible object movement, you will introduce a very subtle jitter. To illustrate this, I created a simple Unity project. It contains three green squares moving across the world space:The top square moves the same distance every frame – this square represents perfect movement and it is our point of reference. It is surrounded by two red vertical lines that make it easier to see if the other cubes are aligned with it.The middle square moves the distance the top cube moves over the course of a second multiplied by Time.deltaTime.The bottom square uses Rigidbody to move (with interpolation enabled), and its velocity is set to the distance that the top square moves over the course of a second.The camera is attached to the top cube, so it appears perfectly still on the screen. If Time.deltaTime is accurate, the middle and bottom cubes would appear to be still as well. The cubes move twice the width of the display every second: the higher the velocity, the more visible the jitter becomes. To illustrate movement, I placed purple and pink non-moving cubes in fixed positions in the background so that you can tell how fast the cubes are actually moving.In Unity 2020.1, the middle and the bottom cubes don’t quite match the top cube movement – they jitter slightly. Below is a video captured with a slow-motion camera (slowed down 20x):So where do these delta time inconsistencies come from? The display shows each frame for a fixed amount of time, changing the picture every 6.94 ms. This is the real delta time because that’s how much time it takes for a frame to appear on the screen and that’s the amount of time the player of your game will observe each frame for.Each 6.94 ms interval consists of two parts: processing and sleeping. The example frame timeline shows that the delta time is calculated on the main thread, so it will be our main focus. The processing part of the main thread consists of pumping OS messages, processing input, calling Update and issuing rendering commands. “Wait for render thread” is the sleeping part. The sum of these two intervals is equal to the real frame time:Both of these timings fluctuate for various reasons every frame, but their sum remains constant. If the processing time increases, the waiting time will decrease and vice versa, so they always equal exactly 6.94 ms. In fact, the sum of all the parts leading up to the wait always equals 6.94 ms:However, Unity queries time at the beginning of Update. Because of that, any variation in time it takes to issue rendering commands, pump OS messages or process input events will throw off the result.A simplified Unity main thread loop can be defined like this:The solution to this problem seems to be straightforward: just move the time sampling to after the wait, so the game loop becomes this:However, this change doesn’t work correctly: rendering has different time readings than Update(), which has adverse effects on all sorts of things. One option is to save the sampled time at this point and update engine time only at the beginning of the next frame. However, that would mean the engine would be using time from before rendering the latest frame.Since moving SampleTime() to after the Update() is not effective, perhaps moving the wait to the beginning of the frame will be more successful:Unfortunately, that causes another issue: now the render thread must finish rendering almost as soon as requested, which means that the rendering thread will benefit only minimally from doing work in parallel.Let’s look back at the frame timeline:Unity enforces pipeline synchronization by waiting for the render thread each frame. This is needed so that the main thread doesn’t run too far ahead of what is being displayed on the screen. Render thread is considered to be “done working” when it finishes rendering and waits for a frame to appear on the screen. In other words, it waits for the back buffer to be flipped and become the front buffer. However, the render thread doesn’t actually care when the previous frame was displayed on the screen – only the main thread is concerned about it because it needs to throttle itself. So instead of having the render thread wait for the frame to appear on the screen, this wait can be moved to the main thread. Let's call it WaitForLastPresentation(). The main thread loop becomes:Time is now sampled just after the wait portion of the loop, so the timing will be aligned with the monitor’s refresh rate. Time is also sampled at the beginning of the frame, so Update() and Render() see the same timings.It is very important to note that WaitForLastPresention() does not wait for the framen - 1 to appear on the screen. If that was the case, no pipelining would be done at all. Instead, it waits for framen - QualitySettings.maxQueuedFrames to appear on the screen, which allows the main thread to continue without waiting for the last frame to complete (unless maxQueuedFrames is set to 1, in which case every frame must be completed before a new one starts).After implementing this solution, delta time became much more stable than it was before, but some jitter and occasional variance still occurred. We depend on the operating system waking up the engine from sleep on time. This can take multiple microseconds and therefore introduce jitter to the delta time, especially on desktop platforms where multiple programs are running at the same time.To improve the timing, you can use the exact timestamp of a frame being presented to the screen (or an off-screen buffer), which most graphics APIs/platforms allow you to extract. For instance, Direct3D 11 and 12 have IDXGISwapChain::GetFrameStatistics, while macOS provides CVDisplayLink. There are a few downsides with this approach, though:You need to write separate extraction code for every supported graphics API, which means that time measurement code is now platform-specific and each platform has its own separate implementation. Since each platform behaves differently, a change like this runs the risk of catastrophic consequences.With some graphics APIs, to obtain this timestamp, VSync must be enabled. This means if VSync is disabled, the time must still be calculated manually.However, I believe this approach is worth the risk and effort. The result obtained using this method is very reliable and produces the timings that directly correspond to what is seen on the display.Since we no longer have to sample the time ourselves, WaitForLastPresention() and SampleTime() steps are combined into a new step:With that, the problem of jittery movement is solved.Input latency is a tricky subject. It’s not very easy to measure accurately, and it can be introduced by various different factors: input hardware, operating system, drivers, game engine, game logic, and the display. Here I focus on the game engine factor of the input latency since Unity can’t affect the other factors.Engine input latency is the time between the input OS message becoming available and the image getting dispatched to the display. Given the main thread loop, you can visualize input latency as part of code (assuming QualitySettings.maxQueuedFrames is set to 2):Phew, that’s it! Quite a lot of things happen between input being available as an OS message and its results being visible on the screen. If Unity is not dropping frames and the time spent by the game loop is mostly waiting compared to processing, the worst-case scenario of input latency from the engine for 144hz refresh rate is 4 * 6.94 = 27.76 ms, because we’re waiting for previous frames to appear on screen four times (that means four refresh rate intervals).You can improve latency by pumping OS events and updating input after waiting for the previous frame to be displayed:This eliminates one wait from the equation, and now the worst-case input latency is 3 * 6.94 = 20.82 ms.It is possible to reduce input latency even further by reducing QualitySettings.maxQueuedFrames to 1 on platforms that support it. Then, the chain of input processing looks like this:Now, the worst-case input latency is 2 * 6.94 = 13.88 ms. This is as low as we can possibly go when using VSync.Warning: Setting QualitySettings.maxQueuedFrames to 1 will essentially disable pipelining in the engine, which will make it much harder to hit your target frame rate. Keep in mind that if you do end up running at a lower frame rate, your input latency will likely be worse than if you kept QualitySettings.maxQueuedFrames at 2. For instance, if it causes you to drop to 72 frames per second, your input latency will be 2 * 1⁄72 = 27.8 ms, which is worse than the previous latency of 20.82 ms. If you want to make use of this setting, we suggest you add it as an option to your game settings menu so gamers with fast hardware can reduce QualitySettings.maxQueuedFrames, while gamers with slower hardware can keep the default setting.Disabling VSync can also help reduce input latency in certain situations. Recall that input latency is the amount of time that passes between an input becoming available from the OS and the frame that processed the input being displayed on the screen or, as a mathematical equation:latency = tdisplay - tinputGiven this equation there are two ways to reduce input latency: either make tdisplay lower (get the image to the display sooner) or make tinput higher (query input events later).Sending image data from the GPU to display is extremely data-intensive. Just do the math: to send a 2560x1440 non-HDR image to the display 144 times per second requires transmitting 12.7 gigabits every second (24 bits per pixel * 2560 * 1440 * 144). This data cannot be transmitted in an instant: the GPU is constantly transmitting pixels to the display. After each frame is transmitted, there’s a brief break, and transmitting the next frame begins. This break period is called VBLANK. When VSync is enabled, you’re essentially telling the OS to flip the frame buffer only during VBLANK:When you turn VSync off, the back buffer gets flipped to the front buffer the moment rendering is finished, which means that the display will suddenly start taking data from the new image in the middle of its refresh cycle, causing the upper part of the frame to be from the older frame and the lower part of the frame to be from the newer frame:This phenomenon is known as “tearing.” Tearing allows us to reduce tdisplay for the lower part of the frame, sacrificing visual quality and animation smoothness for input latency. This is especially effective when the game’s frame rate is lower than VSync interval, which allows a partial recovery of the latency caused by a missed VSync. It is also more effective in games where the upper part of the screen is occupied by UI or a skybox, which makes it harder to notice tearing.Another way disabling VSync can help reduce input latency is by increasing tinput. If the game is capable of rendering at a much higher frame rate than the refresh rate (for instance, at 150 fps on a 60 Hz display), then disabling VSync will make the game pump OS events several times during each refresh interval, which will reduce the average time they’re sitting in the OS input queue waiting for the engine to process them.Keep in mind that disabling VSync should ultimately be up to the player of your game since it affects visual quality and can potentially cause nausea if the tearing ends up being noticeable. It is a best practice to provide a settings option in your game to enable/disable it if it’s supported by the platform.With this fix implemented, Unity’s frame timeline looks like this:But does it actually improve the smoothness of object movement? You bet it does!We ran the Unity 2020.1 demo we showed at the start of this post in Unity 2020.2.0b1. Here is the resulting slow-motion video:This fix is available in the 2020.2 beta for these platforms and graphics APIs:Windows, Xbox One, Universal Windows Platform (D3D11 and D3D12)macOS, iOS, tvOS (Metal)Playstation 4SwitchWe plan to implement this for the remainder of our supported platforms in the near future.Follow this forum thread for updates, and let us know what you think about our work so far.The Elusive Frame Timing, article by Alen LadavacController to display latency in Call of Duty, GDC 2019 presentation by Akimitsu Hogge]]></description><link>https://unity.com/blog/engine-platform/fixing-time-deltatime-in-unity-2020-2-for-smoother-gameplay</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/fixing-time-deltatime-in-unity-2020-2-for-smoother-gameplay</guid><pubDate>Thu, 01 Oct 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[What is eCPM and how to calculate it]]></title><description><![CDATA[eCPM meaningeCPM is a term that’s thrown around quite often in the mobile advertising world. But it can be quite confusing, especially for new developers looking to monetize their app through in-app advertising. Let’s take a look at what it means and why it matters for app developers.
What is eCPM?eCPM means “effective cost per thousand impressions,” which in layman’s terms is the ad revenue generated per 1,000 ad impressions.There are two sides to eCPM: monetization and user acquisition.On the monetization side, eCPM is a metric used to measure an app developer's ad monetization performance. If app developers have a high eCPM, it means that the ads served on their app are doing their job and converting users. The more users the ads convert, the more the app developer gets paid.On the user acquisition side, eCPM measures the ad revenue generated by a specific campaign. Because networks use eCPM to rank campaigns within their ad serving models, they serve the campaigns with the highest eCPMs first and most often - enabling the campaign to garner a high amount of impressions and scale quickly. In this way, eCPM represents the campaign’s buying power.eCPM vs CPM?CPM is the rate that advertisers pay per 1000 impressions while eCPM is the ad revenue per 1000 impressions.How to calculate eCPMeCPM formula for ad monetization:eCPM = (total earnings/total impressions) x 1,000.To calculate eCPM, divide your total advertising earnings by the total number of impressions your app served. Then multiply by 1,000. The final figure is your eCPM, or the amount of money your app earns per 1,000 ad impressions.eCPM formula for user acquisition:eCPM = CPI * IPMAs long as impressions and cost are measured, eCPM on the user acquisition side can be estimated by multiplying the CPI (how much you're willing to pay for each install) and IPM (how many installs out of a thousand the campaign generates) of a campaign.eCPM floorAn eCPM floor, also called a flat eCPM or predefined CPM, is the minimum CPM an ad network must meet to serve an ad on your app. In other words, an ad network will not serve an ad if it's not able to meet the eCPM floor that you manually pre-set in your waterfall. If an ad network can't meet your eCPM floor, it will move on to the next instance in your waterfall. CPMs can be set on individual or groups of specific countries, and on the global level. Read more about eCPM floors and best practices here.Note that eCPM floors are only relevant for traditional waterfalls and not for in-app bidding. Rather than manually assigning an eCPM floor to each line item in a waterfall, an in-app bidding solution asks each ad network how much they're willing to pay to serve an impression and automatically serves the impression to the highest bidder. While the mobile app industry is still operating in a hybrid bidding system, as the industry moves closer to a pure in-app bidding monetization, eCPM floors will become less relevant.eCPM for adseCPM helps app developers evaluate and optimize their monetization strategy by letting them compare ad revenue generated across multiple variables, such as ad network, region, operating system, location, etc.For example, let’s say you want to understand which ad unit is performing better and making you more money. To do so, you’d calculate and compare the eCPM of both.In a month, you see that rewarded video generated 400 impressions and $5.00 in earnings, while banner ads generated 700 impressions and $3.00 in earnings. It’s hard to compare the performance of the two ad units based on these numbers alone.But after some quick math, we find that rewarded video has an eCPM of $12.50 and banner ads have an eCPM of $4.29. Now we see clearly that rewarded video is making you more money.eCPM marketing and advertisingAs we mentioned, eCPM is also critical for measuring and optimizing the performance of user acquisition campaigns - the higher the campaign's eCPM, the more impressions it'll win and the faster it'll scale.Take a look at the graph below and remember that eCPM for user acquisition managers equals CPI multiplied by IPM. That means Campaign A has an eCPM of $5, Campaign B $10, and Campaign C is upwards of $40.Campaign A's eCPM is too low to win a high share of voice on the network, while Campaign B's eCPM is good enough to win a majority of a network's impressions. Campaign C, meanwhile, has such a high eCPM that UA managers can actually increase their margins, or lower their CPI, and still see the same campaign performance. That's usually due to an incredibly high IPM, from a high-performing creative.How to increase eCPMThere are several strategies app developers can implement to improve ad monezation eCPM. Take a look at a few of our top tips:1. Monetize with in-app biddingThink of in-app bidding as an auction - the solution asks all the available bidding ad networks how much they're willing to pay for an impression and serves the impression to the highest bidder. That's in contrast to the traditional waterfall, which has multiple line items that app developers manually arrange according to eCPM.In-app bidding drives higher eCPMs for app developers for a few reasons:The competition among the ad networks drives up the price of each impression - just like in an auction.Because it's such a manual process to optimize waterfalls, app developers typically only look after a few of their most important ones rather than all of them (per geo, segment, etc). This means that many of the waterfalls aren't as optimized as they could be, and developers are missing out on potential revenue. However, in-app bidding completely automates the optimization process, since there's no need to manually arrange anything. This means there's no chance developers lose out on revenue because of poor optimization.If you placed a certain network low in your traditional waterfall but it was potentially was willing to pay a high amount for the impression, you'd simply miss out on the revenue. But because in-app bidding flattens the waterfall, and simultaneously asks all networks how much they're willing to pay for each impression, you never risk losing out on a potentially higher bid.By using in-app bidding to ensure best performing campaigns are delivered first, you can quickly and easily increase your own eCPM.2. A/B test ad formats and remove the ones that don’t performThere are several ad units out there to choose from today: user-initiated ones that users opt-into engaging with like rewarded video and offerwall, and system-initiated ad units that developers choose when to show like banners and interstitials. Each has its own advantages. Be sure to continuously run A/B tests to see which ones are performing well and which ones aren’t. If you see that a certain ad unit is consistently delivering low eCPMs, remove it from your app. ironSource's ad monetization A/B testing solution lets developers test different ad monetization strategies and know with certainty which one will maximize revenue. Here are five examples of A/B tests you can start running now. Using ironSource mediation, ZiMAD was only running rewarded video ads on their game, My Museum. Their project manager was curious about adding interstitials as a second ad unit, to see if it would increase revenue without harming retention. She used ironSource's ad monetization A/B testing tool to set up two groups: the first group acted as a control and ran only rewarded video ads, while the second group ran both rewarded video and interstitials from Day 1. The result? ZiMAD’s revenue increased by 17%.]]></description><link>https://unity.com/blog/what-is-ecpm</link><guid isPermaLink="true">https://unity.com/blog/what-is-ecpm</guid><pubDate>Wed, 30 Sep 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 in-ad data metrics to optimize in your mobile game ad creative - and how]]></title><description><![CDATA[Mobile ad metricsThe rise of interactive ads has opened up a new world of in-ad data which gives insight into the user journey, from impression to click and everything in between. With the market as saturated as ever, an intricate attention to detail in order to optimize ad creatives can be the difference between a scalable IPM and a poor IPM; a successful game and a failure. Below, we take you through the key in-ad data metrics that you should be optimizing, and how, through various A/B tests, you can do exactly that.Engagement rate and time to engage (TTE)Getting the user to tap on the playable and begin playing is the first challenge for your creative. Engagement rate is the percentage of users who interacted with your ad, and represents the first stage of interaction with the creative. Time to engage is the number of seconds it takes for the user to interact with your ad, for instance tapping on it and starting the play with it.For hyper-casual games, the goal is to have a short TTE, as this will indicate that the creative is intuitive and immediately appealing. By contrast, a playable for a more complex game can have a longer TTE - after all, more complex games will likely require more information on the creative, and you want users to understand what is required from them.To improve engagement rates, focus on optimizing the tutorial at the start of the ad. When developing the tutorial, it's crucial not to overwhelm the user with information; avoid adding too many instructions on the screen, and focus on making the gameplay as intuitive as possible. The key is to hook the user in the first couple of seconds - that should guide your efforts.After the initial interaction, such as engaging with the tutorial, comes the core gameplay of the playable ad. Test combinations of level of difficulty, number of levels, and amount of obstacles within the core gameplay, A/B testing to try to understand what motivates your users. If for example engagement rates are low and a user isn’t interacting with the core gameplay, try adding a hint, such a gesture showing what’s needed to progress.Time to complete and completion rateAchieving high engagement rates is just one step in the funnel - you then need to focus on maximizing completion rates. Completion rate is the percentage of users who get to the end of the ad creative without exiting out or skipping. This indicates how engaging your creative is, although high engagement rates do not always translate to high completion rates.The key to ensure the latter is choosing the right gameplay to showcase. Doing this requires an understanding of what motivates your core audience, and leveraging this in the ad. For instance, in match-3 games, typically most users are primarily motivated by meta features, so it’s important to focus your A/B tests on the metagame and not the core gameplay. In a midcore role-playing game, where players are strongly motivated by characters and leveling up, consider focusing the ad creative on the different characters and highlighting their traits, A/B testing to determine which characters drive the highest engagement and completion rates.Click-to-store rateHigh engagement and completion rates on their own do not necessarily mean a successful playable ad campaign - success will be measured by the number of users who click on the ad’s CTA (call to action) to install the game in the app store. Click-to-store rate is the percentage of users who completed your ad creative and then clicked to go to the app store listing.Often, if the other parts of the puzzle are finely tuned, such as the tutorial and gameplay, then a high click-to-store rate will be a natural outcome. There are also ways to directly optimize the click-to-store rate, such as the CTA. This is the button that appears at the end of the ad, prompting users to download with a message like “Download now” or “Play for free”.The text in the button can be optimized by leveraging the motivations of the users playing your game. For example, Playworks optimized the CTA of a midcore game according to the desire of its core audience to unlock cool characters. Instead of the simple “Download now”, Playworks tested the CTA with “Level up” and “Upgrade your hero”. This helped the ad creative meet the midcore genre’s click-to-store rate benchmark.It’s also worth noting that conversions can also take place before the end card appears. Some developers test slightly more aggressive strategies in which the user is taken straight to the app store after a certain number of clicks on the ad.Data and creatives: Two peas in a podA good game doesn't necessarily translate to a good creative. That’s why rigorous A/B testing, paying close attention to the genre benchmarks, analyzing your ad performance, and optimizing based on your findings is key for any mobile games company, whatever the genre.Ad creative optimization is only becoming more crucial for mobile games, and in the largely automated world of performance marketing, it is one of the last levers UA teams can use to gain an advantage over competitors. By focusing on optimizing the metrics discussed above, you can ensure you’re making the most out of this opportunity to stand out from the crowd and run scalable, high impact campaigns.Learn more by checking out our other blogs, including ‘Mobile Gaming Industry Trends in 2021’ and ‘How to Improve User Experience and Conversions in Playable Ads’]]></description><link>https://unity.com/blog/3-in-ad-data-metrics-to-optimize-in-your-mobile-game-ad-creative-and-how</link><guid isPermaLink="true">https://unity.com/blog/3-in-ad-data-metrics-to-optimize-in-your-mobile-game-ad-creative-and-how</guid><pubDate>Wed, 30 Sep 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Create your first game, brick by virtual brick, with the LEGO® Microgame]]></title><description><![CDATA[New users can start creating in Unity faster than ever with the LEGO Microgame (currently in beta), our most recent addition to the Microgames series.Unity’s Microgames are guided experiences designed to get new users working in the Editor quickly and easily. They’re designed to help you move swiftly from opening your first project to publishing your first game in about 45 minutes. Follow in-Editor tutorials to better understand how everything clicks together, while making your own creative decisions and personalizing along the way. You can access the Microgames via the Unity Hub (v2.4.0).Our latest Microgame release allows you to discover a joyful experience building with virtual LEGO bricks as you learn how to use Unity’s fundamental systems. Create and play your first game then publish it to Unity’s hosting site for user-generated games, where you can show off and share your new creation with friends and the larger Unity community.In partnership with LEGO Games, Unity has brought the LEGO Group’s System in Play and LEGO minifigures into the Unity Editor for the very first time.For anyone who’s ever loved building with LEGO bricks, this Microgame is the perfect place to start your Unity creative journey. Gameplay behaviors and actions have been embedded into the virtual bricks, allowing you to build your interactive project, brick by glossy brick.If you’re new to Unity, you can begin here – it’s as easy as downloading the Unity Hub, launching the Editor, and opening the LEGO Microgame project to follow step-by-step tutorials that guide you through the creative process.Already have Unity (2019.4 LTS) installed? Just launch the Unity Hub (v2.4.0) and start a New project to load the LEGO Microgame.Your comments are vital to helping us improve the LEGO Microgame experience for others, so tell us what you think in our form, and stay tuned for more exciting Microgame news to help level up your Unity skills. We can’t wait to see what you create!]]></description><link>https://unity.com/archive/blog/games/brick-by-virtual-brick-with-the-lego-microgame</link><guid isPermaLink="true">https://unity.com/archive/blog/games/brick-by-virtual-brick-with-the-lego-microgame</guid><pubDate>Wed, 09 Sep 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to choose the right netcode for your game]]></title><description><![CDATA[Almost all multiplayer games have to account for and solve inherent network-related challenges that impact the game experience, such as latency, packet loss, and scene management. Games solve these challenges in a variety of ways.Finding the right solution depends on your game’s genre, the scale of its players and networked objects, competitiveness, and other aspects, like how much control is needed over the networking layer. Different scenarios require different netcode solutions.In this blog, we cover common networking libraries used in the Unity Engine, plus the results of a study conducted on developers’ experience with these solutions, to help you determine what might be right for your project.Netcode is a high-level term many engineers use to refer to frameworks that are specifically designed to help make building certain aspects of networked gameplay easier – like data synchronization or lag compensation.A fully networked framework contains two essential components:1. A transport (base) layer that manages all traffic and packets sent to/from a client, host, or server2. A higher-level abstraction layer that simplifies common networking gameplay needs and integrates with toolsOftentimes, a “netcode solution” refers to that second, abstraction layer, as this is where you implement your networked gameplay and optimizations.Different netcode solutions have different limitations and capabilities that may make it easier or harder to build your multiplayer experience. It’s important to know exactly what you want to build and evaluate your options before you start, to help reduce refactors that could be expensive.Unity has two different first-party netcode solutions: Netcode for GameObjects and Netcode for Entities.The Netcode for GameObjects package was built to help you more easily synchronize scenes and GameObjects data across multiple clients and platforms with either client- or server-authoritative models. The Unity engine helps you optimize your multiplayer games with tools to profile the network both in Play mode and at runtime.You can also use Relay from Unity Gaming Services, which is a cost-effective peer-to-peer companion service, to scale playtests and build a multiplayer game without having to invest in dedicated hosting.Expand the range of possibilities in the upcoming Unity 2022 LTS. Add the ability to target competitive action multiplayer games with the Netcode for Entities package based on ECS, built for performance and scalability. You can target ambitious server-authoritative gameplay featuring prediction, interpolation, and lag compensation.Manage the costs with a dedicated server build target that can automatically strip assets. Deploy it with Game Server Hosting from Unity Gaming Services, a streamlined approach to maintaining resiliency and scalability in your gaming infrastructure, so you can focus on providing the best experience to your players.Unity has gathered feedback about some of the most widely used third-party netcode solutions, and we’ve created a decision tree to help guide you through the process of deciding which framework might work best for you.To create these tools, we gathered and analyzed data from three sources:A survey of over 200 Unity users that asked for information about their experiences with specific netcode frameworksOver 20 in-depth interviews with users actively shipping multiplayer games with UnityLearnings from prototypes we built with MLAPI (now known as Netcode for GameObjects), DarkRift 2, Mirror, and Photon Quantum.Customers scored and ranked the top netcode solutions across different axes based on their experience.Networking is complex, so the level of stability and support you receive through your netcode solution is critical. Stability and support of each netcode solution was evaluated along three axes – the likelihood of bugs or crashes, response time to fix issues or help debug a challenge, and the likelihood of breaking changes to the APIs.We compiled users’ evaluations of how easy it is to get started and perform common tasks, including the provision of good samples, documentation, tutorials, and the solution’s offering of simple APIs for prototyping.Who wants a solution that has poor performance? To score this for each netcode solution evaluated, we looked for limited GC/allocations, minimal latency overhead, performant compute, and ideally the ability to multithread.Depending on the genre of game you’re looking to create, scalability of the netcode solution is an important consideration. Similar to performance, we evaluated the solution’s ability to support a larger number of connected clients without a large sacrifice in performance.Having a fully-featured netcode solution is important to support any genre or unique game-specific needs your project has. For ranking the solutions, we focused on mid-level features like object and variable replication, RPCs, scene management, and so on. We also looked for higher-level features like prediction and lag compensation.In order to properly budget for your netcode solution, we’ve included evaluations of the cost of each solution as well. This consideration factors in both the cost of the libraries/solution and possible hidden costs, such as operating overhead that has to be managed separately.Before making a decision about a netcode solution, it’s important to take a few things into consideration.First, we highly recommend that you still perform your own evaluation. Our summary of the most common options can be helpful, but you should also do an assessment based on the specifics of your game.Secondly, this list is based on an evaluation run in 2020, and doesn’t represent all of the alternatives for netcode or transport layer solutions that are currently available.Lastly, consider how much extra network-related work and maintenance you’re prepared to take on. Does your game need that much network overhead?If you are building something casual or co-operative that doesn’t require perfect synchronization of all player states across devices, consider a netcode solution with less overhead and development cost like Netcode for GameObjects.If you’re making a game that’s more fast-paced and action-oriented, where players’ physical skills are put in competition with each other, consider a solution like Netcode for Entities. This can support things like client prediction and has a method of compensating for lag.The information below is a start, but we recommend that you also download the full netcode report, where we go into greater detail about these third-party netcode solutions:MLAPI (now acquired by Unity and evolved into Netcode for GameObjects)DarkRift 2Photon PUNPhoton Quantum 2.0MirrorNote: The PDF covers solutions most referenced by customers, but there are more. Some customers discussed other solutions for which we haven’t yet gathered enough customer evidence to evaluate, such as Forge, Normcore, Bolt, LL (Enet, LiteNet, and so on). We encourage you to add these to your considerations to see if they would be an option for your setup.Whether you’re building the next battle royale smash hit or a cozy online co-op, understanding the basics of multiplayer networking and the netcode solutions available to you is essential.See Unity’s Boss Room co-op sample for a production quality example of a project made with Netcode for GameObjects. If you’re looking for an example of a fast-paced, competitive multiplayer game that is also network performant, check out Unity’s ECS Network Racing sample built with the Entities Component System. To see a game example that fully utilizes everything Game Server Hosting has to offer, check out the Battle Royale sample built with Photon Fusion.Happy creating.Editor’s note: This blog was updated in March 2023 with the latest information on Unity’s netcode solutions in order to provide more helpful information for developers choosing the right netcode solution for their game. The report data is still from 2020.]]></description><link>https://unity.com/blog/games/how-to-choose-the-right-netcode-for-your-game</link><guid isPermaLink="true">https://unity.com/blog/games/how-to-choose-the-right-netcode-for-your-game</guid><pubDate>Tue, 08 Sep 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Toyota makes mixed reality magic with Unity and Microsoft HoloLens 2]]></title><description><![CDATA[Learn how Unity and HoloLens 2 have become essential tools at one of the world’s largest automakers to streamline processes, increase understanding, and save time.One of the core principles of Toyota Motor Corporation is Kaizen (continuous improvement). In both production equipment and work procedures, Kaizen seeks to drive maximum quality, efficiency gains, and elimination of waste.Toyota often turns to technology to deliver these improvements, which is why the automaker was an early adopter of 3D data for digital engineering and later embraced real-time 3D technology. Toyota uses Unity’s real-time 3D development platform in many ways across its automotive lifecycle.Its virtual pipeline starts by importing vehicle data into Unity using Pixyz. This process quickly converts Toyota’s large computer-aided design (CAD) assemblies into lightweight content suitable for real-time 3D.The company then uses Unity to develop applications tailored to its needs and deploy them to various platforms, whether it’s conducting training sessions in virtual reality (VR), creating stunningly realistic car configurators for its luxury Lexus brand, or condensing inspection workflows from days to hours with HoloLens.Toyota has used Unity to create and deploy mixed reality applications to Microsoft’s revolutionary device across its automotive production process. Naturally, its team was eager to expand their mixed reality capabilities with HoloLens 2, the next generation of Microsoft’s wearable holographic computer.Watch the talk below from Koichi Kayano, the project leader of mixed reality for automotive digital engineering at Toyota, which introduces several proof of concept cases in progress. Learn how Unity and Microsoft’s new mixed reality devices are helping Toyota achieve Kaizen in several aspects of design, manufacturing, and field service.Here are some of the many ways Toyota is saving time, reducing costs and driving efficiencies with mixed reality.Previously an arduous task, CFD analysis is now made simpler with the assistance of mixed reality. Toyota uses Unity and HoloLens 2 to capture and display CFD analysis on a vehicle in real-time to streamline the design review process.Going around a stationary vehicle, the user can simulate and analyze how its design affects aerodynamics. And using multiple HoloLens 2 devices, Toyota’s team can share their view with one another to better communicate and collaborate during a review process.Using Unity and HoloLens 2, Toyota captures and displays CFD analysis on a vehicle in real-timeOnce a vehicle is assembled, it is challenging to explain the functionality of hidden mechanisms within the vehicle. This is made more difficult when the function requires the vehicle to be in motion.Using HoloLens 2 and Unity, users can now move around and inspect the inner workings of a “moving” vehicle – making a task that was once impossible now able to be easily and safely performed.Users can see how the vehicle operates at startup, upon acceleration and deceleration in mixed realityThe possibility of human error is always present, even among expert technicians. Simple errors such as a loose coolant cap carry consequences if not detected and corrected immediately.With the help of machine learning, Unity, and HoloLens 2, engineers are being guided to recognize and remedy inconsistencies that are easily missed by ordinary inspection.Toyota’s team can easily spot mistakes that the human eye would miss with mixed reality. In this case, HoloLens 2 detects that the oil level gauge is improperly installed and highlights it in red text.Trying to reduce human error previously required a lot of human effort, however. To train machine learning models on Microsoft Azure to recognize these simple mistakes, Toyota’s team needed to take 20,000 photos and spend 200 hours annotating the photos manually.Manual annotation was a time-consuming process for Toyota and required its team to label tens of thousands of photos to help the AI system detect errors accurately.Using Unity, Toyota created 3D models of the vehicle and the body parts under the hood, varied the model’s position in 3D space, and automatically captured a large volume of labeled images to train its machine learning models.Toyota used Unity to automatically capture and tag images to train its machine learning models to recognize errors after body parts are installedCompared to the traditional workflow that took 200 hours, this approach generated the needed amount of auto-labeled images in just 30 minutes—a 400X improvement in speed. This synthetic data also proved just as effective at training the machine learning models as the manually annotated photographs. For Toyota, this kind of time and cost savings is an ideal example of Kaizen in action.Proper electrical wiring configuration is crucial for ensuring vehicles operate as intended. In a finished vehicle, however, inspection of connector positions and pin assignments is a serious challenge.Instead of relying on 2D diagrams, Toyota’s team now has the ability to visualize the entire three-dimensional electrical wiring diagram inside the engine, doors, dashboard, or any other part of the car they require. This allows Toyota’s field service engineers to gain contextual understanding and to visualize the location of the wiring systems without the labor and time needed to remove physical parts.Toyota field service engineers can visualize the entire three-dimensional electrical wiring diagram inside the vehicle.Toyota also leveraged mixed reality applications from Dynamics 365 for two additional use cases.--As a global company, Toyota needs to connect field support engineers and experts across various locations. This presents numerous challenges and hinders effective collaboration and training.With HoloLens 2 and Dynamics 365 Remote Assist, Microsoft’s mixed reality distance collaboration tool, two or more participants can share the same view, communicate, and collaborate no matter their location. This solution allows remote staff to inspect work, educate, and train field engineers, while saving considerable time and money and improve overall results.Toyota uses HoloLens 2 and Microsoft’s collaboration tools to seamlessly connect offsite experts to remote support engineersStep-by-step tutorials are critical to the ability of Toyota’s service engineers to make repairs effectively, but creating these manuals is time- and resource-intensive. In the past, a digital version of a work procedure app would take up to ten days and require an on-site computer graphics engineer.With Dynamics 365 Guides, Microsoft’s virtual training, performance, and instruction solution, the same task now takes 90 percent less time—just one day. This automated process allows anyone with basic training to create necessary applications through detailed instructions and guidance, freeing up programmers to focus on other tasks.Dynamics 365 Guides reduced person-hours needed to create training content for car repairs by 90 percent--Learn more about tools for developing for HoloLens 2 with Unity. Unity is the leading platform for creating content for augmented reality and virtual reality applications – subscribe to Unity Industrial Collection to get started today or learn more about our solutions for your business. Unity Technologies is the author of this blog post; Toyota Motor Corporation is not responsible for its content.]]></description><link>https://unity.com/blog/industry/toyota-makes-mixed-reality-magic-with-unity-and-microsoft-hololens-2</link><guid isPermaLink="true">https://unity.com/blog/industry/toyota-makes-mixed-reality-magic-with-unity-and-microsoft-hololens-2</guid><pubDate>Tue, 08 Sep 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Enhanced Aliasing with Burst]]></title><description><![CDATA[The Unity Burst Compiler transforms your C# code into highly optimized machine code. Since the first stable release of Burst Compiler a year ago, we have been working to improve the quality, experience, and robustness of the compiler. As we’ve released a major new version, Burst 1.3, we would like to take this opportunity to give you more insights about why we are excited about a key performance focused feature - our new enhanced aliasing support.The new compiler intrinsics Unity.Burst.CompilerServices.Aliasing.ExpectAliased and Unity.Burst.CompilerServices.Aliasing.ExpectNotAliased allow users to gain deep insight into how the compiler understands the code they write. These new intrinsics are combined with extended support for the [Unity.Burst.NoAlias] attribute, we've given our users a new superpower in the quest for performance.In this blog post we will explain the concept of aliasing, how to use the [NoAlias] attribute to explain how the memory in your data structures alias, and how to use our new aliasing compiler intrinsics to be certain the compiler understands your code the way you do.Aliasing is when two pointers to data happen to be pointing to the same memory allocation.The above is a classic performance related aliasing problem - the compiler without any external information cannot assume whether a aliases with b, and so produces the following nonoptimal assembly:As can be seen it:Stores 13 into b.Stores 42 into a.Reloads the value from b to return it.It has to reload b because the compiler does not know whether a and b are backed by the same memory or not - if they were backed by the same memory then b will contain the value 42, if they were not it would contain the value 13.Let's look at the following simple job:The above job is simply copying from one buffer to another. If Input and Output do not alias above, EG. none of the memory locations backing them do not overlap, then the output from this job is:If a compiler is aware that these two buffers do not alias, like Burst is with the above code example, then the compiler can vectorize the code such that it can copy N things instead of one at at time:Let's look at what would happen if Input and Output happened to alias above. Firstly, the safety system will catch these common kinds of cases and provide user feedback if a mistake has been made. But let's assume you've turned safety checks off, what would happen?As you can see, because the memory locations slightly overlap, the value a from the Input ends up propagated across the entirety of Output. Let's assume that the compiler also vectorized this example because it wrongly thought the memory locations did not alias, what would happen now?Very bad things happen - the Output will not contain the data you expected.Aliasing limits the Burst compilers ability to optimize code. It has an especially hard toll on vectorization - if the compiler thinks that any of the variables being used in the loop can alias, it generally cannot safely vectorize the loop. In Burst 1.3.0 and later, with our extended and improved aliasing support, we have vastly improved our performance story around aliasing.In Burst 1.3.0 we've extended where the [NoAlias] attribute can be placed to four places:On a function parameter it signifies that the parameter does not alias with any other parameter to the function, or with the ‘this’ pointer.On a field it signifies that the field does not alias with any other field of the struct.On a struct itself it signifies that the address of the struct cannot appear within the struct itself.On a function return value it signifies that the returned pointer does not alias with any other pointer ever returned from the same function.In cases of fields and parameters, if the field type or parameter type is a struct, "does not alias with X" means that all pointers that can be found through any of the fields (even indirectly) of that struct are guaranteed not to alias with X.In cases of parameters, note that a [NoAlias] attribute on a parameter guarantees it does not alias with this, which often is a job struct, which contains all data for the struct. In Entities.ForEach() scenarios, this will contain all the variables that were captured by the lambda.We will now go through an example of each of these uses in turn.If we look again at the example with Foo above, we can now add a [NoAlias] attribute and see what we get:Which turns into:Notice that the load from ‘b’ has been replaced with moving the constant 13 into the return register.Let's take the same example from above but apply it to a struct instead:The above produces the following assembly:Which when parsed into our speech translates to:Loads the address of the data in ‘b’ into rax.Stores 42 into it (1109917696 is 0x‭42280000‬ which is 42.0f).Loads the address of the data in ‘a’ into rcx.Stores 13 into it.Reloads the data in ‘b’ and converts it to an integer for returning.Let's assume that you as the user know that the two NativeArray's are not backed by the same memory, you could:By attributing both a and b with [NoAlias] we have told the compiler that they definitely do not alias with each other within the struct, which produces the following assembly:Notice that the compiler can now just return the integer constant 42!Nearly all structs you will create as a user will be able to have the assumption that the pointer to the struct does not appear within the struct itself. Let's take a look at a classic example where this is not true:Lists are one of the few structures where it is normal to have the pointer to the struct accessible from somewhere within the struct itself.Now onto a more concrete example of where [NoAlias] on a struct can help:Which produces the following assembly:As can be seen it:Loads ‘p’ into rax.Stores 42 into ‘p’.Loads ‘p’ into rax again!Loads ‘i’ into ecx.Returns the index into ‘p’ by ‘i’.Notice that it loaded ‘p’ twice - why? The reason is that the compiler does not know whether ‘p’ points to the address of the struct bar itself - so once it has stored 42 into ‘p’, it has to reload the address of ‘p’ from ‘bar’, just in case. A wasted load!Let's add [NoAlias] now:Which produces the following assembly:Notice that it only loaded the address of ‘p’ once, because we've told the compiler that ‘p’ cannot be the pointer to ‘bar’.Some functions can only return a unique pointer. For instance, malloc will only ever give you a unique pointer. For these cases [return:NoAlias] can provide the compiler with some useful information.Let's take an example using a bump allocator backed with a stack allocation:Which produces the following assembly:It's quite a lot of assembly, but the key bit is that it:Has ‘ptr1’ in rdi.Has ‘ptr2’ in rax.Stores 42 into ‘ptr1’.Stores 13 into ‘ptr2’.Loads ‘ptr1’ again to return it.Let's now add our [return: NoAlias] attribute:Which produces:And notice that the compiler doesn't reload ‘ptr2’ but simply moves 42 into the return register.[return: NoAlias] should only ever be used on functions that are 100% guaranteed to produce a unique pointer, like with the bump-allocating example above, or with things like malloc. It is also important to note that the compiler aggressively inlines functions for performance considerations, and so small functions like the above will likely be inlined into their parents and produce the same result without the attribute (which is why we had to force no-inlining on the called function).For function calls where Burst knows about the aliasing between parameters to the function, Burst can infer the aliasing and propagate this onto the called function to allow for greater optimization opportunities. Let's look at an example:
Previously the code for Bar would be:This is because within the Bar function, the compiler did not know the aliasing of ‘a’ and ‘b’. This is in line with what other compiler technologies will do with this code snippet.Burst is smarter than this though, and through a process of function cloning Burst will create a copy of Bar where the aliasing properties of ‘a’ and ‘b’ are known not to alias, and replace the original call to Bar with a call to the copy. This results in the following assembly:Which as we can see doesn't perform the second load from ‘a’.Since aliasing is so key to the compilers ability to optimize for performance, we've added some aliasing intrinsics:Unity.Burst.CompilerServices.Aliasing.ExpectAliased expects that the two pointers do alias, and generates a compiler error if not.Unity.Burst.CompilerServices.Aliasing.ExpectNotAliased expects that the two pointers do not alias, and generates a compiler error if not.An example:using static Unity.Burst.CompilerServices.Aliasing;
These intrinsics allow you to be certain that the compiler has all the information that you as the user know. These are compile time checks. When the code you write to produce the arguments for the intrinsics do not have side effects, there is no runtime cost for these aliasing intrinsics. They are particularly useful when you have some code that is performance sensitive that you want to be sure that any later changes do not change the assumptions the compiler can make about aliasing. With Burst, and the control we have over the compiler, we can provide this sort of in-depth feedback from the compiler to our users to ensure your code remains as optimized as you intended.The Unity Job System has some built-in assumptions it can make about aliasing. The rules are:Any struct with a [JobProducerType] (EG. anything like IJob, IJobParallelFor, etc) knows that any field of that struct that is a [NativeContainer] (EG. NativeArray, NativeSlice, etc) cannot alias with any other field that is also a [NativeContainer].The above is true except for fields that have the [NativeDisableContainerSafetyRestriction] attribute on them. For these fields, the user has explicitly told the Job System that this field can alias with any other field of the struct.Any struct with a [NativeContainer] cannot have the ‘this’ pointer of that struct within the struct itself.Ok all the formal definitions over, let's look at some code to better explain the above rules:Walking through the above aliasing checks:a and b do not alias since they are both [NativeContainer]'s contained within a [JobProducerType] struct.But since c has the field attribute [NativeDisableContainerSafetyRestriction] it can alias with a or b.And the pointers to each of a, b, or c cannot appear within them (EG. in this case the data backing the NativeArray cannot be the data backing the contents of the array).These built-in aliasing rules allow Burst to perform pretty darn good optimizations for most user code, allowing the performance by default that we strive for.Many users will write code along the lines of BasicJob below:The code is loading from three arrays, combining their results, and storing it to a fourth array. This kind of code is great for the compiler because it allows it to generate vectorized code, making the most of the powerful CPUs we all have in our mobiles and desktop computers today.If we look at the Burst Inspector view of the above job:We can see the code is vectorized - the compiler has done a good job here! The compiler is able to vectorize because as we explained above the Unity Job System has rules that each variable in a job struct cannot alias any other member in the struct.But there are cases that can be seen in the wild where developers are building up data structures where Burst has no information on how the aliasing works with those structures, for example:In the above example we've just wrapped the data members from the BasicJob in a new struct Data, and stored this struct as the only variable in the parent job struct. Let's see what the Burst Inspector shows us now:Burst has been smart enough to vectorize this example - but at the cost of having to check that all of the pointers being used are not overlapping at the start of the loop.This is because the Job System aliasing rules only give Burst guarantees about direct variable members of a struct - not anything derived from them. So Burst has to assume that the native array backing the variables a, b, c, and o is the same variable - meaning the complicated and performance draining dance of 'Do any of these pointers actually equal each other?'. So how can we fix this? By using our [NoAlias] attribute to explain this to Burst!In the WithAliasingInformationJob job above, we can see that there are new [NoAlias] attributes set on the fields of Data. These [NoAlias] attributes are telling Burst that:a, b, c, and o do not alias with any other member of Data that has a [NoAlias] attribute.So each variable does not alias with any other variable in the struct because they all have the [NoAlias] attribute.And again we'll look at the Burst Inspector:With this change we have removed all those expensive runtime pointer checks, and can just get on with running the vectorized loop - nice!Using the new Unity.Burst.CompilerServices.Aliasing intrinsics will ensure that you never accidentally change the code to affect aliasing again in the future. For example:These checks do not cause a compiler error in the above job - which means as we already seen, Burst has enough information because of the added [NoAlias] attributes to detect and optimize this case.Now while this is a contrived example for the sake of conciseness in this blog, these kind of aliasing hints can provide very real-world performance benefit in your code. As we always recommend, using the Burst Inspector when iterating on code modifications you have made will ensure that you keep stepping towards a more optimized future.With the release of Burst 1.3.0 we provided you another set of tools to get the maximum performance from your code. With the extended and enhanced [NoAlias] support you can perfectly control how your data structures work. And the new compiler intrinsics give you a meaningful insight into how the compiler understands your code.If you haven’t started with Burst yet and would like to learn more about our work on the new Data-Oriented Technology Stack (DOTS), head over to our DOTS pages, where we will be adding more learning resources and links to talks from our teams as more becomes available.We always welcome your feedback - join the forum here to let us know how we can help you level up your Burst code in future.]]></description><link>https://unity.com/blog/technology/enhanced-aliasing-with-burst</link><guid isPermaLink="true">https://unity.com/blog/technology/enhanced-aliasing-with-burst</guid><pubDate>Mon, 07 Sep 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 tips for running a killer UA campaign on OEM and carrier traffic]]></title><description><![CDATA[A few years ago, relying on tried and tested channels such as search and social was enough for growth managers to succeed. But with increased market saturation and competition, marketers today can’t afford to rest on their laurels. Forward-thinking marketers are constantly thinking about ways to unlock the next level of growth, and many are recognizing the potential of on-device distribution channels to do just that. Normally only accessible through direct partnerships with OEMs and telecom operators, today promoting your app as a native part of the device experience has become easier and more accessible than ever.Growth marketers from verticals ranging from food delivery to news aggregation and streaming are using platforms connecting them with on-device inventory to reach users at high-impact, high-intent moments directly on their devices. Having said that, this ecosystem has several notable differences from traditional channels like social and search, and as a result measuring and achieving success requires a switch in mindset. Below, we go through three top tips for maximizing performance with on-device distribution channels.Utilize a multi-bidding strategyLike with any user acquisition channel, the first step to launching a campaign is determining your KPI and bidding strategy. Typically, this requires calculating a single bid according to your KPI and running it across the entire channel. However, with a single bid, campaign results end up being binary: you either meet it or you don’t. For the campaigns that don’t, advertisers often pull their bids on (in this case on OEM and carrier traffic) the device segments that fail to meet the goal – ultimately excluding a chunk of traffic. While a more exclusionary strategy like this aims to bring up the overall campaign’s average KPI, it can result in inefficient bidding and exclude segments that are worth less but ultimately not worthless.Unlike some social and search channels, on-device channels allow for a multi-bidding strategy – i.e. bidding differently for each device segment. Doing so enables you to cover a wider range of users by including user bases that could still provide value, just for a lower bid. The key idea here is to bid on all segments – the most valuable and the less valuable ones.Let’s take a look at this in practice. If your KPI is “$20 per first order” and you see that Segment A costs $10 and Segment B costs $22, chances are you’d stop showing ads to Segment B, since you’re effectively losing money. On any traditional channel that doesn’t enable multi-bidding, this would make sense. However, with a multi-bidding strategy, you’d be able to raise bids on Segment A and lower them on Segment B, enabling you to even out and perfectly hit the $20 KPI on both segments, all while scaling traffic from the more lucrative Segment A and minimizing traffic from Segment B without excluding it entirely. In addition to being more cost-effective, multi-bidding also facilitates scale, as you’re not limited to just one device segment.It’s best to start out with one blanket bid, and then adjust it after 2-3 weeks with a multi-bidding strategy on the segments that don’t match the initial KPI.Measure performance with a long-term viewWhen assessing post-install behavior, it is important to understand the unique nature (and therefore value) of on-device installs. In contrast to campaigns on traditional channels, low engagement post-install on OEM and carrier traffic is not necessarily an indicator of a poor campaign. In fact, the strongest value of on-device channels is often in their ability to deliver users with high LTVs over the long-term, as opposed to demonstrating immediate quick returns. For that reason, it’s important to measure performance on D30, D60 and D90 when looking to evaluate your campaigns on this channel.A food delivery app, for instance, might convert a user to install the app during the device onboarding, but they might not open or interact with the app in a meaningful way for days or weeks – after all it’s unlikely the user will be immediately interested ordering a meal the moment they unbox their new device. However, when the time comes for a family meal or date night, they are likely to use this app, because it’s already installed on their device.A/B test the right elementsNo matter the channel, it’s always important to iterate and improve performance through A/B testing. Though there is generally less content to A/B test on on-device channels compared to traditional channels, that doesn’t make it a less critical pillar in your optimization strategy.Typically, on-device channels will offer a variety of placements, each with different value propositions and rates of engagement. Testing new placements on a regular basis is crucial – you may find that a certain placement may perform better for the special goal or message you’re trying to push during Christmas, versus the placement you rely on year-round. For example, special promotion campaigns such as free shipping for a shopping app, or free first ride for a taxi app, tend to deliver better results on full screen offers and on-device notifications, since these placements offer the most real estate for messaging.In addition to the placement itself, like with any other channel, the creatives used within the placement can have a significant impact on performance. For on-device channels specifically, there isn’t always a creative to A/B test – some placements such as the device setup manager simply show the app’s logo and name. But even in these situations, using an icon that’s updated according to season can boost results.Full screen offers and smart notification banners offer the most possibilities for creative tinkering. Because you’re running campaigns directly on-device, your primary goal is to design a creative that’s going to stand out in a user’s notification tray. The key elements to A/B test are CTAs, descriptions, background colors, and app screenshots.Tweaking colors is especially relevant with on-device channels – since carriers often have strong and recognizable visual brand languages, testing creatives that match those colors can help increase conversion rates. For CTAs, it’s best to highlight the primary function of the app and the value proposition users will most enjoy, and then A/B test variants of that action – for example, instead of writing “sign up” or “open now”, try “book a ride” and test it against “ride now”. The screenshots displayed in the creative should showcase the app’s primary function that you’re highlighting in the copy. We recommend iterating creatives every 2 weeks in order to stay ahead of any possible ad fatigue.With the challenge of getting discovered by high-value users tougher than ever, trying new channels that offer an innovative advertising experience for users is key. Adding on-device marketing to your media mix is a great case in point, allowing you to incorporate your app into a native part of the device experience. Just remember not to treat it the same as your other channels – by adopting a longer-term mindset that prioritizes late retention, utilizing a multi-bidding strategy, and A/B testing the right elements.Check out our other popular blogs on Aura including Our Guide to App Distribution, How To Market Your App Successfully, How To Master App Discovery For Your Fitness App and more.]]></description><link>https://unity.com/blog/3-tips-for-running-a-killer-ua-campaign-with-aura</link><guid isPermaLink="true">https://unity.com/blog/3-tips-for-running-a-killer-ua-campaign-with-aura</guid><pubDate>Sun, 30 Aug 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to optimize user flow conversion to level up your offerwall performance]]></title><description><![CDATA[If we look at key areas of a UA manager’s ad playbook, for example video ad campaigns, a significant amount of effort is put into optimizing conversion rates by improving every aspect of the ad creative. However, until the recent emergence of rich media intermediate pages within the offerwall user flow, creative optimization was not a focus for offerwall advertisers, who focused instead on adjusting their bids. The idea behind increasing bids is to get a higher spot on the publisher’s offerwall store, to increase visibility, attract users with higher rewards, and therefore engagement from users. However, advertisers can only raise their bids to a certain limit based on their ROAS goals.Now, with ironSource there is a huge opportunity for advertisers to improve their offerwall campaigns beyond raised bids - using a similar approach to creative optimization seen in other ad units. The goal with this is optimizing each step of the user journey in offerwall campaigns to increase conversions. It has several similarities to app store optimization (ASO), with both aiming to help your app stand out from the crowd, capture users’ attention, and drive installs. Below we run through each step of the offerwall user flow and explain the different ways you can optimize them to take your ironSource offerwall performance up a notch.Step 1: Clicking on the offerAt the first stage - getting the user to click on your offer - it’s important to remember that your offer is shown on a list with a number of other competitive offers. Therefore, the focus of your conversion optimization should be on standing out from the crowd and capturing attention.

To that end, the offer's headline can make a significant impact: you have two lines of text at your disposal, which you should optimize through A/B tests of different variations. As a rule of thumb, make sure to localize the language based on the geo of your target audience.In addition to the text, also experiment with the icon’s design, and test if your campaign performs better with the icon as a GIF or a still image. The icon is the first thing users will see, so make sure it’s eye catching.Benchmark*: Out of the total campaign impressions, 2.3% of users generally click on an offerStep 2: Clicking on the intermediate pageOnce a user clicks on an offer from the offerwall, they are taken to a new page not dissimilar to an app store listing: it shows a video of the advertiser's game and instructions for completing the offer. At this stage, you are just two clicks away from converting the user to install your app and begin completing your event. Therefore, the aim here is to make the user perception of your game and the post-install event as appealing as possible.

To optimize this stage, experiment with different videos and images - just like ASO, a small change in design can have a big impact. Also play around with the offer's instructions: they should be easy to understand, and need to accurately reflect the difficulty and time required to complete the event. Because users see the reward on the intermediate page too, make sure to align the reward with the time investment required from them.Benchmark: Of the users who converted to this stage, an average of 55% click to initiate the offer and go to the app store to install.Step 3: Installing the gameOnce you convert the user on the intermediate page, they are taken to the app store listing of your game where they can see reviews, information about the game, and screenshots of the gameplay. Here, you are one click away from the user installing your app, and all the core principles of ASO can be applied.For instance, having good reviews is important for encouraging users to install. Apart from having a great game, good reviews (or at least avoiding bad reviews) can also be achieved by ensuring your offerwall events are accurately represented in your description. To learn more about how to leverage positive app store reviews, check out our eBook here.

The icon on your app store listing is also very important, so be sure toA/B test different ways to optimize it. As a rule of thumb, avoid cramming too many elements together - a simpler look tends to work better - and choose one simple visual to be the core component of the icon, like your game's main character. Try to make the background a soft color, and contrast that with a more striking color for the character or symbol you include.Learn more about ASO on our webinar here.Benchmark: 50% of users who make it to the app store listing decide to install.Step 4: Completing the taskOnce you convert users, and they install your app to begin the event, focus on ensuring the maximum number of users actually complete the event. In the realm of user flow optimization, this can be achieved by ensuring the event is accurately described. If a user starts your event and sees that it requires more effort and time than anticipated, the likelihood of them becoming frustrated and ultimately churning increases. Choosing the right event is also very important: aim for an event that is appealing and challenging enough to create strong engagement with the game, while also ensuring it is achievable. Learn more about choosing the right event here.Another way to boost completion rates is sending pop-up notifications to users who stopped playing, informing them that they can still complete the event and enjoy its rewards. Doing so also increases retention.Benchmark: 40% of users who download the game and begin the event, make it to the end to receive their reward in the original game.*Benchmarks vary according to the game genre and the depth / complexity of the campaignReady to acquire high quality users at scale? Get started with the ironSource offerwall nowAnd download our new eBook, The Ultimate Offerwall Guide, for more insights direct from ironSource’s team of experts]]></description><link>https://unity.com/blog/how-to-optimize-user-flow-conversion-to-level-up-your-offerwall-performance</link><guid isPermaLink="true">https://unity.com/blog/how-to-optimize-user-flow-conversion-to-level-up-your-offerwall-performance</guid><pubDate>Wed, 26 Aug 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Enhancing mobile performance with the Burst compiler]]></title><description><![CDATA[As part of a recent session at Unite Now, we discussed how technology in the Burst compiler enables developers who are building projects with Unity to take advantage of the Arm Neon instruction set. You can use the Burst compiler when targeting Android devices to improve the performance of Unity projects supported by Arm architecture.Unity and Arm have formed a partnership to enhance the mobile game development experience for the billion-plus Arm-powered mobile devices in the Android ecosystem.For game developers, performance is paramount. Year after year, Arm invests in improving its CPU and GPU technologies to provide the advances in performance and efficiency needed to build richer experiences. Recently, Arm announced two new products, Cortex-A78, which provides greatly improved power efficiency, and the even more impressive Cortex-X1. These hardware developments are complemented by advances in compiler technology for the Arm architecture. Compilers ensure that when you develop high-performance games, they are translated and optimized into efficient binaries that make the best use of the Arm architecture’s features.Burst is an ahead of time compiler technology that can be used to accelerate the performance of Unity projects made using the new Data-Oriented Technology Stack (DOTS) and the Unity Job System. Burst works by compiling a subset of the C# language, known as High-Performance C# (HPC#), to make efficient use of a device’s power by deploying advanced optimizations built on top of the LLVM compiler framework.Burst is great for exploiting hidden parallelism in your applications. Using Burst from a DOTS project is easy, and it can unlock big performance benefits in CPU-bound algorithms. In this video, you can see a side-by-side comparison of a scripted run through in a demo environment with and without Burst enabled.The demo shows three examples of simulations using Unity Physics. You will see that the Burst-compiled code is able to compute frames with higher numbers of physics elements faster, allowing for better performance, less thermal throttling, lower battery consumption, and more engaging content.We say that Burst brings performance for free, but how does that work?Burst transforms HPC# code into LLVM IR, an intermediate language used by the LLVM compiler framework. This allows the compiler to take full advantage of LLVM’s support for code generation for the Arm architecture to generate efficient machine code optimized around the data flow of your program. A diagram of this flow is shown below.Mike Acton has given a talk called “Data-oriented design and C++,” which features the key line “know your hardware, know your data” as a means of achieving maximum performance. Burst works well because it gives visibility to the constraints on array aliasing that are guaranteed by the HPC# language and the DOTS framework, and it can make use of LLVM’s knowledge of your hardware architecture. This enables Burst to make target-specific transformations based on the properties of scripts written against the Unity APIs.You can use Burst to compile C# scripts that make use of the Unity Jobs System in DOTS. This is done by adding the [BurstCompile] attribute to your Job definition:We can use the Burst Inspector, found in the Jobs menu, to see what code will be generated. Note that for this demonstration, we have disabled Safety Checks and are using Burst 1.3.3.In the Burst Inspector that appears, we enable code generation for Armv8-A by selecting the ARMV8A_AARCH64 target.We can now see the AArch64 code that will be generated for our C# loop, including a core loop using the Neon instruction set.For more details on using the Burst compiler, please see the instruction manual, check out this Unite Now talk, where we go through the steps above in more detail, or head to the forums to get more information or ask questions about using Burst in your next project.]]></description><link>https://unity.com/blog/engine-platform/enhancing-mobile-performance-with-the-burst-compiler</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/enhancing-mobile-performance-with-the-burst-compiler</guid><pubDate>Mon, 17 Aug 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[The road to 240 million virtual kilometers: BMW’s autonomous driving journey with Unity]]></title><description><![CDATA[Before BMW’s autonomous driving (AD) technology is mass production-ready, it will need to drive 240 million virtual kilometers. Learn how Unity is helping BMW put more on its odometer every day. In our first post, we covered how a team at BMW Fully Autonomous Driving & Driver Assistance Systems has used Unity to develop custom tools for simulation visualization and scenario creation. With these tools, the BMW Group is well-equipped to tackle the most daunting daily challenges in AD development. Let’s walk through a few areas where Unity is helping out in a major way.By combining simulation with key performance indicators (e.g., continually maintaining a safe distance from traffic vehicles), BMW can assess how complete its features actually are. As individual components of its AD function master basic scenarios, BMW can conduct mass validation of its entire AD system in more complex situations.These tests come in multiple forms:Small-scale feature tests – These tests are the most common type of testing, and they enable BMW to rapidly evaluate portions of its AD system, such as vehicle trajectory planning. In a typical day, BMW’s team will log tens of thousands of virtual kilometers; the majority of these are short-distance tests (from hundreds of meters to 1 kilometer) in increments of less than a minute.Large-scale system tests – Instead of a series of mini-tests for a specific feature, this type of simulation is designed to test the broader AD system. It plays out as an extended scenario that can run for hours and strives to replicate real-world scenarios; for example, an autobahn trip between the German cities Munich and Stuttgart. These simulations are more complex, often involving a virtual world complete with moving vehicles, pedestrians, and variable weather conditions, as well as map data, sensor models as inputs to perception algorithms, vehicle trajectory planning, vehicle dynamics, and much more.Because driving situations can be repeated as often as required in simulation, BMW runs tests throughout each day, including “night drives.” After using the Unity-based scenario editor to set up tests, developers can review the results the next morning, leverage analytics to pinpoint exactly when functions failed, and bring up the exact point of failure in a frame rendered from Unity. The team can automatically extract those problematic situations as small-scale scenarios, and then visualize them to better understand why the situation was problematic.For instance, in this scenario, a traffic vehicle cuts in suddenly, yet the host vehicle does not decelerate immediately, resulting in a near accident. The scenario can be subsequently replayed after each incremental code update until the AD function reacts properly.After an initial failure in this scenario, improvements ensure that this vehicle brakes properly in response to a traffic vehicle merging into its lane aggressively.To reach the high automation level for their vehicles, BMW’s developers need to identify the limitations of their AD functions in as many situations as possible. Yet scenarios like the ones simulated in the video below are too cost-prohibitive, difficult, or dangerous to replicate in the real world.Using the Unity-based scenario editor, the developers can devise edge-case scenarios, such as a traffic vehicle running a stop sign. Uncovering these corner cases in the confines of a virtual world is much more cost-effective and safe while allowing for the opportunity to test reproducibly.BMW uses simulation to test scenarios that are too unusual to occur or too risky to create in a real-world driving environment. Here three edge cases are shown: 1) A pedestrian unexpectedly appearing in the host vehicle’s lane in a high-speed, highway setting; 2) A traffic vehicle cutting in suddenly; 3) A stopped vehicle in the host vehicle’s lane.Unity is used on a daily basis to help the 1,800 AD developers in the BMW Group continuously improve the code for which they are individually responsible. As they make changes to the codebase to add a new function or improve an existing one, they run integration tests before merging into the master.For instance, a developer focused on perception can use the Unity-based scenario editor to design multiple scenarios in which the vehicle passes a speed limit sign. These small-scale tests are simulated on the developer’s PC and can be visualized with Unity live as they are being run.The developer can visually validate their results as well as use evaluation metrics to identify improvements or confirm that the feature is ready to be merged into the master (i.e., the vehicle adjusts to the posted limit every time).Developers can simultaneously test and visualize the results of their incremental code updates. Post-merge, they can run acceptance tests to identify failures in other functions that arise as a result of their commit or vice versa. For instance, a merge from their peer could introduce a bug that affects the perception of speed limit signage. The developers can use Unity for visual debugging and easily inspect what is happening so they can fix things faster. BMW’s system is set up in such a way that developers can set breakpoints within the driving function and within the simulation code. The AD function and simulation are always in sync with one another, so the team can step through the code line by line and swap between the two worlds as they debug. The synchronicity is also mirrored by the visualization, allowing simultaneous inspection of the code and the simulated world. Because developers can still move around and inspect values in the Unity-based application, they can reduce the number of tools needing to be open at the same time, while still keeping the data as transparent as possible. All these elements ensure that the production code that will ultimately power BMW’s autonomous vehicles meets its standards for safety and reliability.---Check out Unity Industrial Collection or learn more about the ways that Unity is used for AD simulation in our whitepaper: Top 5 Ways Real-Time 3D Is Revolutionizing the Automotive Product Lifecycle.]]></description><link>https://unity.com/blog/industry/road-to-240-million-virtual-kilometers-bmw-autonomous-driving-journey</link><guid isPermaLink="true">https://unity.com/blog/industry/road-to-240-million-virtual-kilometers-bmw-autonomous-driving-journey</guid><pubDate>Mon, 10 Aug 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Visualizing BMW’s self-driving future]]></title><description><![CDATA[BMW employs Unity across its automotive lifecycle for a variety of use cases, from transforming production processes with AR and VR to marketing its vehicles in groundbreaking ways. Let’s explore one of BMW’s most innovative applications of real-time 3D technology – making it easier to navigate the complexity of autonomous driving (AD) and challenge its AD function across millions of simulated scenarios.The BMW Group – home to the BMW, MINI, Rolls-Royce, and BMW Motorrad brands – has been working on highly automated driving (AD) since 2006. In the upcoming years, the company hopes to offer drivers a groundbreaking opportunity – to buy a vehicle they will almost never need to drive themselves.The BMW Group is targeting to sell cars with Level 3-enabled automation for driver assistance systems, highway driving, and parking in the upcoming years. (SAE Level 3 is defined as conditional driving automation with some human intervention required.)Just 5% of all BMW’s test miles will be driven by actual vehicles (video credit: BMW).Around the world, a fleet of test vehicles from the BMW Group will pressure-test this technology. Because this fleet cannot gather all of the data needed for AD development, nearly 95% of all BMW’s test miles are driven by virtual vehicles in virtual worlds.These simulations take place at BMW’s Autonomous Driving Campus in Unterschleissheim, Germany, just north of Munich. Nicholas Dunning, a graphical simulation developer at the BMW Group, is part of the core 12-person development team that has built custom tools made with Unity to help the 1,800 AD developers at BMW’s campus visualize and advance their work.“At BMW, we believe simulation is key for developing autonomous driving,” says Dunning. “Unity plays a pivotal role in helping our team create, visualize, and evaluate the millions of virtual road trips needed to help us achieve our AD ambitions.”With the overwhelming majority of its testing taking place in BMW’s bespoke datacenter for AD development, BMW needed to give its AD developers an easy way to:1. Visualize the raw data from simulations in an immediately understandable, true-to-life way, beyond graphs and charts2. Evaluate the current state of their AD functions across countless simulated scenarios.Taking advantage of Unity’s extensibility, Dunning’s team developed a custom Unity-based solution to address these needs. Let’s dive into the unique way they are using Unity to help the BMW Group bring a safe, reliable AD system to the street on schedule.BMW used Unity to develop a graphical scenario editor that vastly simplifies the process to test and validate features in development. The interface makes it easy for AD developers to visualize and set up thousands of simulated scenarios that increase feature maturity and readiness.Here’s a sampling of various elements they can parameterize in the scenario editor to battle-test features in simulation:Quantity and type of traffic vehicles (car, bus, etc.)PedestriansTraffic signs (ground or mounted)Lanes (straight, curved, etc.)Lane boundaries (none, single-solid, double-solid, dashed, etc.)Environmental conditions (time of day, fog density, precipitation level)Vehicle trajectory planningIn addition to scenarios generated manually by BMW’s developers, scenarios are also extracted from traffic scenes recorded by the test fleet. This data is post-processed and automatically converted into simulation scenarios. A further analytic step identifies scenarios that would be interesting to develop and vary them.The video below shows a real-world scenario of a vehicle cut-in on a highway in Germany, as well as the converted scenario in the simulation. Because this was identified as an interesting scenario, it undergoes variations. In this case, these variations test the vehicle’s ability to maintain a safe distance from the cut-in car in various weather conditions, including rain, low sun position, and fog.A simulated scenario converted from fleet testing is varied across weather conditions.Using Unity as a visualization front end for simulated testing is highly beneficial to BMW’s AD developers. With real-time 3D, they have full control over how they interact with this immersive digital reality.As shown in the video below, they can experience a real-time, connected shift in point of view as they alter their perspective of the vehicle or any other object within the virtual scene. They can zoom in for a closer inspection or move back to get a sense of scale, making it easy to get a holistic understanding of everything happening in the simulated scenario.Unity lets BMW’s AD developers explore the simulated scenario from any vantage point. This scenario shows a vehicle surrounded by unknown objects (visualized as purple blocks) to help evaluate the AD function’s ability to operate with a mixture of known and unknown data.Initially, BMW built highly detailed, realistic environments, but over time found that switching to a more abstract visualization style and only rendering key components (e.g., road, vehicles) helped to eliminate data noise and allowed AD developers to better concentrate on the results of each simulation.BMW’s AD developers can not only quickly create scenarios for testing, but get immediate, visual feedback on the readiness of their AD function. They can literally see how the vehicle performed during the test in real-time 3D, rather than having to parse through data in 2D charts and graphs.The visualization and evaluation data (lower-right corner) are displayed and synced in real-time, making it easy for developers to analyze results in context.As BMW continues its progress in its AD ambitions, Dunning and his team hope to eventually extend their Unity-based solution beyond its core audience of AD developers. The team sees tremendous potential in collaborating with their colleagues responsible for in-car testing to ensure the pre-production Level 3 vehicles perform as promised before they go into full production.---Read part two, where we share how BMW is using Unity to overcome the daily challenges of AD development.Check out Unity Industrial Collection or learn more about how Unity is used for AD simulation in our whitepaper: Top 5 Ways Real-Time 3D Is Revolutionizing the Automotive Product Lifecycle.]]></description><link>https://unity.com/blog/industry/bmw-automotive-lifecycle</link><guid isPermaLink="true">https://unity.com/blog/industry/bmw-automotive-lifecycle</guid><pubDate>Wed, 05 Aug 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[(Automated Localization testing) Visualizing BMW’s self-driving future]]></title><description><![CDATA[BMW employs Unity across its automotive lifecycle for a variety of use cases, from transforming production processes with AR and VR to marketing its vehicles in groundbreaking ways. Let’s explore one of BMW’s most innovative applications of real-time 3D technology – making it easier to navigate the complexity of autonomous driving (AD) and challenge its AD function across millions of simulated scenarios.The BMW Group – home to the BMW, MINI, Rolls-Royce, and BMW Motorrad brands – has been working on highly automated driving (AD) since 2006. In the upcoming years, the company hopes to offer drivers a groundbreaking opportunity – to buy a vehicle they will almost never need to drive themselves.The BMW Group is targeting to sell cars with Level 3-enabled automation for driver assistance systems, highway driving, and parking in the upcoming years. (SAE Level 3 is defined as conditional driving automation with some human intervention required.)Just 5% of all BMW’s test miles will be driven by actual vehicles (video credit: BMW).Around the world, a fleet of test vehicles from the BMW Group will pressure-test this technology. Because this fleet cannot gather all of the data needed for AD development, nearly 95% of all BMW’s test miles are driven by virtual vehicles in virtual worlds.These simulations take place at BMW’s Autonomous Driving Campus in Unterschleissheim, Germany, just north of Munich. Nicholas Dunning, a graphical simulation developer at the BMW Group, is part of the core 12-person development team that has built custom tools made with Unity to help the 1,800 AD developers at BMW’s campus visualize and advance their work.“At BMW, we believe simulation is key for developing autonomous driving,” says Dunning. “Unity plays a pivotal role in helping our team create, visualize, and evaluate the millions of virtual road trips needed to help us achieve our AD ambitions.”With the overwhelming majority of its testing taking place in BMW’s bespoke datacenter for AD development, BMW needed to give its AD developers an easy way to:1. Visualize the raw data from simulations in an immediately understandable, true-to-life way, beyond graphs and charts2. Evaluate the current state of their AD functions across countless simulated scenarios.Taking advantage of Unity’s extensibility, Dunning’s team developed a custom Unity-based solution to address these needs. Let’s dive into the unique way they are using Unity to help the BMW Group bring a safe, reliable AD system to the street on schedule.BMW used Unity to develop a graphical scenario editor that vastly simplifies the process to test and validate features in development. The interface makes it easy for AD developers to visualize and set up thousands of simulated scenarios that increase feature maturity and readiness.Here’s a sampling of various elements they can parameterize in the scenario editor to battle-test features in simulation:Quantity and type of traffic vehicles (car, bus, etc.)PedestriansTraffic signs (ground or mounted)Lanes (straight, curved, etc.)Lane boundaries (none, single-solid, double-solid, dashed, etc.)Environmental conditions (time of day, fog density, precipitation level)Vehicle trajectory planningIn addition to scenarios generated manually by BMW’s developers, scenarios are also extracted from traffic scenes recorded by the test fleet. This data is post-processed and automatically converted into simulation scenarios. A further analytic step identifies scenarios that would be interesting to develop and vary them.The video below shows a real-world scenario of a vehicle cut-in on a highway in Germany, as well as the converted scenario in the simulation. Because this was identified as an interesting scenario, it undergoes variations. In this case, these variations test the vehicle’s ability to maintain a safe distance from the cut-in car in various weather conditions, including rain, low sun position, and fog.A simulated scenario converted from fleet testing is varied across weather conditions.Using Unity as a visualization front end for simulated testing is highly beneficial to BMW’s AD developers. With real-time 3D, they have full control over how they interact with this immersive digital reality.As shown in the video below, they can experience a real-time, connected shift in point of view as they alter their perspective of the vehicle or any other object within the virtual scene. They can zoom in for a closer inspection or move back to get a sense of scale, making it easy to get a holistic understanding of everything happening in the simulated scenario.Unity lets BMW’s AD developers explore the simulated scenario from any vantage point. This scenario shows a vehicle surrounded by unknown objects (visualized as purple blocks) to help evaluate the AD function’s ability to operate with a mixture of known and unknown data.Initially, BMW built highly detailed, realistic environments, but over time found that switching to a more abstract visualization style and only rendering key components (e.g., road, vehicles) helped to eliminate data noise and allowed AD developers to better concentrate on the results of each simulation.BMW’s AD developers can not only quickly create scenarios for testing, but get immediate, visual feedback on the readiness of their AD function. They can literally see how the vehicle performed during the test in real-time 3D, rather than having to parse through data in 2D charts and graphs.The visualization and evaluation data (lower-right corner) are displayed and synced in real-time, making it easy for developers to analyze results in context.As BMW continues its progress in its AD ambitions, Dunning and his team hope to eventually extend their Unity-based solution beyond its core audience of AD developers. The team sees tremendous potential in collaborating with their colleagues responsible for in-car testing to ensure the pre-production Level 3 vehicles perform as promised before they go into full production.---Read part two, where we share how BMW is using Unity to overcome the daily challenges of AD development.Check out Unity Industrial Collection or learn more about how Unity is used for AD simulation in our whitepaper: Top 5 Ways Real-Time 3D Is Revolutionizing the Automotive Product Lifecycle.]]></description><link>https://unity.com/blog/industry/bmw-automotive-lifecycle</link><guid isPermaLink="true">https://unity.com/blog/industry/bmw-automotive-lifecycle</guid><pubDate>Wed, 05 Aug 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[What the hell is ARPDAU and how can you boost it?]]></title><description><![CDATA[For an app developer wanting to understand more about the health of their app, there’s a whole load of metrics to choose from. Some give insight into the day-to-day, others take a longer view.ARPDAU is a staple day-to-day metric developers should be using - but what exactly does it tell you about your app, and how do you go about measuring it?
What is ARPDAU?ARPDAU, which stands for Average Revenue Per Daily Active User, is a metric that helps you understand how well your monetization is working, whether it’s monetization from ads, from IAPs, or both. ARPDAU also tells you how any in-app changes you have made are affecting the success of your monetization.ARPDAU calculation and formulaWhen learning how to calculate ARPDAU, focus on: the revenue from IAPs, ads, or both in any given day, divided by the number of unique active users on that day.ARPDAU for mobile gamesIf you have a free-to-play game, you will need to be constantly monitoring and adjusting your monetization strategy to maximize engagement for all the different kinds of players.Looking at your ARPDAU over time, you can easily see how changes or events affect the revenue you make that day. Changed the IAP prices? Mixed up your ad placements, or added rewarded video ads to your app for the first time? This metric will show you the impact of those changes, and then you’ll be able to optimize for getting the maximum amount of revenue while keeping users happy.Because it’s a metric that applies to each individual daily active user, ARPDAU also excludes any fluctuations in your user base, giving you a clear picture of how much money you made in a given day from the users who were in your app.How to increase ARPDAUARPDAU depends on many factors in your app. First, in-app features - traffic drivers or prompts to invite users to watch a rewarded video or make an IAP, as well as the prices and variety of in-app purchases. Secondly, the ads in your app - where they are placed, how frequently they appear, what kind of ads they are, and how relevant they are for your users. Third, external factors such as days of the week and special holiday times.Let’s take a look at 5 ways to increase your ARPDAU in more detail:1. Integrate rewarded video ads into your appRewarded video ads can increase app revenue significantly. How? Click-through-rates for rewarded videos are about 4 to 5 times higher than typical display ads because users have a reason to engage. The ad unit is more enjoyable for users to interact with, and they also know they will get something concrete - like coins, swords or extra lives - in return. And since app developers get paid for every opt-in ad engagement, rewarded videos equal higher ARPDAU for you.2. Nudge non-paying users towards IAPsRewarded video ads are also a great way to encourage those users who haven’t ever paid for an in-app purchase to do so. If the reward is similar to an IAP, they get a taste of the premium features that they’re missing out on, and then they are more likely to purchase it in future. One study found that users who watch rewarded video ads are more likely to make in-app purchases - 6 times more in some cases.3. A/B test ad placements in your appAds that interrupt user experience are unlikely to convert well, and worse - will annoy your users. If you’re going to have ads in your game, timing is everything - if your game has levels, show an ad at the end of the level, rather than the beginning or in the middle. If you have a turn-based game – show an ad at the completion of every single game (not after each turn). A/B testing can help to make sure you’re optimizing ad placement. Make sure to also cap the frequency that users are seeing ads in your app - an optimal rate is around 3 to 4 ads per session for a gaming app. You can use ironSource's ad monetization A/B testing tool to test different ad monetization strategies. and learn with certainty which one maximizes ARPDAU. 4. Segment your usersFrom whales to minnows, not all users are equal. Making sure to treat them differently is going to help give your ARPDAU a boost. Try modifying your IAP prices according to different user behaviors or geos, for example offering Halloween special deals on coins, or double rewards on a rewarded video for a user who hasn’t been in the app for a while. This is going to increase ad engagement, and you’ll see your ARPDAU go up as a result. Learn 4 ways to segment your users and boost monetization here.5. Use in-app biddingDevelopers everywhere are turning to in-app bidding as the sole setup model for monetizing their apps. In contrast to the traditional waterfall solution, which requires developers to manually optimize and rearrange ad networks according to CPM, in-app bidding completely automates the process - holding an auction for each ad impression and serving the impression to the highest-paying ad network. Because the impression gets filled by the highest paying network each time, developers don't risk losing out on more dollars. Since using in-app bidding, developers are seeing massive boosts in revenue - from Budfarm by East Side games which boosted ARPDAU by 60% with ironSource's in-app bidding solution LevelPlay to Metamoki which increased ARPDAU by 50%.]]></description><link>https://unity.com/blog/what-is-arpdau</link><guid isPermaLink="true">https://unity.com/blog/what-is-arpdau</guid><pubDate>Mon, 03 Aug 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[10 ways to speed up your programming workflows in Unity with Visual Studio 2019]]></title><description><![CDATA[Visual Studio 2019 offers world-class debugging, and lots of new tools and customization options so that you can set up your coding environment exactly the way you want it. It also comes with a range of powerful features for working with C# in Unity that helps you write and refactor code quicker than before. In this blog post, we will take a look at 10 tips on some of these features which may speed up your workflow too.Our Unity evangelist Arturo Nereu and Abdullah Hamed, program manager for Visual Studio Tools for Unity at Microsoft, recently hosted a Unite Now session sharing tips and tricks on how to get the most out of Visual Studio 2019 when developing in Unity.This post shows a quick overview of some of these tips. We also added links directly to those sections from the talk as well as other related content, if you want to dig deeper.Using Console.Log is an easy and quick way to help debug your project utilizing Unity’s console view. However, Visual Studio offers a more efficient way which becomes increasingly valuable as your project gets more complex. In Visual Studio, simply click the Attach to Unity button in the Visual Studio menu. This creates a connection between the two applications so that you can insert breakpoints and step through your code, while being in Play mode in Unity. You can also click Attach to Unity and play to start the execution without leaving your IDE. The beauty here is that it allows you to inspect the state of your code flow and values of the properties etc. at runtime. While this may seem trivial, being able to pause the execution at any time during gameplay and step through to inspect the specific state of the game and values of your properties in that exact frame, is a very powerful tool when debugging.Another handy option when working with breakpoints is that you can insert your own conditions with related actions such as a conditional expression which has to evaluate as true before applying in your debug flow.Visual Studio 2019 introduces Unity Analyzers. An analyzer works by detecting a code pattern and can offer to replace it with a more recommended pattern. Unity Analyzers are a collection of Unity-specific code diagnostics and code fixes that are open source and available on GitHub. Analyzers can provide you with a better understanding of Unity-specific diagnostics or simply help your project by removing general C# diagnostics that don’t apply to Unity projects. An example could be a simple conditional statement where you need to check if the GameObject has a specific tag to apply a certain behavior to it.if(collision.gameObject.tag == "enemy")
{
// Logic being applied to enemy GO
}The analyzer would be able to analyze your code, will detect the pattern and offer to use the more optimized method instead. In this case, the analyzer would suggest the CompareTag method which is more efficient.if(collision.gameObject.CompareTag("enemy"))
{
	// Logic being applied to enemy GO
}
While the above example represents a minor optimization tweak with no significant impact in a single script attached to a single GameObject, this may be different for a large scale project with 1000s of GameObjects with the script attached. It’s the sum of all parts when looking into performance optimization and Analyzers can make it easy to help you identify and improve your performance simply by reducing the unneeded overhead by optimizing the code syntax.You can also find a list of the analyzers here and if you are interested in learning more visit this blog post or jump directly to this part of the Unite Now talk.A common challenge when creating your scripts is the need to come back at a later point and revisit the code. That might be a result of implementing code snippets which eventually will need refactoring for better performance later but serves the current needs as you are f.x. testing out game mechanics. Visual Studio has a handy feature to keep track of this called Task List which allows you to track code comments that use tokens such as TODO and HACK, or even custom tokens. You can also manage shortcuts that take you directly to a predefined location in code. To create a task for later simply add the token in your code:// TODO: Change the collision detection once new colliders are readyThe Task List window, which you can access from under View in the menu, gives you an overview of all the tasks you tagged and links you to those specific parts of the code in just one click.As the list of action items in your project grows, you can even configure your own custom tokens in the task list and assign priorities and organizing for your refactoring process effectively. To customize your Task List tokens: go to Tools > Options.See the full example in the Unite Now session here.Code snippets are small blocks of reusable code that can be inserted in a code file using a right-click menu (context menu) command or a combination of hotkeys. They typically contain commonly used code blocks such as try-finally or if-else blocks, but you can also use them to insert entire classes or methods. In short, they offer you a handy way to save a lot of time by creating the boilerplate code for you.To surround your code with a snippet such as a namespace or region, press CTRL + K + S. That allows you to apply the snippet as demonstrated in the video below:You can find a step-by-step walkthrough of creating your own code snippets in Microsoft’s documentation (Visual Studio, Visual Studio for Mac).A common workflow when you are refactoring your code is renaming your variables to more descriptive and accurate names. Changing it one place obviously means you also have to fix all references to that variable. However, Visual Studio offers an easy shortcut to do this in one operation. Simply highlight the name of the variable you want to rename and right-click (or use the keyboard shortcut CTRL + R) and then rename the variable. Select preview changes to review the implications of the change before applying.You can use the same tip for changing the classes of your script but remember you have to rename the C# file accordingly to avoid the compilation errors. Learn more about the class renaming flow this part of the Unite Now session.Commenting or uncommenting blocks of code is another common workflow when refactoring or debugging your code. It can be a time-consuming task when you do it one line at the time. Visual Studio, however, allows you to comment out entire blocks of code using a simple shortcut command: Ctrl+K+C and Ctrl+K+U for uncommenting it again. If you are on Mac, simply use CMD+K+C to comment out and CMD+K+U to remove the comments again.Being able to comment out entire blocks quickly can be an efficient way to suppress specific game logic during your testing workflows.While Unity Collaborate makes it easy to save, share, and sync your project with others directly from Unity with a user-friendly visual interface, some teams and developers prefer using source control solutions such as GitHub. Working with GitHub for source control is now much easier with the Github for Unity plugin. The extension is completely open source and it allows you to view your project history, experiment in branches, craft a commit from your changes, and push your code to GitHub without leaving Unity. The GitHub authentication is embedded in Unity, including 2FA and with a click of a button, you can quickly initialize your game’s repository without having to use command-line instructions. It allows you to create a Unity specific .gitignore file so you don’t have to set it up manually. With Visual Studio 2019 also comes a new interface which makes it even easier to work with GitHub directly in the IDE.To activate the new interface in Visual Studio: Go to Tools > Options > Environment > Preview features > New Git user experience.You can also follow along with the video instructions from the Unite Now session, which shows a more in-depth walkthrough of getting started.Live Share enables you to share your instance of Visual Studio directly with your teammate using just a link, allowing them to edit your code and collaborate on your project in real-time. You don’t have to clone a repo or set up the environment first in order to do the sharing. You both just need to have Visual Studio installed and then it’s as easy as clicking a button to create the Live Share session.To get started simply select Live Share to generate a link to the parts of your code that you want to share with anyone that has Visual Studio or Visual Studio Code installed. A sharing session is created between you and your collaborators, allowing them to see your code without having to install anything except for the editor. It works almost instantly.You can learn more about Live Share from our Unite Session here, visit the Visual Studio product page or jump directly to the Quickstart guide here.Remembering the signature of all the MonoBehaviour methods is tricky and while the Unity documentation will have you covered, Visual Studio provides a neat feature that allows you to look it up directly in the IDE. Simply click CTRL + Shift + M, search for the function you would like to implement, and filter through the search result to find the method. Select the checkbox and click Ok to insert the boilerplate code for the method directly in your code ready for you to use.Several of the above tips are available with handy shortcuts and at the end of the day, knowing those shortcuts may be the biggest timesaver of them all. So let’s wrap up the list with a summary of the keyboard shortcuts to these tips and a few more as a bonus.What Windows Mac Search your entire project for anything. Use CTRL+T CMD + . Implement Unity Messages CTRL + Shift + M CMD + Shift + M Comment out code blocks CTRL + K / CTRL + C CMD + / Uncomment blocks of code CTRL + K / CTRL + U CMD + / Copy from clipboard history CTRL + Shift + V View task list CTRL + T No default keybinding, but you can bind it. Insert a surrounding snippet such as namespace CTRL + K + S: No default keybinding, but you can bind it. Renaming a variable while updating all references CTRL + R CMD +R Compile the code CTRL+SHIFT+B CMD + Shift + BVisual Studio 2019 is packaged with features and there are so many customization options that can enhance your productivity working with Unity depending on your specific workflows. There’s too many to cover them all here. We hope that the few tips that we shared here will inspire you to dive in and that you’re finding the format useful. Let us know if you have any tips we didn't cover, and feel free to share them with the community in the comments. We’d also love to hear if you would like more tips and tricks on how to improve your workflows in Unity and if there are any topics, in particular, that you would like to have covered in a future blog post.We are constantly working on improving the workflows and our teams are working closely with Microsoft in terms of giving you the best IDE experience. Hence we would love to hear from you if you have any ideas or feedback. Feel free to ping John Miller at @jmillerdev, Senior Program Manager, Visual Studio Tools for Unity at Microsoft, or share your feedback with us in our Scripting forum.]]></description><link>https://unity.com/blog/engine-platform/10-ways-to-speed-up-your-programming-workflows-in-unity-with-visual-studio-2019</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/10-ways-to-speed-up-your-programming-workflows-in-unity-with-visual-studio-2019</guid><pubDate>Tue, 14 Jul 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making of The Heretic: Digital Human tech package]]></title><description><![CDATA[Creating a realistic human is a complex technical challenge, as you need a huge amount of data to achieve a high level of visual fidelity.When working on The Heretic, the Demo Team developed tools to overcome many problems related to facial animation; attaching hair to skin; and eye, teeth and skin rendering in Unity. Those tools are now available on GitHub. Read on for a full technical breakdown of the process behind these solutions.My name is Lasse Jon Fuglsang Pedersen, and I am a Senior Software Engineer on the Unity Demo Team. During the production of The Heretic, one of the things I worked on is the set of technical solutions that drive the face of Gawain, the digital human in the film.This work was recently released as a standalone package on GitHub. In this blog post I will discuss some of the features of the package and share some insights into the development process behind those features.One of the goals for the digital human in The Heretic was to attempt to avoid the uncanny valley in terms of facial animation, while still taking a realistic approach to the character as a whole. To match the actor’s performance as closely as possible, we decided to try using 4D capture data (a 3D scan per frame of animation) for the animation of the face mesh, which would then at least have the potential to be geometry-accurate to the actor’s facial performance (where not obstructed).Using 4D capture data brought many interesting new challenges, as Krasimir Nechevski, our animation director, explains in more detail in this previous blog post. A lot of effort went into figuring out how to process and tweak the captured data, and then actually doing that, to get it into a state that we were happy with for the film.As an example, one of the issues we had was related to the geometry of the eyelids. Because eyelashes partially obstructed the eyelids during capture, the captured data also contained some influence from eyelashes, which manifested itself as noise in those regions. As a result, the geometry of the eyelids was inaccurate and jittery, and this meant that we had to find a way to reconstruct the geometry in those regions.The issue with the eyelid geometry was apparent quite early in the process, so as part of working on the importer for just getting the data into Unity, we also experimented with region-specific noise reduction and reconstruction, using differential mesh processing techniques. Specifically, we would perform noise reduction by smoothing the regional change in curvature over time, and we would perform reconstruction by transplanting the curvature of a (clean) base mesh onto each damaged region of each frame of the captured sequence.While the results were fairly robust, we felt they were unfortunately also a bit too synthetic when compared to the original data: The eyelids, while more stable, lost some of the original motion that effectively made them feel human. It became clear that we needed a middle ground, which might have required more research than we realistically had time for. So when an external vendor offered to tackle the reconstruction work, that was an easy choice. The GitHub package, however, includes the internal tools originally written for denoising and region transplant, as they might be useful as a learning resource.Another issue we had was that of fine surface details, or rather the lack of fine surface details, due to the resolution of the target face mesh: The face mesh of Gawain has ~28,000 vertices, and this was not sufficient for geometrically representing the fine wrinkles of the actor’s performance, much less the stretching of pores in the skin. Even if the raw 4D data had some of those details, we were not able to keep them after processing the data to fit the vertex budget of the mesh we were deforming and rendering. We considered baking a normal map per frame, but that would have required quite some space on disk, which we wanted to conserve.To handle the fine surface details, we decided to try to couple the geometry of the imported sequence with the pose-driven feature maps from a blend shape-based facial rig from Snappers Systems. The pose-driven feature maps from the facial rig contained the type of surface detail that we were missing in the imported sequence, like wrinkles and the stretching of pores. So the basic idea was this: If we could figure out which combination of blend shapes would best approximate each frame of 4D, then we should also be able to use those weights to drive just the pose-driven feature maps (excluding the deformation from the blend shapes), for added surface detail during 4D playback.Finding a good way to fit the blend shapes to the 4D was a two-step process. The first step was a least squares approach, for which we put the problem in matrix form. If we write up all the blend shapes (which are deltas to the base mesh) as one large matrix A, where each column holds the delta of a single blend shape, then the composite delta is given by Ax = b, where x represents the weights of the individual blend shapes.Solving for x is often not possible, due to A often not being invertible (in our case it is not invertible, simply because it is not square). It is, however, often possible to arrive at an approximate solution x*, by formulating the problem slightly differently: Using the so-called normal equation ATAx* = ATb, we can write the least squares solution as x* = (ATA)-1ATb, which then only requires that A has linearly independent columns. Working with blend shapes, we need to filter the included shapes to ensure that they are linearly independent, and then we can work towards an approximate solution: We precompute (ATA)-1AT for the filtered blend shapes of the rig, and then we plug in the delta b for each frame of 4D, to compute x* (the fitted weights) for each frame of 4D.While the unconstrained least squares approach outlined above was nice for building a basic understanding of the problem, it did not work well for us in practice. The solution would also sometimes contain negative weights, to get closer overall to the given 4D frame. But the facial rig expected blend shapes to be only added, not subtracted, so the fitted weights effectively exceeded the constraints of the rig, and therefore it was not always possible to translate them into meaningful wrinkles.In other words, we needed a non-negative solution to get the wrinkles that we wanted. To compute the non-negative solution, we used a subset of a third-party library called Accord.NET, which contains an iterative solver specifically for the non-negative least squares problem. After having dissected the problem and tested the unconstrained solution, we already had the filtered blend shape matrix A and the desired delta b, and it was straightforward to plug those into the iterative solver to obtain a non-negative set of fitted weights for each frame of 4D.As a side note, we also experimented with computing the fitted weights based on mesh edge lengths as well as based on edge curvatures, rather than base mesh position deltas. If we had not been able to remove the head motion from the 4D data, we would have needed to use one of these paths to make the fit independent of the head motion. For Gawain, we ended up fitting the position deltas, but the other two options are still available in the package.Before getting the 4D data into Unity, it is important to note that we first rely on external tools to ensure that the 4D capture data is turned into a sequence of meshes (delivered as .obj) with frame-to-frame matching topology. The topology also needs to match that of the target mesh for which the data is imported. (See Krasimir Nechevsky’s blog post for more details.)Then, to get the preprocessed 4D data into Unity and turn it into a runtime-ready clip, the package provides a custom type of asset, that we call the SkinDeformationClip. Once created, a SkinDeformationClip exposes the tools for importing (and optionally processing) a segment of 4D data, which can be specified as either a path to .obj files anywhere on disk (removing the need for including intermediate assets in the project) or as a path to Mesh assets already within the project.After configuring the SkinDeformationClip asset, click the Import button in the Inspector to start importing and processing the frame data. Note that if either mesh processing or frame fitting is enabled on the asset, this can take a while. After the import finishes, the clip asset now stores the imported frame intervals, fitted weights, etc., but not the final frame data. The frame data is stored in a separate binary next to the asset, so that we can stream the data efficiently from disk during playback.Once imported, you can play back the asset by dragging it onto a custom type of track for Unity Timeline, called the SkinDeformationTimeline. This type of track specifically targets a SkinDeformationRenderer component, which then acts as an output for the clip data on the track. The video below illustrates the process of sequencing and playing back the imported 4D data on the Timeline.Through using the custom track and the SkinDeformationRenderer, it is possible to also blend multiple 4D clips, which allows artists to get creative with the data. For example, for the first part of The Heretic we used only a very short segment of 4D data, which contained only a test phrase and the three-second performance for the initial close-up. And yet, through careful reuse (cutting, scaling, and blending), it was possible to use this same single clip for the remaining facial animation in the entire first part of the film.Since we chose to use the 4D data directly for the facial animation, we could not rely on bone-weighted skinning or blend shapes to resolve the positions of important secondary features, such as eyelashes, eyebrows, or stubble. Basically, we needed a way to resolve these features as a function of the animated face mesh itself.Technically, we could have loaded the processed 4D data into an external tool, modeled and attached the secondary features there, and baked out additional data for all of them. However, streaming in tens of thousands of extra vertices per frame was not viable in terms of storage, and the result also would not have been very dynamic. We knew that we needed to iterate on the 4D data throughout the production, so our solution would have to react to these iterations without a tedious baking step.To solve this problem, the Digital Human package has a feature that we called the skin attachment system. This system basically allows attaching arbitrary meshes and transforms to a given target mesh at editor time, and then resolves them at runtime to conform to the target mesh, independent of how the target mesh is animated.For the digital human in The Heretic, we used the skin attachment system primarily to drive the eyebrows, eyelashes, stubble and logical markers in relation to the skin. We also used the system to attach the fur mesh to the jacket, as Plamen Tamnev, Senior 3D Artist on the team, has described in more detail.To illustrate how to use the system, here are the steps to attach, for example, the transform of a GameObject to the face of Gawain:
1. Add a SkinAttachment component.2. In the Inspector, set the type of attachment to Transform.3. In the Inspector, point the target field to the SkinAttachmentTarget on the face.4. Move the transform to the desired relative location.5. Click the Attach button in the Inspector.Under the hood, when clicking the Attach button to attach a transform, the system uses the position of the transform to query a k-d tree for the closest vertex on the face mesh. The closest vertex is then used to identify all incident triangles to the closest vertex, and for each of the incident triangles, the system generates a local pose given the current position of the transform, resulting in a set of local poses for the transform.Each local pose is a projection of the attached point onto the plane of a given triangle, and it contains the vertex indices of the triangle, the normal distance from the attached point to the triangle, and the barycentric coordinates of the projected point.The reason that we generate multiple local poses for each attached point, rather than just for a single triangle, is to support points that do not belong to any particular triangle in the mesh. This is the case for some of our hair cards, for example, which float slightly above the mesh. To resolve the attached point based on multiple local poses, we first unproject the local pose for each triangle separately, and then average the results weighing by triangle area.Once generated, the local poses are stored in a large continuous array, along with all the other local poses for all the other attachments to the face. Each attachment keeps a reference into this data, along with a checksum, as a safety measure in case the underlying data is modified by other means.The process of attaching a mesh is very similar to that of a transform, just many times over. When attaching a mesh, the system simply generates a set of local poses for each vertex in the mesh, rather than for the single position of a transform.For meshes, there is also a secondary attachment mode called MeshRoots: With this mode, the system first groups the mesh into islands based on mesh connectivity, and then finds the “roots” of each island in relation to the face mesh. Finally, it attaches every vertex within each island, in relation to the closest root within the island. The MeshRoots mode is necessary for some use cases, because it ensures that the individual islands stay rigid. For example, the eyelashes are attached in this way, while the eyebrows are not. This is because the hair cards for the eyebrows are mostly flush with the skin and expected to deform, while the hair cards for the eyelashes are expected to maintain shape.At runtime, the system takes care that the positions and vertices of the attachments (transforms as meshes) are continuously updated to conform to the face mesh. Every frame, the final output state of the face mesh is calculated and used in combination with the known local poses to resolve all positions and vertices in relation to the skin. The image below illustrates the density of the attachments we used for Gawain.The runtime resolve is accelerated by the C# Job System and the Burst Compiler, which enables it to handle a relatively large amount of data. As an example, for the face of Gawain, the resolve jobs were collectively responsible for evaluating hundreds of thousands of local poses every frame, to resolve the secondary features of the face.When work started on the Digital Human package as a standalone release, one of the primary goals was to transition everything rendering-related to a strictly unmodified version of the High Definition Rendering Pipeline (HDRP), to ensure better upgradeability through new HDRP features for extensibility.For context: At the time when we started prototyping the visuals for The Heretic, we were still missing some rather general features in HDRP for extensibility. We did not yet have a sensible way of writing custom upgradeable shaders, and we did not yet have a way to inject custom commands during a frame, e.g., for a custom rendering pass.As a result, the custom shaders for the digital human (and several other effects in the film) were initially prototyped as direct forks of existing materials in HDRP, which at the time was still in Preview and still undergoing major structural changes. Many of the custom shaders also required core modifications to HDRP, which contributed to making upgrades often difficult. Thus, we were generally on the lookout for more extensibility features in HDRP, so that we would be able to reduce the number of customizations.Therefore, creating the Digital Human package involved transitioning those then-necessary customizations to use the current-day extensibility features now provided by HDRP. This meant porting the digital human custom shaders to Shader Graph, using the HDRP-specific master nodes, and using the CustomPass API for executing the necessary custom rendering passes. Also, thanks to Unity’s Lead Graphics Programmer Sebastien Lagarde and a team at Unity Hackweek 2019, HDRP gained the Eye Master node, which was feature-compatible with the custom work previously done for The Heretic and therefore a great help in porting the eyes.In the following sections I will go over the resulting shader graphs for skin, eyes and teeth, that can all be found in the package. There is also a shader graph for hair in the package, but it is mostly a pass-through setup for the Hair master node.In general, the skin shader relies heavily on the built-in subsurface scattering feature of HDRP, which readily enables artists to author and assign different diffusion profiles to emulate various materials, including different types of skin. The skin graph itself uses the StackLit master node, in order to provide artists with two specular lobes (a setup commonly used for skin and not supported by the Lit master node), and for this reason the skin shader is forward-only.For the two specular lobes, the primary smoothness value is provided via a mask map, similar to the regular Lit shader, while the secondary smoothness value is exposed as a tweakable constant in the material inspector. Similar to the regular Lit shader, the mask map also allows artists to control an ambient occlusion factor, as well as the influence of two detail maps: one for detail normals and one for detail smoothness, where the detail smoothness affects both the primary and the secondary smoothness value.In addition to the regular mask map, the skin shader also accepts a cavity map (single channel texture, with lower values in cavities), which can be used to control a specular occlusion factor and/or reduce smoothness in small cavities, such as pores in the skin. The influence of the cavity map can also optionally be blended out at grazing angles, to emulate the effect of small cavities being hidden from view at grazing angles.The skin shader also contains support for pose-driven features (e.g., wrinkles) from the specific Snappers facial rig that we used for Gawain. In the skin graph, this functionality is encapsulated in a custom function node, which has some hidden inputs that are not visible in the graph itself. These hidden inputs are driven by the SnappersHeadRenderer component in the package, which needs to be placed on the same GameObject as the SkinnedMeshRenderer that uses the shader.Another curious node in the skin graph is related to the tearline setup, which I will explain a bit later, following the eyes section. Basically, to allow the tearline setup to modify the normals of the skin, we have to compute and store the normals during depth prepass, and then specifically sample them again in the forward pass (instead of recomputing them, which would discard the intermediate processing).The custom eye shader for The Heretic was a collaboration with Senior Software Engineer Nicholas Brancaccio, who contributed some of the initial work, including the two-layer split lighting model, and the implementation of the evaluation function for the occlusion near the eyelids. For the Digital Human package, some of that previously custom functionality has moved to the Eye Master node in HDRP, which the eye graph uses as an output.The eye shader effectively models the eye as a two-layer material, where the first layer is used to describe the cornea and fluids at the surface, and the second layer is used to describe the sclera and the iris, visible through the first layer. Lighting is split between the two layers: specular lighting is evaluated exclusively for the top layer (representing cornea and surface fluids, which are more glossy), while the diffuse lighting is evaluated only for the bottom layer (iris and sclera).Refraction in the cornea is handled internally, and the effect depends on both the input geometry and a couple of user-specified parameters. The eye input geometry needs to be a single mesh that describes only the surface of the eye, including the bulge of the cornea.Then, given a user-specified cross-section that (roughly) describes where the surface of the cornea begins, we can determine during rendering if a given fragment is part of the cornea. If the fragment is part of the cornea, then we refract the view ray and intersect the refracted ray with a virtual plane that represents the iris. The iris plane is adjustable via an offset from the cornea cross-section, to enable artists to adjust the amount of visual parallax in the eye.To evaluate the diffuse lighting in the iris, the eye shader also specifically provides an option for refracting the incident direction of light towards the iris, based on the currently rasterized fragment of the surface (cornea). While this does not give us proper caustics (we only accumulate the contribution from a single fragment at the refracting surface), artists can at least rely on the iris not appearing unnaturally in shadow when the eye is lit, e.g., from the side. The refracted lighting feature is now part of the Eye Master node, and it can be enabled through the Eye Cinematic mode.We model the occlusion near the eyelids using an anisotropic spherical Gaussian. The distribution is driven by four markers (transforms) that track the eyelids using the skin attachment system. Specifically, we use two markers to track the corners of the eye to form a closing axis, and then another two markers to track the upper and lower eyelids, which allows us to infer a closing angle. The closing axis and the closing angle are then used to generate the necessary basis vectors for evaluating the anisotropic spherical Gaussian at the surface of the eye. We use the result of this evaluation directly as an input to the ambient and specular occlusion factors on the Eye Master node, as well as to (optionally) modulate the albedo to artificially darken the occluded region.In the eye graph, most of the described features, including the refraction in the cornea and the occlusion near the eyelids, are facilitated by a single custom function node in the graph, labelled EyeSetup, which provides a number of readable outputs to the graph itself. Much like the custom function node for the facial rig in the skin graph, the custom function node in the eye graph uses hidden parameters that are not controlled through the material inspector, but through script code, due to the complexity and per-frame nature of those parameters. For the eye graph specifically, the hidden parameters are driven by the EyeRenderer component in the package, which needs to be placed on the same GameObject as the renderer that uses the shader, in order for the shader to produce a meaningful result.The EyeRenderer component, in addition to computing and passing values to the shader, also provides some useful gizmos and handles that are meant to assist in setting up the eyes. For example, the gizmos allow artists to visualize and tweak the offset to the cross-section that defines the cornea region, or to inspect and slightly adjust the forward axis for the planar texture projection, in case the provided eye geometry is not exactly facing down the z-axis.Lastly, like in the skin graph, in the eye graph we also have a node that handles the integration with the tearline setup: Normals and smoothness are written during depth prepass, and then sampled again during the forward pass.To reconstruct the tearline (the wetness between the eyes and the skin), we rely on the HDRP CustomPass API, which allows applications to inject custom rendering work at certain stages during a frame.Using a custom pass that operates on the contents of the HDRP normal buffer (which holds both normal and smoothness data), we blur the normals and smoothness values in specific screen space regions on the face (e.g., where the eyes meet the skin). Since the skin and the eyes are forward-only materials, we also had to insert specific nodes in those graphs to ensure that they specifically sample the result during the forward pass.Creating a smooth transition in the normal buffer helps visually bridge the two surfaces. In combination with a high smoothness value in the region, this setup will often result in a specular highlight appearing in-between the two materials, which effectively makes the tearline region appear wet.To mark the regions where the blurring should occur, we use a simple setup of masking decals that are placed in a specific user layer and never render any color to the screen (except for debugging purposes). By placing the decals in a specific user layer, we can more easily filter and render them exclusively in a custom pass, which mostly just sets one of the HDRP user stencil bits. Once all the masking decals have been drawn into the stencil, then we effectively have a screen space mask for where to perform the blur. We also use this mask to avoid blurring past the edges of the desired blur regions, by dynamically shrinking the width of the blur kernel to the edge of the mask.For the tearline of Gawain, a masking decal was authored specifically for each eye, to visually overlap both the eyelid and eyeball in the neutral face pose, and then attached to the skin using the attachment system. To support a small gap between the eyeball and the eyelid (as was evident with some of our 4D data), we also slightly exaggerated the geometry, so that it would have more inward-facing overlap with the eyeball.The teeth shader relies on many of the features of the Lit master node, including the subsurface scattering and the mask for clear coat. Apart from using the existing features of Lit, the shader also adds a custom type of attenuation that we use to smoothly darken the interior of the mouth, based on the current size of the mouth opening.To approximate the current size of the mouth opening, we place six markers near the opening of the mouth, to form a polygon that roughly approximates the interior contour of the lips. For Gawain, we used the skin attachment system to drive these markers, so that they will follow the lips regardless of how the face mesh is animated.During rendering, we start by passing this polygon to the shader, and then in the shader we project the polygon onto the unit hemisphere around the current fragment to obtain a spherical polygon. Intuitively, this spherical polygon then tells us something about how much of the exterior is visible through the mouth opening, from the point of view of the current fragment.To darken the interior of the mouth, we then simply use the area of the spherical polygon, in relation to the area of the unit hemisphere, as a non-physical attenuation term (ignoring the cosine). Specifically, we attenuate the existing ambient and specular occlusion factors, the coat mask, and the albedo, before passing these to the Lit master node in the graph.Similar to the skin and eye graphs, the teeth graph also contains a custom function node whose inputs are not visible in the graph. For the teeth graph, the hidden inputs are provided by the TeethRenderer component in the package, which must be added to the same GameObject as the renderer that uses the shader.I hope this blog post has helped illustrate some of the challenges and work that went into creating the set of technical solutions for the face of Gawain.If you want to explore or build on the tools that we are sharing, you can download the library from GitHub and use the technology in your own projects, including commercial productions. We would love to see what you make with it!We’re sharing more learnings from the creation process behind this project on The Heretic landing page.]]></description><link>https://unity.com/archive/blog/technology/making-of-the-heretic-digital-human-tech-package</link><guid isPermaLink="true">https://unity.com/archive/blog/technology/making-of-the-heretic-digital-human-tech-package</guid><pubDate>Fri, 10 Jul 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Achieve better Scene workflow with ScriptableObjects]]></title><description><![CDATA[Managing multiple Scenes in Unity can be a challenge, and improving this workflow is crucial for both the performance of your game and the productivity of your team. Here, we share some tips for setting up your Scene workflows in ways that scale for bigger projects.Most games involve multiple levels, and levels often contain more than one Scene. In games where Scenes are relatively small, you can break them into different sections using Prefabs. However, to enable or instantiate them during the game you need to reference all these Prefabs. That means that as your game gets bigger and as those references take up more space in memory, it becomes more efficient to use Scenes.You can break down your levels into one or multiple Unity Scenes. Finding the optimal way to manage them all becomes key. You can open multiple Scenes in the Editor and at runtime using Multi-Scene editing. Splitting levels into multiple Scenes also has the advantage of making teamwork easier as it avoids merge conflicts in collaboration tools such as Git, SVN, Unity Collaborate and the like.In the video below, we show how to load a level more efficiently by breaking the game logic and the different parts of the level into several distinct Unity Scenes. Then, using Additive Scene-loading mode when loading these Scenes, we load and unload the needed parts alongside the game logic, which is persistent. We use Prefabs to act as “anchors” for the Scenes, which also offers a lot of flexibility when working in a team, as every Scene represents a part of the level and can be edited separately.You can still load these Scenes while in Edit Mode and press Play at any time, so that you can visualize them all together when creating the level design.We show two different methods to load those Scenes. The first one is distance-based, which is well suited for non-interior levels like an open world. This technique is also useful for some visual effects (like fog, for instance) to hide the loading and unloading process.The second technique uses a Trigger to check which Scenes to load, which is more efficient when working with interiors.Now that everything is managed inside the level, you can add a layer on top of it to better manage the levels.We want to keep track of the different Scenes for each level as well as all the levels during the entire duration of the gameplay. One possible way of doing this is to use static variables and the singleton pattern in your MonoBehaviour scripts, but there are a few problems with this solution. Using the singleton pattern allows rigid connections between your systems, so it is not strictly modular. The systems can’t exist separately and will always depend on each other.Another issue involves the use of static variables. Since you can’t see them in the Inspector, you need to change the code to set them, making it harder for artists or level designers to test the game easily. When you need data to be shared between the different Scenes, you use static variables combined with DontDestroyOnLoad, but the latter should be avoided whenever it is possible.To store information about the different Scenes, you can use ScriptableObject, which is a serializable class mainly used to store data. Unlike MonoBehaviour scripts, which are used as components attached to GameObjects, ScriptableObjects are not attached to any GameObjects and thus can be shared between the different Scenes of the whole project.You want to be able to use this structure for levels but also for menu Scenes in your game. To do so, create a GameScene class that contains the different common properties between levels and menus.Notice that the class inherits from ScriptableObject and not MonoBehaviour. You can add as many properties as you need for your game. After this step, you can create Level and Menu classes that both inherit from the GameScene class that was just created – so they are also ScriptableObjects.Adding the CreateAssetMenu attribute at the top lets you create a new level from the Assets menu in Unity. You can do the same for the Menu class. You can also include an enum to be able to choose the menu type from the Inspector.
Now that you can create levels and menus, let’s add a database that lists the levels and menus for easy reference. You can also add an index to track the current level of the player. Then, you can add methods to load a new game (in this case the first level will be loaded), to replay the current level, and for going to the next level. Note that only the index changes between these three methods, so you can create a method that loads the level with an index to use it multiple times.
There are also methods for the menus, and you can use the enum type that you created before to load the specific menu you want – just make sure that the order in the enum and the order in the list of menus is the same.Now you can finally create a level, menu or database ScriptableObject from the Assets menu by right-clicking in the Project window.From there, just keep adding the levels and menus you need, adjusting the settings, and then adding them to the Scenes database. The example below shows you what Level1, MainMenu and Scenes Data look like.It’s time to call those methods. In this example, the Next Level Button on the user interface (UI) that appears when a player reaches the end of the level calls the NextLevel method. To attach the method to the button, click the plus button of the On Click event of the Button component to add a new event, then drag and drop the Scenes Data ScriptableObject into the object field and choose the NextLevel method from ScenesData, as shown below.Now you can go through the same process for the other buttons – to replay the level or go to the main menu, and so on. You can also reference the ScriptableObject from any other script to access the different properties, like the AudioClip for the background music or the post-processing profile, and use them in the level.Minimizing loading/unloadingIn the ScenePartLoader script shown in the video, you can see that a player can keep entering and leaving the collider multiple times, triggering the repeated loading and unloading of a Scene. To avoid this, you can add a coroutine before calling the loading and unloading methods of the Scene in the script, and stop the coroutine if the player leaves the trigger.Naming conventionsAnother general tip is to use solid naming conventions in the project. The team should agree beforehand on how to name the different types of assets – from scripts and Scenes to materials and other things in the project. This will make it easier not only for you but also for your teammates to work on the project and to maintain it. This is always a good idea, but it’s crucial for Scene management with ScriptableObjects in this particular case. Our example used a straightforward approach based on the Scene name, but there are many different solutions that rely less on the scene name. You should avoid the string-based approach because if you rename a Unity Scene in a given context, in another part of the game that Scene will not load.Custom toolingOne way to avoid the name dependency game-wide is to set up your script to reference Scenes as Object type. This allows you to drag and drop a Scene asset in an Inspector and then safely get its name in a script. However, since it’s an Editor class, you don’t have access to the AssetDatabase class at runtime, so you need to combine both pieces of data for a solution that works in the Editor, prevents human error, and still works at runtime. You can refer to the ISerializationCallbackReceiver interface for an example of how to implement an object which, upon serialization, can extract the string path from the Scene asset and store it to be used at runtime.In addition, you might also create a custom Inspector to make it easier to quickly add Scenes to the Build Settings using buttons, instead of having to add them manually through that menu and having to keep them in sync.As an example of this type of tool, check out this great open source implementation by developer JohannesMP (this is not an official Unity resource).This post shows just one way that ScriptableObjects can enhance your workflow when working with multiple Scenes combined with Prefabs. Different games have vastly different ways of managing Scenes – no single solution works for all game structures. It makes a lot of sense to implement your own custom tooling to fit the organization of your project.We hope this information can help you in your project or maybe inspire you to create your own Scene management tools.Let us know in the comments if you have any questions. We would love to hear what methods you use to manage the Scenes in your game. And feel free to suggest other use cases you would like us to cover in future blog posts.]]></description><link>https://unity.com/blog/engine-platform/achieve-better-scene-workflow-with-scriptableobjects</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/achieve-better-scene-workflow-with-scriptableobjects</guid><pubDate>Wed, 01 Jul 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making of The Heretic: The VFX-driven character Morgan]]></title><description><![CDATA[Creating a character with the help of Visual Effects Graph was an interesting challenge for the Unity Demo team. As someone who spent a lot of time in his career waiting for renders to finish, Demo team’s Technical Artist Adrian Lazar has appreciation for the creative options made possible by real-time authoring. Read the post below for his detailed breakdown of the process behind the character Morgan, as well as useful tips for anyone doing VFX in Unity.My name is Adrian Lazar and I’ve been working in the computer-generated graphics industry for the last 18 years or so, starting with post-production in advertising and transitioning to real-time graphics with game development in 2009. I have a generalist background and in the last few years I’ve been taking more technical art tasks - this helped me ship my own indie title together with a small, but talented team.When I joined Unity’s Demo Team in early 2019 as a technical artist, we were getting ready to release the first part of The Heretic so I helped with some finishing effects. Soon after that we started talking about Morgan, the god-like, VFX-driven character introduced in the short film 2nd part.On the storytelling side, Vess (Veselin Efremov, writer, director and creative director of The Heretic) had some clear requirements: Morgan needed to morph between multiple states, calm and angry, female and male or a combination of these, grow in height multiple times over, crumble, catch fire, and more.Regarding the appearance, on the other hand, Vess intentionally left it quite open for exploration and experimentation. We had some early concepts created by our former colleague Georgi Simeonov, but those didn’t get into the vfx and shape-shifting aspect of the character, both fundamental to the final look - this meant that I had a pretty blank slate to start which was challenging but fun!I started my initial tests in Houdini 3D, a tool I feel comfortable with from before and that gave me a good opportunity to explore and bounce some initial ideas with Vess.Of course, for the production of the real-time short film, we wanted the effects that build Morgan to be developed inside Unity, so that it would be easy to iterate on the character and make sure it reacts correctly to everything else that happens around it. Therefore I had to look for a different solution and move away from pre-simulating the effect in another software.One thing that gives me joy as being part of Unity’s Demo Team is having the chance to stress test, improve, and sometimes develop tools and processes that our many users can make use of daily.In Morgan’s case, the opportunity was two-fold: create a complex VFX-driven character that runs in real-time, and equally important, take a first step into real-time authoring of complex effects. This was very exciting for me.Just think about it, being able to develop and iterate on the character look in the final environment, from the desired camera angle and with the final lighting, post-processing, and other VFX! This is a dream that would have been unthinkable only a few years back.It was not a smooth ride, but with a good team effort, we achieved both.And so, with a visual look open to experimentation and with real-time playback and real-time authoring being the two technical goals, I turned to a Unity tool still in its infancy back then: the Visual Effects Graph developed by Julien Fryer and the Paris team.The VFX Graph was still quite new at the time, and had a long road ahead until you could really use it for true & deep real-time authoring. However, the benefits it promised were huge. I was excited about not having to wait for the effects to be simulated in DCC, exported & evaluated in Unity then back to DCC for tweaks.
As a team, we knew that we wanted to be able to do changes until the very end, sometimes hours before the final deadline, and why wouldn’t we - this is one of the promises of real-time graphics.It was a back-and-forth familiar to those working on both: first, you need to have an idea of what you want to achieve, then you need to build the tech for it, but, as with any other creative process, things are rarely straightforward. Ideas are changed and adapted in the process, sometimes due to creative direction, other times due to the tech restrictions.To complicate things even more, we were in uncharted waters with a tool that hadn’t been used at this scale before, working towards real-time authoring of a complex VFX-driven character.So the tech and the look-dev closely followed each other and when I had both it was great, fast iterations, fast experimentation, and just overall lots of fun. This creative freedom was addictive, with the visuals changing direction in a manner that was closer to working on concept art rather than on a production.One added benefit of fast experimentation is that you can quickly change directions and repurpose a test, as it was the case when I was working on some details across the face. It didn’t turn into anything that was useful for that purpose, but it inspired a new direction for the calm version of the hair.But there were a few times when I got stuck because one part couldn’t advance without the other. If I didn’t know where to take the character creatively or I couldn’t find a way to do what I wanted with the tech I had, things couldn’t move forward.Luckily my colleagues were there to help, so here’s a shout out to them:Vlad Neykov (Lead Graphics Test Engineer) was a fantastic resource, answering patiently all my questions and contributing with ideas about how to solve different technical problems.Julien Fryer (VFX Graph Lead Programmer) helped optimize Morgan for The Heretic. Stress testing our tools using internal productions like The Heretic allowed us to discover new opportunities for improvement. Morgan’s performance requirements led to the development of an LOD system by Julien which will be available soon to all of VFX Graph users.Paco (Plamen Tamnev, 3D Artist in the Demo Team) provided a much needed visual pass over Morgan - working with him was a great experience.Krasi (Krasimir Nechevski, our Animation Director), who led and supervised the rig and animation of the character, and even performed the motion capture, had invaluable feedback for how the effects in the meteorite and the impalement shots should behave.After 3 major versions and countless smaller experiments, the final version of Morgan was finally emerging, just as we were getting close to the final deadline.VFX Morphing: The effects covering Morgan can be morphed between a brighter version and a darker one. This is not (only) a color change. There are two separate sets of systems, each with its own geometry, density, color, effects etc. The idea was to make the effect similar to a skin layer being peeled or shed off but without making it look gross or graphic. During the morph particles are being expelled from the body and the face also has an emissive edge outlining the change. There are multiple options of customizing this effect in real-time, including changing the colors and meshes for the body, how many particles and being expelled, how those look, and more.
Body Morphing: Independent of the VFX morph, the body can be morphed as well using blend shapes, changing from female to male, with the effects adapting to the new shape.
Fire: While it looks more like ambers than proper fire, this highly customizable effect can be used to add an extra layer of intensity when required. It was the last effect built, just a few weeks before the final deadline.

The contribution amount can be set for each body part (helmet, head, eyes, body & cloth), the direction and turbulence can be modified in real-time and you can also change the color gradient of the fire between the two states of the morph. You can also choose between three output modes, lit mesh (used in The Heretic), unlit (used in Morgan standalone package) and screen space blur/distort - an experimental mode that didn’t make it in the final video but is still available in the Morgan Asset Store package, under fire options.Crumble: As the name suggests, Morgan can crumble into pieces, with several options for how this can happen.

The effect is using a starting point that the user can set (for The Heretic, it was the tip of the right index finger) and uses that origin position to create a radial gradient across the entire body. That gradient is being modulated by two noise masks and the final result is used to drive two sliders, Crumble A and Crumble B. The idea of having two sliders was to make the crumble effect a bit more controllable during animation, as Crumble A runs only across one of the noise patterns and doesn’t destroy the body completely. Crumble B can be animated with a small delay to make a complete destruction.

After the crumbling effect is triggered, you need to use either the Reset or the Recompile VFX Graph option to bring the character back to its previous state. This is required because the crumbling activates a few physical forces under Update. That means that the previous state cannot be played back, only reset.For The Heretic short film, we wanted a more physical destruction so we combined this crumble effect with a simulation exported from Houdini.Debug: Being able to debug properties early on was crucial for being able to experiment with different versions of this character, for example, you can use the debug option to see the noise masks I was describing above. Debug options were built alongside each main feature.
Realtime Customization: Each of the features mentioned above has several customization options exposed in Morgan’s Inspector. In total, there are over 300 parameters that can be animated over time as you desire.
Other Related Effects: While most of the time was spent on Morgan’s character, there are also 2 other big effects: the meteorite when part of the arm moves towards Gawain and the spikes impaling him.Morgan is made of 17 visual effect graphs each covering a different part. We did this so that it would be easier to manage them.
First, we needed the particles to spawn on the skinned mesh and follow it during character animation. As skinned meshes aren’t yet supported by default in the VFX Graph, we had to find another way around it.
The position, normals and tangents for the base meshes are rendered in UV space, which are then set as texture parameters in the VFX graphs - this allows us to position and orient the particles correctly on the character.

The vertex color and the albedo texture are also rendered in UV space - these textures are used to manipules certain properties like size, scale, angle and pivot.For the Morgan package, the process of generating the textures was greatly improved by my colleagues Robert Cupiz (tech and rendering lead for The Heretic) and Torbjorn Laedre (principal engineer at Unity Demo Team).
A custom editor centralizes all the graphs making up Morgan - this makes it easy to update shared properties fast. There are about 300 parameters exposed but there’s no real limit for how many can be added, however having too many parameters in the interface can make it less practical to work with.Using animation curve samplers is a quick way to add different kinds of ease in and out for animations, but also delays. They are very versatile and I have used them a lot, usually to drive a lerp between two values, being floats, vectors, colors etc.
Tying multiple properties and actions to a single parameter is really powerful. For example, the fire intensity slider drives multiple properties related to the fire. Again, it’s a matter of balancing convenience and speed vs granularity of what gets exposed in the end.Subgraphs are great for reusing the same nodes across multiple graphs, but be careful at what point in development you add them. The way they’re currently implemented, each time you update and compile a subgraph, all the graphs using it get recompiled. Depending on how many and how heavy the main graphs are, it can take a long time for them to recompile. My suggestion is to add subgraphs when you have tested the logic in one graph and if it happens that you need to do frequent updates to the sugraphs, it might be faster to copy-paste the nodes on one of the main graphs, do the changes, and then copy-paste them back in. Not that convenient, but I had to do it on several occasions because the compilation time across all the graphs for each tweak was too long.
For most instances, I find the sliders for exposed parameters to be more user friendly than regular numerical inputs. They feel more fluid and natural during tweaking and you can use the range to keep the user between some values that are safe not to break the effect.
Every parameter of a graph can be exposed so that the user can change it from the Inspector but that doesn’t mean it should be done. Be careful not to drown yourself or the person who will use the effect in too many options. With Morgan, I went through many changes over what was exposed, searching for a good balance between accessibility and power.
Although not a technical tip, something that I underestimated was that solving both the technical and the artistic challenge was more difficult than the sum of the two combined because of how interlocked these two were in this case.The best way to learn more about Morgan is to download the standalone package and play with it. You can find more blog posts and videos about the creation process behind this project on The Heretic landing page.
For someone who has spent a long time waiting for simulations and renders to finish, this realtime revolution that is reshaping so many industries is a dream come true. I'm looking forward to the next challenge we'll pick up.]]></description><link>https://unity.com/blog/technology/making-of-the-heretic-the-vfx-driven-character-morgan</link><guid isPermaLink="true">https://unity.com/blog/technology/making-of-the-heretic-the-vfx-driven-character-morgan</guid><pubDate>Mon, 29 Jun 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Blend virtual content and the real world with Unity’s AR Foundation, now supporting the ARCore Depth API]]></title><description><![CDATA[Unity’s AR Foundation 4.1 supports Google’s new ARCore Depth API. With the addition of this capability, AR Foundation developers can now deliver experiences that blend digital content with the physical world more realistically than ever before.With its extensive feature set and vast reach, Google’s ARCore is one of the most popular and powerful SDKs available to developers of augmented reality (AR) experiences. We have been working closely with Google to ensure Unity users have swift access to newly released ARCore features. The release of the ARCore Depth API is a significant milestone as it enables enhanced understanding of physical surroundings as well as more realistic visuals in AR Foundation-based experiences.ARCore can take advantage of multiple types of sensors to generate depth images. On phones with only RGB cameras, ARCore employs depth-from-motion algorithms that compare successive camera images as the phone moves to estimate the distance to every pixel. This method allows for depth data to be available on hundreds of millions of Android phones. And on devices that include a Time of Flight camera, the depth data is even more precise.AR Foundation now includes the following new features:Automatic occlusionAccess to depth imagesThe most obvious effect of ARCore’s depth information is the ability to realistically blend digital content and real-world objects.We’ve expanded AR Foundation’s existing support for pass-through video to include per-pixel depth information provided by ARCore so that occlusion “just works” on supported devices. By simply adding the AR Occlusion Manager to the same GameObject that holds the AR Camera and AR Background Renderer components, the depth data is automatically evaluated by the shader to create this blending effect.When occlusion is combined with AR Foundation’s existing support for ARCore’s Lighting Estimation capabilities, augmented reality apps can achieve almost seamless visual quality.AR Foundation provides developers convenient access to the same per-pixel depth data it uses for automatic occlusion. Depth data is a powerful tool that allows developers to add rich interactions with the user’s surroundings. For example, the depth data could be used to build a representation of real-world objects that can be fed to Unity’s physics system. This creates the opportunity for digital content to appear to respond to and interact with the physical surroundings.This capability opens the door to novel AR game experiences such as The SKATRIX by Reality Crisis. This upcoming title leverages the ARCore Depth API to generate meshes that transform the physical surroundings into an AR skatepark.Having access to the raw depth data gives developers the tools to create unique interactive AR experiences that weren’t previously possible.The 4.1 versions of the AR Foundation and ARCore XR Plugin packages contain everything you need to get started and are compatible with Unity 2019 LTS and later. Samples demonstrating how to set up automatic occlusion and depth data are located in AR Foundation Samples on GitHub.We’re excited to see the enhanced visuals and rich experiences made possible by the ARCore Depth API. And we look forward to continuing our close collaboration with Google to bring more awesome AR functionality to AR Foundation developers.For more information please check out Google’s ARCore Depth API announcement and Depth Lab app to see examples of this tech that were made in Unity. Finally, join us on the Unity Handheld AR forums as you try out this latest version of AR Foundation. We’d love to hear about what you’ve created using the new features, and we welcome your feedback.]]></description><link>https://unity.com/blog/technology/blend-virtual-content-and-the-real-world-with-unitys-ar-foundation-now-supporting-the</link><guid isPermaLink="true">https://unity.com/blog/technology/blend-virtual-content-and-the-real-world-with-unitys-ar-foundation-now-supporting-the</guid><pubDate>Thu, 25 Jun 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[What is gametech? An overview of the ecosystem]]></title><description><![CDATA[Just five years ago, gaming was a $91 billion-a year industry: fast forward to 2020, and it is set to generate an astonishing $160 billion in revenue. To put this figure into perspective, it makes the gaming market over double the size of the global recorded music industry (around $19 billion) and the worldwide film box office (around $43 billion) combined.While there have always been technology companies supporting the video game industry, the explosive growth it has experienced in the last decade, spearheaded by mobile gaming, has fed and fueled an extensive ecosystem of supporting companies which are further accelerating this growth. As these companies have consolidated their positions within the different layers of the industry, and increased their contribution to its continuous growth, leading market research firm Newzoo released an infographic to map out the ecosystem, which has become known as “gametech”. Below, we look at what defines this ecosystem and dive into the main categories and companies.What makes a gametech companyThe evolution and rising importance of this sector led Newzoo to mark a separation between companies with relevant products, and those with dedicated solutions that answer the specific needs of those on the field, building the games.Whereas some companies build products to support the widest variety of customers with one-size-fits all solutions, the defining characteristic of a gametech company is having a product optimized towards serving the gaming industry, from console to mobile. It is this focus that has catalyzed the explosive growth of the market, and as competition increases at every layer, new innovations are born that propel its growth further.A case in point is the rise of innovative new tools in the last few years to empower game developers to better measure, optimize, and automate their ad monetization. This is in response to the growing significance of ad revenue as a meaningful revenue stream for game developers. The explosive arrival of hyper-casual mobile games, whose entire business model is based on ad revenue, has added impetus to this, and this is reflected in the map’s categories.Let’s dive into Newzoo’s map of the gametech ecosystem.The gametech landscapeNewzoo's map divides the gametech ecosystem into four categories, which all have multiple subcategories. We’ll go through all four, highlighting some notable companies from each.DevelopmentDevelopment includes every aspect needed to actually build a game. It is broken down into engines, like Unreal (owned by Epic Games and a large factor behind their $15 billion valuation) and Unity (valued at $6 billion); art tools like Blender (who received a $1.2M grant from Epic Games last year) and Adobe’s Substance; middleware like Easy Anti-Cheat and Battleye; in addition to audio tools, software management tools, and localization tools.The latter has become particularly important in recent years, as mobile devices have become more affordable across the globe, leading to the proliferation of the global mobile gaming audience. At the same time, the technology to target these users at scale through UA campaigns has become increasingly advanced. The combination of these factors has provided a fertile ground for the growth of localization tools.OperationsIn the game tech ecosystem, the operations category is focused largely on mobile games. Newzoo breaks it down into game performance monitoring, with leading companies including GameBench and Bitbar; ad mediation companies like ironSource and Admob (owned by Google) which optimize ad monetization operations; ad monetization tools, such as ironSource and Facebook Audience Network; and customer engagement such as One Signal and Airship. In addition, game analytics is an important category that helps developers measure and analyze the health of their games: notable companies in this space include devtodev and the appropriately named GameAnalytics. Another category within operations is platforms, which is dominated by a handful of players: Steam and Epic for PC games, Playstation and Xbox for console games, and Google Play and the App Store dominating the mobile space. Epic, launched by the makers of Fortnite in December 2018, has proven that it’s possible for newcomers to penetrate this market, but it’s still relatively early days. The final subcategory in Newzoo’s breakdown of operations is infrastructure and cloud services, like Google Cloud, Firebase (purchased by Google in 2014), and AWS: Game Tech. GrowthThe marketing ecosystem within game tech is equally multi-layered. User acquisition is a significant part, with the pie including companies like ironSource, UnityAds, and Facebook. A crucial component of UA, ad creatives, has become a subcategory of growth itself, with companies like Luna Labs and AppOnboard carving a niche for themselves. App Store Optimization (ASO) has also emerged as a subcategory of its own in recent years, with companies like Splitmetrics and Storemaven helping UA managers improve their games’ app store pages to better attract and convert users. In the context of streaming’s explosive growth, influencers, another growth subcategory, have become increasingly important tools, particularly for PC and console titles, which dominate the streaming space. Influencers are also of growing use to mobile games, in the context of increased automation within user acquisition and competition for users’ attention.Another important part of the UA process is ad attribution and UA analytics, which allows UA managers to track where their acquired traffic of new gamers has come from, in addition to providing various fraud solutions. Key players in this space are AppsFlyer, valued over $1 billion, and Adjust, who received $255 million in investment last year.Market AnalysisAnalyzing all this growth are companies such as Newzoo, GameRefinery, App Annie, and GameAnalytics, which was bought by Chinese ad-tech firm Mobvista in 2016. Research firm Quantic Foundry also provides valuable insight into gamer motivations.Looking aheadThe growth of the game tech ecosystem shows no signs of slowing down, as games become fixtures in the way people spend their free time. There are numerous reasons why it is superseding other entertainment categories such as film and television. Perhaps its most valuable advantage is its unlimited ability to leverage content (theoretically, video games never need to “end”: new levels and features can frequently be added and optimized), which in turn removes any kind of limit to the potential revenue generated per user, whether that be from ads or in-game purchases. This contrasts starkly with streaming platforms like Netflix where content has an expiry date (be it the end of a movie or the end of a series) and the maximum revenue a user can generate is capped at the subscription fee, regardless of whether they watch 5 or 500 episodes a month. So, what does the future have in store for the gametech ecosystem? As has been the case until now, we can expect increased competition in all layers to drive further innovation, whether that be core development tools to create brand new gaming experiences, or new products for UA managers to drive and analyze marketing campaigns. Because gaming is more reliant on technology than other entertainment mediums, the impact of technological change is stronger, and thus further innovations will lead to a continuous cycle of growth, in which developers, consumers and tech companies enjoy the rewards.
]]></description><link>https://unity.com/blog/what-is-gametech</link><guid isPermaLink="true">https://unity.com/blog/what-is-gametech</guid><pubDate>Thu, 11 Jun 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making of The Heretic: Digital Human Character Gawain]]></title><description><![CDATA[Gawain is the main character from The Heretic, the real time short film made in Unity, written and directed by Veselin Efremov. This article will cover the creation of the character and give some insight into the different aspects of his production.We worked with a casting agency to choose the actor who would perform the role. This was the first digital role for actor Jake Fairbrother. You can normally see him in theatrical plays in London.The performance took place on several separate occasions. We started with a body scan at 4D Max , together with a 3D scan of the face and a first batch of 4D performance at Infinite Realities at their studio outside of London. We continued with capturing body performance at our mocap studio in Sofia, and later returned to Infinite Realities for additional 4D performance when we knew that we could scale the amount of screen time it is viable for. Voice performance was captured at SideUK studio in London.The project started with some early concept explorations by Georgi Simeonov. He tried different styles based on his initial discussions with Director Veselin Efremov, with some elements that were essential to the story, like the briefcase for example, being present in almost all of the versions.In the second stage, some of the ideas from the initial exploration were developed further and became more focused after Georgi and Veselin discussed what was working from the previous sketches. One thing that is interesting to note here is the subtle implementation of the medieval knight theme in the design of Gawain’s costume.The final version of the concept sketch for Gawain. Some things changed as we moved along, but we tried to stay as close as possible to the original design.Paco: After we received the initial scan and the cleaned neutral pose of the face from Infinite Realities, we had a meeting with our animation director Krasimir Nechevski to figure out some of the technical details that we needed to clear up before continuing with the outfit and animations, things like the uv layouts for the face, the different texture sets and how and where we split those, also choosing where to split the head from the body. This last one was especially important as the director Veselin made it clear from the beginning that he wanted to see as much of the neck and the area around it as possible in the closeups that he was planning with the 4D capture of the actor’s performance.We had to be careful with the distribution of the textures sets also because they had different resolutions, for example the body and legs had a much lower resolution compared to the face, mostly because we don’t see them pretty much anywhere, but we choose to have them just in case. After all of that was decided on, we transferred and tweaked the scanned data onto the new model and made some adjustments as we moved forward.The eyes went through a lot of polishes and tweaks to get to where we needed them to be, a lot of that creative guidance and drive came through the director Vess, who served as a reality check on what could be improved with them.The tech for the eyes was made by Lasse Pedersen with some help from Nicolas Brancaccio. The eyes used a single mesh for the cornea, iris and sclera, the shader controlled many features related to the eyes directly inside of Unity. We also had a mesh around the eyelids controlling the smoothing of the normals between the eyeball and the eyelids to give us a softer transition, it also served as a tearline mesh.An example of some of the controls that the shader gave us, in this case the AO of the eyes instead of having to use a separate shadow mesh for that with a baked texture.The technology stack used to bring Gawain to life, the shaders and all tools mentioned in this blogpost can be found in the Digital Human package we released recently. If you want to learn more information about the tech aspects of Gawain, stay tuned to this blog, we’re working on another article that goes more in-depth on the skin attachment system, shader, and other technical details.Now Krasimir Nechevski, our animation director will explain more in-depth the process behind the facial performance for the character of Gawain.Krasimir: Making a digital human pipeline was one of the main goals of the Heretic and a major accomplishment for the team. We have been avoiding it in the past by making robots or nightmarish creatures, but it was time for us to give it a go. There are multiple challenges in achieving this- there is the skin, hair, teeth and eye shading each with a very different and difficult set of problems, but the hardest part of making a digital double in my opinion is reproducing the facial movement with all the subtleties. It is a well-known problem and falling short usually leads to an awkward feeling in the viewer a.k.a. the uncanny valley.There are many ways of animating the face of a character- blendshape rigs, 4D (volumetric video), machine learning, simulation, all with varying pros and cons. We chose a somewhat unorthodox method so here I will try to chronologically explain our reasoning and process. To sum it up, we decided to use 4D directly and add only the fine detail wrinkle maps from a rig.It is worth noting that lately machine learning approaches of processing 2D video have been very successful at achieving convincing results and there are some examples that manage to produce incredible results by synthesizing facial performance in 3D. Based on this it is safe to assume that ML will solve facial performance in the future. But an important aspect of ML is data, a lot of data. Acquiring clean 4D sample data is essential, so we can view 4D as a milestone for achieving fully synthesized facial performance with machine learning.First we needed a proof of this concept, so we decided to make a very short segment of facial animation with the condition that if it fails we should be able to finish the movie without it. We started by doing the first capture session at a vendor [Infinite Realities] which has been developing a 4D capture system and achieving amazing results.Even though the system produced one of the best results at the time, there are some challenges that come with using 4D. Firstly it uses photogrammetry and there are some imperfections to the method that limit the quality. The major obstacles are usually due to an occlusion of the surface of the skin by either hairs or visibility, there is a certain amount of micro noise, reflective surfaces produce a lot of glitches, the head needs to be stabilized and lastly there is no temporal coherence of the meshes between the frames.Above you can see how the raw, decimated data looks like and how every frame of the volumetric video is made up of random triangles that are unique to it.Luckily there is a solution for that- a software called Wrap3D and is developed by [Russian3DScanner]. This tool is usually used for creating coherent meshes for blendshape based rigs. For most of the time during our initial research we tried cleaning the data ourselves with Wrap3D. It works by utilizing a set of small dots on the actor’s face and using those as markers to wrap the same mesh over all of the frames and thus achieving consistency between all frames. You start by wrapping the first frame and then with the help of the markers visible in the texture you wrap the first frame on to the second frame and so on.The markers on their own are not enough though, since there is quite a lot of error when putting those manually. To fix that there is a feature in Wrap3D that uses optical flow and by analyzing the texture makes the match between the consecutive frames pixel perfect. After projecting the textures for each frame the result is a stream of meshes with the same topology. With that out of the way we had to deal with the remaining imperfections like noise and replacing damaged sections by transplanting them from healthy meshes. The lead programmer involved in the 4D processing- Lasse Pedersen - developed a set of tools for importing and working with the data inside Unity.Even though the result was great it still lacked micro details because the processing and noise removal somewhat smooths the surface and loses the pore level details. We knew it could be pushed even further by adding fine details which are animated. To achieve this we used a FACS based rig developed by SnappersTech, which had the same topology as our 4D. Lasse developed a solver that managed to give accurate activations of the wrinkle maps from the rig adding this level of detail back. Here is an example of a later stage of our research.Later all of the mesh cleanup was done in DCC, but the tools Lasse developed have great potential and other uses. If you want to know more about that, Lasse is currently writing another blog post where he describes all of his work in-depth. The tools are also included in the Digital Human package we released recently.By a lucky coincidence not long before our deadline for the first part of the project I met the guys behind Wrap3D at a conference and they agreed to collaborate. It was hugely successful and they delivered the cleaned 4D for our initial test extremely fast and with excellent quality.After seeing the final result we were more confident than ever that it is a path worth exploring further. It was still far from perfect, but it did not feel uncanny. After the test was done and our pipeline proven we decided to add many more closeup shots with facial performance in the second part of the project relying completely for the 4D processing on our partners at Infinite Realities and Russian3DScanner. They also continued improving their tools and equipment and delivering even better results.To achieve our final result by adding wrinkle maps we needed a really good facial rig. We planned on using it for facial performance that was further away from the camera.FACS based rigs are a mainstream approach for solving facial performance. They are inspired by the so-called FACS (Facial Action Coding System) developed in 1978 by Paul Ekman, which is a common standard to systematically categorize the physical expression of emotions, and it has proven useful to psychologists and animators alike. A FACS based rig mixes hundreds of blendshapes of extreme poses for each AU (action unit) which is roughly every muscle of the face. Often adding some of these shapes together produces incorrect results which are fixed with the so called corrective and intermediate blendshapes. The result is a very complex system which is then usually controlled by capturing the performance of an actor with an HMC (head-mounted camera) and solving which blendshapes need to be activated.To animate the eyes Christian Kardach developed a tool that used a computer vision approach to track the irises from a render in Maya.Other issues with 4D worth mentioning is combining facial performance and body performance. The system for capturing high quality facial performance is very big and has a narrow useful volume. The actor needs to perform sitting with a very limited range of motion for the head. Later when we shot the motion capture I had to create convincing movements for the body that fit as best as possible. It would have been best if there was a way to capture such high fidelity 4D with a head-mounted device, but such technology is still not available.Paco: We used the body scan of the actor as a base for building the outfit for the character of Gawain in Marvelous Designer. We prepared a proxy version of the body that was easy to work with, especially when it was time to simulate the jacket with the many animations that Gawain had, it was only necessary to have the main shapes that the jacket would interact with like the bag on his hip and the shirt’s overall silhouette.Krasimir: Gawain’s body rig is composed of a few layers on top of each other. The main tool for animation and motion capture cleanup was Motionbuilder. At the base of the rig there is a skeleton compatible with both Motionbuilder and Maya.The Maya version of the rig had an additional deforming rig layer, which added twist and fan joints, a double knee setup and other details. The Snappers rig was referenced in the Maya scene which allowed for it to be safely iterated without affecting the main file.For the first part of The Heretic we did the motion capture of the actor at our internal studio in Sofia. For the second part we used the help of a motion capture vendor TakeOne.Paco: I’ve used Marvelous Designer for pretty much all of Gawain’s outfit, except for the shoes. All except for the jacket, were built with the traditional pipeline of making the base for the high poly mesh inside of Marvelous and then polish and texture it as a low poly asset that was skinned to the character.We initially tried to simulate the jacket in real time with Caronte, but after many attempts it never felt quite right and it wasn’t what the director initially hoped for. I began making a few tests with simulating the jacket inside of Marvelous and at this point Vess had to make the tough decision of scrapping the work that we had done with Caronte so far, it was obvious that the trade off in quality was too big compared to the output that we got directly from Marvelous Designer.The final sewing pattern for the jacket in Marvelous Designer. This was the mesh with the final resolution that was used for the low poly simulation. I exported it as a triangulated mesh to 3ds max where I did a custom UV layout and textured it in Substance painter after that.At this point I had a textured model with the custom UV’s and the original model in Marvelous both triangulated and matching vertex for vertex. I used the original untextured version in Marvelous for the different simulations and then I used a skin wrap in 3ds Max and used the exported simulation to drive the textured custom mesh that I did before that.I ended up going with this approach, because it seemed like a relatively safe and non destructive workflow, since I had relative freedom to do adjustments and have consistent results.For the topology of the jacket I used the triangulated topology from Marvelous in order for the jacket to deform in exactly the same way as it would there.The first iteration of the jacket removal that I did in Marvelous, using the simplified simulation proxy of Gawain. There were still a few small kinks to work out at this stage, but it worked as a proof of concept. We had some back and forth with Krasimir on how to go about it and after he took off his own jacket a bunch of times he came up with the animation that we ended up using for the simulation.The very first iteration of the outfit that we had, a lot changed especially for the jacket. This was the version that we tried to simulate with Caronte, so we left it a bit bulkier and with no prebaked wrinkles and deformations, as those should have come naturally from the simulation itself. Another thing that changed a lot was the collar of the jacket. What we ended up with was less bloated and it worked a lot better in all of the shots.For Veselin it was important that the character should have a more open design for the shirt’s neckline, especially for the closeup shots, where having unnecessary details in the way could take away from the actor’s performance. In the above shot is the first iteration of the shirt that I did based on Georgi’s designs, we tried a less typical design for the shirt’s neckline, but we failed to realize that it would turn out to be a bit of a problem in some shots, especially the ones with lower camera angles, so we had make a quick adjustment to it after seeing it in context.Other than the neckline, the design remained mostly the same, with some small balancing tweaks of the design to accommodate the new silhouette of the border.It’s a similar story with the additional equipment on top of the shirt, after seeing more and more shots with it, Vess realized that less is more in this case as well and the cleaner look helped a lot with some of the last shots of the film, where we had the character without the jacket.For those shots at the end of the film it was crucial to have a clean design that is readable and helped to drive the focus towards the face. Also having a red shirt where the heart of the white golem would be at the very end is a visual that the Vess was very keen on having from the very beginning.Paco : The pants and the leg pouch, they went through some additional tweaks later on, but overall they remained pretty close to that initial setup.The knee pads on the pants went through some revisions as well, the idea that Georgi had for those in the concept. was for them to vaguely resemble a medieval knight’s armour, something that we wanted to have hinted in some other elements as well, things like the elbow pad on the left arm and the shoulder design of the jacket.Initially we didn’t have fur on the collar of the jacket, that came later from one of the talks with the director Vess, he suggested that having finer details for this part of the jacket would give us a lot of visual fidelity for the closeups where we see the face.I decided to use Xgen and Maya to scatter the cards for the fur and did a quick grooming pass on them to add a bit of clumping and length variance before I began to map them onto a texture atlas. The final thing that helped to ground the fur a bit more in the shots and counter some of the repetition of the texture since there were too many hair cards for them to have unique uv’s was to add vertex paint that acted as an AO and color offset.After that we used Lasse’s attachment tool to attach the fur to the collar, the same as for the facial hair and eyelashes.I made a textured model for the gauntlet device on Gawain’s left arm. The lower part along the knuckles is intended to be seen directly, while the upper part serves as foundation that would be covered by the same type of animated wires that tech lead Robert Cupisz was creating for the Boston character.The idea that Vess had for this device was that it gives Gawain tactile feedback without him having to look at it, something that we see in one of the shots at the beginning of the film. It’s how Boston communicates with Gawain.The model was broken in different texture sets at 2k resolution and exported at 4k for some of the main objects, the rest remained at 2k for the final export. All of the textures were made by using the generators and tools in Substance Painter.Paco: Gawain’s briefcase began with a concept blockout from Georgi Simeonov and from there I took over, refined the model and textured it in Substance Painter.One of the more interesting features of the briefcase was the self-retracting strap that is seen when we first meet Gawain. There is also a small fan that suggests cooling functions of the case to go along with the temperature display on the side.An interesting fact about the temperature display is that I actually made it red in the beginning as it was in the original design by Georgi and we had it like that for almost the entire production, until one day when Vess was working on one of the very last shots where Gawain drops the briefcase, he realized that it’s a bit to reminiscent of a bomb that is about to be detonated. This was a nice catch as this was definitely not his original intention, also a lot of the design was based on cooling, having things like vents and fans, so if anything it should have been cold, so he suggested the colder cyan colored display and a temperature that is more extreme and interesting at the same time, close to the absolute zero, but not quite.For the belt strap of the briefcase I initially made a regular opaque rubber that had slight reddish tint to it, but when Vess began working on the finals and lighting he made an experiment with the transparency feature of the Lit shader and we were pleasantly surprised how good it looked, so we ended up using this transparent silicone type of material. Vess also made a texture that controlled the roughness of the transparency and tint of the material for it to be properly grounded and weathered, otherwise it would have been too artificial and clean looking.For the coin that Gawain uses to open the portal, Vess needed something that is based on a realistic medieval design, something that would be a hint to the deeper lore behind the character’s past adventures and would make sense to have as an artefact.Working on The Heretic was a great learning experience, we tackled many challenges during the production that we never had before and hopefully we would do it even better the next time around. We would like to thank all of the people that were involved with this production, it was a great experience working with all of you.We really hope that people will find some of the information in here helpful for their own work. See our page for The Heretic for additional blog posts and webinars.If you have additional questions about the Digital Human Character package, sign up for our next live Unite Now session "Meet the Devs: Deep Dive into The Heretic assets" on June 17 at 9 am PDT.]]></description><link>https://unity.com/blog/technology/making-of-the-heretic-digital-human-character-gawain</link><guid isPermaLink="true">https://unity.com/blog/technology/making-of-the-heretic-digital-human-character-gawain</guid><pubDate>Wed, 10 Jun 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Unity Mars – a first-of-its-kind solution for intelligent AR]]></title><description><![CDATA[Unity Mars provides augmented reality (AR) creators everywhere with specialized tools and a streamlined workflow to deliver responsive, location-aware AR experiences into users’ hands.Unity Mars is the world’s first authoring solution that brings real-world environment and sensor data into the creative workflow. That means you can quickly build mixed and augmented reality experiences that are context-aware and responsive to physical space. And they will work in any location with any type of data. From the beginning, we designed Unity Mars to solve the most common pain points across the entire AR development cycle: defining variables, testing scenarios, and delivering AR experiences that intelligently interact with the real world.AR apps are made to be used in real-world conditions, but it’s notoriously difficult – if not impossible – to manually define all the potential variables your user might encounter when using your app. What physical objects will be in their environment, and where will they be placed? How will the user hold their phone? Will they be sitting or standing? And even if you know the exact physical site where they’ll be using the app, rooms can be rearranged and there’s still a multitude of human factors to consider. Unity Mars is unique as an AR authoring tool because it enables you to take into consideration all these variables, while also providing you with a visual workflow that lets you move through the prototyping phase quickly, and with very little coding.To build your app, you begin with proxies that represent real-world objects. With your framework in place, you set conditions and actions on your proxies to tell the app how to respond to them.With visual aids for “fuzzy” authoring, you define minimum and maximum measurements for real-world objects rather than coding precise values.With the WYSIWYG Simulation View, you visualize your app exactly as it will run in the real world. Instead of coding, you simply drag your content directly into the view and Unity Mars creates the appropriate proxies and conditions for you.To help you get started, we’ve provided Starter Templates, which cover popular AR use cases including a training tutorial application that works with all of our indoor and outdoor environment templates. And we’ll be adding more soon.If you’ve built an AR app before, you know how difficult it is to test on a wide range of devices and in a multitude of locations. Even if you have a specific place in mind, like an event space, you may not be able to test it thoroughly beforehand, given variables like crowds and weather. In short, it’s impossible to test an AR app for every possible user reality. Since we’re not able to bend the laws of time and space, we went for the next best thing – the ability to fully test your AR experience without leaving Unity Mars.The Simulation View provides you with environment templates that simulate data so you can test your AR experiences against a variety of indoor and outdoor rooms and spaces. That means that you don’t need to have real-world data on hand or have to physically test the experience wherever you want it to work. You can also model your own simulation environments or use photogrammetry scan data.Once you’ve built and tested your AR experience in the Unity Mars authoring environment, you need to make sure it will react intelligently whenever and wherever the end-user interacts with it. Unity Mars enables that. Its runtime logic adapts responsively to the real world, which is especially important for training and remote-guidance apps that must “understand” where physical objects are located.You can use any type of real-world data in your app, including surfaces, images, body-tracking (coming soon), and more. The always-on query system gives your app contextually relevant behavior based on the user’s surroundings. By addressing the toughest challenges in each phase of AR app development, Unity Mars gives creators the ability to finally deliver AR experiences that live up to the end user’s expectations: digital content that seems to live in and react to the real world.While developing Unity Mars, we engaged with a number of innovative studios eager to literally get their hands on this new technology. One of them is Sugar Creative, a leading studio based in the UK recognized for their cutting-edge AR and VR experiences. In partnership with Dr. Seuss Enterprises, Sugar Creative used Unity Mars to create Dr. Seuss’s ABC AR, an app that enhances how children learn to read by bringing the Dr. Seuss characters to life. Will Humphrey, their lead creative and studio manager, has this to say, “Unity Mars has been the toolkit that has allowed us to realize a new horizon, a shift in the potential of immersive experiences by enabling them to become truly dynamic. Put simply, Unity Mars is adding intelligence to AR.” Other developers working with early versions of Unity Mars have created a variety of Augmented Reality applications such as sales and marketing experiences for an auto showroom, and a training application for factory workers. Regardless of the use case, they all concur that Unity Mars is ushering in the next generation of AR content by giving them more creative freedom and flexibility.As well as the features and benefits explained above, Unity Mars leverages our Auggie-award-winning AR Foundation framework to enable you to build an experience once in Unity and deploy it across multiple mobile and wearable AR devices. This authoring workflow fundamentally changes not only how you create AR experiences, but also elevates the quality of the experiences you deliver. You can try Unity Mars for free for 45 days.Try for freeVisit our Unity Mars page to find more information about features, pricing, and tutorials. And, make sure to watch our Getting Started with Unity Mars webinar to learn everything you need to get up and running with Unity Mars.]]></description><link>https://unity.com/blog/engine-platform/introducing-unity-mars-solution-for-intelligent-ar</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/introducing-unity-mars-solution-for-intelligent-ar</guid><pubDate>Mon, 08 Jun 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Giving game developers a head start]]></title><description><![CDATA[Catsoft Studios builds essential game creation tools that shave time off production so you can focus your energy where it counts.Every game begins with an idea – a world to build, a compelling game mechanic, a feature that players are bound to fall in love with – but it takes a lot of work to bring that idea into fruition. Catsoft Studios creates tools to help make the journey from idea to playable game a lot smoother. Built around the studio’s core product, Game Creator, this hard-working Unity Asset Store publisher has produced a slew of tools, templates, and systems designed to help you bring your ideas closer to reality.“Game Creator acts as a bridge between game programming and design,” says Marti Nogue Coll, the main force behind Barcelona-based Catsoft Studios, describing the ethos that drives the publisher’s Asset Store offerings.“I like to think of the game development cycle as a set of layers. When you create your game from scratch, you start from the lowest level and have to make your way up to the top. Unity gives you a tremendous head start,” he explains. “Game Creator aims to push this even further. When you want a character to move to a certain position, you don’t want to deal with direction vectors, acceleration formulas, lerping between animations or obstacle avoidance. You want to move a character from A to B. That’s what Game Creator is all about: making game development more human-friendly.”Game Creator is the base, a core package of common, genre-agnostic systems, including cameras, characters, variables, and a high-level visual scripting solution. Modules add and extend these features with gameplay elements from managing inventory to defining melee fight systems to crafting quests. The Stats module helps you to create intricate RPG attribute systems, while the Dialogue add-on is a system for managing complex branching conversations between characters. Each integrates closely with Game Creator to boost developers’ freedom and productivity, and the visual scripting system can be extended with free custom nodes shared on the Game Creator Hub. The Game Creator ecosystem includes features with appeal for game designers as well as developers – really, Marti claims, his tools are for “anyone with a game idea.”As a computer science student based in Barcelona, Marti discovered that he had a flair for creating tools. “I worked on a project where we had to develop an RPG mobile game. We spent almost nine months developing the tools and assets, and only two to flesh out the game,” he says. “The fact that those first nine months were more satisfying than the stressful latter ones was a hint for me that I may enjoy creating tools more than developing fully fledged games.”Marti took advantage of a two-week break between semesters to dig deeper into UDK, RPG Maker, and Cocos 2D, and it was around the same time that he fell in love with Unity. “When I opened Unity 2.6, I fell in love with its simplicity,” he recalls. “A big scene view with an island for me to play with, scripts that get automatically compiled and a clear interface. It simply clicked.”From there, the shift toward developing creator tools for the Asset Store felt natural. Marti has observed that many programmers who work on games are constrained by tight deadlines that don’t leave them enough time to build great tools for their own workflow – instead, they’re often forced to create things that just barely get the job done. “Focusing on Game Creator makes this work the other way around,” he explains, “putting all the effort into the tools, and, from time to time, testing them by joining a game jam.”Catsoft Studios currently has eight packages on the Asset Store, but Marti says that he uses assets in his own dev process as well. “The Asset Store is a place full of hidden gems and well-known top-notch products,” he says, citing UMotion Pro animation editor and the wide-ranging suite of Synty Studios art asset packages among his go-to resources.He’s fueled by the collaborative energy and collegial spirit of the Asset Store community, which helps him to refine his tools to better serve the game developers who use Game Creator and its modules. “So far, it’s like a dream job,” he says. “Game developers are very passionate about making games. This means that when someone sends you an email, it’s because they genuinely want to know something, not because their boss told them to ask.”Looking forward, Catsoft Studios is working on a new module called Traversal, which he plans to follow up with a “research phase” exploring how best to create assets that harness the latest Unity features like polymorphic serialization, DOTS, and the UI Toolkit, among others.For Marti, publishing on the Asset Store creates a virtuous cycle of creativity – developers use the tools he creates to fuel their projects, while engaging with customers encourages Marti to keep pushing the envelope on what he creates for them.“Most users usually have a very clear idea of the game they want to make and are excited about developing them,” says Marti. “Talking and discussing ideas is a blast of good energy and excitement, which boosts our motivation to continue further developing better tools.”]]></description><link>https://unity.com/blog/games/giving-game-developers-a-head-start</link><guid isPermaLink="true">https://unity.com/blog/games/giving-game-developers-a-head-start</guid><pubDate>Mon, 25 May 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Use articulation bodies to easily prototype industrial designs with realistic motion and behavior]]></title><description><![CDATA[In Unity 2020.1, now in beta, we will have a new Physics component: ArticulationBody. Articulations make it easier than ever to simulate robotic arms and kinematic chains with realistic physics and movement. Along with other improvements from PhysX 4.1, Unity is more capable than ever of simulation for industrial applications.With Unity 2019.3 we upgraded our physics library from PhysX 3.4 to PhysX 4.0. Now, the Unity 2020.1 beta takes users a step forward with an upgrade to PhysX 4.1. While previous builds of that library delivered an excellent performance for a wide variety of game types, modeling reality for non-gaming applications was more difficult to accomplish. Modeling kinematic chains, like the type you’d see in a rag doll, robotic arm, or mechanism with several concurrent hinges, would result in stuttery, and unrealistic motion. Not only would these joints look peculiar, but they would also be impossible to use for simulating a real device, impeding efforts to model or prototype industrial designs.One of the major culprits of these real-world shortcomings was the selection of joint components that connected rigid bodies together. These joints, coupled with a physics solver optimized for game performance over fidelity, resulted in kinematics that failed to simulate realistically.Learn more about the overall improvements brought by PhysX 4.1 here.Certain applications require constraining the motion of some rigid bodies relative to each other. To visualize this, imagine connecting the skeleton bones of a rag doll, a multi-jointed robotic arm, or having a door rotating on its hinge. This has traditionally been made possible by the means of the joint components such as the FixedJoint or the ConfigurableJoint that connect two Rigidbody objects together.Behind the scenes, each joint will be decomposed into a few primitive constraints, such as a linear constraint to keep the bodies at some specific distance or an angular constraint to keep the bodies oriented in a specific way around a particular axis. Those same constraints are used to keep the bodies from overlapping each other by maintaining the same distance apart. All of the constraints combined will be plugged into an iterative solver that aims at converging to a set of impulses to apply to each of the connected pairs of objects in world space that will position them to satisfy all of the constraints, if possible.The first problem is the sheer number of conflicting factors that can create convergence issues for the solver. Iteration count, the relative masses of connected bodies, and the total complexity of the set of the constraints in a scene can create an unsolvable scenario. In cases like this, the partial solution is used, so certain constraints are left unsatisfied.The second problem is that the magnitude of the impulse applied depends on the joint error -- a value that shows how badly a constraint is violated at a given time. Because of this error compensation behavior, there will always be at least some springy effect, exactly as if the bodies were connected by a set of damped springs, especially when joints are chained together.Our solution to the above kinematics problem is the new concept of articulation: a set of bodies organized in a logical tree, where a parent-child relation expresses the idea of mutually constrained motion. There is always a single root body, and there can be no loops. We use Unity’s transform hierarchy to express articulations.Now, users can easily model an existing robot like the Universal Robots UR3e below and simulate a task that more accurately reflects what that movement would look like in the real world. This allows roboticists to visualize a particular movement sequence, test new code, or even validate new designs in a synthetic environment.Articulations help roboticists and other industrial developers in two major ways: they move in a more similar fashion to their real-world counterparts, and they can be constructed faster than the old RigidBody+Joint, saving development time.We anticipate that one of the main use cases for articulations will be in the field of robotics. Robotic arms often have six or more joints linked serially in a row, which means that small errors in each relative joint pose can have a potentially large effect on the pose of the end effector; errors are propagated up the kinematic chain which creates unrealistic movements and an end effector position that has drifted off target.Simulation can help roboticists accelerate their development time by modeling many deployment scenarios and unit tests virtually, and then execute them at scale rather than trying to run those same suites of tests on a real robot in real-time. We hope that the ArticulationBody component, as well as the improvements to PhysX, can help roboticists use Unity for their simulation efforts.The amount of degrees of freedom in a given parent-child relationship depends on the actual joint type used. Currently, we support:Fixed: has zero degrees of freedom and is used to lock the bodies relative to each otherPrismatic: has one degree of freedom, which is a linear offset along a particular axis relative to the parentRevolute: has one degree of freedom, a rotational analog of the PrismaticSpherical: has up to three degrees of freedom, and is a ball-in-socket joint that only allows relative rotations but no linear motionIn order to further increase the realism of these joints, a new solver based on Featherstone’s algorithm is used. This technique computes the effects of forces applied to a structure of joints, links, and solid bodies using reduced coordinates- that is, space where each body has as many coordinates relative to its parent as there are degrees of freedom. Previously, we relied on maximal coordinates that were more performant for general use cases but made sacrifices to accuracy and precision to gain that performance.Forward dynamics and articulations in a reduced coordinate space help satisfy the high requirements for precision and accuracy that robotic arms need. Along with other improvements provided by PhysX 4.1 such as the TGS solver, articulations make reliable robotic arm simulations possible in Unity for the first time. Modeling a robot using the iterative joint solver required precise tuning and shortcuts that would still fail to match the movement of a real robot.We use the forward dynamics algorithm to simulate articulations in the reduced coordinate space (that is a space where each body has as many coordinates relative to its parent as there are degrees of freedom). It scales linearly with the total amount of degrees of freedom in an articulation, and can be faster than using the traditional iterative solver that scales with the number of constraints instead while computing a more accurate result.To support articulations in Unity, we added one new component: the ArticulationBody. Drawing an analogy with regular physics, ArticulationBody is like Rigidbody and ConfigurableJoint in one component. In an articulation, all bodies except the root one have a joint connecting them to their parent, that’s why they were not separated into individual components.The shape of the bodies is described by using the regular Collider component, just like with Rigidbodies.Once created, the bodies in an articulation cannot be moved by the means of the Transform component, because it can break the limits set by the reduced space coordinates. The only exception is the root body, that can be moved using the ArticulationBody.TeleportRoot function. ArticulationBody won’t respond to the changes in the Transform component by design.That said, there are several possible ways of interacting with an articulation. Firstly, forces and torques can be applied to each body in an articulation. Secondly, each joint has a linear drive per each degree of freedom that can be controlled by setting linear and angular targets. Finally, it’s possible to alter the poses of bodies in the reduced coordinate space directly.One particular advantage of articulations is that the quality of simulation doesn't directly depend on the mass ratio of connected bodies. With rigid bodies and fixed joints, simulation started to look unrealistic with mass ratios higher than 10:1 between connected bodies. In the following example, however, you can see a dimensional grid of articulation bodies connected with fixed joints can still be simulated precisely, even with the red spheres being 1000 times heavier than the black ones.Simulation can help roboticists accelerate their development time by modeling many deployment scenarios and unit tests virtually, and then execute them at scale rather than trying to run those same suites of tests on a real robot in real-time. We hope that the ArticulationBody component, as well as the improvements to PhysX, can help roboticists use Unity for their simulation efforts.To see how a serial link robot arm can be constructed with articulation joints, check out our robotics demo project.Download Unity 2020.1, now in beta, to try your hand at using ArticulationBody.]]></description><link>https://unity.com/blog/industry/use-articulation-bodies-to-easily-prototype-industrial-designs-with-realistic-motion-and</link><guid isPermaLink="true">https://unity.com/blog/industry/use-articulation-bodies-to-easily-prototype-industrial-designs-with-realistic-motion-and</guid><pubDate>Wed, 20 May 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 tips to scale your offerwall campaigns and increase profit]]></title><description><![CDATA[Running offerwall ad campaigns is a surefire way to acquire high-quality users cost-effectively.Offerwalls function as mini in-game stores which list out tasks for users to complete, such as installing another game and reaching level 5, in exchange for in-game currency. With the right offerwall user acquisition strategy, advertisers can acquire users that go on to play for months, if not years, and generate extremely high ARPUs - within RPG, for example, some advertisers see offerwall campaigns generate ARPUs above $100.The key of course is in optimizing the campaigns toward ROAS, setting the right event, and capitalizing on high traffic such as during special promotions, also known as currency sales. Read on for best practices for maximizing profit from your offerwall campaigns.1. Use data to choose the right CPE eventFrom an advertiser’s perspective, choosing the right CPE event for an offerwall campaign to run with is key for maximizing long-term profit and engagement - and data should play a big part in that choice. In other words, it’s not enough to simply see that the competition is using “Level 50” as their offerwall event and do the same. Instead, you need to choose the event that best suits your game flow and user behavior, taking into account when users are dropping off and when they’re paying. We recommend relying on data and nothing else - not your competitors, and not your gut instinct. Essentially, you want to choose an event that occurs just after the “tipping point,” which is the point in the game in which users do something valuable that is likely to bring about payout, scale, and engagement. For example, if you see that on D7, users generally make an in-app purchase, it’s best to set the event as something that may occur on D8. Otherwise, if you set it too early, the user will complete the event and have no incentive to continue on to make that IAP, leaving you ROI negative.To help choose the right event, we also recommend running at least 3 offerwall campaigns at any given time - each with a different type of in-game event depending on how many days it takes a user to complete the event. That includes one shallow in-game event, one medium, and one long. This will enable you to more easily test which events deliver that perfect balance between scale and ARPU. In addition, running with multiple events ensures that you’re widening your net and appealing to as many users as possible.During testing, don’t just differentiate events in terms of depth and level. Also test the text on the offerwall event, the instructions in the pop-up that follows, and the icon that goes near it. You’ll be surprised how much control you have as an advertiser over what you can show users - and anything can be tweaked. Is a short explanation that’s simple and to the point best? Or does a longer one that offers more details on how to complete the offer improve performance?By testing multiple events and playing with the descriptions, Huuuge Games quickly reached their D7 ROAS KPI with good scale. In fact, their D7 ROAS for offerwall was 9x higher than rewarded video, and D7 ARPU was 5x higher. Read the full case study.2. Increase bids ahead of special offerwall promotionsOften, networks like ironSource will announce special offerwall promotions ahead of time to take place on major holiday weekends like Christmas, Thanksgiving, and New Year’s Day. The already high traffic these holidays bring, combined with promotion’s promise to raise rewards for a limited time only, guarantees increased offerwall engagement for publishers. In order to capitalize on this traffic, we recommend advertisers raise their bids in time for the special promotion. Doing so boosts the chances that your offer tops the publishers’ offerwalls, making it one of the first ones users see.Lilith Games, for example, was running an offerwall ad campaign for their game Rise of Kingdoms within a publisher’s double credit promotion over Thanksgiving weekend. By raising their bids, Lilith topped most publishers' offerwalls, and as a result, was able to increase offerwall volume 4x. On the monetization side, their ARPU went up by 3x and purchase rate by 20%, delivering a 2x increase in their D7 ROAS. Read the full case study here.3. Adjust ROAS goals for each eventIt’s always best practice to optimize a campaign’s ROAS goal according to the most accurate, granular LTV curve available. However, we often see that advertisers run the same ROAS goal for all their offerwall campaigns. But LTV curves vary per each offerwall event, that means advertisers should be setting different ROAS goals for different events. For example, you may see that a shallow event like “install and complete level 1,” which takes 1 day to complete, has a D90 ARPU of $10, while a deep event by the same advertiser like “install and completel level 11,” which takes 7 days to complete, generates a D90 ARPU of $60. Though there are fewer users completing the deeper event, the ones who do generate an extremely high ARPU, and retain better.In the graph below, we can see that the very successful, deep event is already recouping ROAS within 20 days, while the shallow event is taking 90 days to recoup. It’s likely that the advertiser is optimizing their offerwall campaigns towards some number in the middle. However, by adjusting the ROAS and increasing the bids for the deeper event, we’d likely see a surge in traffic and profitability.We see below that the deep campaign reaches 200% ROAS in 90 days. If the advertiser shifts the ROAS curve to hit 100% within 60 days, they increase their bids to $45 for the cost per engagement campaign, which lowers the ROAS goal from 51% to 32%. The bid increase lets the advertiser scale higher and faster, and maximize profits.On the other hand, the bids for the shallow campaign are probably too high - by lowering bids and increasing the margins, the advertiser can save and increase profit. As for the advertiser’s shallow event, which reaches 100% ROAS after 90 days, we can lower the breakeven day to 60 days and change the ROAS goal accordingly.]]></description><link>https://unity.com/blog/offerwall-campaign-tips-advertiser</link><guid isPermaLink="true">https://unity.com/blog/offerwall-campaign-tips-advertiser</guid><pubDate>Mon, 11 May 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2020 events update]]></title><description><![CDATA[In our Unite Now blog post a few weeks ago, we announced that Unity would not be hosting a physical event this year. Instead, Unite 2020 will be completely digital. Since that post, we’ve received a lot of questions, so we wanted to take a moment to bring everyone up to speed on the details we know today.We are working through various creative solutions to deliver the content our Unity community loves, like speaker sessions and hands-on learning. We’ll also maintain some of the key ingredients of in-person Unite events, including our Expert Bar, “meet the devs,” and networking, and new experiences will be added. In true Unity fashion, we will collaborate with our partners and the community to help deliver this content.Unity will still sponsor industry events in 2020 and support sponsorships with digital content and experiences, including our Unite Now platform.This includes things like Developer Days, sales hospitality meetings, VIP dinners, and thought-leadership events. We will continue to add smaller virtual events to meet these needs until we get back to our normal state of event programming.We know there is no perfect replacement for in-person meetings, events or experiences. We believe that by focusing on digital direct channels and engagement, we’ll be able to continue supporting communities and building rapport with industry events and organizations, our customers, and the community.Check back often for updates. We look forward to staying connected with all of you.]]></description><link>https://unity.com/archive/blog/news/unity-2020-events-update</link><guid isPermaLink="true">https://unity.com/archive/blog/news/unity-2020-events-update</guid><pubDate>Mon, 20 Apr 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Learn to save memory usage by improving the way you use AssetBundles]]></title><description><![CDATA[Whether your application streams assets from a content delivery network (CDN) or packs them all into one big binary, you’ve probably heard of AssetBundles. An AssetBundle is a file that contains one or more serialized assets (Textures, Meshes, AudioClips, Shaders, etc.) and is loadable at runtime.AssetBundles can be used directly or through systems like the Unity Addressable Asset System (aka Addressables). The Addressables system is a package that provides a more accessible and supported way to manage Assets within your projects. It is an abstraction on top of AssetBundles. While Addressables minimizes the direct interactions developers have with AssetBundles, it is helpful to understand how the usage of AssetBundles can affect memory usage. For an overview of the Addressables system, please refer to this blog post and this session from Unite Copenhagen 2019.Developers working on new projects should consider using Addressables rather than working with AssetBundles directly. If you are working on a project with an already established AssetBundles approach, the information here about how AssetBundles affect runtime memory will help you get the best possible results.When Unity downloads an LZMA AssetBundle using the WWW class (which is now deprecated) or UnityWebRequestAssetBundle (UWR), Unity optimizes the fetching, recompressing, and versioning of AssetBundles using two caches: the memory cache and the disk cache.AssetBundles loaded into the memory cache consume a large amount of memory. Unless you specifically want to frequently and rapidly access the contents of an AssetBundle, the memory cache is probably not worth the memory cost. Instead, use the disk cache.If you provide a version or a hash argument to the UnityWebRequestAssetBundle API, Unity stores your AssetBundle data into the disk cache. If you do not provide these arguments, Unity uses the memory cache. Note that Addressables uses the disk cache by default. This behavior can be controlled via the UseAssetBundleCache field.AssetBundle.LoadFromFile() and AssetBundle.LoadFromFileAsync() always use the memory cache for LZMA AssetBundles. We therefore recommend using the UnityWebRequestAssetBundle API instead. If it is not feasible to use the UnityWebRequestAssetBundle API, you may use AssetBundle.RecompressAssetBundleAsync() to rewrite an LZMA AssetBundle on disk.Internal testing shows that there is at least an order of magnitude difference in RAM between using the disk cache and using the memory cache. You must weigh the tradeoff in memory cost versus added disk space requirements and Asset instantiation time for your application.To determine what effect the AssetBundle memory cache may have on your application’s memory usage, use a native profiler (our tool of choice is Xcode’s Allocations Instrument) to examine allocations from the ArchiveStorageConverter class. If this class is using more than 10MB of RAM, you’re probably using the memory cache.When building AssetBundles for large projects, do not assume that Unity by default will minimize the amount of duplicated information across them. To identify instances of duplicated data in the generated AssetBundles, you can use the handy AssetBundle Analyzer, written in Python by one of our colleagues in the Consulting & Development group. Used via the command line, the tool extracts information from generated AssetBundles, which is then stored in an SQLite database that features several useful views. You can then query the database using tools such as DB Browser for SQLite. This tool can help you find and resolve any inefficiencies in your build pipeline, whether you created bundles manually or via Addressables.Alternatively, check out the AssetBundle Browser tool, which you can download and integrate into your project straight away. Note that this tool provides similar functionality to Addressables, so if you are using Addressables, this tool is not relevant.The AssetBundle Browser tool allows you to view and edit the configuration of AssetBundles in a given Unity project and provides build functionality. It also provides some neat features, such as informing users about duplicated Assets that are being pulled due to dependencies, such as textures.When deciding how to organize your Assets into AssetBundles, you need to be careful about dependencies. Regardless of your AssetBundle topology, Unity makes a distinction between Assets that live inside the application binary (in or involving a Resources folder) and those that you need to load from AssetBundles. You can think of these two types of Assets as living in different worlds. It is impossible to create an AssetBundle that has a hard reference to the instance of an Asset inside the Resources folder world. To reference those Assets, Unity instead makes a copy of the Assets that it uses in the AssetBundle world.Take for example a game’s logo. The logo may be displayed in the UI of a loading scene while the game starts up. Because this loading screen must be shown before remote Assets are streamed to disk, you might include the logo Asset in the build so that it can be used immediately.This same logo is also used on an options panel in the UI, where users can select their language, sound preferences, and other settings. If this UI panel is loaded from an AssetBundle, then that AssetBundle will create its own copy of the logo Asset.If both the loading screen and the options panel are loaded at the same time, both copies of the logo Asset will be loaded, which is a duplication that costs memory.The solution to this problem is to break the hard link between one or both screens. If the logo lives in an AssetBundle, then some amount of streaming needs to occur before you can get a reference to the Asset. If the logo lives in the binary (inside a Resources folder, for example), then the UI panel will need to have a weak reference to the logo Asset and be loaded via an API such as Resources.Load.User scripting will need to use the string to load the image at runtime and assign it to the proper component.A happy middle ground may be to include the AssetBundle containing the logo Asset inside the application’s StreamingAssets directory. You will still load the Asset from the AssetBundle, but since you are hosting the bundle locally, you will not pay the cost in time required to download the content.It is not intuitive to use strings, paths or GUIDs to reference Assets, but you may want to create custom inspectors that enable Unity’s default drag-and-drop reference functionality on your weakly referenced fields. And don’t forget to use Unity’s MemoryProfiler package to identify Assets that are duplicated in Memory. Note that the Addressables system has its own mechanism for checking for duplicates in dependencies (for more information, see the documentation).Even though the Addressables system provides an abstraction on top of AssetBundles, knowing how things work under the hood can help you avoid costly performance problems like the ones described in this article.If you're currently using Addressables we want to hear from you via this short survey.We’re planning a roadmap for future entries of this series. Is there any area you’d like us to focus on? Leave a comment to let us know!]]></description><link>https://unity.com/blog/engine-platform/learn-to-save-memory-usage-by-improving-the-way-you-use-assetbundles</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/learn-to-save-memory-usage-by-improving-the-way-you-use-assetbundles</guid><pubDate>Thu, 09 Apr 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to build a winning creative team in your mobile game studio]]></title><description><![CDATA[As creative has taken up an increasingly central position in the gaming industry, I’m frequently asked by studios of all sizes and genres, “How would you approach building a great in-house creative team?” This is no easy task for studios trying to instill a strong creative marketing force in their ranks.Having overseen the growth of an in-house creatives team, I’ve slowly but surely consolidated my understanding of what environment, operations, and types of people can foster the production of winning creatives. Below, I’ll share with you my advice on how to hire the right people, and how to create the optimal culture and operational structure to get the results you want.Non-negotiable #1: curiosityOperating in a fast-moving and aggressive market where a competitive edge is increasingly hard to find, speedy and constant ideation is particularly important for a gaming creative team. In other words, the more ideas you can test, the higher the chance of finding a winning creative.To achieve this, our lead creative, Elad Gabison says that “your creative team needs to be a sponge”, constantly researching creatives and absorbing concepts from other games, fuelling an ever-ticking ‘ideas radar’. Ultimately, this comes down to hiring curious people.When hiring, a good barometer of the curiosity of the candidate is the number of questions they ask about your creative operation. If they simply accept what you say as it is and focus only on questions to do with their position, like, “what will my day look like?”, and not things like, “so why do playables perform better for casual games?”, then it is a reliable sign that the candidate lacks the level of curiosity needed to thrive in a creative team.Within the team, curiosity also means always asking “why”: why did this creative succeed, and why did this one fail? In addition to thinking up new ideas, a team full of curious individuals will ask these questions frequently and seek to pinpoint the underlying reasons behind the performance of creatives.Non-negotiable #2: Data drivenOften creative teams, which generally consist of designers and animators, aren’t interested in the data, or don’t have access to the tools for data analysis that are usually owned by UA teams. However, in a market where tiny changes can bring huge results in performance, paying close attention to the data is paramount, and should drive every thinking process — including those done by the designers and animators. In short, for a creative team to be successful it needs to be made of people with a love and understanding of numbers.At Playworks, we analyze different dimensions of data, from standard high-level metrics like click-through rates and conversion rates, to in-ad data for interactive creatives that give us an idea of what levels users like, which audiences preferred what, and what part of the ad needs to be optimized. This is the outcome of switching from a “luck-”based process of producing creatives and then simply moving on to the next one if it fails, to a data-driven, analytical approach that guarantees success and constant learning. Achieving this relies on making the data accessible to your studio and providing the tools, support, and training to the team.This isn’t to say you shouldn’t hire a designer who doesn’t live and breathe numbers. But you should look for someone who can appreciate numbers (or learn to appreciate them as I have), and other sides of the business, which brings us to our next non-negotiable.Non-negotiable #3: Multi-disciplinaryIt’s important to hire individuals who either possess or have the potential to learn different skills on top of their existing area of expertise. They don’t need to be experts in multiple fields, but having at least a solid grasp of their colleagues’ roles and being able to put themselves in the shoes of others can be highly beneficial. There are a few key reasons why this is a critical part of being at the forefront of a creative team today.First, it increases the pace of production: each person can do more without relying on colleagues for everything outside of their remit. Second, it fosters empathy, as team members will be more understanding of the challenges faced by each other. This not only helps teams bond but leads to a culture of collaboration — after all, once a team member understands what obstacles a colleague is up against, they can begin to think of ways to assist.Most importantly, hiring multi-disciplinary people helps create better products: team members are able to craft richer, more well-rounded experiences as they have a more holistic understanding of the process. At Playworks, for example, all of our developers learn game design so they aren’t just writing code, but also thinking about how to make the product as exciting an experience as possible for the end user.Challenge each other, respectfully.I said earlier that ideas are the lifeblood of a creative team, but equally important is building an environment in which team members aren’t afraid to critique others’ ideas. It all comes down to creating trust and mutual respect within the team, which encourages everyone to avoid beating around the bush and always provide their peers with constructive criticism. An important part of this is creating a sense of personal responsibility and leadership: if someone thinks something can be done better, they will actually help execute this idea rather than just dumping it on the colleague in question. Professional feedback should always come from a place of caring and desire to help others succeed.In our experience, these methods lay the foundations for “creative ping pong”, a constant and free-flowing back and forth — and optimization — of ideas. Luckily for us, in the end we always have the data to show what was the better call, so a challenge is always welcome and encouraged.Instill creativity at every levelCreativity is a mindset, not a tool or profession, and it must be practiced at every level. That’s why we instill an element of creativity throughout our operations, which can serve as a catalyst for the creative output of your team. There’s a few ways we foster this environment.First, for example, in every meeting and presentation, we have “inside terms” to describe ads based on how they performed, like ‘zombie’ (a dead creative which suddenly performs better) and ‘boss’ (a high-performing one), which always keeps even the heaviest of conversations a bit lighter.We also run team building initiatives every month that encourage communication and listening. Our art director, Giacomo, initiated a game of Blind Drawing during a daily meeting — where an employee draws the contour of a colleague without looking at the paper.And no birthday goes without an embarrassing photoshopped photo of the birthday victim.Build squads, not teamsSo, you’ve assembled a group of superstars. Now, how do you organize them to make sure your creative output is as efficient and productive as possible? Here’s how we do things at Playworks.Because we’re a fast-growing team, we believe operating as small and multi-functional squads is key to scaling and attacking multiple projects at the same time efficiently. In its first year, Playworks was arranged into teams based on profession: developers, QA, game designers, analysts and so on. In our never-ending process of optimizing our production, we decided to re-shuffle the team into a squad-based organization.This structure is based on the “agile methodology” that helped Spotify become a giant in the music streaming industry. After Spotify established itself as a successful company, it saw agile squads as the best approach to scale while maintaining high levels of creativity, productivity and innovation — eliminating hand overs which cause delays, miscommunication, and, especially, ownership.Our squads at Playworks consist of a squad leader, a game designer, two developers, and one graphic designer. Each squad is independent — organizing and managing itself as it sees fit in order to reach solutions in an efficient manner. This structure has enabled us to reduce the average time it takes for creating a playable ad from 21 days to 5.7 days. Going back to my earlier point, having multi-disciplinary employees in squads is important to ensure strong collaboration, creativity, and support among its members.Nevertheless, while there is a squad leader, all members need to be leaders. Business consultant Les McKeown writes in his book, Do / Lead, “it’s important to see that even when a group or team has formally designated ‘leaders’, those recognized leaders don’t have a monopoly over acts of leadership”. I try to instill this idea throughout Playworks’ team — the culture of collective responsibility is one way.“We’ve lost the ability to see true leadership for what it really is: an almost always un-glorious, headline-free, mundane activity that takes place in every minute of every day”

- Les McKeownIn an industry where automation is becoming more prevalent and differentiation more difficult, creative innovation — and the human element of this process — has taken a central position. In this context, building a thriving creative team is all the more important, and one of the last available levers in gaining an edge when it comes to game growth. While there is no one size fits all approach, I hope these tips will help your game company crack this challenge.]]></description><link>https://unity.com/blog/how-to-build-a-winning-creative-team-in-your-mobile-game-studio</link><guid isPermaLink="true">https://unity.com/blog/how-to-build-a-winning-creative-team-in-your-mobile-game-studio</guid><pubDate>Mon, 30 Mar 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[2020 Call for Code: How creators can help tackle climate change and COVID-19]]></title><description><![CDATA[Unity is fortunate to be a part of a global community of creators and developers who have the skills and expertise to drive real change in our world with new technologies.Call for Code Global Challenge is the largest annual tech competition focused on open-source collaboration. It brings together developers from around the world to create cutting-edge, practical technology to help solve some of the toughest issues facing humanity and our environment.The challenge was launched in 2018 by David Clark Cause and IBM, in partnership with the United Nations and the Linux Foundation. Past winners created solar-powered mesh network devices that build connectivity where there is none, and a health monitoring platform for firefighters. This year’s challenge began on March 22 and is open to all developers to begin designing and developing their solutions.When IBM asked our Unity for Humanity team to help with the 2020 challenge, we wholeheartedly agreed because the initiative combines innovation with effective real-world solutions, part of the mandate of Unity for Humanity and Unity’s DNA. Our role was to work with other partners to develop starter kits for participants. These valuable tools allow developers to get a head start creating solutions on one of two fronts: Climate change and COVID-19 mitigation.In February, Scott Sewell, a software developer with Unity’s Innovation Group – Unity Labs, attended the Call for Code kickoff in Geneva to collaborate on the templates. Scott worked with programmers, data scientists, designers, and others from companies around the world. In teams of four, they worked alongside subject-matter experts from the United Nations to create starter kits for each of this year’s focus areas.The kits provide examples of what possible solutions might look like on a programming level. This includes code that demonstrates how to integrate IBM cloud technologies like data analytics, artificial intelligence (AI), and internet of things (IoT) into potential solutions.For the first track, Call for Code is asking developers, data scientists, and other subject-matter experts to create solutions that help halt and reverse the effects of climate change in our world. This includes solutions that concentrate on water sustainability, energy sustainability, and disaster resiliency.For the COVID-19 track, they’re looking for solutions that will arm developers, visionaries, and problem solvers with resources to build open-source technology solutions that address three main areas: crisis communication during an emergency, ways to improve remote learning, and how to inspire cooperative local communities.As always, innovation and community are key Unity pillars and this challenge brings them together in a way that could create positive change for our planet. We hope that as participants are designing and producing what could be groundbreaking solutions for these two global issues, they will consider how our low-barrier-to-entry tools and wide-ranging technologies for XR, simulation, machine learning and other capabilities can help them.To get involved in this year’s challenge, please visit 2020 Call for Code Global Challenge.]]></description><link>https://unity.com/archive/blog/news/2020-call-for-code-how-creators-can-help-tackle-climate-change-and-covid-19</link><guid isPermaLink="true">https://unity.com/archive/blog/news/2020-call-for-code-how-creators-can-help-tackle-climate-change-and-covid-19</guid><pubDate>Fri, 27 Mar 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Daimler uses Unity across its automotive lifecycle]]></title><description><![CDATA[We invited Daniel Keßelheim and Sebastian Rigling of Daimler Protics to share about the experiences they create with Unity as their development tool of choice. Learn how they implemented mixed reality across key stages of the lifecycle of Mercedes-Benz vehicles.Daimler Protics shapes digital reality for Daimler AG, one of the world’s largest automakers. Its mixed reality team develops everything from proof of concepts to ready-to-use applications for Mercedes-Benz and other brands.Watch the Unite Copenhagen talk below to learn how Daimler Protics uses Unity to create a mixed reality pipeline connected to systems and Product Lifecycle Management (PLM) data, then deploy applications to multiple platforms, including Microsoft HoloLens, Oculus devices, and smartphones.In their talk, Keßelheim and Rigling shared how Unity has provided a flexible development platform for everything from R&D to after-sales service. “For every problem we were confronted with, related to mobile mixed realities in automotive, we found a solution with Unity,” said Keßelheim. Let’s cover a few of the many ways they use Unity to create and deploy HoloLens applications at various stages of the automotive lifecycle.Daimler Protics uses Unity for a variety of use cases in the production phase, from planning factory layouts (e.g., previsualizing machinery and architecture) to assembly training (e.g., training workers on how to assemble the cars). This section walks through a safety inspection use case.Daimler’s HoloLens application enables a safety inspection of a robotic laser welding system.Automakers often use robotic laser welding to precisely and efficiently fuse various parts of the vehicle together. When Daimler’s robot cell is in operation, however, the space is closed off to prevent anyone from looking inside and losing their sight, making safety inspections difficult.The team developed an application that replays each robot’s logged movements on the HoloLens once a session is complete. This application displays predefined safety spaces, so it's easy to verify whether the robot’s movements have adhered to safety protocols.A HoloLens experience created by Daimler Protics for the Mercedes-Benz EQC.Mercedes-Benz formed the EQ brand for its new fleet of electric vehicles. For the Mercedes-Benz EQC, the automaker’s first fully electric compact luxury SUV, the Daimler Protics team created a HoloLens experience to help drivers better understand the inner workings of an electric vehicle compared to the gas-powered versions to which they’re accustomed.Designed for auto shows and dealership showrooms, the self-serve application guides users – the vast majority of whom have never used a mixed reality headset – showing them where to look and identifying various points of interest as they walk around the vehicle. Daimler uses Unity and the HoloLens to tell a rich, interactive story about the Mercedes-Benz EQC, including the location of the battery powering the vehicle, and how it works and charges.Daimler’s HoloLens application trains technicians on a nine-gear transmission. Traditional training programs use cut-section models to instruct technicians on how to service an automotive transmission. While working on a full-scale physical model is helpful for understanding, the value of a cutaway version disconnected from the car as an educational tool is limited. Daimler Protics solved this dilemma using mixed reality. The application not only surfaces the transmission’s various hard-to-see components, it also makes it easy to replicate the experience of the running engine and visualize how it changes when shifting gears or braking.---Unity is the leading platform for creating content for AR and VR applications. Learn how to get started developing AR applications with Unity and try Unity Industrial Collection today. For more information about how Unity is used across the automotive lifecycle, check out this blog post and read our whitepaper.]]></description><link>https://unity.com/blog/industry/how-daimler-uses-unity-across-its-automotive-lifecycle</link><guid isPermaLink="true">https://unity.com/blog/industry/how-daimler-uses-unity-across-its-automotive-lifecycle</guid><pubDate>Wed, 25 Mar 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creating safer construction projects with virtual reality]]></title><description><![CDATA[Laing O’Rourke, one of the largest privately-owned construction companies in the UK, harnessed the power of Unity’s real-time 3D development platform to create an immersive virtual reality (VR) crane simulator to train its lift team before they ever step foot on a project.Safety management and training is a top priority for the construction industry. Involving workers and providing ongoing access to safety training are top aspects of a world-class safety program, according to a Dodge Data & Analytics report. VR is one of the top technologies expected to improve safety in the next three years, but there are already companies leading the charge now.At Unite Copenhagen, we invited Graham Brierley, Head of Digital Engineering from Laing O’Rourke, to share his firm’s experience with Unity and how VR is transforming the architecture, engineering, and construction (AEC) industry. Read on to learn how Laing O’Rourke used Unity to create an interactive VR training program to improve project safety and make the construction industry safer, more productive, and more sustainable.Laing O’Rourke has a long reputation of investing in breakthrough technologies and harnessing innovation as a positive force for change. Several years ago, Laing O’Rourke realized it wasn’t getting what it needed out of its current software. To solve this problem, the company tasked Brierley with finding the right solution.It was clear Brierley wasn't going to find what he needed in construction so he started searching outside of traditional software. That’s when Brierley found Unity. To harness Unity’s capabilities, he hired two game developers with no construction experience. It was a risky move, but it was also the right one. "They brought a skill set that we were otherwise struggling with. As engineers and technicians, we don't necessarily have a background in developing, coding, and data," said Brierley.Brierley’s team is now using Unity to develop VR and augmented reality (AR) applications to simplify, de-risk, and transform some of the most complex on-site construction activities.Operating a crane on a project is a dangerous endeavor that requires constant verbal communication. The crane operator usually works in isolation and is unable to see the lift team on the project. Teams can also look different from one project to the next and there is often more than one crane moving at a time. The lift team must understand the constraints and perspectives from each other so that it’s done safely.Laing O’Rourke turned to Unity and its newly hired game developers to solve safety issues. With Unity, Laing O’Rourke used VR to create an immersive environment to simulate crane operation and communication before workers ever step foot on a project. The crane simulator was developed from the crane operator’s perspective, placing them high in the air.The training connects multiple VR headsets to improve communication between the crane driver and banksman, the person who directs the operation of a crane. In the training, crane drivers must follow the banksman's instructions to control a virtual crane.Laing O’Rourke took it a step further and incorporated the technology into its two-day training course. Delivered by certified trainers, the course is designed to equip the lift team with enhanced, practical, and theoretical knowledge to deal with more complex products and lift operations on busy construction sites.The training moved beyond just crane operator and banksman communication to simulate environments, challenges, and perspectives across the entire lift team. With the VR crane simulator, Laing O’Rourke was able to improve communication and promote collaboration and shared learning across lift teams.Laing O’Rourke’s measurement of success was getting positive feedback from its workers and making sure they were focusing on the right training points.Creating the VR crane simulator in Unity was just the beginning. Laing O’Rourke has continued to create new custom applications with Unity to solve business problems and cement its status as a leader for innovation and excellence in the construction industry.Recently, Laing O'Rourke used VR to create temporary cofferdam inspection training for the Thames Tideway Tunnel. The tool uses a non-tethered VR headset and marker tool on PC to let engineers host and run training exercises, engagements, and briefings. Driving a deeper understanding of risk improved the retention of important safety information. The Unity made VR tool was shortlisted for a TechFest award for “Best Use of Technology: Health, Safety & Wellbeing Award.”For its VR crane simulator, Laing O’Rourke also won best AEC project in the Unity Awards 2019.The company is currently working on implementing Unity Reflect into its workflow to create real-time BIM applications.---Learn more about the power of Unity for AEC.]]></description><link>https://unity.com/blog/industry/creating-safer-construction-projects-with-virtual-reality</link><guid isPermaLink="true">https://unity.com/blog/industry/creating-safer-construction-projects-with-virtual-reality</guid><pubDate>Thu, 05 Mar 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Best practices for bringing AR applications to the field]]></title><description><![CDATA[Learn how industrial giant ABB is using Unity and augmented reality to transform field maintenance procedures into a completely paperless process.We recently invited members of ABB’s IS Innovation and Digital Scouting team, Maciej Włodarczyk and Rafał Kielar, to walk us through how they used Unity to develop a new digital field operator system. This multiplatform application runs on mobile devices and the HoloLens, and it’s designed to improve the efficiency and safety of the field operators maintaining and servicing equipment on industrial sites.Learn more in their presentation on a recent Unity webinar, including their migration process to the HoloLens 2. In the webinar, Microsoft’s Mixed Reality Academy lead engineer Nick Klingensmith also shares how Microsoft’s new device will take AR-enabled training, guidance, and maintenance to the next level.Watch the webinarLet’s explore the problems ABB sought to solve for its clients and some of their key learnings from the development process.For ABB’s customers, two key personnel are involved in this process: the field operators responsible for maintaining and servicing equipment, and control room operators who supervise the process and are located in another part of the facility.Due to the dangerous nature of the tasks involved, field operators have traditionally undergone time-consuming, expensive training programs before working on-site.Once they are in the field, however, it is difficult to assign and track performed service procedures, which are done on paper. This leads to further communication issues between field and control room operators, who often need to exchange information in real-time.ABB used the Unity Editor and Microsoft’s Mixed Reality Toolkit (MRTK) to test prototypes quickly and eventually build a production-ready software application called ABB Ability™ Augmented Field Procedures. This multiplatform application completely digitizes the field operator experience with remote-enabled augmented reality technologies.The application provides several advantages over the traditional, paper-based workflow. This system:Allows any field operator to follow digitized procedures and become an expert without costly trainingIntegrates the field and distributed control systems to enable real-time data capture (versus processing paper-based forms afterward)Ensures that the latest version of a procedure is always followed (rather than using an outdated document)Connects field and control room operators for real-time communication using Microsoft Remote AssistBased on their experiences, Włodarczyk and Kielar from ABB shared numerous best practices for those developing similar applications related to training, guidance, and maintenance use cases. In this post, we focus on several best practices for the HoloLens application, centered around the user interface (UI) and ergonomy of interactions.Check out the webinar for a complete list of ABB’s recommendations, including location/device recognition, hologram positions, and more.As seen in the image above, the UI should not obscure the user’s view. UI elements that block the real-life objects that the user needs to interact with can pose a safety hazard.To minimize clutter in the user’s field of view, allow navigation menus to be accessed on request rather than being omnipresent. In the video above, notice how the user controls the visibility of the menu with a gesture.In order to avoid blocking the field of view, some may think smaller menus and buttons make sense. On the contrary, these should be large enough to be easily targeted by gaze and selected by gestures.Włodarczyk and Kielar needed to make their app easier and more convenient to use than the paper-based Standard Operating Procedures (SOP) their clients were used to.That led them to automate as much of the experience as possible in order to limit the number of interactions the user needed to perform (e.g., having a window automatically appear following a gesture, as shown in the video above). It’s also important to provide clear instructions (e.g., the “tap to dock” message shown in the video) to ensure that the next step is always clear.Users should also be given the flexibility to select the interaction mode of their choice, such as voice commands, gaze, and gestures.Since most field operators have limited experience with AR but will be the end-users of these applications, it’s critical to share the app with a test group comprised of these individuals. They will be a source of valuable feedback that will help you to reduce complexity and streamline your app to its core components.---For more best practices from ABB, sign up to watch our on-demand webinar.You can also check out ABB’s presentation at Unite Copenhagen.Check out Unity Industry and learn how to get started developing XR applications with Unity.]]></description><link>https://unity.com/blog/industry/best-practices-for-bringing-ar-applications-to-the-field</link><guid isPermaLink="true">https://unity.com/blog/industry/best-practices-for-bringing-ar-applications-to-the-field</guid><pubDate>Fri, 28 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Training intelligent adversaries using self-play with ML-Agents]]></title><description><![CDATA[In the latest release of the ML-Agents Toolkit (v0.14), we have added a self-play feature that provides the capability to train competitive agents in adversarial games (as in zero-sum games, where one agent’s gain is exactly the other agent’s loss). In this blog post, we provide an overview of self-play and demonstrate how it enables stable and effective training on the Soccer demo environment in the ML-Agents Toolkit.The Tennis and Soccer example environments of the Unity ML-Agents Toolkit pit agents against one another as adversaries. Training agents in this type of adversarial scenario can be quite challenging. In fact, in previous releases of the ML-Agents Toolkit, reliably training agents in these environments required significant reward engineering. In version 0.14, we have enabled users to train agents in games via reinforcement learning (RL) from self-play, a mechanism fundamental to a number of the most high profile results in RL such as OpenAI Five and DeepMind’s AlphaStar. Self-play uses the agent’s current and past ‘selves’ as opponents. This provides a naturally improving adversary against which our agent can gradually improve using traditional RL algorithms. The fully trained agent can be used as competition for advanced human players.Self-play provides a learning environment analogous to how humans structure competition. For example, a human learning to play tennis would train against opponents of similar skill level because an opponent that is too strong or too weak is not as conducive to learning the game. From the standpoint of improving one’s skills, it would be far more valuable for a beginner-level tennis player to compete against other beginners than, say, against a newborn child or Novak Djokovic. The former couldn’t return the ball, and the latter wouldn’t serve them a ball they could return. When the beginner has achieved sufficient strength, they move on to the next tier of tournament play to compete with stronger opponents.In this blog post, we give some technical insight into the dynamics of self-play as well as provide an overview of our Tennis and Soccer example environments that have been refactored to showcase self-play.The notion of self-play has a long history in the practice of building artificial agents to solve and compete with humans in games. One of the earliest uses of this mechanism was Arthur Samuel’s checker playing system, which was developed in the ’50s and published in 1959. This system was a precursor to the seminal result in RL, Gerald Tesauro’s TD-Gammon published in 1995. TD-Gammon used the temporal difference learning algorithm TD(λ) with self-play to train a backgammon agent that nearly rivaled human experts. In some cases, it was observed that TD-Gammon had a superior positional understanding to world-class players.Self-play has been instrumental in a number of contemporary landmark results in RL. Notably, it facilitated the learning of super-human Chess and Go agents, elite DOTA 2 agents, as well as complex strategies and counter strategies in games like wrestling and hide and seek. In results using self-play, the researchers often point out that the agents discover strategies which surprise human experts.Self-play in games imbues agents with a certain creativity, independent of that of the programmers. The agent is given just the rules of the game and told when it wins or loses. From these first principles, it is up to the agent to discover competent behavior. In the words of the creator of TD-Gammon, this framework for learning is liberating “...in the sense that the program is not hindered by human biases or prejudices that may be erroneous or unreliable.” This freedom has led agents to uncover brilliant strategies that have changed the way human experts view certain games.In a traditional RL problem, an agent tries to learn a behavior policy that maximizes some accumulated reward. The reward signal encodes an agent’s task, such as navigating to a goal state or collecting items. The agent’s behavior is subject to the constraints of the environment. For example, gravity, the presence of obstacles, and the relative influence the agent’s own actions have, such as applying force to move itself are all environmental constraints. These limit the viable agent behaviors and are the environmental forces the agent must learn to deal with to obtain a high reward. That is, the agent contends with the dynamics of the environment so that it may visit the most rewarding sequences of states.On the left is the typical RL scenario: an agent acts in the environment and receives the next state and a reward On the right is the learning scenario wherein the agent competes with an adversary who, from the agent’s perspective, is effectively part of the environment.In the case of adversarial games, the agent contends not only with the environment dynamics, but also another (possibly intelligent) agent. You can think of the adversary as being embedded in the environment since its actions directly influence the next state the agent observes as well as the reward it receives.Let’s consider the ML-Agents Tennis demo. The blue racquet (left) is the learning agent, and the purple racquet (right) is the adversary. To hit the ball over the net, the agent must consider the trajectory of the incoming ball and adjust it’s angle and speed accordingly to contend with gravity (the environment). However, just getting the ball over the net is only half the battle when there is an adversary. A strong adversary may return a winning shot causing the agent to lose. A weak adversary may hit the ball into the net. An equal adversary may return the ball, thereby continuing the game. In any case, the next state and reward are determined by both the environment and the adversary. However, in all three situations, the agent hit the same shot. This makes learning in adversarial games and training competitive agent behaviors a difficult problem.The considerations around an appropriate opponent are not trivial. As demonstrated by the preceding discussion, the relative strength of the opponent has a significant impact on the outcome of an individual game. If an opponent is too strong, it may be too difficult for an agent starting from scratch to improve. On the other hand, if an opponent is too weak, an agent may learn to win, but the learned behavior may not be useful against a different or stronger opponent. Therefore, we need an opponent that is roughly equal in skill (challenging but not too challenging). Additionally, since our agent is improving with each new game, we need an equivalent increase in the opponent.In self-play, a past snapshot or the current agent is the adversary embedded in the environment.Self-play to the rescue! The agent itself satisfies both requirements for a fitting opponent. It is certainly roughly equal in skill (to itself) and also improves over time. In this case, it is the agent’s own policy that is embedded in the environment (see figure). For those familiar with curriculum learning, you can think of this as a naturally evolving (also referred to as an auto-curricula) curriculum for training our agent against opponents of increasing strength. Thus, self-play allows us to bootstrap an environment to train competitive agents for adversarial games!In the following two subsections, we consider more technical aspects of training competitive agents, as well as some details surrounding the usage and implementation of self-play in the ML-Agents Toolkit. These two subsections may be skipped without loss to the main point of this blog post.Some practical issues arise from the self-play framework. Specifically, overfitting to defeat a particular playstyle and instability in the training process that can arise from non-stationarity of the transition function (i.e., the constantly shifting opponent). The former is an issue because we want our agents to be general competitors and robust to different types of opponents. To illustrate the latter, in the Tennis environment, a different opponent will return the ball at a different angle and speed. From the perspective of the learning agent, this means the same decisions will lead to different next states as training progresses. Traditional RL algorithms assume stationary transition functions. Unfortunately, by supplying the agent with a diverse set of opponents to address the former, we may exacerbate the latter if we are not careful.To address this, we maintain a buffer of the agent’s past policies from which we sample opponents against which the learner competes for a longer duration. By sampling from the agent’s past policies, the agent will see a diverse set of opponents. Furthermore, letting the agent train against a fixed opponent for a longer duration stabilizes the transition function and creates a more consistent learning environment. Additionally, these algorithmic aspects can be managed with the hyperparameters discussed in the next section.With self-play hyperparameter selection, the main consideration is the tradeoff between the skill level and generality of the final policy, and the stability of learning. Training against a set of slowly changing or unchanging adversaries with low diversity results in a more stable learning process than training against a set of quickly changing adversaries with high diversity. The available hyperparameters control how often an agent’s current policy is saved to be used later as a sampled adversary, how often a new adversary is sampled, the number of opponents saved, and the probability of playing against the agent’s current self versus an opponent sampled from the pool. For usage guidelines of the available self-play hyperparameters, please see the self-play documentation in the ML-Agents GitHub repository.In adversarial games, the cumulative environment reward may not be a meaningful metric by which to track learning progress. This is because the cumulative reward is entirely dependent on the skill of the opponent. An agent at a particular skill level will get more or less reward against a worse or better agent, respectively. We provide an implementation of the ELO rating system, a method for calculating the relative skill level between two players from a given population in a zero-sum game. In a given training run, this value should steadily increase. You can track this using TensorBoard along with other training metrics e.g. cumulative reward.In recent releases, we have not included an agent policy for our Soccer example environment because it could not be reliably trained. However, with self-play and some refactoring, we are now able to train non-trivial agent behaviors. The most significant change is the removal of “player positions” from the agents. Previously, there was an explicit goalie and striker, which we used to make the gameplay look reasonable. In the video below of the new environment, we actually notice role-like, cooperative behavior along these same lines of goalie and striker emerge. Now the agents learn to play these positions on their own! The reward function for all four agents is defined as +1.0 for scoring a goal and -1.0 for getting scored on with an additional per-timestep penalty of -0.0003 to encourage agents to score.We emphasize the point that training agents in the Soccer environment led to cooperative behavior without an explicit multi-agent algorithm or assigning roles. This result shows that we can train complicated agent behaviors with simple algorithms as long as we take care in formulating our problem. The key to achieving this is that agents can observe their teammates---that is, agents receive information about their teammate’s relative position as observations. By making an aggressive play toward the ball, the agent implicitly communicates to its teammate that it should drop back on defense. Alternatively, by dropping back on defense, it signals to its teammate that it can move forward on offense. The video above shows the agents picking up on these cues as well as demonstrating general offensive and defensive positioning!The self-play feature will enable you to train new and interesting adversarial behaviors in your game. If you do use the self-play feature, please let us know how it goes!If you’d like to work on this exciting intersection of machine learning and games, we are hiring for several positions, please apply!If you use any of the features provided in this release, we’d love to hear from you. For any feedback regarding the Unity ML-Agents Toolkit, please fill out the following survey and feel free to email us directly. If you encounter any bugs, please reach out to us on the ML-Agents GitHub issues page. For any general issues and questions, please reach out to us on the Unity ML-Agents forums.]]></description><link>https://unity.com/blog/engine-platform/training-intelligent-adversaries-using-self-play-with-ml-agents</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/training-intelligent-adversaries-using-self-play-with-ml-agents</guid><pubDate>Fri, 28 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[50 Megatons of real-time collaboration: This student film made with Unity is getting noticed]]></title><description><![CDATA[How did a student film on a minimal budget find itself sharing the nominee spotlight with blockbuster productions like The Lion King and The Mandalorian at the VES Awards? By using an innovative, real-time workflow – just like the big studios.For their diploma project, students from Film Academy Baden-Württemberg produced a live-action short film called Love & 50 Megatons. The final short was nominated for a Visual Effects Society Award for outstanding VFX in a student project. The love story explores themes of separation, nuclear destruction, and propaganda, in a production showcasing a unique combination of retro and cutting-edge techniques that blend miniature models with live-action.The crew used virtual production methods reminiscent of those used in The Lion King and other recent hits to immerse real actors in their 3D environment, working with Unity as their real-time production platform.In addition to the technical challenges Unity helped the students overcome under short delivery deadlines, they found working with the real-time platform helped their team work together and iterate faster.Denis Krez, the VFX supervisor and compositor on the film, says the team first built a highly detailed miniature set, then photo-scanned the miniatures and converted them into 3D models within the Unity real-time platform. Once on set, they projected the scanned sets on an array of large displays surrounding the stage. They used live camera tracking to film the actors in front of the projections.According to Denis, “Our technical director, Paulo, developed an app in Unity to control the light, with color and focus, so we could adjust the digital background as needed in real-time to get as many shots done in-camera as possible.”Since the on-set crew could see the world around them, they were immediately immersed in the world of Love & 50 Megatons. Without using green screens and having to imagine the backgrounds, the process was much smoother and more focused.The students found that the most important consideration in filmmaking is collaboration – and the courses of study at Film Academy ensured they get this experience first-hand.“Filmmaking is a team effort,” says student Josephine Ross, VFX producer, and producer on the film. “For projects of the scale of Love & 50 Megatons, the project depends on many different team members contributing their professional knowledge. Nobody is a specialist in everything, and to get the best out of a film, a team has to come together with people who not only are technically great but also work well together.”The tools they choose to use can make a big difference in collaboration, too. “Working with a real-time production platform like Unity on set makes a lot of things easier – especially communication,” says Denis. “We can instantly present our thoughts to everybody involved and easily play around with new ideas.”The quick collaboration and communication extend beyond the concept stage and well into production, he says. “Occasionally, the actors approach me and ask for a quick view of the 3D scene to get a better feeling of the environment they’re supposed to be in.” In particular, both the director and director of photography can work more effectively compared to a green screen set, because they can see the final results in real-time and make better decisions based on that instantaneous feedback.“Unity was essentially our real-time viewport for virtual production,” says Paulo Scatena, the technical director. “It rendered our digitally reconstructed assets – the miniature set – by tracking the position of the camera, so the display would always act as a ‘window’ into the virtual environment. It was the engine that essentially allowed us to extend the set, real-time, in-camera.”Access to instant feedback allowed the crew to expand its creativity in the moment. “You instantly see what you get, and that’s especially valuable on a film set,” says Denis.And when you need to make changes, it’s crucial. According to Paulo, “Good filmmaking is often about making a lot of mistakes, fast, until you strike gold. So the rapid revision opportunity that comes with real-time is a big selling point for a real-time production platform like Unity.”Paulo also says the team put a lot of effort into making sure iterating was smooth and instant. “I built a remote control, Unity with TouchOSC, for Denis to operate color grading and focus settings for the projection screens. On a traditional set, you’d need to call for the gaffer to come out and change the lights. We could do it with a slide of one finger!”In fact, they never wrestled with whether to use traditional workflows instead of choosing a real-time platform – their deadlines decided for them. “The workflow had to be real-time,” says Denis. “We never had a discussion about whether or not to use Unity.”As students starting out in the world of film, the crew had about as much familiarity with real-time tools as with traditional ones, so they felt comfortable jumping into Unity. “It doesn’t matter if you just need a quick previs of a scene you’re about to shoot or if you need a photorealistic background.” Paulo encourages every filmmaker to get their hands on a real-time production platform. “Any type of production would benefit. It’s easy, it works in the budget, it’s the future of filmmaking.”Watch the Making Of Love & 50 Megatons, made with Unity, and learn more about the entire production process on the Love & 50 Megatons website.]]></description><link>https://unity.com/blog/industry/50-megatons-of-real-time-collaboration-student-film-made-with-unity</link><guid isPermaLink="true">https://unity.com/blog/industry/50-megatons-of-real-time-collaboration-student-film-made-with-unity</guid><pubDate>Wed, 19 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How on-demand rendering can improve mobile performance]]></title><description><![CDATA[It’s not always desirable to render a project at the highest frame rate possible, for a variety of reasons, especially on mobile platforms. Historically, Unity developers have used Application.targetFrameRate or Vsync count to throttle the rendering speed of Unity. This approach impacts not just rendering but the frequency at which every part of Unity runs. The new on-demand rendering API allows you to decouple the rendering frequency from the player loop frequency.On-demand rendering allows you to skip rendering frames while still running the rest of the player loop at a high frequency. This can be especially useful on mobile; bypassing rendering can bring significant performance and power savings, while still allowing the application to be responsive to touch events.Here are some example scenarios of when you may want to lower the frame rate:Menus (e.g., the application entry point or a pause menu): Menus tend to be relatively simple Scenes and as such do not need to render at full speed. If you render menus at a lower frame rate, you will still receive input during a frame that is not rendered, allowing you to reduce power consumption and to keep the device temperature from rising to a point where the CPU frequency may be throttled, while keeping a smooth UI interaction.Turn-based games (e.g., chess): Turn-based games have periods of low activity when users think about their next move or wait for other users to make their move. During such times, you can lower the frame rate to prevent unnecessary power usage and prolong the battery life.Static content: You can lower the frame rate in applications where the content is static for much of the time, such as automotive user interface (UI).Performance management: If you want to manage power usage and device thermals to maximize battery life and prevent CPU throttling, particularly if you are using the Adaptive Performance package, you can adjust the rendering speed.Machine learning or AI applications: Reducing the amount of work the CPU devotes to rendering may give you a little bit of a performance boost for the heavy processing that is the central focus of your application.Everywhere! On-demand rendering works on Unity 2019.3 with every supported platform (see the system requirements) and rendering API (built-in render pipeline, Universal Render Pipeline and High Definition Render Pipeline).The on-demand rendering API consists of only three properties in the namespace UnityEngine.Rendering.1. OnDemandRendering.renderFrameInterval
This is the most important part. It allows you to get or set the render frame interval, which is a dividing factor of Application.targetFrameRate or QualitySettings.vSyncCount, to define the new frame rate. For example, if you set Application.targetFrameRate to 60 and OnDemandRendering.renderFrameInterval to 2, only every other frame will render, yielding a frame rate of 30 fps.2. OnDemandRendering.effectiveFrameRate
This property gives you an estimate of the frame rate that your application will render at. The estimate is determined using the values of OnDemandRendering.renderFrameInterval, Application.targetFrameRate, QualitySettings.vSyncCount and the display refresh rate. But bear in mind that this is an estimate and not a guarantee; your application may render more slowly if the CPU is bogged down by work from other things such as scripts, physics, networking, etc.3. OnDemandRendering.willThisFrameRender
This simply tells you if the current frame will be rendered to the screen. You can use non-rendered frames to do some additional CPU-intensive work such as heavy math operations, loading assets or spawning prefabs.Even though frames will not be rendered as often, events will be sent to scripts at a normal pace. This means that you may receive input during a frame that is not rendered. To prevent the appearance of input lag we recommend that you call OnDemandRendering.renderFrameInterval = 1 for the duration of the input to keep buttons, movement, etc. responsive.Situations that are very heavy on scripting, physics, animation, etc. but are not rendering will not benefit from using on-demand rendering. The results may appear choppy and with negligible reduction in CPU and power usage.Here is a simple example showing how on-demand rendering could be used in a menu to render at 20 fps unless there is input.Here is an example project demonstrating how on-demand rendering can be used in a variety of situations.Let us know in the forums how on-demand rendering is working for you. We’ve tested it on Windows, macOS, WebGL, iOS, and Android, both in the Unity Editor and with Standalone players, but we’re always open to more feedback.]]></description><link>https://unity.com/blog/technology/how-on-demand-rendering-can-improve-mobile-performance</link><guid isPermaLink="true">https://unity.com/blog/technology/how-on-demand-rendering-can-improve-mobile-performance</guid><pubDate>Fri, 07 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile game KPIs, analytics & metrics every developer should be paying attention to]]></title><description><![CDATA[We’re living in a data-driven world, and today, measuring the right metrics are vital to a game developer’s success. Mobile game metrics provide game developers with key insights into their users’ behavior, offering a look into how users interact with the game. Simply put, in-game metrics let developers track and assess the success of their game. With access to usage, engagement, and business metrics, game developers have the necessary information needed to improve their app or game and therefore optimize it accordingly.Top 5 mobile game KPIs1. Retention rate is the percentage of users who continue engaging with your game over time and is typically measured at 30 days, 7 days, and 1 day after users first install the game. This metric helps developers understand exactly where within the game’s life cycle users begin dropping off. 2. Lifetime Value (LTV) estimates the revenue a single user generates through their entire lifecycle within a game. It’s a prediction of a user’s monetary value over time. LTV tells developers how good of a job they’re doing monetizing and retaining users. 3. Daily Active Users (DAU) reveals the total number of users who visit a game on a daily basis. 4. Average revenue per daily engaged user (ARPDAU) helps game developers understand how well their monetization strategy is working, whether it’s from ads, IAPs, or a mix of the two. ARPDAU shows how changes or events affect game revenue. 5. Effective cost per mille (eCPM) is the ad revenue generated per 1000 ad impressions. While most game developers think eCPM is strictly for the monetization side, this figure also represents buying power when it comes to acquiring new users. User and usage metricsUser and usage metrics tell developers crucial information about their audiences, ultimately illustrating which sort of users your game appeals to. Developers can use this information to optimize and localize their game for a better user experience, as well as their user acquisition campaigns. Some examples include: DAU, MAU, Device/OS, Segmentation.Engagement metricsEngagement metrics give developers insight into user behavior and how they’re engaging and interacting within a game. Once developers understand users’ interaction with their game, they’ll be able to improve functionality, retain a loyal user base, and optimize the monetization strategy. Example metrics include: Session duration, retention rate, churn rate, and app rating are some metrics developers have to determine engagement levels. Business metricsBusiness metrics ensure that developers are able to keep track of their monetization and user acquisition strategies, and provide granular data that informs business growth. The first step to examining business health is marketability. Marketability measures product-market fit, answering the question of whether or not there is a user base to actually download your game.Once you’ve assessed marketability, consider other metrics like eCPM, ARPU, and LTV.Looking for more tips on boosting monetization and user acquisition efforts? Check out our guide to in-game advertising.Changing the game with ironSource reportsBelow we walk through some of the most important, helpful reporting features ironSource offers mobile game developers.Cohort reportingA cohort is a group of users that perform a certain sequence of events within a particular time frame. Cohorts allow developers to analyze the behavior of groups of users as time progresses, giving them a complete picture of the lifecycle of their game.With cohort reporting, developers can easily track metrics like retention, revenue per user, and user engagement from the moment the user downloaded and opened the app within the defined date range. Cohort reporting is equally as useful for both monetization and marketing efforts.How we helped Homa Games with cohort reportingHyper-casual publisher Homa Games didn’t have the technological resources to build their own reporting dashboard and were on the lookout for a partner that could provide robust and actionable data that would give them insight into their monetization performance.Once Homa Games began utilizing ironSource’s cohort reports, they were able to instantly see the impact of the changes made to game design or ad monetization strategy. ironSource’s cohort reports immediately alerted Homa Games about a sudden drop in ARPU. Homa Games realized that some levels they had recently integrated into their game were too difficult, causing users from new cohorts to leave the game after only a few minutes. Thanks to the cohort report, they caught the problem quickly and implemented a solution.Homa Games also uses the ARPU calculation within the cohort reports to calculate the perfect bid in order to improve their UA efforts. The result? A 9% increase in ROI.User activity reportsUnderstanding user behavior is key to optimizing your monetization and marketing strategies. By utilizing user activity reports, you get access to valuable information and analytics that breakdown user activity and ad engagement through advanced metrics. In one report, you can see DAU, ARPDAU, and sessions/DAU for each game, ad unit, country, and ad source. Learn more about user activity reports here.
Mobile game KPIs, analytics & metrics every developer should be paying attention toWe’re living in a data-driven world, and today, measuring the right metrics are vital to a game developer’s success. Mobile game metrics provide game developers with key insights into their users’ behavior, offering a look into how users interact with the game. Simply put, in-game metrics let developers track and assess the success of their game. With access to usage, engagement, and business metrics, game developers have the necessary information needed to improve their app or game and therefore optimize it accordingly.Top 5 mobile game KPIs1. Retention rate is the percentage of users who continue engaging with your game over time and is typically measured at 30 days, 7 days, and 1 day after users first install the game. This metric helps developers understand exactly where within the game’s life cycle users begin dropping off. 2. Lifetime Value (LTV) estimates the revenue a single user generates through their entire lifecycle within a game. It’s a prediction of a user’s monetary value over time. LTV tells developers how good of a job they’re doing monetizing and retaining users. 3. Daily Active Users (DAU) reveals the total number of users who visit a game on a daily basis. 4. Average revenue per daily engaged user (ARPDAU) helps game developers understand how well their monetization strategy is working, whether it’s from ads, IAPs, or a mix of the two. ARPDAU shows how changes or events affect game revenue. 5. Effective cost per mille (eCPM) is the ad revenue generated per 1000 ad impressions. While most game developers think eCPM is strictly for the monetization side, this figure also represents buying power when it comes to acquiring new users. User and usage metricsUser and usage metrics tell developers crucial information about their audiences, ultimately illustrating which sort of users your game appeals to. Developers can use this information to optimize and localize their game for a better user experience, as well as their user acquisition campaigns. Some examples include: DAU, MAU, Device/OS, SegmentationEngagement metricsEngagement metrics give developers insight into user behavior and how they’re engaging and interacting within a game. Once developers understand users’ interaction with their game, they’ll be able to improve functionality, retain a loyal user base, and optimize the monetization strategy. Example metrics include: Session duration, retention rate, churn rate, and app rating are some metrics developers have to determine engagement levels. Business metricsBusiness metrics ensure that developers are able to keep track of their monetization and user acquisition strategies, and provide granular data that informs business growth. The first step to examining business health is marketability. Marketability measures product-market fit, answering the question of whether or not there is a user base to actually download your game.Once you’ve assessed marketability, consider other metrics like eCPM, ARPU, and LTV.Looking for more tips on boosting monetization and user acquisition efforts? Check out our guide to in-game advertising.Changing the game with ironSource reportsBelow we walk through some of the most important, helpful reporting features ironSource offers mobile game developers.Cohort reportingA cohort is a group of users that perform a certain sequence of events within a particular time frame. Cohorts allow developers to analyze the behavior of groups of users as time progresses, giving them a complete picture of the lifecycle of their game.With cohort reporting, developers can easily track metrics like retention, revenue per user, and user engagement from the moment the user downloaded and opened the app within the defined date range. Cohort reporting is equally as useful for both monetization and marketing efforts.Looking to implement cohort reporting? Head to our developer center for more info.How we helped Homa Games with cohort reportingHyper-casual publisher Homa Games didn’t have the technological resources to build their own reporting dashboard and were on the lookout for a partner that could provide robust and actionable data that would give them insight into their monetization performance.Once Homa Games began utilizing ironSource’s cohort reports, they were able to instantly see the impact of the changes made to game design or ad monetization strategy. ironSource’s cohort reports immediately alerted Homa Games about a sudden drop in ARPU. Homa Games realized that some levels they had recently integrated into their game were too difficult, causing users from new cohorts to leave the game after only a few minutes. Thanks to the cohort report, they caught the problem quickly and implemented a solution.Homa Games also uses the ARPU calculation within the cohort reports to calculate the perfect bid in order to improve their UA efforts. The result? A 9% increase in ROI.User activity reportsUnderstanding user behavior is key to optimizing your monetization and marketing strategies. By utilizing user activity reports, you get access to valuable information and analytics that breakdown user activity and ad engagement through advanced metrics. In one report, you can see DAU, ARPDAU, and sessions/DAU for each game, ad unit, country, and ad source. Learn more about user activity reports here.Mobile game publisher Random Logic utilized user activity reports to analyze ARPDAU and engagement rates, remarking, “it’s a great report to know if your current strategy or testing is effective.” We’re living in a data-driven worldWithout access to data, developers today would be unable to track and understand their user base. From engagement metrics to business metrics, and just about everything in between, developers today have access to a wealth of data that will ensure that they make smarter business decisions.
]]></description><link>https://unity.com/blog/mobile-game-kpis-analytics-and-metrics</link><guid isPermaLink="true">https://unity.com/blog/mobile-game-kpis-analytics-and-metrics</guid><pubDate>Tue, 04 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Digging into Terrain Paint Holes in Unity 2019.3]]></title><description><![CDATA[Unity 2019.3 continues to bring more exciting updates to Unity’s Terrain system, including – by popular demand – the ability to create holes in your Terrain!Using the new Paint Holes brush tool, you can mask out areas in the mesh of your Terrain Tiles, and even manipulate these masks through your code. This makes it easier than ever to add terrain characteristics like holes, portals, or even caves by taking advantage of in-Editor tools like ProBuilder, ProGrids, and Polybrush. Let’s take a look at how we can create a simple cave using this process.Place a new Terrain Tile in your Scene and create a rough mountain shape. If you haven’t tried our latest Terrain Tools preview package, check out this excellent primer along with this guide on Terrain material painting.From the Terrain Tools drop-down menu, select the Paint Holes brush. With your Terrain Tile selected, pick your brush shape in the Inspector and make sure the opacity of your brush is set to 100. Paint a round shape where you plan to place the entrance of your cave.ProBuilder and Polybrush are in-Editor tools for simple 3D modeling that can be used to create a basic cave. You can easily add both to your Project via the Package Manager. Once both are installed, you can start creating your cave with ProBuilder.Open the tool by navigating to Tools > ProBuilder > ProBuilder Window. Using the ProBuilder menu, create a new ProBuilder shape and select the Pipe preset. Identify which end of the pipe you’ll use for the cave’s entrance. Create a new Plane shape that’s slightly larger than the pipe’s radius, and use it to seal the other end of the cave. Select both objects in ProBuilder and merge them to create a single GameObject. Using the ProBuilder face selection tool, delete any extra faces on the plane that are outside of your sealed cave. Scale your object to match the radius of your Terrain hole, and move it into position.Using Polybush, push/pull the vertices along your cave entrance until they align nicely with your Terrain hole. You’ll also want to use Polybrush along the length of your cave to add variation and make it look more like a natural environment.Congrats, you now know how to add a bunch of fun details to your Terrain! If you’d rather do your modeling externally, you can still use your favorite 3D modeling program to create a cave mesh and import it using Unity’s DCC integration tools. Don’t forget to further decorate your cave with rocks or lighting!--To learn more about how to create rich Terrain, check out our Paint Holes documentation and Terrain workshop from SIGGRAPH 2019. Happy "terraining!"]]></description><link>https://unity.com/blog/engine-platform/digging-into-terrain-paint-holes-in-unity-2019-3</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/digging-into-terrain-paint-holes-in-unity-2019-3</guid><pubDate>Fri, 31 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2019.3 is now available]]></title><description><![CDATA[This release features a brand-new Editor interface, new Input System, faster in-Editor iteration time and lots of other improvements. The High Definition Render Pipeline and many 2D packages are now verified for 2019.3.Regardless if you work in games, entertainment, automotive, architecture, or any other industry, the Unity 2019.3 TECH stream release has something for you. Read this post for the highlights and then visit the 2019.3 webpage for details on each feature area. The website collects the related technical talks from Unite Copenhagen, the latest tutorials, documentation on how to get started, and much more.If you are in pre-production or simply want to get your hands on all the latest features now, you can begin downloading the full release from our update page. For those of you who have projects in production or want to update live projects, we highly recommend waiting for the 2019.4 Long-Term Support (LTS) release. Unity 2019.4 LTS will ship this spring.It will have the same feature set as Unity 2019.3. The difference is that while the TECH stream offers you the latest features and improvements, in the LTS releases we focus entirely on stability and quality. We only add fixes that address crashes, regressions, and issues that affect the wider community. That means Integrated Success Services customer issues, console SDK/XDK issues, or any major changes that would prevent many of you from shipping your game. The LTS release is supported for two years, with biweekly updates providing further fixes, and is intended for projects beyond pre-production.Check out some of the Unity 2019.3 highlights in this video.You can now create holes, caves or trenches with ease in Unity 2019.3 thanks to the newest terrain updates.Preview your animation rigging and keyframing in Timeline for faster iteration and to take advantage of Timeline tools.With Presets, you can customize the default state of just about anything in Unity – components, import settings, even custom assets – without coding. Presets can benefit development teams of all sizes, from streamlining repetitive tasks or validating design decisions, to enforcing standards and project templating.Unity now supports third-party renderer materials, enabling you to import specific materials like Autodesk Arnold Standard Surface shaders and display their properties correctly.With Scene Picking you can now lock certain parts of your Scene so you can focus on what you actually want to update and not worry about making unintended changes.Unity 2019.3 also features several new additions to DOTS-powered artist tooling that make it easier for artists and designers to collaborate on DOTS-based projects and to take advantage of improved iteration speed and on-device performance.The new suite of 2D tools makes high-end 2D creation more accessible by bringing new and improved workflows to all creators, from individual artists to large teams. The following packages are verified to work with Unity 2019.3:The 2D PSD Importer allows you to import layered Photoshop images directly into Unity, conserving the layer information and Sprites, which is particularly useful if you plan to use the 2D Animation package.2D Animation provides all the tooling (Sprite rigging, tessellation, bone creation, etc.) you need to create skeletal animations right in the Sprite Editor.Unity now also includes two powerful tools for 2D worldbuilding: 2D Tilemap Editor makes it easy to create square, hexagonal, and isometric tilemaps, and 2D Sprite Shape allows you to create organic spline-based 2D terrains and objects.The 2D Pixel Perfect feature ensures that your pixel art remains crisp and stable in motion at different resolutions, and Cinemachine now includes a Pixel Perfect Virtual Camera extension to improve compatibility with 2D Pixel Perfect.We continue improving our 2D tools, and so this release also contains a preview of new 2D features:The new 2D Lights and 2D Shadows are included in the Universal Render Pipeline as part of the 2D Renderer.Secondary Textures allow you to add Normal Maps and Mask Maps to Sprites in the Sprite Editor to make these GameObjects react more realistically to 2D Lights conditions.With 2D Animation’s Sprite Swap, you can quickly change a character’s appearance while keeping the same rigging and animation.Lost Crypt, a new sample project that showcases this 2D evolution, is available to download.This release features a number of serialization improvements. The new SerializeReference attribute provides an alternative to ScriptableObjects for expressing relations between objects (e.g., graphs) and polymorphic containers (e.g., List<IFoo>). That means you can have regular C# objects referencing each other, which simplifies your code. And the transition to our new optimized UnityYAML library speeds up text serialization, including loading and saving Scenes.We added Configurable Enter Play Mode as an Experimental feature. By disabling domain and/or Scene reloading from the Enter Play Mode process (when there are no code changes) you will speed up iteration times significantly.We also upgraded the PhysX library from v3.4 to v4.1, which includes a new API and faster MeshCollider instantiation time, as well as a number of improvements for cloth.Profiling improvements include configurable frame count, allowing you to inspect performance data through a larger window of frames. Deep Profile now lets you instrument C# code in all Players, and the managed allocation, call stack support allows you to identify when a C# function is triggering the Garbage Collector in all Players.This release also introduces a number of efficiency improvements to the DOTS game code that allow you to achieve more with fewer lines of code. (See also the Data-Oriented Technology Stack (DOTS) section below.)In other news for programmers interested in DOTS, Havok Physics for Unity is now available via the Unity Package Manager, with subscription plans for Unity Pro users now available in the Unity Asset Store. This integration is written using the same C# DOTS framework as Unity Physics, and includes the features, performance, stability, and functionality of the closed-source, proprietary Havok Physics engine, written in native C++ for developers who have more complex physics needs.The High Definition Render Pipeline (HDRP) is now a verified package for 2019.3 and recommended for delivering performant, high-fidelity graphics and photorealism on high-end hardware. HDRP assets scale in quality, taking advantage of the available hardware resources. Unity 2019.3 updates to HDRP include Custom Render Pass and Custom Post processing and Physically Based Sky. Also HDRP now works for VR.HDRP now also includes real-time ray tracing features as a preview feature. Ray tracing takes into account the objects in your Scene and simulates true light, shadows, and reflections, which in the offline world would require long render times and/or big budgets.The Universal Render Pipeline, formerly known as the Lightweight Render Pipeline, lets you reach the widest number of Unity-supported platforms with best-in-class visual quality and performance. It comprises a full suite of artist tools for content creation, so regardless if you’re building a 2D, 3D, VR or AR project, you only need to develop once to deploy everywhere. The Universal Render Pipeline now comes with a completely revamped, integrated Post-Processing Stack for greater performance. And you can update your projects from Unity’s Built-in Render Pipeline to benefit from better performance and scaling.The Visual Effect Graph package is verified for Unity 2019.3 and integrated with Shader Graph, which allows you to easily create high-fidelity visual effects. We also added motion vector and Particle Strips to the Visual Effect Graph, providing you with even more control of your particle effects.In Shader Graph you can now add Shader Keywords to create static branches in your graph, which can be used for building your own Shader LOD system. We’ve also added support for vertex skinning for DOTS Animation, and sticky notes to improve your workflow, which let you leave comments and explanations for anyone working on the project.This release also includes multiple lighting updates. For example, you can now merge Light Probes in additively loaded Scenes, making it easier to handle lighting for large Scenes that are broken up into smaller chunks. We’ve also added many performance improvements and updates to the Progressive Lightmapper.The Heretic is a short film by Unity’s award-winning Demo team, now available on YouTube in its entirety. The first part of the project was revealed at GDC 2019 and we shared a preview of the second part at Unite Copenhagen 2019.The Heretic project runs on Unity 2019.3, using a broad range of out-of-the-box graphics features, including every possible aspect of HDRP and the Visual Effect Graph. Watch the whole film to see an entirely VFX-based character that we introduce at the end of the short.We’ve revamped the Editor UI with new icons, a new font, visual feedback, and much more to improve usability, legibility, and performance, and to support high-DPI display resolutions.With the new Quick Search feature, you can easily find anything in the Editor, including assets, game objects, settings, and even menu items.UIElements includes several new features that add useful functionality to the USS stylesheet. The new UI Builder is a visual authoring environment that lets users access the underlying framework of UIElements.We’ve improved the Package Manager, including giving you the option to install packages from a Git repository via a URL. Additionally, you can now manage your Asset Store collection directly through the Package Manager.The new Unity Accelerator provides a local network proxy and cache service that speeds up iteration times for Collaborate source code download and Asset pipeline importing.The new Addressable Asset System (i.e., Addressables) gives you and your team an efficient way to manage complex live content by loading assets by an address that can be called from anywhere.We’ve also updated the AssetDatabase Pipeline to Version 2, which provides asset dependency tracking and many other improvements that together lay the foundation for a more reliable, performant and scalable pipeline. It also greatly improves platform switching and swapping between previously imported versions of assets.The Input System is the new standard to integrate device controls in your projects. The new workflow is designed around Input Actions, an interface that lets you separate controls binding from the code logic. The new system is consistent across platforms, extensible and customizable, and is available in Preview.The Incremental Garbage Collector is now production-ready (no longer experimental). This feature can significantly reduce the problem of Garbage Collector interruptions by distributing the workload over multiple frames. It supports all target platforms except WebGL.Unity’s platform-abstraction layer, Baselib, unifies base functionality for the most common platform-dependent operations. In this release, Baselib updates improve the stability and performance of parallel data structures and synchronization primitives.Are you interested in publishing your game on Stadia? We now offer support for everything that approved developers need to create and ship their first game on Google's new cloud gaming platform. Interested developers should start the process with an application for resources on Google's Stadia developer website.AR Foundation, the framework that enables you to build your application once and deploy it across ARKit- and ARCore-enabled devices, now extends to Magic Leap and HoloLens devices.The XR Interaction Toolkit enables you to add interactivity to your AR and VR experiences, across our supported platforms, without having to code the interactions from scratch. It provides a set of monobehaviours/scripts that implement common object and UI interaction scenarios for both AR and VR devices.Ensure your AR and VR experiences reach the widest possible audience with our modularized XR plugin architecture workflow.To achieve highly realistic graphics and lighting effects that let you push the boundaries of high-fidelity VR, check out HDRP for VR.The Device Simulator (Preview) allows you to simulate how your content will look, as well as preview the behaviors and some physical characteristics, on a broad range of devices.With Unity as a Library, you can now insert features powered by Unity directly into your native mobile applications. These features include, but aren’t limited to, 3D or 2D real-time rendering functions for augmented reality, 2D mini-games or 3D models.On-demand rendering lets you control the rendering loop independently from the rest of our subsystems. This means you have more control to lower power consumption and prevent thermal CPU throttling.Finally, we have moved the System requirements for Unity 2019.3 to the Unity Manual (they were formerly here). We have also added the details for using the Unity Editor and Player on all supported platforms so you can clearly see what’s required and supported. Note that the minimum OS-supported versions are now 4.4 (API 19) for Android and 10 for iOS, and that OpenGL ES is deprecated on iOS.At Unite Copenhagen 2019 we revealed the DOTS Sample project. It showcases how all the DOTS-powered components, including Physics, Animation, NetCode, and Conversion Workflow, work in Unity 2019.3. While we designed it to be an internal test project, feel free to download it and experiment with it. It’s available on GitHub and includes all source code and assets. Here are some of the DOTS features available in this release:DOTS game code updates, which let you achieve more with less boilerplate code.The first iteration of our upcoming new Animation system for DOTS. It offers all the core animation functionality such as animation blending, runtime IK, root motion, layers, and masking.The FPS NetCode used in the DOTS Sample is built on top of DOTS and makes it easy to create a networked game with similar architecture. It provides client-side prediction, authoritative server, and interpolation.Unity Physics leverages the Burst Compiler and the C# Job System and provides functionality such as collision detection and raycasts used for shooting-game mechanics in the project.The Conversion Workflow enables you to convert your GameObjects to entities with one click to harness the power of DOTS while using the workflows you already know.With Unity Live Link, you can make changes in the Editor and push them in real-time to your target device, giving you instant feedback on how changes look, feel, and perform on the actual device.As with all releases, 2019.3 also includes a large number of minor improvements and bug fixes. Find the full list in the 2019.3 release notes. You can also use the Issue Tracker to find specific information on individual bugs.We are happy to announce the four lucky winners of our Unity 2019.3 beta sweepstakes! To celebrate the release of real-time ray tracing in Preview, NVIDIA supplied us with four brand-new NVIDIA GeForce RTX™ 2080 GPUs, which beta participants were eligible to win by helping identify bugs during the 2019.3 beta cycle. Congratulations to Antonios, Dwayne, Kevin, and Tom!Make sure to look out for our upcoming 2020.1 beta sweepstakes and stay updated with beta news by signing up for our newsletter. You can provide feedback on the new features and updates in our forums as well.Are you curious about what’s going to be in Unity 2020.1? You can get access to the alpha version now or wait for the beta. If you’re interested in knowing more about our Preview packages, check out the overview here.We are excited to announce our release plans for this year. With more and more features distributed as packages and continuously updated, we’re reducing the number of TECH stream releases from three to two per year. The 2019 Long-Term Support (LTS) release will be available in spring 2020.Also, remember that since we support each LTS for two years, Unity 2017 LTS will reach the end of its life in March 2020.The 2020.1 TECH stream release is scheduled for spring 2020 and the 2020.2 release is scheduled for fall 2020. The cadence for updates with bug fixes and regressions remains unchanged.]]></description><link>https://unity.com/blog/technology/unity-2019-3-is-now-available</link><guid isPermaLink="true">https://unity.com/blog/technology/unity-2019-3-is-now-available</guid><pubDate>Tue, 28 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Lexus opens the door for virtual production in Unity]]></title><description><![CDATA[Car buyers increasingly expect rich and unique online experiences during their purchase journeys. In this post, learn how Lexus is using Unity to reimagine the production process for advertising/marketing content – ultimately paving the way for the automaker and its creative partners to create high-fidelity imagery and videos faster, more cost-effectively, and at an unprecedented scale.We recently collaborated with Lexus and its agency Team One to create a real-time configurator showcasing the Lexus ES MY19. While you may be familiar with consumer-focused car configurators – commonly seen in web-based “build and price” tools – this new process provides richer capabilities for industry professionals.First, it was purpose-built for developing virtual productions that are too difficult or too expensive to create in the real world. Additionally, instead of providing a generic user experience, it opens up a full-scale vehicle in real-time – with interactive components – letting Lexus and Team One tailor the car’s appearance, setting, perspective, time of day and more.With this new process, professionals can switch move through configurations, switching trims and paint colors on the fly. View the car at night or from any angle. Ditto for swapping out interior options. When they’ve tailored and staged their ideal vehicle, they can capture the perfect shot through a virtual single-lens reflex (SLR) camera. And that spells innovation for Lexus.Listen as Lexus and Team One explain how Unity is transforming their virtual productions.So how did this innovation at Lexus come about? It started simply, with the brand's philosophy to always put the customer first. And one of the ways they try to accomplish that is by practicing omotenashi, the Japanese concept of treating each customer as if he or she is a valued guest in your home and truly anticipating their needs.This plays out in interesting ways for virtual productions. Traditional methods of creating and delivering car imagery and content produce static, pre-rendered visuals that aren’t truly interactive. As a result, they don’t cater to people’s expectations or take advantage of the changing digital and social media landscape.Since the emergence of highly visual platforms such as Instagram, the behavior and expectations of consumers, especially millennials, have changed radically. Potential car buyers now want to see their “fantasy” ride in exciting or dramatic locations, igniting their imaginations. Virtual productions made with Unity pave the way for Lexus to offer these hyper-personalized experiences.Just before Unite Copenhagen in September, the Team One crew selected an appealing location in Denmark as a setting for their in-development app. They collaborated with experts from British image library Domeble, who specialize in CGI, 3D and VR production. Working at Amalienborg Palace, home to the Danish royal family, the team got down to work capturing high-resolution shots – at various times of day – of this marvel completed in 1760. This reality capture data was then used as the basis for photogrammetric scans, which helped the studio elite3d model the courtyard entirely in 3D.“One of the great things about creating volumetric assets for virtual production is the car doesn’t have to be there at all. This is a huge advantage for companies and their agencies,” said Edward Martin, Unity’s Senior Product Manager for Automotive, Transportation & Manufacturing. “First, virtual productions don’t require months of planning or incur the logistics costs of transporting the vehicle, including lighting and props, nor do they need a large crew, crane or set on-site.”Another typical issue for traditional photoshoots is that there’s a fair amount of secrecy around new models, making it almost impossible to pose the real car near urban landmarks or popular vistas. Virtual productions say goodbye to such concerns. And if the weather doesn’t cooperate, there can be costly delays.“For the Amalienborg shoot, we simply picked a day with nice weather,” explains Martin. “There were no special setups required. After a couple of hours – including golden hour – we had all the data we needed to create the volumetric scene, and Team One was able to load the best shots into their app and begin staging the car virtually.”As a proof of concept, Team One assembled their virtual production assets in Unity, adding a UI and virtual-camera options to create the real-time configurator. The app’s interactive controls for the car include the ability to configure the trim level, interior and exterior colors and add animations, while the Environment controls include Time of Day, Position, and Rotation. Once the creative team has tailored and staged the car exactly as they want, they can view it through the virtual SLR camera and access familiar photography controls. For example, they can choose from five different lens types, as well as f-stops and ISO settings, to get the perfect photo-realistic look – wide-angle or tightly cropped, narrow or wide depth of field, and so on.“We had fun on this project and it all came together in time for Unite Copenhagen,” Martin says. “Team One tapped a number of new Unity features, including the High Definition Render Pipeline (HDRP) and Shader Graph.”Other benefits for carmakers and agencies considering creating a real-time app include vastly simplified post-production workflows (e.g., with a virtual car, no smudges or other cosmetic blemishes to worry about), ease of rendering lifelike textures such as leather, and ability to integrate inexpensive digital props from the Asset Store rather than managing physical props.“I’m really excited about the possibilities of real-time and engines like Unity,” said Alastair Green, Executive Creative Director at Team One. “Creating at the speed of conception gives us the ability to have an idea in the morning, execute by the afternoon, and post on social media by the evening. We can take omotenashi to the next level by delivering personalized content at scale and in near real-time to the Lexus community.”“People’s expectations are set by the experiences they have online,” said Gabe Munch, Digital and Social Media Manager at Lexus USA. “When you can make something more interactive and personalized, you’re always going to see more engagement.”To learn more about how Team One developed their Lexus ES MY19 virtual production and real-time configurator in Unity, check out Part 2 of this post. Pierre Yves Donzallaz, from Unity’s Spotlight team, goes behind the scenes and explains how the High Definition Render Pipeline and other features were key for optimizing the visual quality for high-end visualizations.For more general information about the many use cases for Unity and real-time 3D, see Unity for Automotive. Get started on your real-time 3D journey by trying or buying Unity Industrial Collection today.]]></description><link>https://unity.com/blog/lexus-opens-the-door-for-virtual-production-in-unity</link><guid isPermaLink="true">https://unity.com/blog/lexus-opens-the-door-for-virtual-production-in-unity</guid><pubDate>Thu, 02 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Download our new 2D sample project: Lost Crypt]]></title><description><![CDATA[We put our new 2D tools through their paces to create a 2D side-scroller demo. In this post we show how these integrated 2D tools can help you create high-end visuals with Unity.Highly skilled teams have been making gorgeous 2D games with Unity for years, but we wanted to enable everyone, from individual artists to large teams, to have even more 2D tools available to create great-looking games. And many of them will be production-ready as part of Unity 2019.3, which is currently available in beta.We created Lost Crypt using the complete suite of 2D tools. This lively scene features animation, light effects, organic terrain, shaders, and post-processing, all made natively in 2D. It shows how teams and projects of all sizes, targeting any platform, can now get more engaging and beautiful results faster.Lost Crypt should run well on any desktop computer and we have also implemented on-screen controls with the new Input System in case you want to run it on an iOS or Android device. In our tests it ran at 30 fps on common devices like an iPhone 6S.Download from Asset StoreOnce you’ve downloaded Lost Crypt from the Asset Store, we recommend that you start with a blank New Project and select 2D, then import the project from My Assets in the Package Manager, or by clicking My Assets on your Asset Store page. The project includes all the 2D packages you need. It will then overwrite the project settings, changing rendering settings to the 2D Renderer within the Universal Render Pipeline.Once you import it, you will see the Main Scene. When you click Play you should be able to play normally using the keyboard arrows and spacebar to jump.The scripts and game logic are fairly simple, as the main focus of the demo was to make use of the 2D tools to materialize the demo’s concept art.We’ve broken down the demo into several tasks and picked which 2D tools to leverage for that visual challenge.The character was designed in Photoshop and imported directly with the 2D PSD Importer. Open the Sara.psb file with the Sprite Editor to see the character setup and rig. If you open the file with Photoshop, you will see how we kept the different parts and layer names intact.One of the features available with the Universal Render Pipeline is the new Sprite-Lit material. Compared to the usual Sprite-Default material, this one allows Sprites to react to 2D lighting conditions.We imported the character Normal maps in the Sprite Editor, using the Secondary Textures drop-down menu. You can add Normal and Mask maps to 2D animated characters, regular Sprites, tilemaps, and Sprite shapes.The character has 2D IK solvers in the legs to help the animator focus on positioning the ankle and foot tips correctly, then the legs will follow realistically.Once we rigged the character, we made the different animations with the Animation tool and Animator to control those states. You can see how the tool works in this talk from GDC 2019.The character’s ponytail is a different child GameObject and is controlled by 2D Physics. It reacts realistically to movement because every bone of the ponytail has a Hinge Joint 2D component with some restrictions. That allows her hair to move freely without curling too much or overreacting to the character movement.One of the most powerful possibilities of having dynamic lighting on Sprites is to alter the appearance of the environment. Using the same Sprites, you can change the mood, time of day or darkness of an area, which opens up a wealth of gameplay mechanics from stealth mechanics to lively rich worlds.We controlled the lights in the Scene with simple scripts that hold a Color gradient value (light color from daytime to nighttime) and the lights and materials change color following the Time parameter in the parent GameObject. With this kind of setup, you can visually control how different lights blend with each other.One of the challenges that developers of 2D games had in the early days was to efficiently create organic terrain like hills, slopes or irregular ground, which was only achievable through carefully crafted tile sheets. Years later, this was easier to achieve using multiple Sprites representing parts of the terrain, but the workflow or performance could be better.With 2D Sprite Shape you can generate terrain and colliders similarly to how you would do it in a vector-based drawing application. You can adjust the brushes (Sprite Shape Profiles) and start creating without worrying about having to adjust many Sprites or colliders as you iterate on the environment.Lost Crypt also uses some of the Sprite Shape extras like the NodeAttach script to attach elements to the spline, so they follow the spline. In this demo, the rocks use this script and the ConformingSpline in the flowers layer to follow the shape of the grass spline. You can use this feature for gameplay or for decorative elements like we did in the foreground grass layer.Tilemaps is probably one of the most essential 2D tools, not only to save memory space with small chunks of graphics that can be “tile-able” and repeatable, but because it’s also crucial for level design.In Lost Crypt, we used the 2D Tilemap Editor (available via Package Manager) to recreate the crypt interior where it uses some additional Tilemap extra tools (available on GitHub) to make the level-design process more efficient. For example, we used Rule Tile, a tile type that allows you to paint tiles like they were brushes. It automatically selects the right tile based on the neighbouring tiles or ends.Some common elements in games are fire effects, so we added one in Lost Crypt. We started by creating some GameObject torches using the Particle System and Shader Graph for 2D and used the Sprite-Lit Master node for the output shader. We made the fire animation in a traditional Sprite sheet that the Particle System uses to play the animation.The shader we made for the flame utilizes an HDR tint color to increase the intensity of the glowing around the object using the Volume post-processing. The parent GameObject contains some sparks particles and some lights that illuminate the alcove.Another common use case for shaders are reflections and refractions (e.g., water, ice, mirrors or monitors that display another area of the level) are quite common in games.We achieved the water effect in the crypt entirely with Shader Graph. We exposed several parameters (like water color, waves speed, and distortion, ripple effect, etc.), which allowed us to adjust the final appearance in the Scene. In order to project a mirrored image of the environment, we added an additional camera that would output the image in a texture to be read by the Shader Graph. Additionally, we added a pass of post-processing bloom to make the water caustics glow, which gives the water surface a nice effect.One way we animated the environment was to make the tree branches sway in the wind. To achieve this effect, we decided to have just one shader for each tree’s foliage Prefab – that would create variety and avoid repetition.On the Vegetation Wind-Lit graph, you can see how we created two effects. One is the animation or sway effect, which we created by displacing the Vertex position following a few parameters that modify a noise pattern. The second effect uses the G or green channel to adjust the tone of the rim light around the foliage.Light Blend Styles are a collection of properties in the 2D Renderer that describe how lights should affect Sprites. For example, you can create a blend style that will only affect a particular channel. When you add a light in the scene that uses that blend style, it will only affect the areas of the Sprite that the Mask map channel information dictates.In the example below, the parametric light uses our Direct Lighting blend style, which only affects the areas indicated in the R channel of that Sprite’s Mask map.Lost Crypt has a short cinematic when our adventurer grabs the magic wand in the crypt. To make the moment a bit more special, we changed the mood of the environment and spawn particles at the right time with Timeline, since we want to observe the change to nighttime. To follow the particles flying into the woods, we switched Cinemachine cameras by also having an animation track blending camera.The glowing ring that appears when you grab the wand uses of Sprite-type lights. The ring graphic simply expands and fades, creating an aura that lights up the environment.We achieved the particle glow effect mostly with the Bloom effect in Volume post-processing. Also, the material/shader for the particles and trail uses an HDR color to define how much intensity the post-processing effect should apply to this object.Look closely at the woods – you can see some spectral creatures in there. To do that, we created a shader that could be used for other ghosts. They are transparent but a fresnel effect adds some shine in the edges of the Sprite making them wobble like floating creatures.One interesting effect in the shader is the tracking of the wand GameObject transform position. For example, when the wand is close to the ghouls they become brighter. In order to achieve that, we attached a small script to the wand that updates its position in the material shader.The ghouls also have a small animation that swaps from one graphic to another. In order to do that, we created a Mask map with different graphics in each channel: R with one visual, G with the alternate visual, and B for the fresnel effect.For a final layer of polish, we added some post-processing effects included in the Universal Render Pipeline. For example, we created an empty GameObject and attached the Volume component to it. In Lost Crypt we use bloom, white balance, and vignette, but there are many other effects that can be used in 2D projects like motion blur, color correction of film grain effects.We hope the Lost Crypt demo will help you understand how you can use our integrated suite of 2D tools for similar use cases. If you have any questions about the Lost Crypt, you can reach us on the forum.If you have specific questions about our 2D tools, check out the dedicated threads in the 2D section of the forum and under Beta & Experimental features.Want to go behind the scenes with Lost Crypt in real-time? Sign up for our lively webinar where Global Content Evangelist Andy Touch will explain how we used 2D lights, shaders, and post-processing in Lost Crypt. The 2D team from R&D will also join us to answer your questions about the suite of 2D tools or the project itself.RegisterThere’s a limited number of spaces, so make sure you register soon and add a reminder in your calendar.]]></description><link>https://unity.com/blog/games/download-new-2d-sample-project-lost-crypt</link><guid isPermaLink="true">https://unity.com/blog/games/download-new-2d-sample-project-lost-crypt</guid><pubDate>Wed, 18 Dec 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 ways to utilize impression level revenue to grow your game business]]></title><description><![CDATA[Developers in the gaming space are approaching growth in a way they’ve never done before - merging their monetization and user acquisition efforts and creating one virtuous cycle of growth. Previously, monetization and user acquisition teams were siloed, which hindered their own ability to grow. How can UA managers buy efficiently if they don’t know how much advertising revenue the monetization team is bringing in and how? With the two interacting with and informing each other, both sides gain a truly holistic view of the entirety of their business.Impression level revenue brings these two teams even closer. How? By giving monetization teams insight into users’ true ARPU, UA teams get the ability to accurately measure ad revenue on the device level, combine it with IAP revenue, and link that data to the marketing channel or creative that brought in the specific user.Here are three ways app developers can utilize impression level revenue:1. Buy users more efficiently across all marketing channelsOver the past year, we’ve witnessed the rise of 100% ad-based games (ie, hyper-casual), and even IAP developers implementing more ads to monetize their user base. However, without impression level revenue, these games (no matter the proportion of ads they use) couldn’t properly identify ad ARPU - preventing them from learning which marketing channels drove their highest-valued ad engaged users.Likely, these developers were either underbidding on strong marketing channels or overbidding on weak channels just because they thought that the users they were acquiring weren’t generating significant revenue. But even though these users weren’t making IAPs, perhaps they were generating a large amount of ad revenue.With access to impression level revenue, app developers can pinpoint the marketing channels that bring in high-value ad users, and bid higher and lower where necessary. Ultimately, when developers don’t have access to or ignore impression level revenue data, they don’t know the exact value of their users, and are unable to bid effectively.2. Understanding your users and optimizing your monetization strategyBy giving monetization managers a complete picture on a user’s true ARPU, which combines both ad and IAP revenue, impression level revenue makes it easier to segment based on monetization behavior. Ensuring that placements are both relevant and personalized results in a higher engagement rate and more revenue.For example, developers can use impression level revenue to identify ad whales, create segments around these players, and monetize them accordingly. It’s important not to cap the number of rewarded ad impressions for this segment. Since more often than not these users will engage with rewarded ads every time they’re exposed to them, it’s best to show them as many opt-in ads as possible. This is guaranteed revenue and guaranteed engagement.Conversely, developers can segment users who aren’t generating any ad revenue at all, and show only system-initiated ads. By covering every ad revenue segment, you’re better able to maximize your revenue.3. Utilize the ROAS optimizerIf developers are already utilizing ad revenue data, then there’s nothing stopping them from using ironSource’s ROAS optimizer. The algorithm, which optimizes for ROAS, considers both IAP and device level ad revenue data in order to work out the optimal bid and reach desired ROAS goals. Once the optimizer has determined the optimal bid, it’s able to automatically update thousands of bids at a time. This solution ensures that UA managers maximize both scale and performance - easing the level of manual work through automation.In fact, when hyper-casual developer Kwalee utilized the ROAS optimizer, they reduced their eCPI by 10% and raised ROAS by 30% on Android and 40% on iOS. This tool allows for UA managers to bid on actual user quality.With impression level revenue, developers have a full picture of where the revenue they’re generating is coming from. Now, the industry has a data set at their disposal that can help them determine their overall app business health, optimize in-app ad monetization strategies, and most importantly, optimize UA campaign spend. Impression level revenue perfectly bridges together the monetization and user acquisition side of app businesses, and now the gaming space has access to data that is actionable for both monetization and marketing teams.]]></description><link>https://unity.com/blog/3-ways-to-utilize-ad-revenue-measurement-to-grow-your-game-business</link><guid isPermaLink="true">https://unity.com/blog/3-ways-to-utilize-ad-revenue-measurement-to-grow-your-game-business</guid><pubDate>Wed, 04 Dec 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity opens new possibilities for the anime industry]]></title><description><![CDATA[Japanese animation studio Craftar took to the stage at Unite Tokyo 2019 to talk about the new possibilities that Unity brings to the Japanese animation industry.Few Japanese studios have explored the potential of Unity as a production tool for anime because they don’t know if its real-time improvements to their workflow can deliver the extremely high-quality animation that audiences demand. But as visionary studios like Craftar have found, Unity streamlines their production pipeline and delivers incredible results, while also creating new opportunities.The many achievements of Craftar, which is the consulting arm of major Japanese PR company Hakuhodo Inc., include world-class content such as the Netflix anime INGRESS and 2019 animated film The Relative Worlds. The latter, produced by its subsidiary animation company, Craftar Studios, implemented Unity in several difficult scenes. (You can see how Craftar worked with Unity’s NavMesh feature here.)This fall, global auto parts supplier Denso Corporation reached out to Craftar to create an animated promotional video showcasing Denso’s vision for a near-future smart city, highlighting the ways that VR and AR content could be integrated into self-driving cars. The entire animation was rendered in real-time with Unity and can be viewed as either a VR or a standard film experience.Using Unity, Craftar was able to seamlessly create the animation and VR content simultaneously. The result is an experience that immerses viewers inside an anime world that’s as captivating as a standard animated film, thanks to Unity’s real-time rendering capabilities.During the Keynote at Unite Tokyo 2019, Shoichi Furuta, CEO and creative director of Craftar, explained Craftar’s philosophy towards animation: “Our company doesn’t just make animation, we use animation to tackle issues in the industry and in society.” The company is driven by “smart CG animation,” its vision to push the industry forward using the latest technologies like real-time engines and AI – which ultimately led them to choose Unity to create the beloved, richly expressive Japanese anime style using cel shaders.“We at Craftar have only just begun bringing our wealth of expertise into Unity, which will soon become one of the core engines of life and society,” said Furuta. “We’re in an age where everything from smartphones to cars is going digital, which is massively expanding the UX/UI market. It’s essential for every interface to have excellent motion design, and Japanese animation expertise is invaluable when it comes to delivering abundant information in a short time with limited resources.”The innovative Denso project blurred the line between the entertainment and automotive industries, Furuta explained. “Thanks to Unity helping to bridge the gap between the anime industry and the automotive industry, we’ve even been able to smoothly overcome the barriers between businesses and between devices, and bring two previously unrelated industries in Japan closer together.” Using Unity, Craftar intends to continue not only to push the boundaries of games and anime but to also break through the walls between other industries.]]></description><link>https://unity.com/blog/technology/unity-opens-new-possibilities-for-the-anime-industry</link><guid isPermaLink="true">https://unity.com/blog/technology/unity-opens-new-possibilities-for-the-anime-industry</guid><pubDate>Tue, 03 Dec 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Training your agents 7 times faster with ML-Agents]]></title><description><![CDATA[In v0.9 and v0.10 of ML-Agents, we introduced a series of features aimed at decreasing training time, namely Asynchronous Environments, Generative Adversarial Imitation Learning (GAIL), and Soft Actor-Critic. With our partner JamCity, we previously showed that the parallel Unity instance feature introduced in v0.8 of ML-Agents enabled us to train agents for their bubble shooter game, Snoopy Pop, 7.5x faster than with a single instance. In this blog post, we will explain how v0.9 and v0.10 build on those results and show that we can decrease Snoopy Pop training time by an additional 7x, enabling more performant agents to be trained in a reasonable time.The purpose of the Unity ML-Agents Toolkit is to enable game developers to create complex and interesting behaviors for both playable and non-playable characters using Deep Reinforcement Learning (DRL). DRL is a powerful and general tool that can be used to learn a variety of behaviors, from physics-based characters to puzzle game solvers. However, DRL requires a large volume of gameplay data to learn effective behaviors– a problem for real games that are typically constrained in how much they can be sped up.Several months ago, with the release of ML-Agents v0.8, we introduced the ability for ML-Agents to run multiple Unity instances of a game on a single machine, dramatically increasing the throughput of training samples (i.e., the agent’s observations, actions, and rewards) that we can collect during training. We partnered with JamCity to train an agent to play levels of their Snoopy Pop puzzle game. Using the parallel environment feature of v0.8, we were able to achieve up to 7.5x training speed up on harder levels of Snoopy Pop.But parallel environments will only go so far—there is a limit to how many concurrent Unity instances can be run on a single machine. To improve training time on resource-constrained machines, we had to find another way. In general, there are two ways to improve training time: increase the number of samples gathered per second (sample throughput), or reduce the number of samples required to learn good behavior (sample efficiency). Consequently, in v0.9, we improved our parallel trainer to gather samples asynchronously, thereby increasing sample throughput.Furthermore, we added Generative Adversarial Imitation Learning (GAIL), which enables the use of human demonstrations to guide the learning process, thus improving sample efficiency. Finally, in v0.10, we introduced Soft Actor-Critic (SAC), a trainer that has substantially higher sample efficiency than the Proximal Policy Optimization trainer in v0.8. These changes together improved training time by another 7 times on a single machine. For Snoopy Pop, this meant that we were not only able to create agents that solve levels but agents that solved them in the same # of steps as a human player. With the increased sample throughput and efficiency, we were able to train multiple levels of Snoopy Pop on a single machine, which previously required multiple days of training on a cluster of machines. This blog post will detail the improvements made in each subsequent version of ML-Agents, and how they affected the results in Snoopy Pop.We first introduced our integration of ML-Agents with Snoopy Pop in our ML-Agents v0.8 blog post. The figure below summarizes what the agent can see, what it can do, and the rewards that it received. Note that compared to our previous experiments with Snoopy Pop, we decreased the magnitude of the positive reward and increased the penalty for using a bubble, forcing the agent to focus its attention less on simply finishing the level and more on clearing bubbles in the fewest number of steps possible, just as a human player would do. This is a much harder problem than just barely winning the level, and takes significantly longer to learn a good policy.In ML-Agents v0.8 , we introduced the ability to train multiple Unity instances at the same time. While we are limited in how much we can speed up a single instance of Snoopy Pop, multi-core processors allow us to run multiple instances on a single machine. Since each play-through of the game is independent, we can trivially parallelize the collection of our training data.Each simulation environment feeds data into a common training buffer, which is then used by the trainer to update its policy in order to play the game better. This new paradigm allows us to collect much more data without having to change the timescale or any other game parameters which may have a negative effect on the gameplay mechanics.In ML-Agents v0.9, we introduced two improvements to sample efficiency and sample throughput, respectively.Asynchronous EnvironmentsIn the v0.8 implementation of parallel environments, each Unity instance takes a step in sync with the others, and the trainer receives all observations and sends all actions at the same time. For some environments, such as those provided with the ML-Agents toolkit, the agents take decisions at roughly the same constant frequency, and executing them in lock-step is not a problem. However, for real games, certain actions may take longer than others. For instance, in Snoopy Pop, clearing a large number of bubbles incurs a longer animation than clearing none, and winning the game and resetting the level takes longer than taking a shot. This means that if even one of the parallel environments takes one of these longer actions, the others must wait.In ML-Agents v0.9, we enabled asynchronous parallel environments. As long as at least one of the environments have finished taking its action, the trainer can send a new action and take the next step. For environments with varying step times, this can significantly improve sample throughput.Generative Adversarial Imitation Learning (GAIL)In a typical DRL training process, the agent is initialized with a random behavior, performs random actions in the environment, and may happen upon some rewards. It then reinforces behaviors that produce higher rewards, and, over time, the behavior tends towards one that maximizes the reward in the environment and becomes less random.However, not all optimal behavior is easy to find through random behavior. For example, the reward may be sparse, i.e. the agent must take many correct actions before receiving a reward. Or, the environment may have many local optima, i.e. places where the agent could go that appear to be leading it towards the maximum reward but is actually an incorrect path. Both of these issues may be possible to solve using brute-force random searching but will require many, many samples to do so. They contribute to the millions of samples required to train Snoopy Pop. In some cases, it may never find the optimal behavior.But what if we could do a bit better by guiding the agent towards a good behavior by providing it with human demonstrations of the game? This area of research is called Imitation Learning and was added to ML-Agents in v0.3. One of the drawbacks of Imitation Learning in ML-Agents was that it could only be used independently of reinforcement learning, training an agent purely on demonstrations but without rewards from the environment.In v0.9, we introduced GAIL, which addresses both of these issues, based on research by Jonathan Ho and his colleagues. You can read more about the algorithm in their paper.To use Imitation Learning with ML-Agents, you first have a human player (or a bot) play through the game several times, saving the observations and actions to a demonstration file. During training, the agent is allowed to act in the environment as usual and gather observations of its own. At a high level, GAIL works by training a second learning algorithm (the discriminator, implemented with a neural network) to classify whether a particular observation (and action, if desired) came from the agent, or the demonstrations. Then, for each observation the agent gathers, it is rewarded by how close its observations and actions are to those in the demonstrations. The agent learns how to maximize this reward. The discriminator is updated with the agent’s new observations, and gets better at discriminating. In this iterative fashion, the discriminator gets tougher and tougher---but the agent gets better and better at “tricking” the discriminator and mimicking the demonstrations.Because GAIL simply gives the agent a reward, leaving the learning process unchanged, we can combine GAIL with reward-based DRL by simply weighting and summing the GAIL reward with those given by the game itself. If we ensure the magnitude of the game’s reward is greater than that of the GAIL reward, the agent will be incentivized to follow the human player’s path through the game until it is able to find a large environment reward.Since its initial release, the ML-Agents Toolkit has used Proximal Policy Optimization (PPO) – a stable, flexible DRL algorithm. In v0.10, in the interest of speeding up your training on real games, we released a second DRL algorithm, SAC, based on work by Tuomas Haarnoja and his colleagues. One of the critical features of SAC, which was originally created to learn on real robots, is sample-efficiency. For games, this means we don’t need to run the games as long to learn a good policy.DRL algorithms fall into one of two categories–on-policy and off-policy. An on-policy algorithm such as PPO collects some number of samples, learns how to improve its policy based on them, then updates its policy accordingly. By collecting samples using its current policy, it learns how to improve itself, increasing the probability of taking rewarding actions and decreasing those that are not rewarding. Most modern on-policy algorithms, such as PPO, learn a form of evaluation function as well, such as a value estimate (the expected discounted sum of rewards to the end of the episode given the agent is in a particular state) or a Q-function (the expected discounted sum of rewards if a given action is taken at a particular state). In an on-policy algorithm, these evaluators estimate the series of rewards assuming the current policy is taken. Without going into much detail, this estimate helps the algorithm train more stably.Off-policy algorithms, such as SAC, work a bit differently. Assuming the environment has fixed dynamics and reward function, there exists some optimal relationship between taking a particular action at a given state, and getting some cumulative reward (i.e., what would the best possible policy be able to get?) If we knew this relationship, learning an effective policy would be really easy! Rather than learning how good the current policy is, off-policy algorithms learn this optimal evaluation function across all policies. This is a harder learning problem than in the on-policy case–the real function could be very complex. But because you’re learning a global function, you can use all the samples that you’ve collected from the beginning of time to help learn your evaluator, making off-policy algorithms much more sample-efficient than on-policy ones. This re-use of old samples is called experience replay, and all samples are stored in a large experience replay buffer that can store 100’s (if not thousands) of games worth of data.For our toolkit, we’ve adapted the original SAC algorithm, which was designed to do continuous action locomotion tasks, to support all of the features you’re used to in ML-Agents - Recurrent Neural Networks (memory), branched discrete actions, curiosity, GAIL, and more.In our previous experiments, we demonstrated that for a complex level of Snoopy Pop (Level 25), we saw a 7.5x decrease in training time going from a single environment (i.e., v0.7 of ML-Agents) to 16 parallel environments on a single machine. This meant that a single machine could be used to find a basic solution to Level 25 in under 9 hours. Using this capability, we trained our agents to go further and master Level 25---i.e., solve Level 25 to human performance. Note this takes a considerably longer time than simply solving the level---an average of about 33 hours.Here, we declare an agent to have “mastered” a level if it reaches average human performance (solves the level at or under the number of bubbles a human uses) over 1000 steps. For Level 25, this corresponds to 25.14 steps/bubbles shot, averaged from 21 human plays of the same level.We then tested each improvement from v0.9 and v0.10 incrementally, measuring the time it takes to exceed human performance at the level. ll in all, they add up for an additional 7x speedup to mastering the level! Each value shown is an average over three runs, as training times may vary between runs. Sometimes, the agent gets lucky and finds a good solution quickly. All runs were done on a 16-core machine with training accelerated by a K80 GPU. 16 instances were run in parallel during training.For the GAIL experiments, we used the 21 human playthroughs of Snoopy Pop as demonstrations to train the results. Note that the bubble colors in Level 25 are randomly generated, so in no way do the 21 playthroughs cover all possible board configurations of the level. If so, the agent would learn very fast by memorizing and copying the player behavior. We then mixed a GAIL reward signal with the one provided by the Snoopy Pop game, so that GAIL can guide the agent’s learning early in the process but allow it to find its own solution later.Parallel Environments (v0.8) Asynchronous Environments (v0.9) GAIL with PPO (v0.9) SAC (v0.10) GAIL with SAC (v0.10) Time to Reach Human Performance(hours)34:03 31:08 23:18 5:58 4:44 Sample Throughput (samples/second) 10.83 14.81 14.51 15.04 15.28Let’s visualize the speedup in graph format below. We see that the increase in sample throughput by using asynchronous environments results in a reduction of training time without any changes to the algorithm. The bigger reductions in training time, however, come from improving the sample efficiency of training. Note that sample throughput did not change substantially between ML-Agents v0.9 and v0.10. Adding demonstrations and using GAIL to guide training meant that the agent used 26% fewer samples to reach the same training behavior, and we see a corresponding drop in training time. Switching to Soft Actor-Critic, an off-policy algorithm, meant that the agent solved the level with 81% fewer samples than vanilla PPO, and additional improvement is seen by adding GAIL to SAC.These improvements aren’t unique to the new reward function and goal of reaching human performance. If we task SAC+GAIL with simply solving the level, as we had done in our previous experiments, we are able to do so in 1 hour, 11 minutes, vs. 8 hours, 24 minutes.If you’d like to work on this exciting intersection of Machine Learning and Games, we are hiring for several positions, please apply!If you use any of the features provided in this release, we’d love to hear from you. For any feedback regarding the Unity ML-Agents Toolkit, please fill out the following survey and feel free to email us directly. If you encounter any issues or have questions, please reach out to us on the ML-Agents GitHub issues page.]]></description><link>https://unity.com/blog/engine-platform/training-your-agents-7-times-faster-with-ml-agents</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/training-your-agents-7-times-faster-with-ml-agents</guid><pubDate>Mon, 11 Nov 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[The new Asset Import Pipeline: Solid foundation for speeding up asset imports]]></title><description><![CDATA[As of 2019.3, the new Asset Import Pipeline is the default for new projects, aiming to save you time with faster platform switching and laying the foundation for faster imports. We’re also making the asset pipeline scale better for very large projects. Read on to find out more about the new improvements, and our motivation and considerations. Whenever you put a new asset into your project, it doesn’t actually become a part of the project until the Asset Import Pipeline discovers and imports it. The correct detection of the project state is what the Asset Import Pipeline is responsible for while allowing you to query for this state through various APIs. In 2017, the Asset Import Pipeline rewrite work began to pave the way towards a more robust and scalable approach, while also addressing a number of pain points reported by you in your daily workflows. With Unity 2019.3 (now available in beta), the new Asset Import Pipeline (also known as Asset Import Pipeline V2) will be the default implementation for new projects. Older projects can choose to upgrade to the new Asset Import Pipeline to get the benefits of this new system. Now is a good time to share some of the thinking behind the new pipeline. Specifically, we want to share the considerations taken to make sure the new system is compatible with the existing APIs so that scripts will not have to be re-written when upgrading to the new Asset Import Pipeline.There are numerous workflows that are part of a daily development cycle. We have identified the most time-consuming issues and have implemented solutions for them. Importing assets can take a long time. Converting the source data to a format that the Unity Editor, or a platform, is ready to utilize is not a trivial process. For example, importing a complex 3D model requires a large number of computations, and when combined with animation this time can quickly grow. To address this there are 3 key concepts which need to be addressed as part of the solution:With most types of assets, Unity needs to convert the data from the source file, depending on the target platform for your projects. The result will vary between compatible GPU formats such as PVRTC, ASTC or ETC. This is because most file formats are optimized to save storage, whereas in a game or any other real-time application, the asset data needs to be in a format ready for immediate use by hardware, such as the CPU, graphics, or audio hardware. For example, when Unity imports a PNG image file as a texture, it doesn’t use the original PNG-formatted data at runtime. Instead, when the texture is imported, Unity creates a new representation of the image in a different format which is stored in the project's Library folder. This imported version is what is used by the Texture class in the engine, and uploaded to the GPU for real-time display. This is referred to as the Import Result.We need to know that both you and I get the same Import Results in the same exact format when we import, even when we’re using different hardware. The principle of getting the same output for a given input is what we call determinism.The Asset Import Pipeline keeps track of all the dependencies for each asset and keeps a cache of the imported versions of all the assets. An asset's import dependencies are all the data that could influence the import result. This means that if any of your asset's import dependencies are changed, the cached version of the imported asset becomes outdated, and the asset needs to be re-imported to reflect those changes.There are different situations where importing can take a long time. We’ve identified the following two workflows and implemented two solutions to address the above issues: Fresh Project Import and Fast Platform Switching.When you set up a project for the first time, it’s essentially the same as when the Library folder is deleted. This means that every asset in the assets folder needs to be enumerated and imported by the Asset Import Pipeline. This is naturally an expensive operation. However, by ensuring that our import process is deterministic and stable across machines, the time it takes to retrieve import results can be reduced by many orders of magnitude, depending on the size of the Source Asset and the size of the Import Result. We achieve this by using the new Unity Accelerator which caches import results on the cloud from anyone who is connected to it, thus allowing you to directly download the import results from a server rather than having to go through the heavy processing which importing an asset would entail.Up until Unity 2019.2 (with the original Asset Import Pipeline), the Library folder was comprised of the GUIDs of Assets being their filename. Thus, switching from a platform to another platform would invalidate the Import Result in the Library folder, causing it to be re-imported every time you switch platforms.If you had to switch back and forth between platforms multiple times per day, this could easily take up hours, depending on your project size.Some of you have figured out workarounds for this, such as having a copy of your project per platform on your machine, but that doesn’t scale very well.With the new Asset Import Pipeline, we’ve removed the GUID to File Name mapping. Since dependencies for a particular Asset are tracked, we are able to Hash them all together to create a revision for the Import Result of an Asset. This allows us to have multiple revisions per Asset, which then means that we are no longer bound by a GUID to File Name mapping. Not having this requirement allows us to have Import Results which work across different configurations. For Fast Platform Switching, we could have an Import Result per platform, so that when you switch platforms back and forth the Import Result is already there, thus making the platform switch many orders of magnitude faster than with the Asset Import Pipeline V1.As you make changes to assets, Unity generates a number of new files that will get generated. This will take up more storage space on your disk. However, the way we have decided to approach this issue is to remove unused Import Results when Unity restarts. We keep track of the latest import result per platform so that Fast Platform Switching can still take place while older Import Results are removed, thus helping you free up some of your disk space.The new Asset Import Pipeline is available with Unity 2019.3 beta. If you have an existing project, you can upgrade to the new Asset Import Pipeline using the Project Settings Window in the Editor:Selecting Version 2 will tell the editor you now want to use the new Asset Import Pipeline together with this project, and restarting your project will re-import it using the new Asset Import Pipeline code. This essentially has the same effect as deleting your Library folder, but without deleting it. When switching to use Asset Import Pipeline V2, the Import Results from the original Asset Import Pipeline are not deleted as V2 creates its own folder structure to store its Import Results.Projects that you’ve created in Unity 2019.2 or older will still use the original Asset Import Pipeline by default. When opening such a project in Unity 2019.3 for the first time, you'll get an option to upgrade to the new Asset Import Pipeline. If you decline, your project will continue using the original Asset Import Pipeline. Furthermore, the selected version is stored in the EditorSettings.asset file of your project, so it can be version controlled.When creating a new Project with Unity 2019.3 or newer, the new Asset Import Pipeline has become the new default way to work. All new projects you create will be using it.At Unite Copenhagen 2019, our team presented two talks. My talk is a general introduction to the topics covered in this blog post and can guide your decision-making for your own Asset Management strategies. My colleague Jonas Drewsen talked about the upcoming features directed towards making the asset pipeline more extensible and ensuring project stability:Get the Unity 2019.3 beta and try out the new Asset Import Pipeline. We’re looking forward to hearing what you think on the forum! You can also get in touch with me on Twitter if you have further questions.]]></description><link>https://unity.com/blog/engine-platform/new-asset-import-pipeline-for-speeding-up-asset-imports</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/new-asset-import-pipeline-for-speeding-up-asset-imports</guid><pubDate>Thu, 07 Nov 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to use URL handlers and OpenURL safely in your Unity app]]></title><description><![CDATA[The Unity Security team focuses on helping Unity creators build more trustworthy games and applications. Tune in to this blog series for tips, techniques, and recommendations for creating more secure games and apps with Unity.Today we are launching an ongoing blog series about developing securely with Unity. This series will provide content that Unity developers can apply directly in their games and applications. We hope to cover a variety of topics ranging from basic to advanced knowledge, focused on best practices within using Unity products and services. If there’s a subject you’d like to read about, let us know. We look forward to your feedback. The primary focus of this blog is an overview of URL handlers.URL and file handlers associate file types with the installed program that can open the specified file, but they come with risks. For example, when you’re on your local machine and double-click to open a PDF file from your local drive, your operating system refers to its list of file handlers and selects the program assigned for that file type, so your PDF is opened by a program that can display it correctly. File handlers commonly use the file extension (e.g., .pdf – the suffix at the end of the filename) to decide how to handle the file.A similar mechanism, the URL handler, decides how to open URLs based on the path prefix. An example of this would be the ubiquitous https:// protocol, which opens your default browser. Another example of a common URL scheme would be file://c:/windows/system32/drivers/gmreadme.txt; entering this URL in the Run dialog will cause Windows to open this license file in Notepad.URL handlers are a useful feature of your operating system that save users time when launching applications. However, this convenient mechanism may occasionally be unsafe.The Unity Editor and Unity Runtime support programmatic use of URL handlers, both through their use of the .NET Framework, but also through a specific Unity scripting API, namely Application.OpenURL. Game developers often use OpenUrl so that when a player clicks a link in the game, it launches the local system’s web browser. However, if the game developer does not properly sanitize what is passed into Application.OpenURL, their player could be at risk.This scripting API is not inherently unsafe, but in any case where untrusted input is used as part of the URL that’s passed in, you need to take care.Untrusted input/data is any data that does not come from a trusted source. So then, what is a trusted source? Within the context of this article, only your endpoints with strict HTTPS enabled should be considered trusted.There are many examples of untrusted input. If you are designing an anti-cheat system, the player’s local file system should be considered untrusted. If you are developing a multiplayer game, all the players should be considered untrusted.There are other ways to protect data/input by leveraging things like public-private key encryption, but those are beyond the scope of this article. (Leave a comment if you’re interested in learning more about this.)While these handlers provide great convenience to users, they carry inherent risks. Here’s an example of unsafe use of Application.OpenURL:using UnityEngine;
using System.Collections;

public class VulnerableBrowserClass: MonoBehaviour {
    // Pass in URL from link a player clicked on from our game forums
    void OpenBrowser(string url_from_chat) {
        Application.OpenURL(url_from_chat); // ←- Badness here; value isn’t sanitized
    }
}
Figure 1. Example of unsafe use of Application.OpenURLIn this example, the in-game commenting system allows users to share links; when a user clicks a link, the VulnerableBrowserClass.OpenBrowser function is called.Figure 2. Sample scenario with a potentially dangerous linkYou can see how easy it is to send an unsuspecting user a link to a potentially dangerous application (Figure 2). If that URL is passed directly to Application.OpenURL, as shown in Figure 1, the victim's machine will immediately run the application at that link, potentially allowing an attacker to take control of the victim’s system.In the image above, the attacker could format the link above to show up as https://SuperLeetCheats.com/VulnTheGame in the chat window, but have the actual link go to their malware at: file://leethaxorz.net/super_malware.exe. The problem here isn’t that users can send each other links; the problem lies in taking the links sent by a user (potentially the attacker) and passing them directly to Application.OpenURL without any validation or sanitization, as seen in the code sample above (Figure 1). Without that sanitization, clicking the link above would cause the Unity Editor to hand the file directly to the target player’s OS, likely resulting in execution of the attacker’s malware.The safest way to use Application.OpenURL is to never use it with any untrusted data. Use it only to open URLs that come from your developers or servers, and over a trusted transport (i.e., HTTPS).If you use remote configurations (e.g., you host a list of content URLs for new updates), then ensure this data is retrieved only via HTTPS, with strict enforcement. Always retrieve remote content in this manner.Note: HTTPS won’t fix any vulnerabilities in your app due to untrusted/unsanitized input as described in the attack above. It will, however, ensure the data you send to your player hasn’t been tampered with during transport.If you’ve decided that you absolutely need to use OpenUrl with data from untrusted sources, then you must do your best to sanitize the input you receive from the untrusted source. There are a few ways to do this, such as with regex pattern matching, building URLs via .Net libraries, or leveraging external sanitization libraries. However, none of these mitigations will work 100% of the time, and no matter what solution you choose, some potential risk is assumed if Application.OpenUrl (and similar functions) is used with untrusted data.Further, as shown in Figure 2 above, there’s no way for users to know what URL is behind that link. At a minimum, give users a prompt with the full URL they’re about to visit. But you should not consider this a robust solution, as users are known to click through any prompt put in front of them blindly.Using OpenURL and file handlers is very common for developers, particularly with rich media applications and social media-like features, such as in-game chat, reviews, and comments, where users typically want to share content that resides outside the game on the internet. Further, there are common productivity scenarios, such as editing a config file, where you may want to pass a link to the OS, opening the user’s preferred code editing application as a convenience to the user. Application.OpenURL is a platform-independent API to support file handlers, saving Unity developers from having to write their own handlers for every platform.No. As described above, this is a common functionality in most operating systems and is supported by many languages and frameworks. Be mindful of the use of the Windows API Windows.System.LauchURIAsync (for Universal Windows Platform [UWP] apps), or the dreaded System.Diagnostics.Process.Start; both of these native .Net libraries provide the same functionality as Application.OpenURL. LaunchURIAsync allows for launching applications from within Windows’ secure application sandbox, and Process.Start can be used to launch any executable on the local system. Further, some native OS calls provide the same functionality, such as Apple’s open(_:options:completionHandler:). All of these types of APIs can be easily abused if untrusted, unsanitized inputs are passed into these APIs.We will be posting articles here periodically on topics critical to practicing and maintaining security best practices when developing with Unity. Upcoming topics include secure transport for game data and democratizing the secure software development lifecycle (SSDLC). We’re also working to open source some of our internal guidance and security tooling.Is there a security topic you’d like to know more about in a future article? Drop us a line!Find out more about Unity Security, including security advisories.]]></description><link>https://unity.com/blog/news/how-to-use-url-handlers-and-openurl-safely-in-unity-app</link><guid isPermaLink="true">https://unity.com/blog/news/how-to-use-url-handlers-and-openurl-safely-in-unity-app</guid><pubDate>Wed, 06 Nov 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Enter Play Mode faster in Unity 2019.3]]></title><description><![CDATA[Play Mode is at the core of what makes Unity fun to work with. But as your projects get more complex, it can take a while to get started. The faster you can enter and exit Play Mode, the faster you can make and test changes. That’s why we’re introducing Configurable Enter Play Mode in Unity 2019.3 beta as an experimental feature.Currently, when you enter Play Mode in the Editor, Unity does two things: it resets the scripting states (Domain Reload) and reloads the Scene. This takes time, and the more complex your project gets, the longer you need to wait to test out new changes in Play Mode. Starting with Unity 2019.3 beta, however, you’ll have an option to disable either, or both, of the “Domain Reload” and “Scene Reload” actions.Based on our test results, this can save you up to 50-90% of waiting time, depending on your project.When you enable Enter Play Mode Options in File > Project Settings > Editor, you’ll see that the options to reload Domain and reload Scene become available. Check out How to configure Play Mode in the documentation for more details.These options allow you to disable Domain and/or Scene reloading from the Enter Play Mode process when there are no code changes. You can also access this feature through an API and a Callback if you want to reset the game state before entering Play Mode.The diagram below shows the Enter Play Mode process before and after you disable Reload Domain and Reload Scene:See more details on the processes that Unity goes through when entering Play Mode in the documentation.Note that this feature is currently experimental and not all Unity packages are validated to work with disabled Domain and Scene Reloading. Please let us know on the forum if you run into any issues!As you can see, avoiding Domain reload is very simple, but it comes at a cost. You need to make adjustments to static fields and static event handlers in your scripts to ensure your scripting states reset correctly when Play Mode is entered.The following code example has a counter which goes up when the player presses the Jump button. When Domain Reloading is enabled, the counter automatically resets to zero when entering Play Mode. After you disable Domain Reloading, the counter doesn’t reset; it keeps its value in and out of Play Mode. This means that on the second run of your Project in the Editor, the counter might not be at zero if it changed in the previous run.public class StaticCounterExample : MonoBehaviour
{
    //this counter will not reset to zero when Domain Reloading is disabled
	static int counter = 0;

	// Update is called once per frame
	void Update()
	{
    	if (Input.GetButtonDown("Jump"))
    	{
        	counter++;
        	Debug.Log("Counter: " + counter);
    	}
	}
}
Use the [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] attribute, and reset the value explicitly to make sure the counter resets correctly when Domain Reloading is disabled. Example:using UnityEngine;

public class StaticCounterExampleFixed : MonoBehaviour
{
	static int counter = 0;

	[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
	static void Init()
	{
    	Debug.Log("Counter reset.");
    	counter = 0;
	}

	// Update is called once per frame
	void Update()
	{
    	if (Input.GetButtonDown("Jump"))
    	{
        	counter++;
        	Debug.Log("Counter: " + counter);
    	}
	}
}
After you’ve disabled Domain Reloading, Unity won’t unregister methods from static event handlers when you exit Play Mode. This can lead to complications if you have code that registers methods with static event handlers. For example, on the first Play of your project in the Editor, methods would be registered as normal. However, on the second Play of your project, those methods would be registered a second time in addition to the first, and would, therefore, be called twice when the event occurs.The following code registers a method with the static event handler Application.quitting:using UnityEngine;
public class StaticEventExample : MonoBehaviour
{
	void Start()
	{
    	Debug.Log("Registering quit function");
    	Application.quitting += Quit;
	}

	static void Quit()
	{
    	Debug.Log("Quitting!");
	}
}
When Domain Reloading is disabled, the above example adds the `Quit` method again each time you enter Play Mode. This results in an additional “Quitting” message each time you exit Play Mode.Use the [RuntimeInitializeOnLoadMethod] attribute, and unregister the method explicitly so that it isn’t added twice:using UnityEngine;
public class StaticEventExampleFixed : MonoBehaviour
{
	[RuntimeInitializeOnLoadMethod]
	static void RunOnStart()
	{
    	Debug.Log("Unregistering quit function");
    	Application.quitting -= Quit;
	}

	void Start()
	{
    	Debug.Log("Registering quit function");
    	Application.quitting += Quit;
	}

	static void Quit()
	{
    	Debug.Log("Quitting the Player");
	}
}
See more details on modifying your scripts to perform correctly when Domain Reload is disabled in our documentation.We would like to make sure that popular Asset Store packages work with disabled Domain and Scene Reloading. You can help us by reporting any problems you encounter in your projects to the publishers of your asset packages.We believe that if your project is currently slow to enter Play Mode, this feature will speed things up significantly. Join Unity 2019.3 beta and try it out, we’re looking forward to hearing what you think on the forum! Since this feature is experimental, you can still help us shape it so that it fits your needs. We’re especially looking forward to hearing about any issues that you come across.Huge thanks to forum users @Sini, @chrisk, @Peter77, and @Baste who have already helped the whole community out by testing this feature and providing invaluable feedback.]]></description><link>https://unity.com/blog/engine-platform/enter-play-mode-faster-in-unity-2019-3</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/enter-play-mode-faster-in-unity-2019-3</guid><pubDate>Tue, 05 Nov 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Customizing Snaps Prototype assets with ProBuilder]]></title><description><![CDATA[We recently introduced Snaps, asset packs designed to help bring your projects to life. Read on to learn how you can benefit from using Snaps to lay out your levels quickly and easily and how to modify the assets to use them in your game.Snaps Prototypes are modular prototyping assets created entirely with Unity’s ProBuilder 3D modeling package. They are designed to snap to a grid using the ProGrids system. Built to real-world scale, they make it easy for both novice and intermediate-level designers to lay out game environments. You can substitute the prototype assets with high-detail art assets later.Several Snaps asset packs, with different themes, are currently available on the Asset Store. Check back for more soon. We want you to be able to prototype anything.These low-polygon assets are designed to simplify level prototyping by making it modular. You have full control over how you use them. This can save you a lot of time as you no longer need to create your own 3D assets or use external digital content-creation tools to modify them.The assets are lightweight and do not contain any textures. Instead, parts of the meshes have different materials assigned to the topology. However, they are UV unwrapped, making it easy for you to texture them if you wish to do so. Alternatively, after getting your level layout in place, you can replace Snaps Prototype assets with highly detailed meshes of your own.Before we begin working with our assets, let’s take a brief look at how everything is organized within a typical Snaps package.Each Snaps asset pack comes with a script that will automatically download the ProBuilder and ProGrids packages if they are not already included in your project.All of the prototyping assets are within the AssetStoreOriginals folder, under _SNAPS_PrototypingAssets. Here, you will find an About folder containing some necessary information about Snaps, as well as all of your assets. Your assets are categorized according to their respective package names (e.g., ModernOfficeInterior or SciFi_Industrial).Each Snaps Prototype package contains a Prefabs folder, which has all of the 3D meshes with their assigned materials ready for you to place around the scene. There is a Materials folder with material files assigned to different areas of each model, as well as a SampleScenes folder. The SampleScenes folder contains examples of how the assets can be laid out in an environment.Without further ado, let’s see how we can quickly put something together from scratch.It’s time to create a new scene and see how we can arrange some Snaps assets into a level!We’ll use two of the Snaps packs currently available on the Asset Store – the Sci-Fi/Industrial and Office packs – to prototype some futuristic living quarters. This will also serve as inspiration to develop our own prototyping props down the line.Once you have imported Snaps into a project, along with ProGrids and ProBuilder, you will notice some new UI elements appear in the top left corner of your Scene view. This set of icons is part of the ProGrids package – it contains all the tools you need to start snapping your models together quickly. Using the Grid Visibility icon in the toolbar, you can turn on the grid display. Also, with the X, Y, Z, and 3D icons below, you’re able to choose the axis on which you want to render the grid. Just below it is the button that controls grid snapping. With it enabled, if you try to move objects in your scene, they will move within the specified snapping interval. You can optionally enable scale and angle snapping too. Check out the ProGrids documentation if you want to learn more.Let’s put our grid to use. To do that, we can grab one of the floor tiles from the Sci-Fi/Industrial pack and drag it into the scene. Then use the Push to Grid button to match our new tile to our grid, with the corresponding snapping increment (1 by default). Make sure that Snapping is turned on. Now, if we attempt to move our tile around the scene, it will always snap in increments of one unit. You will also notice that the tile’s pivot is set to one of its corners, making sure it will always snap with other tiles. Let’s add some more tiles, laying out the base floor of our level.In much the same manner, we can place walls, doors, and stairs. Once we get to positioning our props, we might need to change the snapping increment from 1 to something smaller, to give us more freedom over their placement. Alternatively, we could go ahead and place the props by hand, using Unity’s default snapping tools to snap them to surfaces where needed.And that’s how simple it is to start using Snaps. Have fun laying out your new game environments! Next, we’ll learn about editing Snaps assets and creating new ones using ProBuilder.Once you have your level layout in place, you might want to replace the low-poly meshes with some high-resolution ones, or vice versa, for faster iteration. You can do so very easily with this downloadable tool.You can access the script under Snaps → Snaps Swap Tool.In the script options, you can pass in a Prefabs folder containing your Snaps Prototype assets. In the case of this script, the Prefab filenames need to match the filenames of the Snaps assets. Once you point the script to the Prefabs, you can simply replace the objects you selected, or all the objects in the scene, with a single click.You can also create customized Nested Prefabs, using Snaps Prototype assets. The script can help you automatically generate high-resolution Prefabs that correspond to them.So, what happens if we want to alter one of the props inside the pack slightly? Perhaps give it a different material, or change the topology? Typically, you’d need experience with an external 3D modeling package to do that. However, since Snaps assets are made with ProBuilder, we can use it to edit any of our existing props – or create new ones – without leaving the Editor.ProBuilder is a completely free 3D modeling and level editing package, available directly within the Unity Editor. The installation steps for ProBuilder can be found at the beginning of this blog post. ProBuilder offers a vast array of 3D modeling tools and is especially useful for prototyping. It is also compatible with ProGrids, making it easy to create precisely positioned geometry.We won’t be covering the entirety of the ProBuilder toolkit here, but you can explore detailed documentation and many tutorial videos on the topic. If you want to get into 3D modeling or find an easier way to create level layouts in Unity, that’s the perfect place to start.To edit any of our existing meshes, we will need to convert it back to the ProBuilder editable format first. To do so, we need to select our mesh in the scene while we are in Object mode.Then, go to Tools → ProBuilder → Object → ProBuilderize. This will open a new ProBuilder toolbar at the top of the Scene view and will enable us to edit the mesh.We will also need to open the ProBuilder window to access the rest of the 3D modeling toolkit. To do so, go to Tools → ProBuilder → ProBuilder Window, and dock it somewhere handy.One of the features of ProBuilder is the Material Editor. This is separate from the main ProBuilder toolkit; you can find it under Tools → ProBuilder → Editors → Open Material Editor. ProBuilder has many other useful editors, such as the UV and smoothing editors, which you would typically find in a 3D modeling package. For now, let’s focus on changing the materials for our object.Since we’re going for a futuristic look, the color scheme of the assets from the office pack doesn’t fit very well. Let’s change it. First, ProBuilderize one of the props – I chose the desk. Now, let’s take a look at our Material Editor. Here, we can select an existing material and assign it to either the entire object or only the selected polygons. We can also assign some materials to hotkeys.Let’s quickly create a matte white material for the desk and a black metallic material for the legs. I can now assign both of these to different hotkeys. After this, let’s go into ProBuilder’s face mode by selecting the corresponding icon in the top toolbar of our Scene view.Let’s select all faces of the desk by going around the desk and selecting with Shift. After that, press either Assign Material or your designated key combination. You can then do the same with your metallic material for all the faces of the desk’s feet.You can also add some emissive materials for the computer screens, or just change the materials initially assigned to the computer screens.So now we know it’s super easy to reassign materials for Snaps with ProBuilder. You can also learn from other Unity users; this video shows you how to use the existing UVs and the UV editor to map a texture to your mesh, walking you through the complete creation process for two simple game props – a crate and a barrel.What if we want to change the geometry of one of the meshes in the level? There is currently an office chair in my level, but it’s not very futuristic. Let’s see how we can turn it into a glorious gaming chair instead.After looking at some references of what those look like, we get an idea of the general shape of our object. Let’s start simple: the back of our chair needs to be a lot taller, as it will have a rounded headrest. There will also be two holes in the backrest, near where the headrest pillow would be. The sides of the backrest are wing-shaped, and the bottom of the back needs to go down all the way to the seat.Let’s start by working on bigger shapes by going into face mode and selecting the top and bottom polygons of the backrest. Then, we can switch to the scale tool and scale-up on the y-axis. This will pull our top and bottom polygons further apart from each other. After that, we can use the move tool to do some micro-adjustments on the faces individually.Tip: The axis in which your scale, move, and rotate tools operate in the context of ProBuilder depends on whether you are in Local or Global transform mode, and whether your handle is at the Center of your selection or the Pivot of the last selected element, like a face or an edge. Generally, it is best to stay in Local transform mode, so that the axes are local to the normals of your selected objects, and to use the Center of your selection as your tool handle placement, to ensure that all of your selected objects are affected by the tool symmetrically.One thing that we can notice is that we don’t have enough detail on the top part of the chair to shape our headrest properly. To fix that, we can go into Edge mode, and use the Insert Edge Loop tool to add two new edge loops along the top of our chair. We can then grab the two new edges at the top of the back and move them up, which gives us a more rounded shape.Let’s get to work on the sides of the chair. We can grab two of our outside edges and scale them apart; however, we will need to add some new edge loops to round off our chair. We should also pull the wings slightly forward.Now it’s time to make the holes in the back. For this, we will need a few new tools. We can split some of our existing quad geometry into triangles, then delete those triangulated faces, and bridge the formed gap outline with new polygons.To begin, we will need to pull some of the geometry in the middle of our backrest upwards. After that, select four diagonally placed faces on both the front and the back of the chair, and press Triangulate Faces in our ProBuilder panel to see the result.As you can see, some of our new triangles are facing the wrong way. We can fix this by undoing our division and deselecting the faces which end up forming improperly oriented triangles. Then we triangulate again, on only one side of the mesh. After that, we can use the Flip Face Edge tool on the other set of polygons, and if we triangulate those faces now, you will see the edge has been flipped correctly.Now, select our new triangles and use Delete Faces to form a gap. Once complete, we can go around the newly formed mesh hole in edge mode, selecting pairs of faces from the front and the back and using the Bridge Edges tool.Earlier, we talked about ProBuilder’s smoothing editor. We can use it to make the corner edges of our chair appear slightly more rounded. Let’s bring up the Smoothing Editor by going to Tools → ProBuilder → Editors → Open Smoothing Editor.We can get rid of any existing smoothing groups on our chair by dragging a selection box around the object in Face mode (make sure Select Hidden is set to On) and pressing the Clear Smoothing Groups button in the Smoothing Editor window.Let’s start smoothing the parts of our chair that we wish to round off. First, we can select all the faces of our backrest, and add it to the same smoothing group by pressing on any of the numbers in our editor. There are no hard edges on the back of our chair, so we can safely do this, but make sure not to select the metal part of the chair base at the back.We can also do the same for the seat, and we can use the same smoothing group since the faces of the back and the seat are not adjacent.It also makes sense to add smoothing groups to other parts of the model that should appear rounded, like the hydraulic cylinder and the feet. Be sure to not assign the same smoothing groups in places where you want to keep a hard edge while smoothing both sides.And there we have it. Here’s the office chair we started with, next to the glorious gaming chair that we have in the end.You now have a good knowledge of using Snaps and editing them with ProBuilder. You might also want to explore how you can make your own props using these packages.Let’s do so by making a small alien-looking prop, which would function as a sort of control panel for our doors.We can begin by making a primitive in ProBuilder. To do so, let’s select the New Shape tool and open its configuration window by pressing the plus icon next to the tool’s name. This will open a dialogue box that lets us set dimensions and specify the type of our new shape.When deciding this, remember that all Snaps assets are made with real-world scale in mind. That means it can be helpful to think about how an object’s size will be relevant to, for example, the height of an average person. Here are the dimensions we went with.Now, the first thing we can do is make this object snappable. To do so, we will plant our pivot point at the base of the object and in the middle. This will mean that it always snaps to our grid. Alternatively, if you were making a floor or wall tile, you might want to put your pivot in the location of one of the corner vertices.For doing this, ProBuilder includes a handy Set Pivot tool, which will place the pivot at the center point of our current selection. Knowing this, we can select the bottom face of our new mesh, which will place our selection handle in the middle of it, and press Set Pivot to place it at the center-base of our object.We can start shaping our object. For now, let’s assign it a material and start working by scaling the top face of the mesh inwards since our prop will converge towards the top. We can then use the Extrude Faces tool to add some new geometry at the top and scale it inwards again.Tip: Did you know you can still use ProGrids snapping functionality when modeling? We can turn it on to place our newly extruded faces on the same height level as the top of our base mesh.After that, we can select the outer top edge loop of our base, and lower it slightly with the Move tool.Let’s extrude the top once more, and we will have the base shape of our object.It would be nice to add a glowing inlay to our prop. Let’s do that now. First, begin by adding two edge loops around either side of our mesh. Then add four more, one on each side of both of our new loops, as shown below.We can now select the two outer edge loops and scale them inwards to bring them towards the center; then do the same on the other side. Now, select all of the faces on the inner side of our edge loop, and in the Extrude menu, we can set them to extrude by Face Normal with a thickness of -0.01. This will give us a nice inlay on our mesh. Let’s make a new emissive material, and assign it to the inlay, for the result below.Currently, the top part of our prop is a bit boring, so let’s fix that. We can lower the outer vertices of the top surface. Before then, we can add some support edges with the Connect Vertices tool to ensure that the quads triangulate properly when we lower the vertices. After that, select the four outer vertices, and bring them down with the Move tool.Neat! One other thing we can do is add a floating element above our mesh. Let’s choose the four triangular faces currently at the top of our mesh, and press Detach Faces. This will give us a new ProBuilder mesh but will form a hole in our old one. To fix that, go back to the old mesh and use the Fill Hole tool by selecting the edges around our missing faces.Next, we can move our new detached mesh upwards and rotate it 90 degrees. Even though this element is floating, we want to keep it as part of the same mesh. To do so, we can merge our meshes by selecting them with Shift and using the Merge Objects tool.Let’s add some final touches by extruding from our new mesh twice more, and assigning an emissive material to it as well.And there we have the result, next to our door.We hope you found this guide useful.Learn more about Snaps Prototype and the other Snaps packs.]]></description><link>https://unity.com/blog/games/customizing-snaps-prototype-assets-with-probuilder-2</link><guid isPermaLink="true">https://unity.com/blog/games/customizing-snaps-prototype-assets-with-probuilder-2</guid><pubDate>Mon, 07 Oct 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Showcasing the world’s first photorealistic mixed reality demo by Varjo and Volvo]]></title><description><![CDATA[Get a behind-the-scenes look at an ambitious automotive project made with Unity from Varjo, the maker of industrial VR/XR headsets known for their superior visual quality in VR.The team at Varjo is behind some of the most innovative projects in the world of mixed reality. They previously shared a photogrammetry-based environment they created in VR with us, and today they will share how they, together with Unity and Volvo, broke new ground on a demo that brings the real and virtual worlds together like never before.Get a first-hand look at this project in-person at Unite Copenhagen. Volvo and Varjo will be on-site showcasing this experience, as well as speaking in multiple sessions:How Volvo embraced real-time 3D and shook up the auto industryCreating next-gen VR and MR experiences using Varjo VR-1 and XR-1Future mobility, smart cars, and autonomous driving: Preparing for a new era at VolvoThe content below is courtesy of Varjo.Mixed reality means blending virtual content with the real world. So far mixed reality has been accomplished with optical see-through, where the user sees digital objects augmented on top of reality through a pair of glasses. This is fine for portraying infographics or playing games, but for realistic scenes, it offers little value. Optical see-through devices can’t display black or opaque content on top of the real world. Everything appears hazy and holographic.We at Varjo wanted to get rid of this limitation and be able to render photorealistic, opaque content – where it is impossible to distinguish between what is real and what is virtual. Our mission was to make photorealistic mixed reality possible with video pass-through. Video pass-through means using cameras to digitize the world in real-time, and then showing the combined result of real mixed with virtual to the user.Before we could achieve this, we first needed a VR headset capable of displaying the real world in human-eye resolution. That is why we released our first human-eye resolution product VR-1, targeted for professional users, to the market in February 2019.And at Augmented World Expo 2019 in Santa Clara, we showed a glimpse of the magic that can be accomplished with video pass-through. We publicly demonstrated our new headset XR-1 Developer Edition for the first time with a joint demo with Volvo, made with Unity. With XR-1, you can blend virtual content seamlessly with reality with extremely low latency and integrated eye-tracking, in superior resolution.Here’s how the world’s first photorealistic mixed reality demo was created.This video is unmodified material shot through the Varjo XR-1 Developer Edition. With XR-1, you can see photorealistic virtual content blending with reality in a full field of view. You can also switch seamlessly from XR to full VR.Varjo began working on a video-pass through mixed reality headset in early 2018. The collaboration between Varjo and Volvo also started in spring 2018, as Volvo outlined the need for an XR headset that would allow them to test various elements of future cars – such as heads up displays, new materials, and UI for infotainment systems – inside a real car while driving on a real test track. The high requirements on readability and low-latency needed to drive a car on a test-track pushed Varjo to succeed in product development.Given how well Unity already worked for the VR-1, it was a natural choice to try out how the virtual objects would appear in mixed reality. The fact that Unity is easy to integrate and extend with C++ libraries, such as our own Varjo plug-in, made it possible for us to extend our plug-in to support mixed reality. By simply defining the empty background in a VR scene to be replaced by the video-pass-through signal, we were quickly able to see virtual objects in a real environment.The close collaboration and fast iterations were made possible by Unity’s ease of use, as our team was developing and improving pass-through simultaneously while working hand in hand with our customer. A year later, the first public demonstration of XR-1 brought to life the capabilities of our technology, combined with Volvo’s superior models and photorealistic Unity graphics.The demo illustrates the power of video pass-through mixed reality as opposed to optical see-through. In this demo, you have the following steps:1. Experience real realityYou see the real world around you through the XR-1 headset. The real world is streamed with <10ms latency via the high-res cameras in the front plate. You see the world in a full field of view and at a high resolution with a 90Hz framerate, which gives a sensation of not wearing any headset at all (i.e., seeing the real world with your own eyes). You can walk around and explore the real world freely.2. Enter photorealistic mixed realityA beautiful Volvo XC60 builds up in front of you. It first appears as a stylized transparent blue wireframe. The virtual car is anchored to the real floor in the room around you and oriented so that the chair in the booth is aligned with the driver’s seat of the virtual car. The viewer can take a seat in the real chair and is still able to see the real surroundings through the wireframe.The car now turns into a solid model, and the surfaces goes from transparent to opaque. The virtual car casts shadows on the floor of the real world, and looking on the car’s surface, it is possible to see that the real world is reflected in the car’s surfaces. The reflections come from an HDR cube map that was taken during setup on the exact spot of the car. The same cube map is also used for ambient lighting.This is the first time the viewer sees opaque mixed reality, and the effect is stunning. You can still see the real world and your colleagues through windscreens.How it was accomplished: The car model was provided to Varjo by Volvo. Because the resolution of the headset and the car was so high, we needed to do as much pre-processing as possible. The lighting was baked in the DCC to textures and multiplied in custom shaders. The baked textures only dealt with occlusion and the shading is still affected by the skybox.Mattias Wilkenmalm from Volvo handled asset creation and wrote custom car paint shaders that delivered superior results. We simply modified them to get the look and transitions we needed. The final model is around 7 million polygons and has around 150 4K textures.

3. Switch seamlessly into virtual reality – and back.The viewer is then asked to step outside the car, and we transition to Venice. The last pieces of the real world around the viewer are now disappearing in a unique transition as the reality transforms into a virtual scene of Venice, where the car is parked in one of the alleys. The reflections in the car are now those of Venice, and the shadows of the car are now landing on the streets of Venice.After a while, we transition back from virtual to the real world. The user can now go around the virtual car and see all the details and reflections. This shows that XR-1 offers the ability to still interact with others and select only the parts you want to virtualize.

How it was accomplished: To make the transitions visually pleasing, Volvo’s Timotei Ghiurau, Lead, Virtual Experiences, and XR Research, used world space 3D noise with alpha cutouts to bring in the car and the environment. This is fast to do in the fragment and it looks very cool. It was a perfect combination when dealing with tight deadlines. Noise functions can be fetched from Unity’s Keijiro's repository.To get the smooth transition for the car reflections, the Venice environment was added to a separate layer so that the real-time reflection probe was only rendering the minimal amount of geometry. The reflection probe was rendered at 30 frames per second while the scene renders at a much higher frame rate. Having the transition visible in the reflection probe added much more immersion to the scene.The fact that XR-1 is a first-of-a-kind headset to offer the ability to seamlessly switch from real reality into mixed reality onwards into full VR and back to reality again makes for a very impressive demo. It is a Matrix-like moment to see the surrounding reality disappear and replaced by a virtual scene – and then traveling back.---Our thanks to Varjo for sharing this post with us. Join us at Unite Copenhagen to see Varjo VR-1 and XR-1 Developer Edition first hand. Get started developing XR applications today with Unity Industrial Collection.]]></description><link>https://unity.com/blog/industry/first-photorealistic-mixed-reality-demo-by-varjo-and-volvo</link><guid isPermaLink="true">https://unity.com/blog/industry/first-photorealistic-mixed-reality-demo-by-varjo-and-volvo</guid><pubDate>Mon, 09 Sep 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mobile Champions: Singular's Susan Kuo]]></title><description><![CDATA[Mobile advertising is an incredibly high-performing marketing channel, but we often forget how new it actually is. Most attribution standards have only been established in recent years, partly thanks to companies like Singular — an MMP that started life as a mobile analytics platform.Tapjoy recently met with Singular co-founder and COO Susan Kuo to discuss how her company successfully merged analytics and attribution into a unified solution and what that means for today’s app developers.WHAT WE LEARNED:- Singular transitioned from an analytics platform to a unified MMP solution in order to standardize marketing data sets across the industry.- Growth marketing is transforming to support more women leaders than ever before.- Singular expects — and is preparing for — a world where mobile apps are privacy-safe environments for consumers.Hi, Susan. Can you start by telling us about yourself and your role within Singular?I’m the COO and co-founder of Singular. In my day-to-day, I oversee business development with our partner ecosystem that spans across a thousand plus publishers, ad networks and other various marketing automation and analytics providers.Singular started out as an analytics product, but transitioned into mobile attribution. Why was this transition important to Singular?When we first started Singular, the mission of our platform was very simple: To give marketers a single source of truth to understand their ROI at the most granular level. But we quickly realized that in order to deliver on our mission to advertisers, we were beholden to the standards of existing mobile attribution at the time. No one in the industry was taking ownership to connect marketing channels and attribution solutions in a way that supported standardized data governance. In order to improve the industry standard, this meant that we would need to help marketers manage their data at the user level. This is why we decided to become an MMP, so that we have the foundation to build a best in class unified platform that provides both Analytics and Attribution in a single solution. Today, over 50% of the top 100 global app publishers use Singular.What separates Singular from the rest of the market as an MMP?The first three years of our business was dedicated to building our analytics solution. It not only connects to over a thousand ad channels, but the core IP also lays the foundation for understanding the taxonomy and hierarchies within each of these networks. Ultimately, that means that we can standardize marketing data sets across these channels so that marketers can see their ROI at the most granular and accurate level.Until 2017, when Singular started offering attribution, marketers had to purchase an attribution and analytics solution side-by-side with different vendors. We are the only MMP to integrate all a marketer’s conversion and install data with their overall marketing and campaign data. The result: Context and color around your marketing investments that is essential for optimization and future growth.Along with Singular, you’re also one of the founders of THRIVE — a professional women’s community for the growth marketing industry. What inspired you to help establish this community, and what do you think of its progress so far?One of the things that I noticed when we started Singular five years ago was how male dominated this industry was. Thankfully, there are more women in our industry today, in higher-powered roles than ever before. I’ve been very fortunate to have met some of the most amazing group of women in our industry. I can’t count how many times during off hours where we commented on how we would love to ‘get together more’ and learn from each other.So, this is really the purpose behind THRIVE.It is a community that is aimed at connecting and empowering women leaders and influencers in growth marketing. The goal is to learn from each other’s mistakes and accomplishments both in and out of the workplace, and most importantly coming together and forming meaningful friendships. If you think about it, the very definition of THRIVE is growing together, and that’s really the objective for this community.We launched our first event at MAU in Las Vegas in May and I’m incredibly pleased with how the launch went. Not only was it one of the most well attended events across all of the adjacent events going on at MAU, but the overwhelming amount of interest from inspiring women across the industry who were keen on getting involved in the community. We came out of the event with some great topics for follow on events and will be looking to launch our second THRIVE event later this quarter here in the bay area, and more to come after!What would you say is the biggest industry trend (or trends) within the mobile advertising space right now? Where do you see it headed in the next few years?There are three primary trends we’re watching unfold in our space:1. Expanded appetite for marketers to test new ad channelsThere is a common misconception about the mobile advertising industry that there are only a few dominant media sources to work with. And yes, a good portion of spend in the market goes to Facebook and Google. But what some marketers aren’t aware of is that there is a considerable amount of good inventory and innovative ad units across other ad networks.My advice to app marketers who aren’t doing this already is this: If you have the ability to scale beyond five ad networks, I definitely recommend trying this out. What we’ve seen in our data is that marketers who advertised on more than 5 ad networks — scaling efforts past Facebook, Google, and Instagram — had a 37% lower CPI and 60% higher installs with the same exact ad spend.2. Growth of mobile apps that monetize through in-app advertisingWe see that there is an estimated 60% growth in mobile apps that will monetize through in-app advertising. Emerging ad-supported genres like hyper-casual are a big part of why in-app advertising revenue is set to triple from $72 billion to $201 billion. Publishers need to make sure that their UA strategy and measurement vendor has a solid solution in place to factor in the in-app advertising revenue into the equation so that you can understand true ROI across your marketing channels.3. A continued push for consumer privacy across dominant industry playersWe expect to see tightening down of consumer privacy from dominant industry players like Apple. There’s been quite a bit of speculation across the industry that one of the likely outcomes can be the potential deprecation of IDFA.At Singular, we’ve spent considerable time imagining and planning for a world where mobile apps and marketers would have to survive in a privacy-safe environment without a common device identifier like IDFA on devices. We recently launched an industry working group called MAP, which stands for Mobile Attribution Privacy. MAP is focused on defining the new standards around a privacy-first Mobile Attribution ecosystem.What’s something that excites you about mobile marketing in 2019, whether it involves Singular or the broader ecosystem?There has been quite of buzz over the past few years about AI. While I think it’s still very much in its infancy, I think we will start to see some initial advancements within our industry this year. For example, we will be looking to launch our Insights product later this year that will be aimed at surfacing benchmarks and predictive models that will enable marketers to automatically uncover insights that they are having to do manually (or worse, not at all). This is an incredibly exciting move for Singular as this has always been the vision for the company since day one, to build the core foundation and standardization of data centrality and data governance.And only when this has been achieved, can we harness the ability to provide insights on top of this data and become what we consider the next generation marketing analytics providers, a true marketing intelligence platform.Tapjoy would like to thank Susan Kuo for taking the time to join us. To learn more about how Singular helps developers grow more while paying less, be sure to download their Scaling Mobile Growth Report and learn how you can unlock breakthrough mobile growth for your mobile portfolio.]]></description><link>https://unity.com/blog/singulars-susan-kuo-ironsource</link><guid isPermaLink="true">https://unity.com/blog/singulars-susan-kuo-ironsource</guid><pubDate>Sun, 25 Aug 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Now available: Spaceship Demo project using VFX Graph and HDRP]]></title><description><![CDATA[Last year, at Unite LA, we released a video showcasing the brand-new Visual Effect Graph in action through a First-Person Game walkthrough, using Unity 2018.3. This demo was rendered using the High-Definition Render Pipeline and showcases High-Definition assets, lighting, and effects.This year, Visual Effect Graph will come out of preview with Unity 2019.3. In order to explore how this project was made, we upgraded the effects to take full advantage of the latest features and released and documented the Spaceship demo project. You can already download, open and learn from it, starting today, using Unity 2019.2.Watch the video of the Spaceship demo.All effects from the Spaceship Demo are made using Visual Effect Graph, from simple environmental VFX to more complex Augmented Reality and Holographic UI, HUD, to a gorgeous Reactor Core effect. Here are some eye-candy screenshots of the environments and effects you will encounter in the demo.The spaceship demo features many effects during its walkthrough. All these effects have been authored and optimized in-game production conditions with performance in mind, targeting 33.3 ms (30 fps) on Playstation 4 (base) at 1080p. All the effects are taking advantage of the many optimization settings we implemented in Visual Effect Graph and High Definition Render Pipeline.Half-Resolution Translucent Rendering renders selected transparent particles at a lower resolution, increasing rendering performance by 4 (at the expense of little blurriness in some rare cases). We used it mostly for big, lit particles that are present in the foreground as their texel/pixel ratio is rather low, the loss in resolution is not noticeable at all.Octagon Particles is an optimization of quad particles and enable the corners of the particles to be cropped. where the pixels are often found transparent (invisible cost). Particle corners are often transparent, but the overlapping of these transparent areas result in unnecessary calculations. Cropping out these sections can optimize the scene up to 25% in situations where there is lots of overdraw. There is also the benefit of reducing the resolution of the translucent sections when they can't be cropped away.Simplified Lighting model: Simple Lit for HD Render Pipeline enables disabling properties of the BRDF - Diffuse Lighting, Specular Lighting, Shadow and Cookie Reception, and Ambient Lighting. By selecting only the features you want to see, you can decrease the lighting computation cost to close to none. For instance, particles can be lit using only Light Probes by selecting a Simple Lit Translucent Model, then disabling everything except ambient lighting. This optimization was chosen for many environment effects that did not require a lot of high-frequency lighting.In order to access this project, you will first need the brand-new Unity 2019.2 Editor. You can easily install it in the Unity Hub App by clicking the Installs Tab, clicking the Add button, then selecting Unity 2019.2.0f1 (or newer versions).Then, you will need to go to the Spaceship Demo page on Github to get the project files. Once on this page, you can clone the project by clicking the “Clone or Download” button, then clicking “Open in Desktop” if you have the Github Desktop app installed. Or, you can use the address above to clone it in another git client.If you do not wish to use git to download the project, you can go to the Releases page and select any release to download the zip file from the release’s title “(Download Project File here)."Do not download the other SourceCode zip or tar.gz files. The project uses git LFS and these archives will not include binary data. If you download a project from this page, please make sure that you have an updated editor.Once downloaded, you need to unzip the project files into the folder of your choice. Then, you are good to go!We also built playable binaries for the demo if you want to run it on your PC. You can download it using this link. For updated binaries, you can also go to the Releases Page of the Github Project in order to find newer, standalone builds.The demo should run around 30fps at 1080p on a mid-range gaming-grade PC with the following specifications:Processor: Intel i5 8400 / AMD Ryzen 5 2600Graphics Card: Nvidia GTX1050 / AMD RX 5608GB RAMUsing Unity Hub, you can add the project in the projects Tab using the Add button and navigate to the root of the project folder. If the Unity version is not selected, you can select it using the drop-down menu. Then you will be able to load the project by clicking the project name.Loading the project takes between 10 to 20 minutes depending on your computer’s capabilities. Once it’s done, you should end up with the editor open and displaying a Discover Spaceship Demo window.The Discover window is made to guide you through the project and help you find the key elements that compose the walkthrough of this 5-minute long sequence. It focuses mainly on visual effects and scripted sequences.Note: You can close the window at any time and reopen it using the Help/Discover Spaceship Demo menu.When the project opens, the window prompts you to open either the Spaceship Demo Level or the Main Menu Scene. By clicking the corresponding Open Buttons, the editor will automatically load the Scenes in the editor. Then, the discover window will go into Discovery Mode, displaying the many points of interest that you can find in this level.You can select items in the list located on the left of the window. All of them will move the Scene View to the relevant point of view and will display useful information on the right side in order to select Game Objects and open Assets. Using this window, you will be able to find out which game objects do what, preview timelines, and open the visual effect graphs that compose every sequence.Visual Effect Graph will come out of preview in 2019.3 and the Spaceship demo project will be updated after the final release to run with Unity 2019.3. Stay tuned for more project updates this fall by starring or watching the repository on GitHub.In the meantime, feel free to join us on the forums and give us feedback about your experience with the Spaceship demo!Join us at Unite Copenhagen to learn more about VFX GraphThe next place you can meet us is at Unite Copenhagen, which takes place September 23 -26. It’s a one-of-a-kind opportunity for you to engage with thousands of talented creators and top developers from around the world!Get ahead with the latest Unity features, tips tricks, and cool reveals in dozens of tech sessions, pop-up talks, and the keynote.Meet industry leaders and make new friends at fun networking events and “Unite at Night” gatherings.Uplevel your Unity skills and make career-advancing connections in workshops, Q&A sessions, and community events.Don’t forget to follow us on Twitter and Facebook for the latest news.]]></description><link>https://unity.com/blog/games/now-available-spaceship-demo-using-vfx-graph-high-definition-render-pipeline</link><guid isPermaLink="true">https://unity.com/blog/games/now-available-spaceship-demo-using-vfx-graph-high-definition-render-pipeline</guid><pubDate>Mon, 19 Aug 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[7 user acquisition strategy tips for mobile apps and games]]></title><description><![CDATA[How to acquire users for your appWant your game to make it to the Top Charts? Today, user acquisition plays a key role in any mobile marketing strategy. As the need for discoverability in the App and Google Play stores increases, the business of generating a user base for new games has erupted. So what’s the best UA strategy? And what’s the best creative to acquire high value users for your mobile app?ironSource LevelUp sat down with mobile industry titans to get advice for any developer to handle their user acquisition strategy like the top game companies do. Hear from the experts behind chart topping games like Homescapes, Cut the Rope, Angry Birds, 1010!, and Adventure Capitalist, to learn how to increase mobile user acquisition while successfully acquiring users through cross-department communication, data analytics, creativity, innovation, and most importantly, a focus on player happiness.1. Maintain a strong relationship between marketing and monetizationKongregate’s Jeff Gurian, VP Ad Monetization and Marketing“At Kongregate, our [combined] monetization-marketing approach has helped give our UA team perspective on what our CPMs are and how competitive they are in the marketplace. If we’re primarily buying on a CPI basis, the amount of inventory we get is dependent on the CPMs that are being driven within the apps we’re buying from. That’s imperative because if the UA team doesn’t know what those CPMs are, they don’t know how much they really need to move the needle to get more volume.”Listen to the full podcast here.2. Your user acquisition strategy should focus on communication and creation, rather than exclusively focusing on the dataWarren Woodward, Director of User Acquisition at Nexon“UA is a communication discipline. While there’s a tendency in user acquisition to build teams mostly with people with mathematics, data or finance backgrounds, at the end of the day, UA is doing marketing, so you have to have creative skills within your team. Your UA team needs to be able to understand messaging – what’s going to connect with people and and what is going to turn them off. The UA team here at Nexon has a very complementary set of skills- we have some people with finance backgrounds, some people with analytic backgrounds, and some people with marketing backgrounds, so it all comes together. Everyone helps out with their strength, which creates a good atmosphere of mutual respect on the team.”Listen to the full podcast here.3. Increase mobile game user engagement with storytelling and always question the dataCarissa Gonzalez, Senior Marketing Manager at Pixelberry“You can’t do user acquisition without taking a deep dive into your numbers. One of the first things I learned early on was to “never trust the data” – if the data is good question it, if the data is bad question it too, if the data is out of trend question it. No matter what, always question the data.”“One of the main things that I love about the gaming industry is the storytelling aspect of it. There’s so many psychological factors that go into game design and so many psychological triggers that developers can place in a game’s UX design. There’s this amazing storytelling opportunity in every part of a game and it’s incredible to see companies in the industry take the time to put value into what they’re developing. In terms of UA specifically, I love that we can track all of our results. That trackability and instant response allows us to see immediately what kind of impact a feature had.”Listen to the full podcast here.4. Approach your mobile app user acquisition strategy knowing that high-quality users are limitedArtur Grigorjan, Head of Growth at Playrix“The second challenge resulting from the rapidly-growing industry is quality user acquisition. Increasing UA costs combined with reduced user quality and reduced retention means it’s getting harder to find quality users at an affordable cost. Game marketers should approach user acquisition knowing that perhaps only a portion of their acquired users will be high-quality or with high LTV-potential. The trick to acquiring quality users is to see which traffic sources are bringing in the highest volume of quality users, and then double-down on them.”Read the full post here.5. Mobile advertising has become essential to in-app experience and app user engagement.Jane Anderson, Head of Ad Monetization at Zeptolab“Across the whole industry there's been a shift to focus a lot more on data to see how it can impact gameplay. Today, game developers are much more precise in terms of estimation and analytics - they actually compare if advertising changes something in app retention. Before that advertising was more like an inevitable evil that everybody had to put in order to survive in the market. Now it’s the source of product improvement, not only the source of incremental revenue. Mobile advertising today and game advertising today is shifting to being a part of the engagement strategy and an integral part of the in-app experience."Listen to the full podcast here.6. Focus on player acquisition instead of user acquisition for mobile gamesTatyana Bogatyreva, Head of UA at Gram Games“It's not really user acquisition, it's more player acquisition, especially when you're looking at the ad driven side of things. We're looking to engage players into the idea behind the games. Gram is making games that are very appealing and addicting and have a low barrier to enter. UA is about figuring out the right approach and allocating the limited resources of the UA team (at Gram we only have four UA people and two marketing artists). So we need to split our time wisely.”“Creatives, specifically on the CTR and IPM side of things, play a very very important role. Playable ads are a very core part of our creatives because they’re representatives of gameplay and users are able to immediately understand gameplay and their objective. Playable ads have been a key driver as we're seeing some of the highest retention come in from the playable units on both sides of the business.”Listen to the full podcast here.7. Mobile app engagement and acquisition strategies are built on player feedbackNate Barker, Director of Business Development at Fluffy Fairy Games“One of the most important things about the game industry is maintaining a tight focus on what actually makes your players happy, and not just on the metrics. Things like DAU, MAU, and ARPDAU are important but you can make better decisions about the right way to drive your monetization or UA based on your players.Listen to the full podcast here.Learn more about mobile game user acquisitionMake sure you subscribe to LevelUp to continue receiving tips from trailblazers in the gaming industry and stay updated on all things related to gaming.]]></description><link>https://unity.com/blog/mobile-user-acquisition-tips</link><guid isPermaLink="true">https://unity.com/blog/mobile-user-acquisition-tips</guid><pubDate>Mon, 19 Aug 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Accelerate your Terrain Material painting with the 2019.2 Terrain Tools update]]></title><description><![CDATA[After receiving your feedback, we are excited to share some new improvements to Terrain Material painting. Our 2019.2 Terrain Tools package lets you paint complex Terrain with less effort and includes UI changes to help speed up your workflow.This package update enhances the experience of painting Materials on Terrain. In this update, you’ll find new Brush Mask Filters, a revised Paint Texture tool, and improvements to the Terrain Toolbox workflow.You might already be familiar with Brush Masks, which are Terrain Brushes that use a single-channel Texture to define the shape and strength of the Terrain area you’re working on. To adjust the grayscale mask output, you can change other Brush features such as Radius Scale, Falloff, and Remap.Brush Mask Filters are an exciting new addition to Terrain Brushes. These filters add additional operations to the Brush before computing the final Brush Mask output.For example, if you use the Add filter with an input value of 5, the elevation of the sculpting area increases. This is because we’ve added 5 to each pixel of the Brush Mask.There are two categories of Brush Mask Filters. The first category contains math operation filters, which are commonly seen in node-based editing tools for manipulating Textures. The second category comprises of Terrain-based operations.A Terrain-based filter might contain a series of operations that help to isolate certain Terrain features. For instance, the Height filter uses Minimum and Maximum height values to isolate a certain height range of the Terrain. The Concavity filter helps identify exposed crevices of a Terrain, and even includes an option for detecting recessed faces. There are 15 filters available in this package release.AbsAddClampComplementMaxMinMultiplyNegateNoisePowerRemapAspectConcavityHeightSlopeYou can easily add or combine multiple filters in the Brush Mask Filters stack to achieve different results. This new feature is available to all Terrain Brushes!Unity performs the operations in order, from top to bottom. By using different combinations of Brush Mask Filters, you can achieve some really interesting and nice results, such as the Terrain Textures that appear later on in this blog post.You can combine multiple Brush Mask Filters to create complex Brushes that fit your needs.Here are the steps to follow, as demonstrated in the video.Scree: Add a Height filter to mask out the river bed and other flat areas that will be covered with water.Sand: Adjust the Height filter to mask the river banks, and add a Slope filter to smoothen out the transitions between slope changes. Then, disable the filter to touch up areas with harsh Texture transitions. You can disable filters to quickly alter the filter stack without losing data.Grass: Adjust the Height filter to mask out all areas below the riverbank, and adjust the curve to smoothen slope transitions.Rock: Remove the Height filter, and adjust the slope curve to mask off flat areas. Use the Slope filter to target areas with steep slopes, and lightly blend them into the flatter grass areas. Moss: Add the Complement filter, and set an input value of 1 to invert the results of the stack. Instead of targeting steep slopes, the Complement filter lets you target flat areas and shallow slopes. Then, add the Noise filter to randomize the results, and the Power filter to sharpen the areas you’re painting on. Moss has a tendency to grow in areas with high moisture, and unlike grass, it can live on steeply-sloped surfaces as well as areas with higher elevation.Snow: Remove all the filters to empty the filter stack. Add a Height filter to mask off the peak of the mountain. Add an Aspect filter to mask off faces of the mountain relative to the desired direction. Use the Aspect filter to replicate snow that has been blown by a gust of wind. Add a Concavity filter to target the valleys of the summit, and replicate the accumulation areas of snow within a cirque.The improved Paint Texture tool now includes a brand new Terrain Layer Eyedropper tool as well as reorderable Material Layers.Hold Shift + A to enable the Terrain Layer Eyedropper tool, and then click on an area of the Terrain to pick a Material directly from it. The tool works similarly to the Eyedropper tool in photo editing software. This greatly speeds up the process of selecting Materials while painting.The Material you choose appears in the updated Material Layer UI, which now features a list that you can reorder. Reorder Material Layers in the UI to change its corresponding splat map channel. Splat maps are Material Distribution Mask Textures that Unity uses on Terrain. To simultaneously delete multiple Terrain Layers, simply enable the checkbox next to each layer, and then hit the Remove Layer button.The Terrain Toolbox workflow has been improved in multiple ways. You'll notice a difference when importing both Material Layers and Splat Maps. Instead of having to manually select a Texture from the Asset folder, you can now import Textures directly from a Terrain.When you use external content creation software like World Machine, exported splat maps might sometimes be oriented incorrectly. Now, when you import splat maps using the Terrain Toolbox, you can preview them and adjust their orientation as needed.On the topic of visualization, the Terrain Toolbox also has a new section for visualization tools. Use the Heatmap Altitude tool to preview the elevation of a Terrain as you sculpt it. This is great for sculpting Terrain that needs to be relatively uniform with the rest of your world. It's also useful for sculpting Terrain from a bird's-eye view and planning out elevation-specific features like lakes.All of these new features and updates are currently available in the latest Terrain Tools package, which you can download from the Package Manager in Unity 2019.2.0f1 or newer versions.Our Terrain team is just getting started and will continue to work hard at developing new features. Please share your feedback with us in the World Building forum!]]></description><link>https://unity.com/blog/engine-platform/accelerate-your-terrain-material-painting-with-the-2019-2-terrain-tools-update</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/accelerate-your-terrain-material-painting-with-the-2019-2-terrain-tools-update</guid><pubDate>Thu, 15 Aug 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Custom lighting in Shader Graph: Expanding your graphs in 2019]]></title><description><![CDATA[With the release of Unity Editor 2019.1, the Shader Graph package officially came out of preview! Now, in 2019.2, we’re bringing even more features and functionality to Shader Graph.To maintain custom code inside of your Shader Graph, you can now use our new Custom Function node. This node allows you to define your own custom inputs and outputs, reorder them, and inject custom functions either directly into the node itself, or by referencing an external file.Sub Graphs have also received an upgrade: you can now define your own outputs for Sub Graphs, with different types, custom names, and reorderable ports. Additionally, the Blackboard for Sub Graphs now supports all data types that the main graph supports.Using the Shader Graph to create powerful and optimized shaders just got a little easier. In 2019.2, you can now manually set the precision of calculations in your graph, either graph-wide or on a per-node basis. Our new Color Modes make it fast and easy to visualize the flow of Precision, the category of nodes, or display custom colors for your own use!See the Shader Graph documentation for more information about these new features.To help you get started with the new custom function workflow, we’ve created an example project together with step-by-step instructions. Download the project from our repository and follow along! This project will show you how to use the Custom Function node to write custom lighting shaders for the Lightweight Render Pipeline (LWRP). If you want to follow along using a fresh project, make sure you’re using the 2019.2 Editor and LWRP package version 6.9.1 or higher.To get started, we need to get information from the main light in our Scene. Start by selecting Create > Shader > Unlit Graph to create a new Unlit Shader Graph. In the Create Node menu, locate the new Custom Function node, and click the gear icon on the top right to open the node menu.In this menu, you can add inputs and outputs. Add two output ports for Direction and Color, and select Vector 3 for both. If you see an “undeclared identifier” error flag, don’t be worried; this will go away when we start to add our code. In the Type dropdown menu, select String. Update your function name — in this example, we’re using “MainLight”. Now, we can start adding our custom code in the text box.First, we’re going to use a flag called `#ifdef SHADERGRAPH_PREVIEW`. Because the preview boxes on nodes don’t have access to light data, we need to tell the node what to display on the in-graph preview boxes. `#ifdef` tells the compiler to use different code in different situations. Start by defining your fallback values for the output ports.Next, we’ll use `#else` to tell the compiler what to do when not in a preview. This is where we actually get our light data. Use the built-in function `GetMainLight()` from the LWRP package. We can use this information to assign the Direction and Color outputs. Your custom function should now look like this:Now, it’s a good idea to add this node to a group so that you can mark down what it’s doing. Right-click the node, select Create Group from Selection, and then rename the group title to describe what your node is doing. Here we've entered “Get Main Light”.Now that we have our light data, we can calculate some shading. We’re going to start with a standard Lambertian lighting, so let's take the dot product of the world normal vector and the light direction. Pass it into a Saturate node, and multiply it by the light color. Plug this into the Color port of the Unlit Master node, and your preview should update with some custom shading!Since we now know how to get light data using the Custom Function node, we can expand on our function. Our next function gets attenuation values from the main light in addition to the direction and color. As this is a more complicated function, let's switch to file mode, and use an HLSL include file. This lets you author more complicated functions in a proper code editor before injecting it into the graph. This also means that we have one unified location to debug the code from. Start by opening the `CustomLighting` include file in the Assets > Include folder of the project. For now, we’ll only focus on the `MainLight_half` function. The function looks like this:This function includes some new input and output data, so let’s go back to our Custom Function node and add them. Add two new outputs for DistanceAtten (distance attenuation) and ShadowAtten (shadow attenuation). Then, add the new input for WorldPos (world position). Now that we have our inputs and outputs, we can reference the include file. Change the Type dropdown to File. In the Source input, navigate to the include file, and select the Asset to reference. Now, we need to tell the node which function to use. In the Name box, we’ve entered “MainLight”.You’ll notice that the include file has `_half` at the end of the function name, but our name option doesn’t. This is because the Shader Graph compiler appends the precision format to each function name. Since we’re defining our own function, we need the source code to tell the compiler which precision format our function uses. In the node, however, we only need to reference the main function name. You can create a duplicate of the function that uses ‘float’ values to compile in float precision mode. The ‘Precision’ Color Mode lets you easily track the precision set for each node in the graph, with blue representing float and red representing half.We’ll probably want to use this function again somewhere else, and the easiest way to make this Custom Function reusable is to wrap it in a Sub Graph. Select the node and its group, and then right-click to find Convert to Sub-graph. We’ve called ours “Get Main Light”. In the Sub Graph, simply add the required output ports to the Sub Graph output node, and plug the node’s output into the Sub Graph output. Next, we’ll add a world position node to plug into the input.Save the Sub Graph, and go back to our unlit graph. We’re going to add two new multiply nodes to our existing logic. First, multiply the two attenuation outputs together. Then, multiply that output by the light color. We can multiply this by NdotL from earlier to properly calculate attenuation in our basic shading.The shader we’ve made is great for matte objects, but what if we want some shine? We can add our own specular calculations to our shader! For this step, we’ll use another Custom Function node wrapped in a Sub Graph, called Direct Specular. Take a look at the `CustomLighting` include file again, and see that we’re now referencing another function from the same file:This function performs some simple specular calculations, and if you’re curious, you can read more about them here. The Sub Graph for this function also includes some inputs on the Blackboard:Make sure that your new node has all the appropriate input and output ports to match the function. Adding properties to the Blackboard is simple; just click the Add (+) icon on the top right, and select the data type. Double-click the pill to rename the input, and drag and drop the pill to add it to the graph. Lastly, update the output port for your Sub Graph, and save it.Now that specular calculation is set up, we can go back to the unlit graph, and add it through the Create Node menu. Connect the Attenuation output to the Color input of the Direct Specular Sub Graph. Next, connect the Direction output from the Get Main Light function to the Direction input of the specular Sub Graph. Add the result of NdotL*Attenuation to the output of the Direct Specular Sub Graph, and plug this in the Color output.Now we’ve got a bit of shine!The LWRP's main light refers to the brightest directional light relative to the object, which is usually the sun. To improve performance on lower end hardware, the LWRP calculates the main light and any additional lights separately. To make sure our shader calculates correctly for all lights in the Scene, and not just the brightest directional light, you need to create a loop in your function. To get the additional light data, we used a new Sub Graph to wrap a new Custom Function node. Take a look at the `AdditionalLight_float` function in the `CustomLighting` include file:Like before, use the `AdditionalLights` function in the file reference of the Custom Function node, and ensure that you've created all the proper inputs and outputs. Make sure to expose Specular Color and Specular Smoothness on the Blackboard of the Sub Graph in which the node is wrapped. Use the Position, Normal Vector, and View Direction nodes to plug in the World Position, World Normal, and World Space View Direction in the Sub Graph.After you've set up the function, use it! First, take your main Unlit graph from the previous step, and collapse it to a Sub Graph. Select the nodes, and right-click Convert to Sub-graph. Remove the last Add node, and plug the outputs into the output ports of the Sub Graph. We recommend that you also create input properties for Specular and Smoothness.Now you can combine your main light calculations and your additional light calculations together. In the main Unlit graph, create a new node for the Additional Light calculations to go alongside the Main Light calculations. Add the Diffuse and Specular outputs from Main Light and Additional Lights together. Pretty simple!Now you know how to get the data from all lights in a Scene for an LWRP project, but what can you do with it? One of the most common uses for custom lighting in shaders is a classic toon shader!With all of the light data, creating a toon shader is pretty simple. First, take all the light calculations you’ve done so far, and wrap them in a Sub Graph one more time. This will help with readability in the final shader. Don’t forget to remove the final Add node, and feed Diffuse and Specular into separate output ports on the Sub Graph output node.There are lots of methods to create toon shading, but in this example, well use light intensity to look up colors from a Ramp Texture. This technique is usually called Ramp Lighting. We've included some examples of the kind of Texture Asset needed for Ramp Lighting in the sample project. You can also sample a gradient to use dynamic ramps in Ramp Lighting. The first step is to convert the intensity of Diffuse and Specular from RGB values to HSV values. This lets us use the intensity of the light color (the HSV values) to determine the brightness on the shader, and helps us sample the Texture at different spots along the horizontal axis of the Asset. Use a static value for the Y channel of the UV to determine, from top to bottom, what part of the image should be sampled. You can use this static value as an index to reference multiple lighting ramps for the project in a single Texture Asset.Once you've set the UV values, use a Sample Texture 2D LOD node to sample the Ramp Texture. The Sample LOD is important; if we use a regular Sample Texture 2D node, the ramp is automatically mipped in a Scene, and objects further away will have different lighting behaviors. Using a Sample Texture 2D LOD node allows us to manually determine the mip level. Additionally, since the Ramp Texture is only 2 pixels high, we created our own Sampler State for the Textures. To make sure that the Texture is sampled correctly, we set the Filter to Point, and the Wrap to Clamp. We exposed this as a property on the Blackboard so that you can change the settings if the Texture Asset changes.Finally, we multiply the ramp sample from the diffuse calculations by a color property, Diffuse, so that we can change the object’s colors. Add the ramp sample from the specular calculations to the Diffuse output, and plug the final color into the Master node.This simple custom lighting setup can be expanded and applied to a wide variety of use cases in all kinds of Scenes. In our example project, we've included a full Scene configured with shaders that use our custom lighting setup. It also contains vertex animation, a simple subsurface scattering approximation, as well as refractions and coloring that use depth. Download the project, and check out our Example Assets to explore more advanced methods!If you want to discuss Shader Graph, and the shaders you can make with it, come hang out in our brand new forum space! You can also find community members and (sometimes) a few developers hanging out in the community Discord!Don't forget to keep an eye out for recordings of our SIGGRAPH 2019 sessions, where we go into even more detail about using Shader Graph for custom lighting!]]></description><link>https://unity.com/blog/engine-platform/custom-lighting-in-shader-graph-expanding-your-graphs-in-2019</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/custom-lighting-in-shader-graph-expanding-your-graphs-in-2019</guid><pubDate>Wed, 31 Jul 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Here’s what’s in the brand-new Unity 2019.2]]></title><description><![CDATA[We have over 1000 developers dedicated to extending and improving Unity for you. In this release, you get more than 170 new features and enhancements for artists, designers, and programmers. We’ve updated ProBuilder, Shader Graph, 2D Animation, Burst Compiler, UI Elements, and many more. Read on for the highlights.But before we tell you about all the great new additions and improvements, note that we’ve revamped our release announcement too. You no longer have to scroll/scan a super-long post just to find what’s most pertinent for you or your team. Here we give you just the highlights, plus handy links to dedicated webpages featuring all the update info organized by an overview, artist and designer tools, programmer tools, graphics, and supported platforms.But before you dive in, why not start downloading 2019.2 now.ProBuilder 4.0 ships as verified with 2019.2 and is our unique hybrid of 3D modeling and level design tools, optimized for building simple geometry but capable of detailed editing and UV unwrapping as needed.Polybrush is now available via Package Manager as a Preview package. This versatile tool lets you sculpt complex shapes from any 3D model, position detail meshes, paint in custom lighting or coloring, and blend textures across meshes directly in the Editor.DSPGraph is the new audio rendering/mixing system, built on top of Unity’s C# Job System. It’s now available as a Preview package.We have improved how UI Elements, Unity’s new UI framework, renders UI for graph-based tools such as Shader Graph, Visual Effect Graph, and Visual Scripting. These changes provide a much smoother and responsive feel when you author more complex graphs in the Editor.To help you better organize your complex graphs, we have added subgraphs to Visual Effect Graph. You can share, combine, and reuse subgraphs for blocks and operators, and also embed complete VFX within VFX. We’ve also improved the integration between Visual Effect Graph and the High-Definition Render Pipeline (HDRP), which pulls VFX Graph in by default, providing you with additional rendering features.With Shader Graph you can now use Color Modes to highlight nodes on your graph with colors based on various features or select your own colors to improve readability. This is especially useful in large graphs.We’ve added swappable Sprites functionality to the 2D Animation tool. With this new feature, you can change a GameObject’s rendered Sprites while reusing the same skeleton rig and animation clips. This lets you quickly create multiple characters using different Sprite Libraries or customize parts of them with Sprite Resolvers. Now you can swap Sprites to create characters that are completely different visually but use the same animation rig.The Burst Compiler came out of Preview in 2019.1. With this release, Burst Compiler 1.1 includes several improvements to JIT compilation time and some C# improvements.TypeCache provides a fast way to access types or methods marked with specific attributes, as well as types derived from a specific class or interface. It utilizes an internal native cache that is built for all assemblies loaded by the Editor.For developers of mobile apps we have introduced screen brightness controls via the new Screen.brightness property (iOS and Android) and improved the ReplayKit API (iOS). We’ve also made it easier to adjust your UI by adding support for detecting the bounding box around the notch(es).We’ve migrated the PhysX Cloth Library from the previous PxCloth to NvCloth as part of our transition from PhysX 3.4 to PhysX 4.x.In this release, we updated the default editors to Visual Studio 2019 and Visual Studio 2019 for Mac. We’ve also started to move the Code Editor Integrations (and thus IDEs) from core to packages, and exposed our C# APIs. With this release, the Visual Studio Code and JetBrains Rider integrations are available as packages; Visual Studio will be available as a package in an upcoming release.We’ve removed the old .NET 3.5 Equivalent Scripting Runtime. Any projects that use the .NET 3.5 Equivalent Scripting Runtime will be automatically updated to use the .NET 4.x Equivalent Scripting Runtime.Incremental Garbage Collection, released as experimental on some platforms in Unity 2019.1, now supports all platforms except WebGL.This release also includes support for the Intel® VTune™ Amplifier for the Windows Standalone Player (x86, 64-bit) and Windows Editor, including sampling profiling of C# code.In this release, our High-Definition Render Pipeline (HDRP) includes an Arbitrary Output Variables (AOV) API, allowing you to output material properties only, lighting only, depth buffer, and other passes from the Scene. As well, this API is now used in the Unity Recorder, which makes it easy to export specific outputs for rendering with HDRP.We’ve also added Dynamic resolution, which allows you to scale the resolution at which the world is rendered, with hardware dynamic resolution support. This gives you better performance compared to software dynamic resolution.The MatCap debug view mode replaces the material and lighting of objects with a simple environment texture. This mode is useful for navigating and getting a sense of the Scene without having to set up the Scene lighting. For example, if you are editing a dark area, like the inside of a cave, this makes it easier to navigate in low lighting.The new Ambient Occlusion effect is a screen-space shading and rendering algorithm that improves the quality of ambient lighting simulation in your Scene, especially for small-scale details, while providing good performance. You can choose from several options to optimize for performance and quality.There are new 2D features in the Lightweight Render Pipeline (LWRP) such as the experimental 2D Renderer, which now contains 2D Pixel Perfect and 2D Lights. The new 2D Lights enable you to easily enhance visuals of 2D projects directly without having to use 3D lights or custom shaders.Shader Graph now has 2D Master nodes to create 2D Unlit and Lit Sprite Shaders. Additionally, precision modes let you set nodes to use less GPU memory, which helps increase performance on diverse platforms, including mobile.Lightmap denoising now works on all Editor platforms, regardless of GPU manufacturer. We have also made a fundamental change in how you configure the baking, giving you new possibilities for speeding up lightmap baking. As well, we’re introducing new probe workflows.With Probe-Lit GI Contributors, you can choose if objects that Contribute Global Illumination should receive GI from Light Probes or lightmaps. This allows Mesh Renderers to contribute to bounced lighting calculations without occupying texels in the lightmap, which can lead to huge improvements in bake times and reduced memory usage.This release also includes major speed improvements in our GPU Lightmapper, especially during lighting iterations. New features include Multiple Importance Sampling support for environment lighting and increased sampling performance when using view prioritization or small/low occupancy lightmaps.The NVIDIA OptiX AI Denoiser has been upgraded for better performance and lower memory usage, and to add support for NVIDIA Turing GPUs. It is supported in the GPU Lightmapper.Lightmapping now supports the Intel Open Image Denoise library, which is a machine-learning-based filter. It will improve your lightmapping workflow and lightmap quality by post-processing lightmaps. Noise and unwanted artifacts are removed so that you can get smooth, noise-free lightmaps that use far fewer samples.Optimized Frame Pacing for Android, developed in partnership with Google’s Android Gaming and Graphics team, provides consistent frame rates and hence smoother gameplay experience by enabling frames to be distributed with less variance.Mobile developers will also benefit from improved OpenGL support, as we have added OpenGL multithreading support (iOS) to improve performance on low-end iOS devices that don’t support Metal. We also added OpenGL support for SRP batcher for both iOS and Android to improve CPU performance in projects that use the Lightweight Render Pipeline (LWRP).We have added an APK size check using Android App Bundle so you can see the final APK size of different targets for large apps.If you are working with VR, try out HDRP, which now supports VR too.We’re also introducing a revamped SDK loading and management system for your target platforms to help streamline your development workflow. The system is currently in Preview and we’re looking for users to try out the new workflow and to give us feedback.The updated AR Foundation 2.2 includes support for face-tracking, 2D image-tracking, 3D object-tracking, and environment probes. See this recent blog post for details about AR Foundation support for ARKit 3 features.Vuforia support has migrated from Player Settings to the Package Manager, giving you access to the latest version of Vuforia Engine 8.3.We’re continuing to make the Editor leaner and more modular by converting several existing features into packages, including Unity UI, 2D Sprite Editor, and 2D Tilemap Editor. They can be easily integrated, upgraded or removed via the Package Manager.As with all releases, 2019.2 includes a large number of improvements and bug fixes. A special thanks goes out to our alpha and beta community for using and testing all the new tools and capabilities. Your pertinent and timely feedback helped us fix a large number of issues and finalize this release.You can find the full list of features, improvements, and fixes in the Release Notes, which are available here. You can also use the Issue Tracker to find specific ticket information.We are happy to announce that we’ve declared the five lucky winners of our Unity 2019.2 beta sweepstakes. They each won a Samsung Galaxy S10+, and all winners have been contacted. Stay tuned for updates about future sweepstakes and other beta news by signing up for our newsletter.Are you curious about what’s going to be in Unity 2019.3? You can get access to the alpha version now or wait for the beta, which we expect to launch later this summer. The full release of 2019.3 is scheduled for the fall of 2019. If you’re interested in knowing more about our Preview packages, check out the overview here.Not only will you get early access to the latest new features, but you can ensure that your project will be compatible with the new version. You can also help influence the future of Unity by sharing your feedback with our R&D teams in our forums or in person. Additionally, you’ll have the opportunity to get invited to Unity events, roundtables and much more. Start by downloading our latest alpha or beta and have a look at this guide for how to be an effective beta tester.]]></description><link>https://unity.com/blog/technology/heres-whats-in-the-brand-new-unity-2019-2</link><guid isPermaLink="true">https://unity.com/blog/technology/heres-whats-in-the-brand-new-unity-2019-2</guid><pubDate>Tue, 30 Jul 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Upgraded and Updated: Scripting your next game with Visual Studio and Unity]]></title><description><![CDATA[We are excited to announce a refresh of our popular beginner and intermediate scripting tutorial videos, available free on Unity Learn. We teamed up with Microsoft to bring Unity game developers tutorials that will help you get started with the fundamentals of scripting and programming for using C#, Microsoft Visual Studio and Unity 2019.These bite-sized beginner scripting videos will take you from understanding what a script is and how to attach it to your project, through to comparing a single variable against a series of constants. All while learning more about one of the most popular and user-friendly integrated development environments (IDE), Microsoft Visual Studio.The intermediate videos broaden your knowledge a step further by taking you from how to create properties, to using events to create a broadcast system; the building blocks you’ll need for your first Unity game and beyond as you foray further into your game development journey.Hiding in the background of the videos, you’ll see a sneak peek of another update. If you’re familiar with the previous Scripting videos, you’ll remember the Robot Lab environment used to show effects such as blasting doors from frames, moving a robot car around or firing projectiles from a bazooka. Included in our updated videos, we’ve upgraded to RoboLab 2.0, with a few new faces.Have a look at the trailer for a more visual (studio) explanation or go straight to the Unity Learn site to check out the beginner and intermediate level videos.]]></description><link>https://unity.com/blog/games/upgraded-and-updated-scripting-your-next-game-with-visual-studio-and-unity</link><guid isPermaLink="true">https://unity.com/blog/games/upgraded-and-updated-scripting-your-next-game-with-visual-studio-and-unity</guid><pubDate>Tue, 09 Jul 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[What are playable ads? Examples and how to's]]></title><description><![CDATA[The global ad blocking craze pushed the ad industry to rethink its strategies — users were fed up with intrusive, irrelevant, and boring ads. In response, we slowly saw mobile ads shift towards ad formats and creatives that both took advantage of the mobile medium, and also created a value exchange between users and advertisers.Next came rewarded video ads (or RV), which give users in-app currency in exchange for watching a video advertisement — finally, an ad format that engaged users and improved the user experience. Today, playable ads are pushing the boundaries even further.What are playable ads?Exactly what they sound like — ads that you can play. They’re one of several app advertising units available to mobile advertisers today.Simply put, playable ads are ads that offer users interactive snippets of gameplay, otherwise known as “micro-games.” There is a call to action at the end (e.g., install the app), they are completely opt-in, and are typically under one minute in length — meaning “time to magic,” as we call it at ironSource, can be as short as 15 seconds.
Playable ads: Creating, examples, tutorials, and moreThe global ad blocking craze pushed the ad industry to rethink its strategies — users were fed up with intrusive, irrelevant, and boring ads. In response, we slowly saw mobile ads shift towards ad formats and creatives that both took advantage of the mobile medium, and also created a value exchange between users and advertisers.Next came rewarded video ads (or RV), which give users in-app currency in exchange for watching a video advertisement — finally, an ad format that engaged users and improved the user experience. Today, playable ads are pushing the boundaries even further.What are playable ads?Exactly what they sound like — ads that you can play. They’re one of several app advertising units available to mobile advertisers today.Simply put, playable ads are ads that offer users interactive snippets of gameplay, otherwise known as “micro-games.” There is a call to action at the end (e.g., install the app), they are completely opt-in, and are typically under one minute in length — meaning “time to magic,” as we call it at ironSource, can be as short as 15 seconds.But most importantly, users love them. They do a great job of providing an enjoyable ad experience that not only shows the user what the advertised app is really like, but also pulls them in for more and gets them fully engaged.How to create playable adsIn addition to being true to the spirit of the app, playable ads also offer users multiple opportunities and touch points for engagement — unlike any other kind of app ad unit. They’re made up of three components: tutorial, gameplay, and end card.Playable ads tutorialThe tutorial introduces the player to the mini-game and is short and to the point. In 3 seconds, the tutorial effectively immerses the user in the game and explains how to play. It should be clearly interactive with an intuitive design that doesn’t require too many taps. Above all, the user needs to know from the get-go that this is an ad they can interact with.GameplayNext is the actual gameplay. Despite being a quick and simplified version of the game, this section still gives users a proper glimpse into what playing the game would be like. In 10 to 20 seconds, users should be able to know whether or not they want to install the app and keep playing. In a game, users could play an exciting beginning level. In a camera app, users could snap a picture and overlay it with a funky filter.The end cardLast is the end card. Here, the playable ad displays a clear call to action (CTA), asking the user to install the app, or giving them some other steps to perform. If it’s an app-install ad and they choose to install, users are redirected to the app store for download.
Throughout the entire playable ad, there should always be an option to x-out, making sure users feel in control and the experience remains positive.Why playable ads?Lately, at ironSource we’ve noticed advertisers in markets across the world focus their KPIs on acquiring high-quality users, as opposed to prioritizing scale.
This shift couldn’t come at a better time. Now, with interactive ad units like playable ads available, advertisers are better equipped to acquire high LTV users today than ever before.Try before you buyPlayable ads work as a “try before you buy” type ad unit, letting users interact with an app’s main features before installing it. The users who end up installing the app after a few seconds of fun gameplay become more likely to open the app later and continue engaging with it over time, creating more high lifetime value (LTV) players.It’s also because the playable mobile ads are inherently enjoyable, and actually fun to play with. Like the Super Bowl ads viewers look forward to watching, playable ads are an ad format users actually want to encounter.Reduce uninstall rates, improve retention ratesApp uninstall rates in the first hour can be as high as 25 percent. The figure rises to 64 percent in the first month. But by guaranteeing high LTV early in the user lifecycle, playable ads effectively reduce app uninstall rates and improve retention rates down the line — since users who install via playable ads know what to expect from the app. In fact, we’ve seen retention rates jump to 30-40 percent with playable ads.Eventually, this process helps advertisers save money, since it weeds out users who wouldn’t enjoy the app — minimizing money potentially wasted on acquiring irrelevant, low LTV users. Thus, even if the cost per install for playable ads is more expensive than a typical video or banner ad, the ROI ends up being higher.Maximize playable ads: Access to in-ad dataSophisticated playable ad creators can provide advertisers with a large amount of in-ad data, giving them real-time insight into the type of users who engage with their ads. In contrast to other ad formats, which are like black boxes that don’t tell us why a user likes the ad or why the user installed the app, playable ads give developers more transparency. Why? Because there are more moving parts in a playable ad — meaning there are more variables to manipulate and optimize for.

For example, in one of our playable campaigns at ironSource, we saw that too many users were losing the mini-game and therefore not installing the app. So we tweaked the difficulty level and found that while there is a very fine line between ‘medium’ and ‘hard,’ users responded better to ‘medium’ because it combines the positive experience of winning along with the challenge and intrigue of the game. Suddenly, engagement and install rates soared. Only an interactive ad could provide enough data to understand exactly what was wrong with the initial ad, and how to better optimize it for performance.Playable ads examples1. Check out the playable ad ironSource built for Nexon M's Battlejack here.2. Learn how Kwalee used ironSource playable ads to reach #2 in the top charts here.3. View other playable ads ironSource Playworks Studio created here.Beyond gamingFor now, playable ads have been mostly confined to the gaming world. But given how enticing and interactive they are, we can expect to see them spill over into more non-gaming app categories.It’s often the case that gaming advertisers and publishers are the first to utilize the latest innovative mobile ad formats. It was true for offerwall, interstitial, and rewarded video, after all. Like the others, once playable ads have proven their success on gaming apps, non-gaming apps will be the next to hop on the bandwagon and repurpose the format to benefit their unique needs.
]]></description><link>https://unity.com/blog/the-what-how-and-why-of-playable-ads</link><guid isPermaLink="true">https://unity.com/blog/the-what-how-and-why-of-playable-ads</guid><pubDate>Sat, 22 Jun 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Embedding real-time 3D in your digital marketing strategy]]></title><description><![CDATA[Customer acquisition has become a formidable challenge in the digital age. Our latest webinar shares how a major auto brand stands out from the crowd by using immersive technologies to complement every stage of the customer journey.Augmented reality (AR) and virtual reality (VR) – collectively known as mixed reality (XR) – are becoming an integral part of digital marketing. There’s a reason for that. As consumer buying behavior evolves and expectations for personalized, frictionless experiences increase, every brand needs to find new and compelling ways to engage prospective customers.With real-time 3D, you can tell your story in an immersive way, anywhere, on any device and platform. Auto OEMs are deploying this technology across their product lifecycle for a wide range of use cases, including changing the way customers experience and purchase their vehicles.In our latest webinar, “Embedding XR & Real-time 3D in the Digital Marketing Strategies of Automotive Leaders,” we invited Frantz Lasorne and David Castañeda, co-founders of Visionaries 777, to share how INFINITI disrupted the traditional showroom experience with AR and VR.Missed the live showing? Watch it on demand now.Watch the webinarThe 60 minutes are well worth the investment, but if you’re short on time, we’ve covered the top takeaways from the discussion below.During the webinar, Frantz and David shared how Visionaries designed a life-size AR experience to accompany the unveiling of the INFINITI QX50. Participants could move a touchscreen around the vehicle and learn about the inner workings of the new model at various points.Customers weren’t the only ones to benefit from this experience. It also empowered sales teams to easily highlight the new model’s innovations, rather than relying on catalogs and complex videos to get up to speed on the new features. Visionaries first created an interactive digital mockup in Unity, visualizing and simulating the experience before the physical build, which drove efficiencies and saved resources.Real-time 3D isn’t something automakers “bring out of the garage” to make a splash. The technology delivers real results. According to Visionaries, immersive experiences generate more traffic to showrooms and event booths. At a recent trade show, one booth recorded 35% more leads as a result of an on-site real-time 3D activation. As an added benefit, these experiences are scalable and can be easily repurposed for other use cases, such as placing in dealerships.Real-time 3D helps drive sales by demystifying design innovations and helping consumers visualize their customizations, but that’s just one part of the equation. The data from these immersive, interactive experiences can be packaged into insights that add value to multiple departments throughout the organization. For instance, sales and marketing can share which configurations are most popular, helping the design team optimize vehicle design for next year’s model.Check out the webinar to see more of Visionaries’ cutting-edge work with INFINITI. Learn more about the power of real-time 3D on the Unity for automotive page.Watch the webinar]]></description><link>https://unity.com/blog/industry/embedding-real-time-3d-in-your-digital-marketing-strategy</link><guid isPermaLink="true">https://unity.com/blog/industry/embedding-real-time-3d-in-your-digital-marketing-strategy</guid><pubDate>Thu, 06 Jun 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to use Timeline Signals]]></title><description><![CDATA[Since Timeline's introduction in 2017, we know that you've been patiently waiting for a way to send events. Well, wait no more! Starting in Unity 2019.1, a new feature called Signals helps you send events. Let's dive in and see what this new feature is all about.Here's what Signals look like in the Timeline window:We’ve built Signals to establish a communication channel between Timeline and outside systems. But what does that mean? Why did we decide on this approach?Let's say that you are using Timeline to create a cutscene. When the cutscene ends, you want a new scene to be loaded and you want to enable a physics system. There are a couple of ways to implement this scenario:When your cutscene ends, use custom scripts to make your Timeline instance interact directly with a scene manager and your physics system.When your cutscene ends, create markers and signals to send a ‘’Cutscene finished’’ signal and have interested systems react to the signal. The Timeline team went with the second approach because it keeps the emitter independent from the receiver. Keeping them independent adds a lot of flexibility, power, and reusability. To understand this more, let’s see how the different pieces work together.To use signals to communicate with outside systems, you need three pieces: a Signal Asset, a Signal Emitter, and a Signal Receiver.Signal Emitter: A Signal Emitter contains a reference to a Signal Asset. In Timeline, a Signal Emitter is represented visually by a marker. You can place a marker on a track, or in the Markers area under the Timeline ruler.Signal Receiver: A Signal Receiver is a component with a list of reactions. Each reaction is linked to a Signal Asset.Signal Asset: A Signal Asset is the association between a Signal Emitter and a Signal Receiver. You can reuse the same Signal Asset in many Timeline instances.Here's a simple game where you defeat a bunny zombie by pressing the arrow keys that match the directional images shown on-screen:The directional image randomly changes with each musical beat. If you don't press the right arrow key before the image changes, you lose. If you press a certain number of arrow keys, you win.In the game, the GameTimeline instance includes the gameplay. It uses Signals to display new directional images with each musical beat, as shown in the finished GameTimeline instance below:To demonstrate how to create and set up signals, let's start from a project where none of the Signals have been created. If you want to follow along, you can download the project here.First, to view the Markers area where you add Signals, click the Marker icon beside the Clip Edit modes. The Markers area appears beneath the Timeline ruler:To add a Signal Emitter, right-click in the Markers area and select Add Signal Emitter.A Signal Emitter appears in the Markers area:The Signal Emitter you just added is selected and the Inspector window show its properties. The Inspector window also provides buttons for creating the other pieces of a signal:To link the Signal Emitter to a Signal Receiver, you need to add a new Signal Asset. In the Inspector window, click Create Signal…. Name the Signal Asset "ShowKey" because this Signal Asset will be used to link and emitter with a receiver to change the directional image. Click Save and the Signal Asset is added to the project.You also want the Signal Emitter to be associated with a Signal Receiver, so click Add Signal Receiver. Your Inspector window should now look like this:Before continuing, let's stop and describe what's going on. When you click the Add Signal Receiver button, two things happen: a new Signal Receiver component is added to the bound GameObject and a new reaction is added and linked to the Signal Asset that you just created. You can see they are linked because "ShowKey" appears as the Emit Signal and "ShowKey" is added to the list of reactions:The Inspector window shows two things: the Signal Emitter properties and the reactions defined by the Signal Receiver component:Although the Signal Receiver component is linked to the GameObject that is associated with the Timeline instance, you can edit the Signal Receiver in the Inspector window. The reaction is invoked when the Signal Receiver receives the signal.The last step is to specify what the reaction does. In this example, there is a component named Manager with a ShowRandomKey method. This method displays a new random arrow key. To have the reaction call the ShowRandomKey method, select this method for the Unity Event, as shown below:And that’s it! After adding the Signal Emitter and defining its Signal Receiver and the reaction, you now have an example of a Timeline instance that communicates with the scene.When Timeline hits the Signal Emitter, the ShowKey signal is emitted. The Signal Receiver, that is listening for the ShowKey signal, calls the ShowRandomKey method.But you don't have to stop there. Multiple signal emitters can emit the same signal. For example, the following Timeline instance has the same Signal Emitter copied and moved to different times; there is an emitter for every musical beat:You can also drag a Signal Asset directly from the Project window to the Timeline window. A Signal Emitter is automatically created with the Emit Signal property already set.To see what the finished project looks like, with all Signals, download it here.In order to set up your first signal, you need to:Right-click on a Marker area or a track that supports signals, then choose Add Signal Emitter...In the Inspector window, click Create Signal Asset, choose a file name and press Enter.Still in the Inspector, click Create Reaction... button and define the reaction associated with the signal you just created.Can I have multiple receivers on a single GameObject? Yes, all Signal Receivers on a GameObject receives the signals sent to that GameObject.Can a signal asset be reused between multiple Timeline instances? Yes, a Signal Asset can be used in more than one Timeline instance.Can a Signal Asset be extended and customized? Yes, Signal Asset, Signal Emitter and Signal Receiver can all be extended. But this is a subject for another day; there will be another blog post about customization.Are signals guaranteed to be emitted? Yes. Signals will not be skipped; they will be emitted on the next frame regardless of the game’s FPS.What happens if duplicate a Timeline Asset contains signal emitters? The signal emitters keep their reference to their Signal Assets. Signal Assets are not duplicated.---Check out beginner and advanced learning content for using Timeline on the Unity Learn Premium platform.]]></description><link>https://unity.com/blog/engine-platform/how-to-use-timeline-signals</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/how-to-use-timeline-signals</guid><pubDate>Tue, 21 May 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[GPU Lightmapper: A Technical Deep Dive]]></title><description><![CDATA[The Lighting Team is going all-in on iteration speed. We designed the Progressive Lightmapper with that goal in mind. Our goal is to provide quick feedback on any changes that you make to the lighting in your project. In 2018.3 we introduced a preview of the GPU version of the Progressive Lightmapper. Now we’re heading towards the feature and visual quality parity with its CPU sibling. We aim to make the GPU version an order of magnitude faster than the CPU version. This brings interactive lightmapping to artistic workflows, with great improvements to team productivity.With this in mind, we have chosen to use RadeonRays: an open source ray tracing library from AMD. Unity and AMD have collaborated on the GPU Lightmapper to implement several key features and optimizations. Namely: power sampling, rays compaction, and custom BVH traversal.The design goal of the GPU Lightmapper was to offer the same features of the CPU Lightmapper while achieving higher performance:Unbiased interactive lightmappingFeature parity between CPU and GPU backendsCompute based solutionWavefront path tracing for maximum performanceWe know that iteration time is the key to empowering artists to improve visual quality and unleash creativity. Interactive lightmapping is the goal here. Not just impressive overall bake times, we also want the user experience to offer immediate feedback.We needed to solve a bunch of interesting problems to achieve this. In this post, we will explore some of the decisions we have made.For the Lightmapper to offer progressive updates to the user, we needed to make some design decisions.We don’t cache irradiance or visibility when doing direct lighting (direct lighting could be cached and reused for indirect lighting). In general, we don’t cache any data and prefer computation steps that are small enough to not create stalls, and provide a progressive and interactive display while baking.Scenes can potentially be very large and contain many lightmaps. To ensure that work is spent where it offers the most benefit to the user, it is important to focus baking on the currently visible area. To do this, we first detect which of the lightmaps contain most unconverged visible texels on a screen, then we render those lightmaps and prioritize the visible texels (off-screen texels will be baked once all the visible ones have converged).A texel is defined as visible if it’s in the current camera frustum and if it isn’t occluded by any Scene static geometries.We do this culling on the GPU (to take advantage of fast ray tracing). Here is the flow of a culling job.The culling jobs have two outputs:A culling map buffer, storing whether each texel of the lightmap is visible. This culling map buffer is then used by the rendering jobs.An integer representing the number of visible texels for the current lightmap. This integer will be asynchronously read back by the CPU to adjust lightmap scheduling in the future.In the video below, we can see the effect of the culling. The bake is stopped midway for demo purposes. So when the Scene view moves, we can see not yet baked texels (i.e. black) that aren’t visible from the initial camera position and direction.For performance reasons, the visibility information is updated only every time the camera state ‘stabilizes’. Also, supersampling isn’t taken into account.GPUs are optimized for taking huge batches of data and performing the same operation on all of it; they’re optimized for throughput. What’s more, the GPU achieves this acceleration while being more power- and cost-efficient than a many-core CPU. However, GPUs are not as good as a CPUs in terms of latency (intentionally, by the design of the hardware). That’s why we use a data-driven pipeline with no CPU-GPU sync points to get the most out of the GPU’s inherently parallel computation nature.However, raw performance isn’t enough. User experience is what matters, and we measure it in visual impact over time aka convergence rate. So we also need efficient algorithms.GPUs are meant to be used on large data sets, and they‘re capable of high throughput at the cost of latency. Also, they’re usually driven by a queue of commands filled ahead of time by the CPU. The goal of that continuous stream of large commands is to make sure we can saturate the GPU with work. Let’s look at the key recipes we are using to maximize throughput and thus raw performance.The way we approach the GPU lightmapping data pipeline is based on the following principles:1. We prepare the data once.At this point, CPU and GPU might be in sync in order to reduce memory allocation.2. Once the bake has started, no CPU-GPU sync points are allowed.The CPU is sending a predefined workload to the GPU. This workload will be over-conservative in some cases (for example using 4 bounces but all indirect rays finished after the 2nd bounce then we still have enqueued kernels that will be executed but early out).3. The GPU cannot spawn rays nor kernels.Rather, it might be asked to process empty jobs (or very small ones). To handle those cases efficiently, kernels are written in a way where data and instruction coherency is maximized. We handle this via data `compaction`, more on this later.4. We don’t want any CPU-GPU sync points, nor any sort of GPU bubbles once the bake has started.For example, some OpenCL commands can create small GPU bubbles (i.e. moments where the GPU have nothing to process), such as clEnqueueFillBuffer or clEnqueueReadBuffer (even in the asynchronous versions), so we avoid them as much as possible. Also, data processing needs to remain on the GPU for as long as possible (i.e. rendering and compositing up to completion). When we need to bring data back to the CPU for additional processing, we will do so asynchronously and neither have it send back to the GPU again. For example, seam stitching is a CPU post-process at the moment.5. CPU will adapt the GPU load in an asynchronous fashion.Changing the lightmap being rendered when the camera view changes or when a lightmap is fully converged will incur some latency. CPU threads generate and handle those readback events using a lockless queue to avoid mutex contention.One of the key features of the GPU architecture is wide SIMD instruction support. SIMD stands for Single Instruction Multiple Data. A set of instructions will be executed sequentially in lockstep on a given amount of data inside of what is called a warp/wavefront. The size of those wavefronts/warps is 64, 32 or 16 values (depending on the GPU architecture). Therefore a single instruction will apply the same transformation to multiple data - single instruction multiple data. However, for greater flexibility, the GPU is also able to support divergent code paths in its SIMD implementation. To do this it can disable some threads while working on a subset before rejoining. This is called SIMT: Single instruction multiple threads. However, this comes at a cost as divergent code paths within a wavefront/warp will only profit from a fraction of the SIMD unit. Read this excellent blog post for more info.Finally, a neat extension of the SIMT idea is the ability of the GPU to keep around many warps/wavefronts per SIMD core. If a wavefront/warp is waiting for slow memory access, the scheduler can switch to another wavefront/warp and continue working on that in the meantime (providing there is enough pending work). For this to really work however, the amount of resources needed per context needs to be low, so that the occupancy (the amount of pending work) can be high.Summing up we should aim for:Many threads in flightAvoiding divergent branchesGood occupancyHaving good occupancy is all about the kernel code and is too broad of a subject to be a part of this blog post. Here are some great resources:Understanding Latency Hiding on GPUs by Vasily Volkov (NVIDIA)Intro to GPU Scalarization by Francesco Cifariello (Unity Technologies)In general, the goal is to use local resources sparsely, especially vector registers and local shared memory.Let’s take a look at what could be the flow for baking direct lighting on the GPU. This section mostly covers lightmaps however, Light Probes work in a very similar way, except that they don’t have visibility or occupancy data.There are a few problems here:Lightmap occupancy in that example is 44% (4 occupied texels over 9), so only 44% of the GPU threads will actually produce usable work! On top of that, useful data is sparse in memory so we will pay for bandwidth even for unoccupied texels. In practice, lightmap occupancy is usually between 50% to 70% hence a huge potential gain.Data set is too small. The example is showing a 3x3 lightmap for simplicity but even the common case of a 512x512 lightmap will be a too small data set for recent GPUs to attain top efficiency.In an earlier section, we talked about view prioritization and the culling job. The two points above are even truer as some occupied texels won’t be baked because they are not currently visible in the Scene view, lowering occupancy and overall data set even more.How do we solve that? As part of a collaboration with AMD, ray compaction was added. The idea vastly improves both ray tracing and shading performance. In short, the idea is to create all the ray definitions in contiguous memory allowing all the threads in a warp/wavefront to work on hot data.In practice you also need each ray to know the index of the texel it is related to, we store this in the ray payload. Also, we store the global compacted ray count.Here is the flow with compaction:Both the kernels that are shading and tracing the rays can now run only on hot memory and with minimal divergence in code paths.What’s next? Well, we haven’t solved the fact that the data set could be too small for the GPU, especially if view prioritization is enabled. The next idea is to decorrelate the generation of rays from the gbuffer representation. With the naive approach, we only generate one ray per texel. Since we will eventually want to generate more rays anyway, we might as well generate several rays per texels up front. In this way, we can create more meaningful work for the GPU to chew on. Here is the flow:Before compaction we generate many rays per texel and we call this expansion. We also generate meta information that is used in the gather step to accumulate into the correct destination texel.Both the expansion and gather kernels are not executed very often. In practice we expand and then shade every light (for direct) or process all bounces (for indirect), to finally gather only once.With these techniques we achieve our goal: we generate enough work to saturate the GPU and we spend bandwidth only on texels that matter.These are the benefits of shooting multiple rays per texel:The set of active rays will always be a large data set even in view prioritization mode.Preparation, tracing, and shading are all working on very coherent data as the expansion kernel will create rays targeting the same texel in continuous memory.The expansion kernel handles occupancy and visibility, making the preparation kernel much simpler and thus faster.The size of the expanded/working data set buffers is decoupled from the size of the lightmap.The number of rays we shoot per texel can be driven by any algorithm, a natural expansion is going to be adaptive sampling.Indirect lighting uses very similar ideas, albeit more complex:With indirect light we have to perform multiple bounces, each one can discard random rays. Thus we do compaction iteratively to keep working on hot data.The heuristic we currently use favors an equal amount of rays per texel. The goal is to get a very progressive output. However, a natural extension of this would be to improve these heuristics by using adaptive sampling, so to shoot more rays where the current results are noisy. Also, the heuristic could aim for a greater coherency, both in memory and in thread group execution, by being aware of the wavefront/warp size of the hardware.Assets from ArchVizPRO baked with GPU Lightmapper.There are many use cases for transparency/translucency. A common way to handle transparency and translucency is to cast a ray, detect intersection, fetch material and schedule a new ray if the encountered material is translucent or transparent. However, in our case, the GPU cannot spawn rays for performance reasons (please refer to the `Data-driven pipeline` section above). Also, we can’t reasonably ask the CPU to schedule enough rays in advance so we are sure that we handle the worst possible case, as this would be a major performance hit.Thus we went for a hybrid solution. We handle translucency and transparency differently allowing to solve the issues above:Transparency (when a material is not opaque because of holes in it). In that case, the ray can either go through or bounce off the material based on a probability distribution. Thus the workload prepared in advance by the CPU does not need to change, we are still Scene independent.Translucency (when a material is filtering the light that goes through it). In that case, we approximate and do not consider refraction. In other words, we let the material color the light, but not change its direction. This allows us to handle translucency while walking the BVH, meaning we can handle easily a large number of cutout materials and scale very well with translucency complexity in the Scene.However, there is a quirk; BVH traversal is out of order:In the case of occlusion rays, this is actually fine as we are only interested in the attenuation from translucence of each intersected triangle along the ray. As multiplication is commutative, out of order BVH traversal is not a problem.However for intersection rays what we want is to be able to stop on a triangle (in a probabilistic way when the triangle is transparent) and to collect translucence attenuation for each triangle from the ray origin to the hit point. As BVH traversal is out of order the solution we have chosen is to first only run the intersection to find the hit point, and mark the ray if any translucency was hit. For every marked ray, we thus generate an extra occlusion ray from the intersection ray origin to the intersection ray hit. To do this efficiently we use compaction when generating the occlusion rays, that means one will only pay the extra cost if the intersection ray was marked as needing translucency handling.All of that was possible thanks to the open source nature of RadeonRays which was forked and customized to our needs as part of the collaboration with AMD.We have seen what we do in regard to raw performance, great! However, it is only the first part of the puzzle. High samples per second are great but what really matters, in the end, is the bake time. In other words, we want to get the maximum out of every ray we cast. This last statement is actually the root of decades of ongoing research. Here are some great resources:Ray Tracing in One WeekendRay Tracing: The Next WeekRay Tracing: The Rest of Your LifeUnity GPU Lightmapper is a pure diffuse lightmapper. This simplifies the interaction of the light with the materials a lot and also helps dampen fireflies and noise. However, there is still a lot we can do to improve the convergence rate. Here are some of the techniques that we use:Russian rouletteAt each bounce, we probabilistically kill the path based on accumulated albedo. One can find a great explanation in Eric Veach’s thesis (page 67).Environment Multiple Importance Sampling (MIS)HDR environments that exhibit high variance can cause a considerable amount of noise in the output, requiring huge sample counts to produce pleasing results. Therefore, we apply a combination of sampling strategies specifically tailored to evaluate the environment by analyzing it first, identifying important areas, and sampling accordingly. This approach, which is not exclusive to environmental sampling, is generally known as multiple importance sampling and was initially proposed in Eric Veach’s thesis (page 252). This was done in collaboration with Unity Labs Grenoble.Many lightsAt each bounce, we probabilistically select one direct light and we limit the number of lights affecting surfaces with a spatial grid structure. This was done in collaboration with AMD. We are currently investigating deeper in the many light problem as light selection sampling is critical to quality.DenoisingNoise is removed by using an AI denoiser trained on outputs from a path tracer. See Jesper Mortensen’s Unity GDC 2019 presentation.We have seen how a data-driven pipeline, the attention to raw performance and efficient algorithms are combined together to offer an interactive lightmapping experience with the GPU Lightmapper. Please note that the GPU Lightmapper is in active development and is constantly being improved.Let us know your thoughts!The Lighting TeamPS: If you think this was a fun read, and are interested in taking up a new challenge, we’re currently looking for a Lighting Developer in Copenhagen, so get in touch!---Want to learn how to optimize graphics in Unity? Check out this tutorial.]]></description><link>https://unity.com/blog/technology/gpu-lightmapper-a-technical-deep-dive</link><guid isPermaLink="true">https://unity.com/blog/technology/gpu-lightmapper-a-technical-deep-dive</guid><pubDate>Mon, 20 May 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Microsoft and Unity announce HoloLens 2 Development Edition]]></title><description><![CDATA[Releasing later this year alongside the launch of HoloLens 2, the all-new HoloLens 2 Development Edition offers even more value to jump-start your mixed reality development plans by combining the HoloLens 2 mixed reality device with $500 in free Azure credits, and 3-month free trials of both Unity Pro and the PiXYZ Plugin.“By bringing together HoloLens 2, Azure MR services, and the Unity platform, we are making it easier than ever for developers to get started building the real-time 3D experiences that are driving this 3rd wave of computing.”- Matt Fleckenstein, Senior Director, Mixed Reality, MicrosoftSince the release of first-generation HoloLens back in 2016, developers have been experimenting with a variety of mixed reality use cases, but it’s the solution-focused apps for industries like architecture, engineering, and construction (AEC), automotive and transportation that have resonated. Examples of mixed reality solutions include those from companies like Bentley Systems and Trimble, even Microsoft’s own Dynamics 365 apps. All are all made with Unity and brought to life with HoloLens 2.That’s why we partnered with Microsoft to offer a 3-month trial of Unity Pro and PiXYZ Plugin as part of the HoloLens 2 Development Edition. Unity Pro's enhanced benefits, paired with PiXYZ Plugin, enables the use of Computer Aided Drawing (CAD) and Building Information Management (BIM) design data to create mixed-reality applications for businesses that accelerate workflows and reduce costs.“Pairing HoloLens 2 with Unity’s real-time 3D platform enables industrial businesses to create immersive, interactive experiences that accelerate business and reduce costs. The addition of Unity Pro and the PiXYZ Plugin makes it easy to import 3D design data in minutes rather than hours.”- Tim McDonough, GM of Industrial, UnityIf you’d like to learn more about Unity’s mixed reality solutions for industry, interesting use cases, and PiXYZ Plugin workflows, check out the resources below.Accelerating the BIM workflow for AEC with fast and flexible imports (Webinar)Design, build, and operate faster with the PiXYZ Plugin for AEC (Blog)From CAD to Unity for Auto (Webinar)Unlock your CAD Data with Unity and PiXYZ (Video)Bringing Retail Stores to Life with XR for AEC (Video)Propelling AEC to New Heights by Using XR (Session)The HoloLens 2 Development Edition will release later this year starting as low as $99 per month (or $3500 outright) to registered members of Microsoft’s Mixed Reality Developer Program. Registration for the Mixed Reality Developer Program is free, and in doing so, you’ll be one of the first to know about the latest news and availability.We’re excited to partner with Microsoft on the release of the HoloLens 2 Development Edition later this year as we continue our collaboration on seamlessly integrating HoloLens 2 into Unity’s platform.Q: What’s included in the HoloLens 2 Development Edition?A: The HoloLens 2 Development Edition includes a HoloLens 2 mixed reality device, $500 Azure credits, Unity Pro 3-month trial, and PiXYZ Plugin 3-month trial.Q: When will the HoloLens 2 Development Edition release?A: No release date has been announced, but it will be available alongside other HoloLens 2 editions releasing later this year.Q: Can I pre-order the HoloLens 2 Development Edition?A: No. The HoloLens 2 Development Edition is not available for pre-order, but you can register for the Mixed Reality Developer Program to be notified of future availability.Q: How do I qualify to purchase a HoloLens 2 Development Edition?A: You must join Microsoft’s Mixed Reality Developer Program to be eligible to purchase a HoloLens 2 Development Edition.Q: What if I’ve already pre-ordered another HoloLens 2 edition, but want to change to the HoloLens 2 Development Edition?A: Later this year, Microsoft will contact those who pre-ordered a HoloLens 2, asking which edition they’d like to purchase. At that time, customers can express interest in the HoloLens 2 Development Edition.Q: Where will I be able to purchase the HoloLens 2 Development Edition?A: The HoloLens 2 Development Edition will be sold and fulfilled exclusively by Microsoft later this year.Q: Where can I learn more Unity and PiXYZ solutions for industry?A: Visit the Unity Industry Bundle for AEC or Unity Industry Bundle for automotive & transportation to learn more.Q: Where can I learn more about HoloLens 2 development with Unity?A: Visit the HoloLens 2 is coming: What you need to know blog to learn about experimenting with HoloLens 2 development. We’ll have more details to share later this year.]]></description><link>https://unity.com/blog/industry/microsoft-unity-announce-hololens-2-development-edition</link><guid isPermaLink="true">https://unity.com/blog/industry/microsoft-unity-announce-hololens-2-development-edition</guid><pubDate>Thu, 02 May 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Reality vs illusion]]></title><description><![CDATA[In March, Unity announced real-time ray tracing support for NVIDIA RTX technology. Real-time ray tracing introduces photorealistic lighting qualities to Unity’s High-Definition Render Pipeline (HDRP), unlocking new potential in Unity’s visual capabilities. Preview release of NVIDIA RTX in Unity is planned for 2019.3.To show off this new lighting technology, we took on the challenge to match a CG Unity-rendered BMW to a real BMW 8 Series Coupe that we filmed in a warehouse. The final project incorporated both the live interactive demo and a pre-rendered 4K video, cutting between the real car and the CG car. We challenged viewers to distinguish between the two. Our final video featured 11 CG BMW shots.Both the advertising and automotive industries thrive on fast turnaround. We produced a sample commercial featuring a BMW to demonstrate how decisions made during the advertisement creation process can benefit from the versatility of a real-time engine.We launched the demo and made official announcements at the Game Developers Conference (GDC) as well as at NVIDIA’s GPU Technology Conference (GTC).This blog post will take you through our production process.Previsualization was essential in helping us prepare for the shoot, and in creating a polished, professional ad. We worked directly in Unity alongside Director of Photography Christoph Iwanow to create a full CG version of the film. For this initial take, we used simple lighting and shaders and focused on nailing down pacing, camera placement, shot framing, depth of field, and areas of focus.Using Unity’s Physical Camera feature, we were able to match the real-life on-set camera and lenses to be used down to the most precise detail: sensor size, ISO, shutter speed, lens distortions, and more. This allowed us to match the look and feel of the real camera in order to achieve a 1:1 match on all levels.Cinemachine enabled us to easily create believable camera movements while retaining rapid iteration speeds.The previsualization stage was also our lighting experimentation playground. The real-life lighting equipment we planned to use was also replicated in Unity in every detail: the shapes and dimensions of the lights, temperature, and intensity. We could instantly see what light tubes hanging from the ceiling would look like and refine their placement, intensity, and color; we could generate perfect reflections on the car. This process would otherwise take up several hours of precious on-set time.By digitally replicating the real-world lighting and camera setups, Christoph was able to experiment with more combinations and find the look he wanted in advance of filming, so we could use filming time more effectively.The day after filming, we could start refining shots right away. Since the previz was done in Unity, we didn’t need to migrate assets. We used the lighting references we took on set, as well as referencing the real car, to ensure that our asset reacted realistically in look development. The technology now allows us to use image textures on area lights, so we were able to use photos of the actual light sources as textures for more realistic lighting and reflections.With the power of Unity, we were able to render in 4K ultra high definition from day one. This is an obvious advantage over offline rendering, where in many cases work-in-progress deliveries are rendered at lower resolutions to save costs and time. By delivering in 4K from the very first iterations, we were able to fine-tune small details in look dev and lighting. Many more iterations on renders in a short time allowed us to obtain strong visuals with a small art team. It also meant the results in the final renders were predictable.For the shots using plate integrations, the footage was tracked outside of Unity, and the camera and track data were then imported into Unity as an FBX file.As for the other cameras that we created directly in Unity, two Cinemachine features were essential in creating believable and realistic camera movements:Cinemachine Storyboard extension: Among its many features, the Storyboard extension allows you to align camera angles. It was an essential tool for us in easily replicating the specific camera movements required to recreate a shot completely in CG. We used a frame from the on-set camera footage as an overlay to act as a guide to align the CG camera. This was done for the first, middle and last frames of some shots.Cinemachine noise: Applying procedural noise to our camera moves made it easy for us to get rid of the unnatural perfectness of CG cameras by adding convincing micro-movements to the camera’s motion. We could ensure the movements were interesting, without being obviously repetitive.Our original concept featured a CG BMW with a different paint color than the real BMW. As the project evolved, we felt it was a stronger statement to have both cars be the same color so we could cut between them seamlessly. Changing the color of the car was a late-stage decision that could be made organically in Unity, as lighting and look dev artists could work on updates concurrently. A similar project in an offline renderer would have dailies with notes like “rotate the wheel 20 degrees to the right” or “drop the key light down a stop.” Instead of needing a full day turnaround for small technical changes, we could work out these changes interactively and focus our energy on creative decisions.For the two shots using plate integrations, we used Shader Graph to create a screen-space projected material with the original footage at HD resolution. We used this shader on the ground and walls around the car so that we could have realistic reflections from the plate onto the car. We supplemented with additional lighting, rendered the shots out of Unity, and then finished the final ground integration with the full-res plate using external compositing software.The usual technique used in game production to simulate reflections relies on a set of reflection probes set up at various locations combined with screen space ray tracing. This usually results in various light leaks and a coarse approximation of surface properties. With real-time ray tracing, we can now correctly reflect what is offscreen without any setup from the artists. However, such a reflection effect requires some arrangement of the rendering engine. In traditional game production, everything that isn’t within the frustum of the camera tends to be disabled, but now it is possible to reflect objects illuminated and shadowed by sources that are not initially visible onscreen. In addition to accurately simulating metal objects, effective ray tracing requires multiple bounces, which isn’t affordable within our performance constraint. We chose to handle only one bounce. The result of other bounces have been approximated but using the color of the metal multiply by current indirect diffuse lighting.Traditional offline renderers are good at managing the rendering of large textured area lights. However, using an offline renderer is costly and produces a lot of noise, (the more rays you use, the less noise, but that increases the rendering cost per frame). To achieve a real-time frame rate while upholding quality, our Unity Labs researchers developed an algorithm in conjunction with Lucasfilm and NVIDIA (see the paper they produced, Combining Analytic Direct Illumination and Stochastic Shadows). With this approach, the visibility (area shadow) can be separated from the direct lighting evaluation, while the visual result remains intact. Coupled with a denoising technique applied separately on these two components, we were able to launch very few rays (just four in the real-time demo) for large textured area lights and achieve our 30 fps target.Indirect diffuse or diffuse light bouncing enhances the lighting of a scene by grounding objects and reacting to changing lighting conditions. The usual workflow for game production is painful and relies on setting up Light Probes in a scene or using lightmaps. For the movie, we used a brute force one-bounce indirect diffuse approach with ray tracing – with this approach several rays are launched, allowing us to get the desired light bleeding effect.Such an approach gives artists immense freedom, without them having to set up anything. However, it is costly.For the real-time version, we selected a cheaper approach: with ray tracing, we were able to rebake a set of light probes each frame dynamically; traditionally, we would have used a set of pre-bake light probes baked lightmaps.Just as ray-traced reflection can replace the screen space technique, real-time ray tracing can generate ambient occlusion comparable to that produced by the widely used screen space technique. The resource-friendly indirect diffuse method mentioned above can be enhanced with ray-traced ambient occlusion to better handle the light leaks implied by the technique. For performance reasons, we chose not to support transparent objects, which would require handling the transmission of light through transparent objects.Real-time ray tracing is the only tool able to achieve the rendering of photorealistic headlights in real-time. The shape of a headlight and its multiple lens and reflector optics result in a complex light interaction that is challenging to simulate. We added the interaction of multiple successive smooth reflective and transmissive rays, which allows the light beam to shift as you see it in the real world. The fine details can be controlled with texture details that will influence the ray direction."Invent yourself and then reinvent yourself, don’t swim in the same slough.
Invent yourself and then reinvent yourself and stay out of the clutches of mediocrity." – Charles BukowskiUnity’s real-time ray tracing is a new reality. We aren’t trying to rebuild traditional production pipelines from the ground up. But we are removing some of the pain points that are typically associated with a project like this. Having the power to interactively change shots and get immediate feedback from the creative director and director of photography is invaluable. Thanks to the decision to build this film in Unity, we could potentially migrate this work to other projects with ease and create a diverse yet cohesive campaign across multiple mediums. Real-time ray tracing is affording us the ability to refine the traditional automotive advertising production pipeline to work in a more creative, collaborative and affordable way.---You can explore NVIDIA RTX and Unity today with this experimental release. Please note that this is a prototype and the final implementation of DXR will be different from this version.]]></description><link>https://unity.com/blog/industry/reality-vs-illusion</link><guid isPermaLink="true">https://unity.com/blog/industry/reality-vs-illusion</guid><pubDate>Thu, 11 Apr 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Higher fidelity and smoother frame rates with Adaptive Performance]]></title><description><![CDATA[We recently wrapped up GDC 2019, where we spoke about Adaptive Performance during our Keynote. We’re excited to let you know that the Preview version and the Megacity mobile sample are now available so you can get started exploring this feature. This blog explains more about Adaptive Performance and how to apply it to your own projects.Unlike for a PC or console game, harnessing the full power of mobile hardware requires a delicate balance for games to look beautiful and play smoothly. Maxing out a device’s capabilities can quickly compromise your game’s performance by overtaxing the hardware, which leads to throttling, poor battery life, and inconsistent performance. For developers, this issue becomes even more problematic considering the wide range of low-end to high-end target devices.Today, developers take different tactics to solve this problem. The two main approaches we’ve seen are: trying to make sure games perform at their best on all target hardware, which means sacrificing graphics fidelity and frame rate, or attempting to anticipate hardware behavior, which is really difficult because there are not many options to precisely measure hardware trends.Adaptive Performance provides you with a better way to manage thermals and performance of your games on a device in real time, allowing you to proactively adjust on-the-fly performance and quality settings of your game and utilizing the hardware without overtaxing the device. The result is a predictable frame rate and a decrease in thermal buildup, enabling longer play times and a much more enjoyable player experience while preserving battery life.For developers, it means having a new, deeper insight into hardware with new tools to make your games more dynamic and flexible, providing your players with the smoothest and best-performing experiences when they're playing on mobile devices. It gives you control over decisions that usually the operating system makes, such as when to run at high clock speeds or what to adjust to avoid throttling.We gave several talks about this feature during GDC 2019. You can view the slide deck here and watch the Unity GDC Booth Talk - Megacity on mobile: How we optimized it with Adaptive Performance below.We’ve partnered with Samsung, the world’s largest Android mobile device manufacturer, to help bring this solution to fruition. Built on top of Samsung’s GameSDK, Adaptive Performance will first be available for Samsung Galaxy devices such as the Samsung Galaxy S10 and Galaxy Fold, followed by additional Samsung Galaxy devices later this year.These charts (shown during our Unity at GDC 2019 keynote) illustrate how Adaptive Performance helps deliver a steady high frame rate with Megacity running on the new Samsung Galaxy S10.In red, you can see the frame rate in Megacity before we added Adaptive Performance; and in blue, you can see the results after we added Adaptive Performance. With Adaptive Performance, the demo runs at 30 fps for a much longer time and is much more stable.Megacity is a futuristic, interactive city featuring millions of entities, demonstrating how Unity can run even the most complex projects on current-gen mobile hardware. It showcases the latest advances in our Data-Oriented Technology Stack (DOTS), the name for all projects under our “Performance by Default” banner, including Entity Component System (ECS), Native Collections, C# Job System, and the Burst Compiler. Megacity was first presented at Unite Los Angeles 2018 and was released for desktop during GDC 2019.Megacity is the right project to demonstrate a sample implementation of Adaptive Performance, as it provides us with the flexibility to adapt the game dynamically and proactively to best utilize the hardware. Adaptive Performance was built with scalability in mind, which works great with the principles of DOTS used to build the foundation in Megacity.The mobile version of the project has 4.5M mesh renderers, 200K building components, 100K audio sources, and more than 6M entities – an ideal candidate for demonstrating Adaptive Performance’s capabilities.After you install Adaptive Performance via the Unity Package Manager, Unity automatically adds the Samsung GameSDK subsystem to your project when you build to a device. During runtime, Unity creates and starts an Adaptive Performance Manager on supported devices, which provides you with feedback about the thermal state of the mobile device. You can subscribe to events or query the information from the Adaptive Performance Manager during runtime to react in real-time; otherwise, it will only report the stats to the console.As an example, you can use the API provided to create applications that react to the thermal trends and events on the device. This ensures constant frame rates over a longer period of time while avoiding thermal throttling, even before throttling begins. In the sample implementation of Adaptive Performance in Megacity, we used three different ways to smooth the frame rate:By starting at moderate CPU and GPU levels, and increasing them gradually to eliminate bottlenecks, we were able to keep energy consumption low.If we saw that the device was getting close to throttling, we could tune quality settings to reduce thermal load – and we decided to lower the LOD levels.We also decreased the target frame rate once we were close to throttling.When the target frame rate is reached and temperature is in decline, we increase LOD levels, raise target frame rate, and decrease CPU and GPU levels again.These capabilities enable your game to achieve a smoother performance over time. By keeping a close eye on a device’s thermal trends, you can adjust performance settings on the fly to avoid throttling altogether.Download the Megacity mobile sample project here, to see how we’ve done this. For feedback or questions about Megacity, please visit this forum thread.The heart of the package is the Adaptive Performance Manager, which Unity creates during startup, allowing you to access and subscribe for thermal and performance event notifications easily. The example below shows how to access the Adaptive Performance Manager using the IAdaptivePerformance interface in the Start function of your MonoBehaviour.private IAdaptivePerformance ap = null;

void Start()
{
    ap = Holder.instance;
}
Unity sends thermal events whenever there are changes in the thermal state of the device. The important states are when throttling is imminent and when throttling is occurring. In the example below, you subscribe to ThermalEvents to reduce or increase your lodBias, which helps to reduce GPU load.using UnityEngine;
using UnityEngine.Mobile.AdaptivePerformance;

public class AdaptiveLOD : MonoBehaviour
{
    private IAdaptivePerformance ap = null;

    void Start() {
        if (Holder.instance == null)
            return;

        ap = Holder.instance;

        if (!ap.active)
            return;

        QualitySettings.lodBias = 1;

        ap.ThermalEvent += OnThermalEvent;
    }

    void OnThermalEvent(object obj, ThermalEventArgs ev) {
        switch (ev.warningLevel) {
            case PerformanceWarningLevel.NoWarning:
                QualitySettings.lodBias = 1;
                break;
            case PerformanceWarningLevel.ThrottlingImminent:
                QualitySettings.lodBias = 0.75f;
                break;
            case PerformanceWarningLevel.Throttling:
                QualitySettings.lodBias = 0.5f;
                break;
        }
    }
}
Note that if you reduce the lodBias below a value of 1, it will have a visual impact in many cases and LOD object-popping might occur, but it is an easy way to reduce graphics load if it is not required for the game experience. In case you want to make even more detailed decisions to fine-tune how your game’s graphics and behavior are handled, the bottleneck events are very useful.CPU and GPU performance levelsThe CPU and GPU of a mobile device make up a very large part of its power utilization, especially when running a game. Typically, the operating system decides which clock speeds are used for the CPU and GPU.CPU cores and GPUs are less efficient when running at their maximum clock speed. Running at high clock speeds overheats the mobile device easily and the operating system throttles the frequency of the CPU and GPU to cool down the device.You can avoid this situation by limiting the maximum-allowed clock speeds with these properties:IAdaptivePerformance.cpuLevelIAdaptivePerformance.gpuLevelThe application can configure those properties based on its special knowledge about the current performance requirements and decide, based on the scenario, if the levels should be lowered or raised.Did the application reach the target frame rate in the previous frames?Is the application in an in-game scene or in a menu?Is a heavy scene coming up next?Is an upcoming event CPU or GPU heavy?Will you show ads that do not require high CPU/GPU levels?public void EnterMenu(){
    if (!ap.active)
        return;

    // Set low CPU and GPU level in menu
    ap.cpuLevel = 0;
    ap.gpuLevel = 0;
    // Set low target FPS
    Application.targetFrameRate = 15;
}

public void ExitMenu(){
    // Set higher CPU and GPU level when going back into the game
    ap.cpuLevel = ap.maxCpuPerformanceLevel;
    ap.gpuLevel = ap.maxGpuPerformanceLevel;
}
In the Adaptive Performance Manager, you can subscribe to receive performance bottleneck events that let you know if you are GPU, CPU, or “frame-rate bound.” Frame-rate bound means that the game is limited by Application.targetFrameRate, in which case the application should consider lowering its performance requirements.Running in the background governing bottleneck decisions – and queryable via the Manager – is the GPU frametime driver, which monitors the hardware time the GPU spent on the last frame; for the moment, the CPU time is calculated by summing Unity’s internal subsystems. Depending on the game and scenario, you can have it react differently when the game is CPU or GPU bound according to thermal state changes.void OnBottleneckChange(object obj, PerformanceBottleneckChangeEventArgs ev) {
    switch (ev.bottleneck) {
        case PerformanceBottleneck.TargetFrameRate:
            if (ap.cpuLevel > 0) {
                ap.cpuLevel--;
            }
  	     if (ap.gpuLevel > 0) {
                ap.gpuLevel--;
            }
            break;
        case PerformanceBottleneck.GPU:
            if (ap.gpuLevel < ap.maxGpuPerformanceLevel) {
                ap.gpuLevel++;
            }
            break;
        case PerformanceBottleneck.CPU:
            if (ap.cpuLevel < ap.maxCpuPerformanceLevel) {
                ap.cpuLevel++;
            }
            break;
    }
}
There are many different ways to optimize games, and the samples above and in Megacity only provide some suggestions for how to do it; ultimately, it depends very much on what works best for your game. For more information, please also check the package documentation.This is only the beginning! We are going to continue to invest in Adaptive Performance, adding more features and supporting more devices over time. The current package includes a low-level API, but we are already working on a high-level, component-based API compatible with DOTS, which should make it even easier to adapt performance in your Unity projects. Stay tuned for more information.A Preview version of Adaptive Performance is available now for Unity 2019.1 (beta) via the Unity Package Manager. You can access it here. For up-to-date information on Adaptive Performance, to see how other developers are using it, and to post questions or comments, please visit the forum.]]></description><link>https://unity.com/blog/technology/higher-fidelity-and-smoother-frame-rates-with-adaptive-performance</link><guid isPermaLink="true">https://unity.com/blog/technology/higher-fidelity-and-smoother-frame-rates-with-adaptive-performance</guid><pubDate>Mon, 01 Apr 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Isometric 2D environments with Tilemap]]></title><description><![CDATA[With the release of Unity 2018.3, we introduced Isometric Tilemap support - closely following Hexagonal Tilemap support which was added in the 2018.2 release. The new Tilemap features provide a fast and performant way to create 2D environments based on isometric and hexagonal grid layouts, the likes of which are seen in many game classics, including the first entries of the Diablo and Fallout franchises, Civilization, Age of Empires, and many more. Both features build on top of the existing Tilemap system introduced back in Unity 2017.2, and working with them today is just as easy! They are also natively integrated into the Editor. In further Unity releases, they might be moved to the package manager. If you’re interested in following along and experimenting with the techniques shown, we’ve created a pre-configured Isometric Starter Kit project with an animated character and multiple environment tilesets, which you can download for free.Explore more 2D environments and tools that provide endless creative possibilitiesBefore we start working with Tilemap, it is important to set up our project correctly. Isometric Tilemap works with 2-dimensional sprites, and it relies on correct renderer sorting in order to create the illusion of a top-down isometric view. We need to make sure that the tiles that are further away from the viewer get painted first; and those that are closer painted on top of them.To customize the order in which 2D objects are painted on the screen, we can use Unity’s Custom Axis Sort feature. You can define this setting either per-camera (currently, this is the default way to do it in the Scriptable Render Pipelines, including LWRP and HDRP) - or globally at the project level.To define a Custom Axis Sort at the Project level, go to Edit > Project Settings > Graphics. In the Camera Settings section, you will see a Transparency Sort Mode dropdown, as well as the X, Y, and Z value settings for the Transparency Sort Axis.By default, the Transparency Sort Axis in Unity is set to (0, 0, 1) for XYZ respectively. However, all of our 2D tiles are actually on the same Z plane. Instead, we can determine which tiles are behind or in front by using their height on screen, rather than their depth. Tiles which are positioned higher on the screen will be sorted behind those which are placed lower. To sort the tiles based on height, change the Transparency Sort Mode to Custom; and set the Transparency Sort Axis values to (0, 1, 0).You can read the relevant Unity Documentation page for 2D sorting if you want to learn more about how it works.In some cases, you may also want to adjust the Z value of your Transparency Sort Axis. We will cover this in more depth later on in this blog post.The Tilemap feature consists of several components working together. The first two are the Grid and Tilemap Game Objects. To create a Grid, simply right-click anywhere in the Hierarchy, go to 2D Object, and select the type of Tilemap you wish to use. By default, each new Grid is created with one child Tilemap Game Object of the corresponding type. The currently available Tilemap types are as follows:Tilemap - creates a rectangular Grid and Tilemap. An example of using this Tilemap can be seen in Unity’s 2D Game Kit.Hexagonal Point Top Tilemap - creates a Hexagonal Grid and Tilemap, where one of the vertices of each hexagon is pointing upwards.Hexagonal Flat Top Tilemap - another Hexagonal Grid type, where the top of the hexagon is an edge which is parallel to the top of the screen.The last two types, Isometric and Isometric Z as Y, create two different implementations of the isometric grid. The difference between them arises when simulating different tile elevation levels, such as when we have a raised platform in our Isometric level.A regular Isometric Tilemap is best used when you wish to create separate Tilemap Game Objects for each individual elevation level of the tiles. This will simplify the process of creating automatic collision shapes - but you will have less flexibility when it comes to height variation between the tiles since all the tiles on one layer will have to be on the same ‘plane’.In the case of an Isometric Z as Y Tilemap, the Z position value of each tile works in combination with the custom Transparency Axis Sort setting to make the tiles appear as stacked on top of one another. When painting on a Z as Y Tilemap, we dynamically adjust the Z setting on the brush to switch between different heights. The Z as Y Tilemap requires an additional Z value in the Custom Transparency Sort Axis to render correctly.Note: The assets shown here are from the Temple tileset in our Isometric Starter Kit project. Feel free to grab it - completely free - and have some fun creating your own environments!Think of the Grid as the ‘easel’ that holds your Tilemap Game Objects – which are essentially canvases that you will be painting your tiles onto. To start painting on a Tilemap, you also need a brush and a palette. A Tile Palette is what holds your tile assets, after which you can pick them with the brush tool and start painting.To create a Tile Palette, choose Window > 2D > Tile Palette. In the newly opened window, in the top left dropdown choose “Create New Palette”. Make sure to set the grid type that corresponds to your use case. For this example, I will be using a regular Isometric Tilemap; as well as the assets from our Isometric Starter Kit project. Set the palette cell size to Manual to be able to customize the dimensions of your isometric tiles. In this case, I know that the dimensions of my tiles correspond to a grid of 1 in X and 0.5 in Y; however, for your use case, it will depend on the resolution, pixels per unit values selected at import and dimensions of the assets - essentially, on the isometric angle at which the tiles are rotated.You might be unsure about the correct import settings and tilemap size that will work for your assets. There is a general rule that you can follow here based on your initial asset dimensions. First, take a look at the resolution of your tiles. Typically, isometric tiles that are represented as a block are taller than they are wide; ‘flat’ tiles (ones that appear as a plane rather than a cube) are wider than they are tall. However, the width will always be the same between them. Therefore, if you want your tiles to take up exactly one Unity unit, set the Pixels Per Unit value in the tile import settings equal to their width in pixels. You may want to adjust this value in some cases - usually by decreasing it (or increasing the actual resolution of your assets); this could be useful if you are trying to produce an effect where some tiles appear to take up more than one grid cell and overlay the neighboring tiles.In order to decide on the correct Y grid value for the tiles, take the height of the base (or cap) of a single tile, and divide it by the width. This will give you a Y value relative to the X, provided that X is 1. Let’s look at some examples:For the pixel art that we are using in this project, all tiles have a base height of 32 pixels, and are 64 pixels wide. Therefore, the grid size that we will be using is exactly 0.5 in Y. The second block in the example image comes from an asset pack from Golden Skull Art. The example tile has been scaled down for reference, but the original assets are 128 pixels wide. The tile base is about 66 pixels tall, giving us a Y grid size of 66/128 - approximately 0.515 units.Once we have settled on the correct Grid dimensions, let’s go ahead and add some tiles to our palette. Simply grab one of your tile sprites and drag it over into the Tile Palette window. This will create a Tile Asset. It contains some information about the tile itself, such as the sprite(s) that it is using, a tint color, and the type of collider that it will generate. If you want to see the detailed information about a tile on the palette, choose the Select (S) tool at the top of the Tile Palette window and click on that tile. Now, in the Inspector, you should be able to see which Tile asset it is referencing.To paint the new Tile onto our Tilemap, select the Brush (B) tool, and click the Tile in the Palette. You will now be able to paint with the selected Tile in the scene view. Some other painting tools include the Eraser (D), Box Fill (U), Flood Fill (G), and the Tile Picker (I).Sometimes, you might also wish to edit the arrangement of the tiles in the palette itself. Just below the toolbar, you will see an Edit button. If you click it, you will go into the palette editing mode, during which the tools will affect the Tile Palette itself. Don’t forget to exit out of this mode once you’ve made the desired changes.In some cases, you might see a situation where tiles of different types are not sorting correctly, despite being on the same Tilemap, like in the example below:This is determined by the Mode setting on the Tilemap Renderer component. By default, the Mode is set to Chunk.Chunk mode is effective at reducing the performance cost of Tilemap. Instead of rendering each tile individually, it batch renders them in one go, as a large block. However, there are two main drawbacks to using it. The first one is the fact that it does not support dynamic sorting with other 2D objects in the scene. This means that if your Tilemap is in Chunk mode, it will not be able to dynamically sort behind and in front of other objects, such as characters - only one or the other will be possible at a time, based on the Order in Layer setting. However, it is still extremely effective when you want to optimize your game, and can be used to batch render large areas of the ground.However, this does not get around the issue of different tiles not sorting with each other. In order to batch-render tiles that come from two or more different sprites (i.e. textures), the sprites have to be unified under a single Sprite Atlas asset.To create a Sprite Atlas, choose Assets > Create > Sprite Atlas. In the Sprite Atlas settings, you will find the list of Objects for Packing. Simply drag all of the tiles that you wish to be batch rendered into this list, and set the correct import settings - usually equivalent to those on your individual sprites.Once you have done that, the tiles will sort correctly; but they will only be visible in this way when in Play mode or at runtime.As such, it is better to set your Tilemap Renderer Mode to Individual while editing. It will sort each tile separately; which means that you will see them correctly rendered even outside of Play mode - which is extremely useful when you are still making changes to your level. Once you have your level structure in place, you can always set the Tilemap Renderer Mode back to Chunk.Individual Render Mode is also useful when you want to add objects - such as trees, props, and elevated ground that you wish to sort dynamically with characters, or with each other. During this blog post, we will stick to using Individual Mode for all of our Tilemaps.Sometimes, you might want to use more than one Tilemap on the same Grid. In the case of Isometric and Hexagonal Tilemaps, it will be useful if you want to add prop objects to the level that also align with the grid; or if you want to add tiles that appear to be higher than the first layer.To attach another Tilemap to the grid, right-click on the Grid Game Object, and create a new Tilemap of the corresponding type.In order to switch to painting on the new Tilemap, go back to the Tile Palette window, and change the Active Tilemap just below the main toolbar.There are generally two ways to go about adding elevated ground to your levels. The one that you will most likely use depends on the type of tilemap you choose to go with. We’ll go over each of the possible cases.Additionally, we have prepared a short video on the topic, which demonstrates one of these approaches with a regular Isometric Tilemap; as well as adding collision areas to the tiles. Check it out if you want to have a quick video reference for both of these things:For normal Isometric Tilemaps, you can simply create a new Tilemap under the same Grid; and give it a higher Order in Layer value. You can then change the Tile Anchor setting to make the new layer anchor to a higher point on the grid.My ground-level Tilemap had a Tile Anchor of (0, 0) for X and Y respectively. I want my new layer to paint one unit higher; so I will change the new Tilemap’s anchor point to (1, 1). Additionally, I will give it an Order in Layer of 1 - just one unit higher than my base level.I can now change my active Tilemap to the one with the second height level and paint away.Sometimes it can be useful to simulate different heights using the same Tilemap. For this case, you can use a Z as Y Isometric Tilemap and Grid.With a Z as Y Tilemap, the Z value of each tile has an additional influence on tile rendering order. We can adjust the Z value that tiles have while we are painting them, using the Z Position setting on our brush in the bottom part of the Tile Palette (which can also be changed using the ‘+’ and ‘-’ hotkeys):However, in order for our Z value to contribute properly and for the tiles to sort correctly, we need to go back to our Custom Axis Sort value and add a Z influence. The number that we use here is directly connected to the way in which Unity converts cell positions on an isometric grid to world space values.For example, a grid with XYZ dimensions of (1, 0.5, 1) - the default for isometric - will have a Z-axis sort value of -0.26. If you are curious as to how this number is calculated, or you are using a grid with a different cell size - read on to learn how to find the right Z value for your case.Once you have set the correct Custom Axis Sort value, you can start painting tiles that have different Z values. You can also adjust the increments in which the Z value moves the elevated tiles up or down by changing the Grid’s Z dimension - set to 1 by default.There is a general formula you can use to work out the Z value of your axis sort. First, take the Y dimension of your grid. If you haven’t worked out your Y dimension yet, take a look at the note on importing assets at the top of this blog post. Multiply this value by negative 0.5, and subtract an additional 0.01 from it.Following this formula, a grid that has the dimensions (1, 0.5, 1) will give us a Z sorting value of -0.26 (negative point twenty-six). At this axis sort value, any (1, 0.5, 1) grid will have its tiles sorting correctly.If you want to find out more about where this value and calculation comes from, take a look at the documentation here. It explains in great depth how 2D renderers work, and what method is used when converting isometric cells into world space values.Now that we have some tiles placed higher than others, we can control the areas that the player can go to and transition between them using collision.There are many approaches to adding collision; but in our case, we want the player to ascend and descend along the level using a ramp, and as such, it is not obvious which objects should or shouldn’t have colliders on them. Instead, we can define collision by hand using an additional Tilemap.In this project, we have created some sprites that correspond to the different shapes that we will use to define our collision areas. We can paint these shapes onto our third Tilemap, in the areas that we do not want the player to pass over. For example, we want the player to be able to ascend to the cliff only using the ramp, rather than walking onto it directly.We can also add a custom Material in our Tilemap Renderer component in order to tint the tiles a different color that is distinct from the rest of our level.Once we have placed our collision tiles, we can add a Tilemap Collider component to the collision Tilemap. This will auto-generate colliders for each individual tile based on the shape of the sprite.For better performance, we can also add a Composite Collider 2D component, and make sure to tick Used by Composite on our Tilemap Collider. This unifies all of our individual colliders into one big shape.Adding props to the level is quite simple. You can either manually place the prop sprites at any desired point in the scene, or you can attach the props to the Tilemap Grid by making them into individual tiles. You can decide which approach works best for your case.In this project, we’ve manually placed some trees around the level. The trees and the character have the same Order in Layer, allowing our character to sort behind and in front of them dynamically.We can define the point at which the player can pass the tree by using a collider. There are several ways in which we can do this.The first one, as demonstrated in the videos, is to attach a child collider to the object, and change its shape as needed.The other method is to define a Custom Physics Shape for the object within the Sprite Editor.To open the Sprite Editor, select the object’s sprite and find the Sprite Editor button in the Inspector. In the top-left dropdown, switch to the Custom Physics Shape editor. Here, you are able to create a polygonal shape to define the bounds of your custom collider.Once you have defined a physics shape, you can attach a Polygon Collider component to your object, and it will correspond to that shape.If you are using your props as tiles on a Tilemap, you could also use a Grid collider. Select the Tile Asset that corresponds to a prop tile (if you need a refresher on where to find it, take a look at the Basic Tilemap Workflow section). You will be able to see a dropdown setting for the Collider Type. By default, it is set to sprite - meaning the auto-generated collider will use the Physics Shape we talked about earlier. If you set it to grid, however, it will always exactly match with the shape of the grid cell that the prop is attached to. It may not be the most accurate way of implementing colliders but could be useful for a specific type of game.To use the grid colliders for these tiles, select the Tilemap with your props and add a Tilemap Collider component.Rule Tiles are extremely useful when it comes to automating the tile painting workflow. A Rule Tile acts as a normal tile, with an additional list of tiling parameters. Using these parameters - or rules - the tile can automatically choose which sprite should be painted based on its neighboring tiles.Rule Tiles are useful when you want to avoid hand-picking differently rotated tiles - for example, when creating a cliff or platform. They can also be used to randomize between different variations of the same tile to avoid obvious patterns, and even to create animated tiles.Isometric and Hexagonal Rule Tiles are available from Unity’s 2D Extras repository on GitHub. They also contain many other handy assets for the Tilemap feature that you may want to explore.We have also included pre-configured Rule Tiles for each of the different tilesets in our Isometric Starter Kit project. Here are some examples of the tiles included in the project for you to experiment with:Now that you’ve learned the ins and outs of Isometric Tilemaps in Unity, download the Isometric Starter kit project here and try it out yourself! It’s also possible to interact with Tilemaps via script if you are a programmer, so that might be something you want to try as well.For example, you can find out how you can implement a simple character controller which works with Isometric Tilemap by taking a look at this video:The artwork in this project was created for Unity by @castpixel and you can see more of her work here. If you are looking for additional 2D assets to experiment with using Tilemaps, you can check out the Unity Asset Store as well.---Learn best practices using Tilemap with beginner and advanced content on the Unity Learn Premium platform.]]></description><link>https://unity.com/blog/engine-platform/isometric-2d-environments-with-tilemap</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/isometric-2d-environments-with-tilemap</guid><pubDate>Mon, 18 Mar 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[2D Pixel Perfect: How to set up your Unity project for retro 8-bit games]]></title><description><![CDATA[Take your 2D development experience to the next level and explore Unity's native suite of 2D tools.Retro games with simple mechanics and pixelated graphics can evoke fond memories for veteran gamers, while also being approachable to younger audiences. Nowadays, many games are labeled as “retro”, but it takes effort and planning to create a title that truly has that nostalgic look and feel. That’s why we’ve invited the folks from Mega Cat Studios to help us talk about the topic. In this blog post, we’ll be covering everything you need to create authentic art for NES-style games, including important Unity settings, graphics structures, and color palettes. Get our sample project and follow along!Mega Cat Studios, out of Pittsburgh, Pennsylvania, has turned the creation of highly accurate retro games into an art form. So much so, in fact, that several of their titles can also be acquired in cartridge form and played on retro consoles like the Sega Genesis.Recent additions to the Unity workflows have made it a well-suited environment for creating your retro games. The 2D Tilemap system has been made even better and now supports grid, hex, and isometric tilemaps! Additionally, you can use the new Pixel Perfect Camera component to achieve consistent pixel-based motion and visuals. You can even go so far as to use the Post Processing Stack to add all sorts of cool retro screen effects. Before any of this work can be done, however, your assets will need to be imported and set up correctly.Our assets first need a correct configuration to be crisp and clear. For each asset you’re using, select the asset in the Project view, and then change the following settings in the inspector:Filter mode changed to ‘Point’Compression changed to ‘NoneOther filter modes result in a slightly blurred image, which ruins the crisp pixel-art style we’re looking for. If compression is used, the data of the image will be compressed which results in some loss of accuracy to the original. This is important to note, as it can cause some pixels to change color, possibly resulting in a change to the overall color palette itself. The fewer colors and the smaller your sprite, the greater the visual difference compression causes. Here’s a comparison between normal compression (default) and no compression.Another thing to be aware of is the Max Size setting for the image in the Inspector. If your sprite image has a size on any axis greater than the ‘Max Size’ property (2048 by default) it will be automatically resized to the max size. This will usually result in some loss of quality and cause the image to become blurry. Since some hardware will not properly support textures over 2048 on either axis, it is a good idea to try to stay within that limit.Above, is a sprite from a spritesheet that was 2208 on one axis with max size set at 2048. As you can see, increasing the Max Size property to 4096 allows the image to be sized appropriately and avoid a loss of quality.Finally, when preparing your sprite or sprite sheet, make sure you set the pivot unit mode to ‘Pixels’ instead of ‘Normalized’.This is so the sprite’s pivot point will be based upon pixels rather than a smooth range from 0 to 1 across each axis of the image. If the sprite were to not pivot from a pixel exactly, we would lose pixel-perfectness. Pivots can be set for sprites in the Sprite Editor, which can be opened from the Inspector when you have a sprite asset selected.With assets prepared, we can set our camera up to be “pixel-perfect”. A pixel-perfect result will look clean and crisp. Telltale signs of pixel art which aren’t displayed as pixel-perfect includes blurriness (aliasing), and some pixels appearing rectangular when they should be square.The 2D Pixel Perfect package can be imported through the Package Manager in Unity. Click the ‘Window’ menu in the toolbar followed by ‘Package Manager’. In the new window, click ‘Advanced’ and make sure you have enabled ‘Show preview packages’. Select 2D Pixel Perfect from the list on the left, and select install on the top right of the window.That’s it. Now you are ready to begin using the pixel-perfect camera component.The Pixel Perfect Camera component is added to and augments Unity’s Camera component. To add it, go to your main camera and add the Pixel Perfect Camera component to it. If the Pixel Perfect Camera component option is not there, follow the previously stated instructions to first import it into the project.Now let’s look at the settings we have available.First, I recommend checking ‘Run In Edit Mode’ and setting the display aspect ratio in the Game view to ‘Free Aspect’ so you can resize the game view freely. The component will display helpful messages in the game view explaining if the display is not pixel-perfect at any given resolution.Now, you can go through each setting to see what they do and how they affect the look of your game!Assets Pixels Per Unit - This field is in reference to the setting you can select in the inspector for each asset. As a general rule of thumb, each asset that will be used in the game’s world space should use the same pixels per unit (PPU), and you’d put that value here as well. If your game world exists as a grid of tiles and sprites, with each being 16 pixels by 16 pixels, a PPU of 16 would make sense - each tile of the grid would be 1 unit in worldspace coordinates. Make sure you put your chosen PPU here.Reference Resolution - Set this to the resolution that you intend all of your assets to be viewed at. If you want a retro look, this usually means a very small resolution. For example, the native resolution for the Sega Genesis is 320x224. When porting a game from Sega Genesis, we would use a reference resolution of 320x224. For general 16:9 usage, 320x180, as well as, 398x224 (if you want to keep the vertical resolution instead) should work well.Upscale Render Texture - This causes the scene to be rendered at as close to the reference resolution as possible and then be upscaled to the fit the actual display size. Because this setting results in a filled screen, we recommend it if you want a full-screen pixel-perfect experience with no margins. ‘Upscale Render Texture’ will also significantly affect how sprites look when rotated.Pixel Snapping (only available with Upscale Render Texture disabled) - With this enabled, sprite renderers will be snapped to a world-space grid automatically, where the grid’s size is based off of your chosen PPU. Note that this does not actually affect any object’s transform positions. As a result, you can still smoothly interpolate objects between positions, but the visual movement will remain pixel-perfect and snappy.Example:Crop Frame (X and Y) - This crops the viewed region of worldspace to exactly match the reference resolution, and adds black margins to the display to fill the gaps at the edges of the screen.Stretch Fill - Becomes available if you enable both x and y for Crop Frame. This causes the camera to scale to the game view to fit the screen in a way that preserves aspect ratio. Because this scaling won’t happen only in whole number multiples of the reference resolution, it will cause pixel-perfectness to be lost at any resolution which is not a whole number multiple of the reference resolution. The advantage here is that even though you lose pixel-perfectness for many resolutions, you won’t have the black bar margins and will instead have a fully filled screen. Note that although blurring often occurs from stretch fill, the usual alert display message does not show up.If you want a pixel-perfect and snappy display that will work for a variety of use-case, I recommend:Use a reference resolution that will never be bigger than a player’s window resolution (such as 320x180).Enable or Disable Upscale Render TextureEnable it if you will use rotations outside of 90, 180, and 270 and if you prefer the visual effect it has on rotated sprites.Upscaled render texture can result in a non-pixel-perfect image at some resolutions, depending on your reference resolution. Experiment with this and different screen resolutions using ‘Run in Edit Mode’ enabled on the Pixel. Perfect Camera component to determine whether this is an issue for your resolution. If you can get this to produce a pixel-perfect image at all target resolutions, this will result in the best full-screen pixel-perfect experience.Enable or Disable Pixel Snapping as you preferThis is more personal preference than anything. Without snapping, you have much smoother movement, but pixels can be out of alignment.Enable Crop Frame X and/or Y if not using Upscale Render TextureIf you can’t consistently get a pixel-perfect result with upscale render texture, cropping X and/or Y will ensure a pixel-perfect image for any resolution greater than the reference resolution, but creates big margins at the edges of the screen for some resolutions.Disable Stretch FillWe recommend setting the camera to be optimized for 16:9 aspect ratio viewing, including reference resolution if possible. At the time of writing, most gamers play on 16:9 monitors, and in 1920x1080 resolution. For example, 320x180 reference resolution is 16:9, and so it will have no black bar margins when played at 1920x1080 or any resolution which is an even multiple of 320x180, such as 1280x720.In Unity’s toolbar, you can go under Edit > Project Settings > Player and limit the aspect ratios that the game will support. If you find a particular configuration works just as you want in the ratio you’re targeting but looks bad in some particular aspect ratios, you can prevent the window from being at those ratios here. However, keep in mind that not all users will have a display setup that will work well with your limitations, so this is not recommended. Instead, enable cropping so these users will have margins, rather than having to play in a resolution which doesn’t fit their screen.Now that we’ve covered how to set Unity up for pixel-perfect art, let’s look at the basics of creating artwork for games that follow the restrictions of the classic Nintendo Entertainment System. This console generation places a large number of restrictions on the artists trying to create an authentic image. These restrictions include things like palettes used and the size and amount of objects on a screen. Additionally, it is import to keep in mind is the reference resolution of 256x240 when “targeting” this console.When creating artwork that is genuine to the NES, there are a host of restrictions that the artist will have to follow. Some of these will be consistent no matter what retro console an artist is attempting to emulate, while many others are specific to the NES itself. The first, and possibly the most important of these restrictions involve the way color palettes are used in an image. The NES is fairly unique when it comes to its color palette because the full-color palette of the console is hardcoded into the console. The NES chooses which colors to use in an image by sending a series of values to the graphics processor on the NES, and then the graphics processor returns the colors associated with those values. Below is an image of the NES’ color palette:These colors cannot be changed due to the fact that they are part of the console themselves. Every game you have ever seen for this console uses combinations of these colors in order to make their images.To create the combinations that are used in the game, sub-palettes are created and assigned to either the in-game sprites or background elements. The NES breaks its palette up into sub-palettes that can be assigned to sprites and backgrounds. Each sub-palette includes one common color that is used across all of the sub-palettes and three unique colors. It is capable of loading four sub-palettes for the backgrounds and four sub-palettes for the sprites. In the case of the sprites, the common color at the beginning of each sub-palette is treated as transparency.This is an example of a series of sub-palettes that are being used in a game. The top row represents the background sub-palettes and the bottom row represents the sprite sub-palettes. In this example, black is being used as the common color that is shared across all of the sub-palettes. Because the common color is treated as transparency on sprites, a second black palette entry is needed to be made for the sprite sub-palettes, in order to use it as a visible color.The restrictions on palette use get even tighter as the artist moves on to how the palettes are used in the game. To explain this, there needs to be further discussion on how retro consoles store, use, and display art. The artwork in any retro console is stored in the game as 8x8 px tiles. Using this tile-based approach allows artists to save space by reusing tiles for different things. (For example, pieces of a sidewalk can be repurposed and used to make the ledge on a building). The other important thing to note about tile based storage is that color information is generally not saved with the graphics. All of the tiles are saved with a monochromatic palette. This way, whenever a tile is displayed in the game it can have a sub-palette assigned to it, allowing the same tile to be simultaneously displayed on screen with different sub-palettes This is significant when creating artwork that is true to a retro console on a modern platform because it affects how you assign palettes to the artwork.The NES assigns palettes to sprites and backgrounds differently. It assigns sub-palettes for sprites on a tile-by-tile basis. That means that every 8x8 tile in a sprite can have one of the four sprite sub-palettes assigned to it.Backgrounds, on the other hand, are much more restrictive. Backgrounds assign their palettes in 16x16 chunks. The sub-palette assignments for an entire screen's worth of background are referred to as Attribute Tables. These Attribute Tables are the reason why most retro artwork involves heavy use of repeating tiled segments. Those segments tend to be composed of 16x16 tiles so that they neatly fit into an Attribute Table. Despite being in response to a hardware restriction, this 16x16 tile-based approach to backgrounds ended up being a defining characteristic of retro artwork and is absolutely necessary when trying to recreate it.Even though artists are free to use different sub-palettes for each 8x8 tile of a sprite, they might find themselves in a situation where they want to have a greater color depth in a sprite than what is already available. This is where sprite layering can come in. Sprite layering is simply splitting a sprite up into two separate sprites and then placing them on top of each other. This allows artists to circumvent the one sub-palette per 8x8 tile restriction. Doing this will essentially allow artists to double the number of colors that can be used in a single 8x8 area. The only major drawback of doing this is sprite rendering limits. The NES is only capable of displaying 64 8x8 sprite tiles on screen at once, and only 8 sprite tiles in the same horizontal line with one another. Once those numbers are reached, any further sprite tiles will not be rendered on screen. This is why many NES games would flicker sprites when there was a lot of them on the screen at once. That way, it’s only displaying certain sprites on alternating frames. These limits are something artists need to be mindful of when they are layering sprites on top of each other because while it doubles the number of colors, it also doubles the number of sprite tiles on the same horizontal line.Sprite layering can also be done with the background to get around the Attribute Table limits. This trick is generally used for static images, like story screens and character portraits, to give them a much greater color depth. In order to do this, the artist would draw part of the image as the background and then layer sprites on top of it to fill in the rest.To explain the next major restriction of the NES, first, we need to circle back to the fact that graphics are stored in tiles. Graphics tiles are stored in 256 tile pages and tiles from these pages cannot be loaded into VRAM in different locations, so it becomes difficult to mix and match tiles from different pages on the fly. The NES’ VRAM is only capable of displaying 512 of these tiles at once. Beyond just that restriction, it splits the tiles in half for sprites and background. That means it is only capable of displaying 256 sprite tiles and 256 background tiles at any given moment. This can become very restrictive if the artist wants to display a large variety of sprites and background elements.In order to combat this limitation, the NES has a feature that allows the artist to break each page up into partial pages called banks. So while the NES isn’t capable of loading individual tiles from various points in the graphics data, it is capable of loading different sections of a page at different times. For most games, these banks are either going to be 1K or 2K banks. A 1K bank equals one-fourth of a page or 64 tiles, while a 2K bank is half of a page or 128 tiles. The artist must decide if they want to reserve the use of each type of bank for either Sprites or Background elements because both types of banks need to be utilized. That means that you cannot have 1K banks for both the sprites and backgrounds. One page needs to use 1K banks and the other needs to use 2K. Generally speaking, most games tend to use 1K banks for the sprites and 2K banks for the backgrounds because background tilesets tend to be more static and need less in terms of on the fly variety.The usefulness of 1K banks for sprites is pretty significant. If the player sprite has a large range of animations that will not fit in a single page along with all of the other sprites that need to be loaded, individual actions can be saved in 1K banks and then swapped between depending on what action is happening on screen. It also allows for a larger variety of sprites that can be used in a single area of a game. For instance, if the player is to encounter six different kinds of enemies in an area of a game, but the sprite page only allows for the player and three other types of sprites, then when one enemy type is cleared off of the screen, the game can swap one of the enemy banks in for a new enemy type.One of the only major drawbacks of using 1K banks for sprites and 2K banks for backgrounds is how the NES handles background animation. In order to animate a background element for a NES game, the artist has to create duplicate banks of the animated background elements. Each new duplicate bank will contain the next frame of animation for each of the animated elements. These banks are then swapped in and out one at a time like a flip-book, in order to create the animation. If the artist is using half-page banks for the backgrounds, then storing all of those duplicate banks can take up a lot of space. One way to circumvent this though is to put all of the animated background elements for the entire game into a single bank. But, that also leaves the artist with the restriction of only having 128 tiles left over for the static elements for each background. It is up to the artist to decide the best course of action when deciding what kinds of banks they are going to use for the art.Many games from that era will employ tricks to create effects like parallax scrolling in the background, but these too present the artists and designers with a challenge. While the later 16-bit consoles allowed for multiple background layers, this is not an option on the NES. All backgrounds are a single flattened image. In order to create a sense of depth and layering, different programming tricks were used. In order to create a parallax background, for instance, the developer is able to set a register that can tell when a certain horizontal line (known as a raster line) is being rendered on the screen. They can then use that register to control the speed and direction that the screen is scrolling in. By using that, they can create a horizontal row of the background that scrolls at a different speed as the rest of the background. The trick for the artists and designers at this point is to be mindful that the background is still one flat image. If a platform or any other element that is supposed to be “in front” of that slower moving background is placed in that region, then it too will scroll slower than the rest of the image. That means that designers need to be mindful of where they are placing background elements in the scene, and artists need to create the background in a way that the effect will be seamless.There's also another trick for artists that want to have one of their background elements appear in the foreground. On the NES, developers are able to set a sprite’s priority to be less than zero. When this is done, it will cause the sprite to be displayed behind any non-transparent background pixels. Sprite priorities can be modified and triggered on the fly as well, allowing for certain elements to change a sprite’s priority as needed.When someone is trying to create a project that is authentic to a retro console, there are many technical considerations that they need to keep in mind that might not be things that modern development has to worry about. Due to the way older machines would render images and handle having small amounts of room to maneuver with the CPU and GPU, the designers would have to think creatively to work around the hardware’s limitations. In the modern age, it becomes important to learn about those limitations and the techniques, in order to truly recreate the look and design of games from that era. In the next post, we will look at the design limitations imposed by the 16-bit era as well as the Unity work needed to get that truly “old TV” feel. The 2D Pixel Perfect guide for 16 bits retro visuals is now available here.---First time designing levels with Tilemap? Explore worldbuilding in 2D in this beginner tutorial on Unity Learn.]]></description><link>https://unity.com/blog/games/2d-pixel-perfect-how-to-set-up-your-unity-project-for-retro-8-bits-games</link><guid isPermaLink="true">https://unity.com/blog/games/2d-pixel-perfect-how-to-set-up-your-unity-project-for-retro-8-bits-games</guid><pubDate>Wed, 13 Mar 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[On DOTS: Entity Component System]]></title><description><![CDATA[This is one of several posts about our new Data-Oriented Tech Stack (DOTS), sharing some insights into how and why we got to where we are today, and where we’re going next.In my last post, I talked about HPC# and Burst as low-level foundational technologies for Unity going forward. I like to refer to this level of our stack as the “game engine engine”. Anyone can use this stack to write a game engine. We can. We will. You can too. Don’t like ours? Write your own, or modify ours to your liking.The next layer we’re building on top is a new component system. Unity has always been centered around the concepts of components. You add a Rigidbody component to a GameObject and it will start falling. You add a Light component to a GameObject and it will start emitting light. Add an AudioEmitter component and the GameObject will start producing sound.It’s a very natural concept for programmers and non-programmers alike, and easy to build intuitive UIs for. I’m actually quite amazed at how well this concept has aged. So well that we want to keep it.What hasn’t aged well is how we implemented our component system. It was written with an object-oriented mindset. Components and GameObjects are “heavy c++” objects. Creating/destroying them requires a mutex lock to modify the global list of id->objectpointers. All GameObjects have a name. Each one gets a C# wrapper object that points to the C++ one. That C# object could be anywhere in memory. The C++ object can also be anywhere in memory. Cache misses galore. We try to mitigate the symptoms as best we can, but there’s only so much you can do.With a data-oriented mindset, we can do much better. We can keep the same nice properties from a user point of view (add a Rigidbody component, and the thing will fall), but also get amazing performance and parallelism with our new component system.This new component system is our Entity Component System (ECS). Very roughly speaking, what you do with a GameObject today you do with an Entity in the new system. Components are still called components. So what’s different? The data layout.Let’s look at some common data access patterns
A typical component that you would write in Unity in the traditional way might look like this:class Orbit : MonoBehaviour
{
   public Transform _objectToOrbitAround;

   void Update()
   {
       //please ignore this math is all broken, that's not the point here :)
       var currentPos = GetComponent<Transform>().position;
       var targetPos = _objectToOrbitAround.position;
       GetComponent<RigidBody>().velocity += SomehowSteerTowards(currentPos,targetPos)
   }
}
This pattern comes back over and over. A component has to find one or more other components on the same GameObject and read/write some values on it.There are a lot of things wrong with this:The Update() method gets called for a single orbit component. The next Update() call might be for a completely different component, likely causing this code to be evicted from the cache the next time it has to run this frame for another Orbit component.Update() has to use GetComponent() to go and find its Rigidbody. (It could be cached instead, but then you have to be careful about the Rigidbody component not being destroyed).The other components we’re operating on are in completely different places in memory.The data layout ECS uses recognizes that this is a very common pattern and optimizes memory layout to make operations like this fast.ECS groups all entities that have the exact same set of components together in memory. It calls such a set an archetype. An example of an archetype is: “Position & Velocity & Rigidbody & Collider”. ECS allocates memory in chunks of 16k. Each chunk will only contain the component data for entities of a single archetype.Instead of having the user Update method searching for other components to operate on at runtime, per Orbit instance, in ECS land you have to statically declare “I want to run some operations on all entities that have both a Velocity and a Rigidbody and an Orbit component. To find all those entities, we simply find all archetypes that match a specific “component search query”. Each archetype has a list of Chunks where entities of that archetype are stored. We loop over all those chunks, and inside each of the chunks, we’re doing a linear loop of tightly packed memory, to read and write the component data. This linear loop that runs the same code on each entity also makes for a likely vectorization opportunity for Burst.In many cases, this process can be trivially split up into several jobs, making the code operating the ECS component run on nearly 100% core utilization.ECS does all this work for you, you just need to supply the code that you want to run on each entity. (You can do the chunk iteration manually if you want to though.)When you add/remove a component from an Entity, it switches archetype. We move it from its current chunk to a chunk of the new archetype, and back swap the last entity of the previous chunk to “fill the hole”.In ECS, you also statically declare what you intend to do with the component data. ReadOnly or ReadWrite. By promising (the promise is verified) to only read from the Position component, ECS can get more efficient scheduling of its jobs. Other jobs that also want to read from the Position component won’t have to wait.This data layout also allows us to deal with a long-standing frustration we’ve had, which are load times and serialization performance. Loading/streaming ECS data for a big scene isn’t much more than just loading raw bytes from disk and using them as is.This is the reason the Megacity demo loads in a few seconds on a phone.While entities can do what game objects do today, they can do more because they are so lightweight. In fact, what really is an Entity? In an earlier draft of this post I wrote “we store entities in chunks”, and later changed it to “we store component data for entities in chunks”. It’s an important distinction to make, to realize that an Entity is just a 32-bit integer. There is nothing to store or allocate for it, other than the data of its components. Because they’re so cheap, you can use them for scenarios that game objects weren’t suitable for. Like using an entity for each individual particle in a particle system.The next layer we need to build is very big. It’s the “game engine” layer composed of features like “renderer”, “physics”, “networking”, “input”, “animation”, etc. This is roughly where we are today. We have started to work on these pieces, but they won’t be ready overnight.That might sound like a bummer. In a way it is, but in another way, it’s not. Because ECS and everything built on top of it are written in C#, it can run inside of traditional Unity. Because it runs inside of Unity, you can write ECS components that use pre-ECS functionality. There is no pure ECS mesh drawing system right now. However, you can write an ECS MeshRenderSystem that uses pre-ECS Graphics.DrawMeshIndirect API as an implementation, while you wait for a pure ECS version to ship. This is exactly the technique that our Megacity demo uses. Loading/Streaming/Culling/LODding/Animation is done with pure ECS systems, but the final drawing is not.So you can mix & match. What’s great about that is you can already reap the benefits of Burst codegen, and ECS performance for your game code, instead of having to wait for us to ship pure ECS versions of all subsystems. What’s not great about it is that in this transition phase, you can see and feel this friction that you’re “using two different worlds that are glued together”.We will ship all the source code to our ECS HPC# subsystems in packages. You can inspect, debug, modify each subsystem, as well as have more fine-grained control over when you want to upgrade which subsystem. You could, for example, upgrade the Physics subsystem package without upgrading anything else.Game Objects aren’t going anywhere. People have successfully shipped amazing games on it for over a decade. That foundation isn’t going anywhere.What will change is that you will over time see our energy to make improvements tilt from going exclusively into the game object world, towards the ECS world.A common, very valid, point people bring up when looking at ECS, is that there’s a lot of typing. A lot of boilerplate code that stands in between you and what you’re trying to achieve.There are a lot of improvements on the horizon that aim to remove the need for most boilerplate and make it simpler to express your intent. We haven’t implemented many of them yet as we’ve been focussing on the foundational performance, but we believe there is no good reason for ECS game code to have much boilerplate code, or be particularly more work to write than writing a MonoBehaviour.Project Tiny has already implemented some of these improvements (like a lambda based iteration API). Speaking of which..Project Tiny will ship on top of the same C# ECS as this blog post has been talking about. Project Tiny will be a big ECS milestone for us in several ways:It will be able to run in a complete ECS-only environment. A new player with no baggage from the past.That means it's also pure-ECS and has to ship with all ECS subsystems a real (tiny) game needs.We'll adopt Project Tiny's Editor support for Entity editing for all ECS scenarios, not just tiny.We have job openings for all the different parts of the DOTS stack, particularly in Burbank and Copenhagen, check out careers.unity.com.Also, make sure to join us on Unity Entity Component System and C# Job System forum to give feedback and get information on experimental and preview features.]]></description><link>https://unity.com/blog/engine-platform/on-dots-entity-component-system</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/on-dots-entity-component-system</guid><pubDate>Fri, 08 Mar 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[SRP Batcher: Speed up your rendering]]></title><description><![CDATA[In 2018, we’ve introduced a highly customizable rendering technology we call Scriptable Render Pipeline (SRP). A part of this is a new low-level engine rendering loop called SRP Batcher that can speed up your CPU during rendering by 1.2x to 4x, depending on the Scene. Let’s see how to use this feature at its best!This video shows the worst case scenario for Unity: each object is dynamic and uses a different material (color, texture). This scene shows many similar meshes but it would run the same with one different mesh per object (so GPU instancing can’t be used). The speedup is about 4x on PlayStation 4 (this video is PC, Dx11).NOTE: when we talk about x4 speedup, we’re talking about the CPU rendering code (the “RenderLoop.Draw” and “ShadowLoop.Draw” profiler markers). We're not talking about global framerate (FPS)).The Unity editor has a really flexible rendering engine. You can modify any Material property at any time during a frame. Plus, Unity historically was made for non-constant buffers, supporting Graphics APIs such as DirectX9. However, such nice features have some drawbacks. For example, there is a lot of work to do when a DrawCall is using a new Material. So basically, the more Materials you have in a Scene, the more CPU will be required to setup GPU data.During the inner render loop, when a new Material is detected, the CPU collects all properties and sets up different constant buffers in the GPU memory. The number of GPU buffers depends on how the Shader declares its CBUFFERs.When we made the SRP technology, we had to rewrite some low-level engine parts. We saw a great opportunity to natively integrate some new paradigms, such as GPU data persistence. We aimed to speed up the general case where a Scene uses a lot of different Materials, but very few Shader variants.Now, low-level render loops can make material data persistent in the GPU memory. If the Material content does not change, there is no need to set up and upload the buffer to the GPU. Plus, we use a dedicated code path to quickly update Built-in engine properties in a large GPU buffer. Now the new flow chart looks like:Here, the CPU is only handling the built-in engine properties, labeled object matrix transform. All Materials have persistent CBUFFERs located in the GPU memory, which are ready to use. To sum up, the speedup comes from two different things:Each material content is now persistent in GPU memoryA dedicated code is managing a large “per object” GPU CBUFFERYour project must be using either the Lightweight Render Pipeline (LWRP), the High Definition Render Pipeline (HDRP), or your own custom SRP. To activate the SRP Batcher in HDRP or LWRP, just use the checkbox in the SRP Asset Inspector.If you want to enable/disable SRP Batcher at runtime, to benchmark performance benefits, you can also toggle this global variable using C# code:GraphicsSettings.useScriptableRenderPipelineBatching = true;For an object to be rendered through the SRP Batcher code path, there are two requirements:1. The object must be in a mesh. It cannot be a particle or a skinned mesh.2. You must use a Shader that is compatible with the SRP Batcher. All Lit and Unlit  Shaders in HDRP and LWRP fit this requirement.For a Shader to be compatible with SRP:All built-in engine properties must be declared in a single CBUFFER named “UnityPerDraw”. For example, unity_ObjectToWorld, or unity_SHAr.All Material properties must be declared in a single CBUFFER named “UnityPerMaterial”.You can see the compatibility status of a Shader in the Inspector panel. This compatibility section is only displayed if your Project is SRP based.In any given Scene, some objects are SRP Batcher compatible, some are not. But the Scene is still rendered properly. Compatible objects will use SRP Batcher code path, and others still use the standard SRP code path.If you want to measure the speed increase with SRP Batcher in your specific Scene, you could use the SRPBatcherProfiler.cs C# script. Just add the script in your Scene. When this script is running, you can toggle the overlay display using F8 key. You can also turn SRP Batcher ON and OFF during play using F9 key. If you enable the overlay in PLAY mode (F8) you should see a lot of useful information:Here, all time is measured in milliseconds (ms). Those time measurements show the CPU spent in Unity SRP rendering loops.NOTE: timing means cumulated time of all “RenderLoop.Draw” and “Shadows.Draw” markers called during a frame, whatever the thread owner. When you see “1.31ms SRP Batcher code path”, maybe 0.31ms is spent on main thread, and 1ms is spread over all of the graphic jobs.In this table, you can see a description of each setting in the Overlay visible in PLAY mode, from top to bottom:NOTE: We hesitate to add FPS at the bottom of the overlay because you should be very careful about FPS metrics when optimizing. First, FPS is not linear, so seeing FPS increase by 20% didn’t tell you immediately how much you optimized your scene. Second, FPS is global over the frame. FPS (or global frame timing) depends on many other things than rendering, like C# gameplay, Physics, Culling, etc.You can get SRPBatcherProfiler.cs from a SRP Batcher project template on GitHub.Here are some Unity scenes shots with SRP Batcher OFF and ON to see the speed up in various situations.Book of the Dead, HDRP, PlayStation 4. x1.47 speed up. Please note that FPS doesn’t change, because this scene is GPU bound. You get 12ms left to do other things on the CPU side. Speed up is almost the same on PC.FPS Sample, HDRP, PC DirectX 11. X1.23 speed up. Please note there is still 1.67ms going to the standard code path because of SRP Batcher incompatibility. In this case, skinned meshes and a few particles rendered using Material Property Blocks.Boat Attack, LWRP, PlayStation 4. Speed up x2.13.SRP Batcher is working on almost all platforms. Here is a table showing platform and minimal Unity version required. Unity 2019.2 is currently in open alpha.SRP Batcher fast code path is supported in VR, only with “SinglePassInstanced” mode. Enabling VR won’t add any CPU time ( thanks to SinglePassInstanced mode )How do I know I’m using SRP Batcher the best way possible?Use SRPBatcherProfiler.cs, and first check that SRP Batcher is ON. Then, look at “Standard code path” timing. This should be close to 0, and all timing should be spent in “SRP Batcher code path”. Sometimes, it’s normal that some time is spent in the standard code path if your scene is using a few skinned meshes or particles. Check out our SRP Batcher Benchmark project on GitHub.SRPBatcherProfiler shows similar timing regardless of SRP Batcher is ON or OFF. Why?First, you should check that almost all rendering time goes through the new code path (see above). If it does, and the numbers are still similar, then look at the “flush” number. This “flush” number should decrease a lot when the SRP Batcher is ON. As a rule of thumb, divided by 10 is really nice, by 2 is almost good. If the flush count does not decrease a lot, it means you still have a lot of Shader variants. Try to reduce the number of Shader variants. If you did a lot of different Shaders, try to make a “uber” one with more parameters. Having tons of different material parameters is then free.Global FPS didn’t change when I enabled the SRP Batcher. Why?Check the two questions above. If SRPBatcherProfiler shows that “CPU Rendering time” is twice as fast, and the FPS did not change, then the CPU rendering part is not your bottleneck. It does not mean you’re not CPU bound - instead, maybe you’re using too much C# gameplay or too many physics elements. Anyway, if “CPU Rendering time” is twice as fast, it’s still positive. You probably noticed on the top video that even with 3.5x speedup, the scene is still at 60FPS. That’s because we have VSYNC turned ON. SRP Batcher really saved 6.8ms on the CPU side. Those milliseconds could be used for another task. It can also just save some battery life on mobile.It’s important to understand what is a “batch” in SRP Batcher context. Traditionally, people tend to reduce the number of DrawCall to optimize the CPU rendering cost. The real reason for that is the engine has to set up a lot of things before issuing the draw. And the real CPU cost comes from that setup, not from the GPU DrawCall itself (that is just some bytes to push in the GPU command buffer). SRP Batcher doesn’t reduce the number of DrawCalls. It just reduces the GPU setup cost between DrawCalls.You can see that on the following workflow:On the left is the standard SRP rendering loop. On the right is the SRP Batcher loop. In SRP Batcher context, a “batch” is just a sequence of “Bind”, “Draw”, “Bind”, Draw”... GPU commands.In standard SRP, the slow SetShaderPass is called for each new material. In SRP Batcher context, the SetShaderPass is called for each new shader variant.To get maximum performance, you need to keep those batches as large as possible. So you need to avoid any shader variant change, but you can use any number of different Materials if they’re using the same shader.You can use Unity Frame Debugger to look at the SRP Batcher “batches” length. Each batch is an event in frame debugger called “SRP Batch”, as you can see here:See the SRP Batch event on the left. See also the size of the batch, which is the number of Draw Calls (109 here). That’s a pretty efficient batch. You also see the reason why the previous batch had been broken (“Node use different shader keywords”). It means the shader keywords used for that batch are different than the keywords in the previous batch. It means that the shader variant has changed, and we have to break the batch.In some scenes, some batch size could be really low, like this one:Batch size is only 2. It probably means you have too many different shader variants. If you’re creating your own SRP, try to write generic “uber” shader with minimum keywords. You don’t have to worry about how many material parameters you put in the “property” section.NOTE: SRP Batcher information in Frame Debugger requires Unity 2018.3 or higher.Note: This section is made for advanced users writing their own Scriptable Render Loop and shader library. LWRP or HDRP users can skip this section, as all shaders we provide are already SRP Batcher compatible.If you’re writing your own render loop, your shaders have to follow some rules in order to go through the SRP Batcher code path.First, all “per material” data should be declared in a single CBUFFER named “UnityPerMaterial”. What is “per material” data? Typically all variables you declared in the “shader property” section. That is all variables that your artist can tweak using the material GUI inspector. For instance, let’s look at a simple shader like:If you compile this shader, the shader inspector panel will show you:To fix that, just declare all your “per material” data like that:SRP Batcher also needs a very special CBUFFER named “UnityPerDraw”. This CBUFFER should contain all Unity built-in engine variables.The variable declaration order inside of “UnityPerDraw” CBUFFER is also important. All variables should respect some layout we call “Block Feature”. For instance, the “Space Position block feature” should contain all those variables, in that order:You don’t have to declare some of these block features if you don’t need them. All built-in engine variables in “UnityPerDraw” should be float4 or float4x4. On mobile, people may want to use real4 ( 16 bits encoded floating point value) to save some GPU bandwidth. Not all UnityPerDraw variables could use “real4”. Please refer to the “Could be real4” column.Here is a table describing all possible block features you could use in the “UnityPerDraw” CBUFFER:NOTE: If one of the variables of one feature block is declared as real4 ( half ), then all other potential variables of that feature block should also be declared as real4.HINT 1: always check the compatibility status of a new shader in the inspector. We check several potential errors ( UnityPerDraw layout declaration, etc ) and display why it’s not compatible.HINT 2: When writing your own SRP shader you can refer to LWRP or HDRP package to look at their UnityPerDraw CBUFFER declaration for inspiration.We still continue to improve SRP Batcher by increasing batch size in some rendering passes (especially Shadow and Depth passes).We’re also working on adding automatic GPU instancing usage with SRP Batcher. We started with new DOTS renderer used in our MegaCity demo. The speedup in the Unity editor is quite impressive, going from 10 to 50 FPS.MegaCity in-editor with SRP Batcher & DOTS renderer. The difference in performance is so huge that even global frame rate speeds up by a factor of five.NOTE: To be precise, this massive speedup when enabling the SRP Batcher is editor only, due to editor currently not using Graphics Jobs. Speedup in Standalone player mode is something like x2.MegaCity in Editor. If you could play the video at 60hz you would feel the speed up when enabling SRP Batcher.
NOTE: SRP Batcher with DOTS renderer is still experimental and in active development.]]></description><link>https://unity.com/blog/engine-platform/srp-batcher-speed-up-your-rendering</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/srp-batcher-speed-up-your-rendering</guid><pubDate>Thu, 28 Feb 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[On DOTS: C++ & C#]]></title><description><![CDATA[This is a brief introduction to our new Data-Oriented Tech Stack (DOTS), sharing some insights in how and why we got to where we are today, and where we’re going next. We’re planning on posting more about DOTS on this blog in the near future.Let’s talk about C++. The language Unity is written in today.One of many advanced game programmers’ problems at the end of the day is that they need to provide an executable with instructions the target processor can understand, that when executed will run the game.For the performance critical part of our code, we know what we want the final instructions to be. We just want an easy way to describe our logic in a reasonable way, and then trust and verify that the generated instructions are the ones we want.In our opinion, C++ is not great at this task. I want my loop to be vectorized, but a million things can happen that might make the compiler not vectorize it. It might be vectorized today, but not tomorrow if a new seemingly innocent change happens. Just convincing all my C/C++ compilers to vectorize my code at all is hard.We decided to make our own “reasonably comfortable way to generate machine code”, that checks all the boxes that we care about. We could spend a lot of energy trying to bend the C++ design train a little bit more in a direction it would work a little bit better for us, but we’d much rather spend that energy on a toolchain where we can do all of the design, and that we design exactly for the problem that game developers have.What checkboxes do we care about?Performance is correctness. I should be able to say “if this loop for some reason doesn’t vectorize, that should be a compiler error, not a ‘oh code is now just 8x slower but it still produces correct values, no biggy!’”Cross-architecture. The input code I write should not have to be different for when I target iOS than when I target Xbox.We should have a nice iteration loop where I can easily see the machine code that is generated for all architectures as I change my code. The machine code “viewer” should do a good job at teaching/explaining what all these machine instructions do.Safety. Most game developers don’t have safety very high on their priority list, but we think that the fact that it’s really hard to have memory corruption in Unity has been one of its killer features. There should be a mode in which we can run this code that will give us a clear error with a great error message if I read/write out of bounds or dereference null.Ok, so now that we know what things we care about, the next step is to decide on what the input language for this machine code generator is. Let’s say we have the following options:Custom languageSome adaption/subset of C or C++Subset of C#Say What C#? For our most performance critical inner loops? Yes. C# is a very natural choice that comes with a lot of nice benefits for Unity:It’s the language our users already use today.Has great IDE tooling, both editing/refactoring as well as debugging.A C#->intermediate IL compiler already exists (the Roslyn C# compiler from Microsoft), and we can just use it instead of having to write our own.We have a lot of experience modifying intermediate-IL, so it’s easy to do codegen and postprocessing on the actual program.Avoids many of C++’s problems (header inclusion hell, PIMPL patterns, long compile times)I quite enjoy writing code in C# myself. However, traditional C# is not an amazing language from a performance perspective. The C# language team, standard library team, and runtime team have been making great progress in the last two years. Still, when using C# language, you have no control over where/how your data is laid out in memory. And that is exactly what we need to improve performance.On top of that, the standard library is oriented around “objects on the heap”, and “objects having pointer references to other objects”.That said, when working on a piece of performance critical code, we can give up on most of the standard library, (bye Linq, StringFormatter, List, Dictionary), disallow allocations (=no classes, only structs), reflection, the garbage collector and virtual calls, and add a few new containers that you are allowed to use (NativeArray and friends). Then, the remaining pieces of the C# language are looking really good. Check out Aras’s blog for some examples from his path tracer toy project for some examples.This subset lets us comfortably do everything we need in our hot loops. Because it’s a valid subset of C#, we can also run it as a regular C#. We can get errors on out of bounds access, with great error messages, debugger support and compilation speeds you forgot were possible when working in C++. We often refer to this subset as High-Performance C# or HPC#.We’ve built a code generator/compiler called Burst. It’s been available since Unity 2018.1 as a preview package. We have a lot of work ahead, but we’re already happy with it today.We’re sometimes faster than C++, also still sometimes slower than C++. The latter case we consider performance bugs we’re confident we can resolve.Only comparing performance is not enough though. What matters equally is what you had to do to get that performance. Example: we took the C++ culling code of our current C++ renderer and ported it to Burst. The performance was the same, but the C++ version had to do incredible gymnastics to convince our C++ compilers to actually vectorize. The Burst version was about 4x smaller.To be honest, the whole “you should move your most performance critical code to C#” story also didn’t result in everybody internally at Unity immediately buying it. For most of us, it feels like “you’re closer to the metal” when you use C++. But that won’t be true for much longer. When we use C# we have complete control over the entire process from source compilation down to machine code generation, and if there’s something we don’t like, we just go in and fix it.We will slowly but surely port every piece of performance critical code that we have in C++ to HPC#. It’s easier to get the performance we want, harder to write bugs, and easier to work with.Here’s a screenshot of Burst Inspector, allowing you to easily see what assembly instructions were generated for your different burst hot loops:Unity has a lot of different users. Some can enumerate the entire arm64 instruction set from memory, others are happy to create things without getting a PhD in computer science.All users benefit as the parts of their frame time that are spent running engine code (usually 90%+) get faster. The parts that are running Asset Store package runtime code gets faster as Asset Store package authors adopt HPC#.Advanced users will benefit on top of that by also being able to also write their own high-performance code in HPC#.In C++, it’s very hard to ask the compiler to make different optimization tradeoffs for different parts of your project. The best you have is per file granularity on specifying optimization level.Burst is designed to take a single method in that program as input: the entry point to a hot loop. It will compile that function and everything that it invokes (which is guaranteed to be known: we don’t allow virtual functions or function pointers).Because Burst only operates on a relatively small part of the program, we set optimization level to 11. Burst inlines pretty much every call site. Remove if checks that otherwise would not be removed, because in inlined form we have more information about the arguments of the function.C++ (nor C#) doesn’t do much to help developers to write thread-safe code.Even today, more than a decade since game consumer hardware has >1 core, it is very hard to ship programs that use multiple cores effectively.Data races, nondeterminism and deadlocks are all challenges that make shipping multithreaded code difficult. What we want is features like “make sure that this function and everything that it calls never read or write global state”. We want violations of that rule to be compiler errors, not “guidelines we hope all programmers adhere to”. Burst gives a compiler error.We encourage both Unity users and ourselves to write “jobified” code: splitting up all data transformations that need to happen into jobs. Each job is “functional”, as in side-effect free. It explicitly specifies the read-only buffers and read/write buffers it operates on. Any attempt to access other data results in a compiler error.The job scheduler will guarantee that nobody is writing to your read-only buffer while your job is running. And we’ll guarantee that nobody is reading from your read/write buffer while your job is running.If you schedule a job that violates these rules, you get a runtime error every time. Not just in your unlucky race condition case. The error message will explain that you’re trying to schedule a job that wants to read from buffer A, but that you already scheduled a job before that will write to A, so if you want to do this, you need to specify that previous job as a dependency.We find this safety mechanism catches a lot of bugs before they get committed and results in efficient use of all cores. It becomes impossible to code a deadlock or a race condition. Results are guaranteed to be deterministic regardless of how many threads are running, or how many time a thread gets interrupted by some other process.By being able to hack on all these components, we can make them be aware of each other. For example, a common case for a vectorization not happening is that the compiler cannot guarantee that two pointers do not point to the same memory (aliasing). We know two NativeArray’s will never alias because we wrote the collection library, and we can use that knowledge in Burst, so it won’t have to give up on optimization because it’s afraid two array pointers might point to the same memory.Similarly, we wrote the Unity.Mathemetics math library. Burst has intimate knowledge of it. It will (in the future) be able to do accuracy sacrificing optimizations for things like math.sin(). Because to Burst math.sin() is not just any C# method to compile, it will understand the trigonometric properties of sin(), understand that sin(x) == x for small values of x (which Burst might be able to prove), understand it can be replaced by a Taylor series expansion for a certain accuracy sacrifice. Cross platform & architecture floating point determinism is also a future goal of burst that we believe is possible to achieve.By writing Unity’s runtime code in HPC#, the engine and the game are written in the same language. We will distribute runtime systems that we have converted to HPC# as source code. Everyone will be able to learn from them, improve them, tailor them. We’ll have a level playing field, where nothing is stopping users from writing a better particle system, physics system or renderer than we write. I expect many people will. By having our internal development process be much more like our users' development process, we’ll also feel our users pain more directly, and we can focus all our efforts into improving a single workflow, instead of two different ones.In my next post, I’ll cover a different part of DOTS: the entity component system.]]></description><link>https://unity.com/blog/engine-platform/on-dots-c-c</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/on-dots-c-c</guid><pubDate>Tue, 26 Feb 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[What is app-ads.txt?]]></title><description><![CDATA[Recently, we saw ads.txt adoption spread quickly across the industry’s desktop and web inventory, with most savvy brand marketers and demand side platforms now refusing to buy inventory that doesn’t have ads.txt implemented.Today, as more brands make the move towards in-app advertising, the time has come for ads.txt to make its way to mobile in-app - and this is exactly what’s happening with ads txt for apps. This is an important step towards eliminating certain types of fraud, and improving the transparency and efficiency of the overall ecosystem.However, before delving into the intricacies of app-ads.txt, it’s important to understand where exactly it comes from.Ads.txtAds.txt is a text file publishers add to their websites, which lists the ad sources authorized to sell their inventory.In 2017, the Interactive Advertising Bureau (IAB) Tech Lab introduced the ads.txt tool with the aim of preventing sales of web inventory that weren’t authorized. It was released after widespread domain spoofing issues where sellers pretended to sell premium inventory (like the Financial Times) that they didn’t actually have access to.In a fragmented advertising ecosystem, ads.txt serves as a method of improving transparency for demand side platforms. In fact, DSPs aren’t buying web supply that isn’t authorized via ads.txt.Two million publishers have adopted the spec since its initial launch over one year ago. It has become so widespread that AdExchanger says publishers who have yet to implement ads.txt are actually losing money.On web, ads.txt helped the industry distinguish real supply sources from fake ones, and after its immediate success and adoption, the next logical step was to extend the reach of ads.txt into the mobile app ecosystem.What is app-ads.txt?App-ads.txt is a text file app developers upload to their developer website, which lists the ad sources authorized to sell that developer’s inventory. Just like on web, the IAB created a system which allows buyers to know who is authorized to buy and sell specific in-app ad inventory, and who isn’t.How does app-ads.txt work for mobile apps?A DSP looking to bid on app inventory scans the app-ads.txt file on a developer’s website to verify which ad sources are authorized to sell that app’s inventory. The DSP will only accept bid requests from ad sources listed on the file and authorized by the app developer.How app-ads.txt can benefit your mobile appThe main benefits to app-ads.txt are capturing revenue from brand spend and fighting ad fraud.Capturing revenue from brand spendBrands today represent a growing and potentially significant revenue opportunity for developers. We can expect that many DSPs that adhere to app-ads.txt won’t purchase inventory missing the app-ads.txt file, just as they won’t buy unauthorized inventory on the web. Developers who don’t implement app-ads.txt are likely to be removed from DSPs’ pool of targeted media.
Fighting ad fraudBad actors may forge apps that impersonate legitimate apps, and mislead DSPs to spend brand budgets on their forged inventory. Legitimate developers end up losing out on ad revenue that was originally intended for them. App-ads.txt blocks unauthorized developer impersonations and minimizes instances of fraud that ultimately hurt developers’ bottom line.App-ads.txt exampleSo, how can developers make sure their inventory is covered by app-ads.txt?Step 1. Provide the developer website URL in your app listingEnsure that your developer website is updated in the app stores. This website will be used by advertising platforms to verify the app-ads.txt file.Step 2. Reach out to all ad sourcesGet in touch with your direct ad sources and ask for their app-ads.txt line, according to the IAB’s structure below:
Ad source domain, your publisher ID, type of relationship (direct or reseller), ad source IDApp-ads.txt example: ironsrc.com, 1234, DIRECT, 5678
Your direct demand partners should be listed as “direct.” If your partners are using third-party resellers to sell your inventory, such providers should be listed as “reseller.” In any case, you should not add any provider to your app-ads.txt file unless you or your partner have a direct relationship with them.Step 3. Publish an app-ads.txt fileCreate an app-ads.txt file in Notepad listing out all the lines you received, and save.Step 4. UploadUpload the file in the root of your domain website (example: www.example.com/app-ads.txt).While no one can predict what kind of immediate impact app-ads.txt is likely to have, there’s no doubt that any effort designed to make the mobile advertising ecosystem more transparent and secure is worthwhile. We’ll have to wait and see if app-ads.txt spreads as fast and wide as its web counterpart.]]></description><link>https://unity.com/blog/what-is-app-ads-txt</link><guid isPermaLink="true">https://unity.com/blog/what-is-app-ads-txt</guid><pubDate>Tue, 19 Feb 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Procedural Stochastic Texturing in Unity]]></title><description><![CDATA[Have you ever tried using tileable textures to cover large surfaces or add fine-scale detail to your meshes? If so, you’re probably familiar with the visible repetition pattern that quickly emerges with higher tiling values. At Unity Labs, we have developed a new texturing technique that avoids this issue, Procedural Stochastic Texturing.Tileable textures are a useful tool to add detail to your 3D scenes. However, whenever you want to texture large areas or achieve highly detailed surfaces using tileable textures and detail maps, tiling patterns become visible. This effect is illustrated on the left-hand side of the following picture. Typically, reducing repetition patterns requires bigger textures or hiding the visible repetition with additional objects. In this blog post, we provide a plugin that solves this problem for textures with stochastic appearances, such as rust, moss, bark, etc. Its impact is shown on the right-hand side of the following picture.Download the plugin here.Given an input texture, the plugin will procedurally generate an infinite texture that matches the appearance of the input. We do so by leveraging a state-of-the-art texture blending function that operates on a modified version of the input texture, which only requires three texture samples per fragment, and by fetching a small lookup-table. Since the plugin avoids the need for tiling, it makes it possible to cover larger surfaces with smaller textures and higher levels of detail without any repetition artifacts.The plugin provides a variant of the Standard shader, which is included in a Unity package. Once you have imported the package, select the StandardStochastic shader for your material. The interface is the same as that of the Standard shader, with the addition of two new controls at the top, corresponding to the two required setup steps:The Stochastic Inputs menu allows you to specify on which of the input textures you wish to enable our technique (it can be set to Everything, or specific textures, e.g., albedo and/or normal map).The Apply button pre-computes data for the selected stochastic inputs and updates the material, finishing the process. For each input texture, this step generates two intermediate textures located in the same folder.A few additional remarks:Because existing intermediate textures are loaded when they are found to skip generation times, any modification to the original texture requires deleting them both before hitting the Apply button again to force their regeneration.When switching between the Standard and StandardStochastic shaders, parameters are transferred back and forth.A StandardStochastic (Specular setup) shader is also provided for materials using the Specular workflow.The following examples show the prototype working with different materials using small (256²) input textures.This technique is only compatible with tileable stochastic and near-stochastic textures, such as textures resembling random noise when viewed from a distance and typically natural-looking materials without precise geometric shapes.This is a research prototype; it is not under active development. As such, we don’t guarantee maintenance or support but feel free to ask any question and offer feedback on this Unity Forum thread. We are currently working on a ShaderGraph implementation for custom shaders and compatibility with the new rendering pipelines. Look out for updates on the forum thread!Curious about how the plugin works? Check out our two recently published research papers on the subject, which our plugin builds upon:Paper: High-Performance By-Example Noise using a Histogram-Preserving Blending Operator - Eric Heitz and Fabrice Neyret, HPG 2018Technical chapter: Procedural Stochastic Textures by Tiling and Blending - Thomas Deliot and Eric Heitz, GPU Zen 2Check out our other research work at Unity: Unity Labs PublicationsThe code delivered with the plugin features comments referring to specific sections of the technical chapter.]]></description><link>https://unity.com/blog/engine-platform/procedural-stochastic-texturing-in-unity</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/procedural-stochastic-texturing-in-unity</guid><pubDate>Thu, 14 Feb 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creating an Interactive Vertex Effect using Shader Graph]]></title><description><![CDATA[We created an example interactive vertex displacement effect with Shader Graph and the Lightweight Render Pipeline to help you use these features to design effects. This post will walk you through our process. Get the demo project with the Shader Graph shader, example scene, and some example game assets from the 3D Game Kit, and follow along!The sphere in the video example below has a shader-based displacement effect that activates when we hit the space bar. In your game, you would assign this to some relevant gameplay event. In this article, we will look at how to create this shader using the Shader Graph package, and integrate the spacebar keypress trigger. The goal is to help you understand how to design effects in Shader Graph, and interact with them from your other C# scripts. The demo project contains the shader, the script that controls the shader, a preconfigured Lightweight Scriptable Render Pipeline (LWRP) Asset, and an example scene for you to get started with. If you prefer to view this tutorial as a video instead of text you can find it on the Unity YouTube channel.First, let’s look at how to set up Shader Graph and the Lightweight Render Pipeline. Open the Package Manager and select install on the Lightweight RP package. This will automatically install the correct version of Shader Graph.Once we’ve installed the Lightweight RP, we need to create a new Pipeline asset in the Project. Select Create->Rendering->Lightweight Render Pipeline Asset.We can then activate this pipeline asset by going to Edit->Project Settings->Graphics, and dragging the LightweightRenderPipelineAsset into the Scriptable Render Pipeline Settings field. If you are following along with the downloaded assets, this step has already been completed for you.Now that the Lightweight Render Pipeline is installed, we can look at creating a new Shader Graph. Let’s create a new graph in our project by selecting Create->Shader->PBR Graph. The PBR Graph allows us to create a new shader that takes inputs from Unity’s Physically Based Rendering system,so that our shader can use features such as shadows and reflections. Once we have created this shader, we add it to a new Material and attach the Material to a Sphere in our example scene by dragging and dropping the material onto the sphere.To achieve the effect, we will displace the vertices in our mesh along its normals by changing the output Position in the PBR Master output node. We will displace by using an Add node on the base Object Position of each vertex. By adding the Normal Vector to the base Object Position, we can see all the vertices become extruded, making the sphere appear bigger. To vary this displacement, we will multiply this normal vector displacement semi-randomly by using a Simple Noise node.When we click Save Asset, we can see in the Scene View that the sphere is now displaced based on Simple Noise.Unfortunately, there are seams in the displacement because the Simple Noise is being sampled based on UV space. To fix the seams by using Object Space for the Simple Noise instead of UV Space, we can simply add a Position node set to Object.To create the pulsation effect, we will scroll this Position output by adding it to a Time node, before sending it to the Simple Noise node. We can also use a Multiply with the Time node to vary the speed of the scroll.To control our displacement, we expose a new Shader Property in our Shader Graph. Shader Properties allow us to provide inputs to our shader via values entered in the Inspector, or via our own C# scripts as in this case. We will create a new Vector1 property named Amount and changed the Reference to _Amount. The reference field is the string name by which we will access and change the displacement via script. If we do not change this, it will use an auto-generated value. If the string does not match exactly, we will not be able to address our property via script so double check that both match, including capitalization.We use this Amount shader property in a Multiply node with the Simple Noise before it gets multiplied with the normal vector. This allows us to scale the noise before it’s applied to the vertex positions. Now, the Amount variable controls how much we displace each vertex in the mesh.To control this Amount variable, we have created a C# script called DisplacementControl and attached it to the DisplacementSphere GameObject. This script controls the _Amount variable by interacting with the property we created in our material which is assigned to the MeshRenderer component. We store a reference to the MeshRenderer component in the variable meshRender, and declare a new float variable displacementAmount.We use a simple lerp in the Update function to interpolate the displacementAmount variable to the value of 0. We then set the shader variable _Amount to the value stored in displacementAmount variable. This will update the Shader Graph’s _Amount variable, smoothing it over time to 0.We are using Unity’s default “Jump” Input Axis (which is assigned to the space bar by default) to set the value of displacementAmount to 1 when pressed.Now, when we enter Play Mode in the scene, we can see that by pressing the spacebar, displacementAmount gets set to the value of 1, and then slowly interpolates back to 0.To create the adjustable glow effect, we will output to the Emission in the PBR Master node. We use a Voronoi Noise node and Multiply it to a Color node. This will create a little modulation in the glow effect with some dark spots. Then, we use a Lerp node with another Color node as the base color, and use the Amount variable in the T input. This will allow us to blend between a base Color node and the Voronoi Noise color node using the Amount variable.Then, we will scroll the glow by using a similar setup as before. We use a Position node set to Object and add it to a Time node, and connect the output into the UV slot of our Voronoi Noise node.]]></description><link>https://unity.com/blog/engine-platform/creating-an-interactive-vertex-effect-using-shader-graph</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/creating-an-interactive-vertex-effect-using-shader-graph</guid><pubDate>Tue, 12 Feb 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Updated Terms of Service and commitment to being an open platform]]></title><description><![CDATA[We've been building Unity for 15 years with the vision of creating an open and accessible tool to enable creators to build whatever you can dream of.Over the last week there was much confusion, and untrue statements were raised which we refuted. But most importantly we listened to you, our community that felt that the End User License Agreement (EULA)/Terms of Service (TOS) was too restrictive.When you make a game with Unity, you own the content and you should have the right to put it wherever you want. Our TOS didn't reflect this principle – something that is not in line with who we are.We believe the Unity Engine business model is the best way for developers to be successful. We charge a flat fee per-seat – not a royalty on all of your revenue. Building Unity takes a lot of resources, and we believe that partnerships make better services for developers and augment our business model – as opposed to charging developers to pay for Unity’s development through revenue share.Our TOS update on December 5 was an attempt to define what our terms mean for the cloud and an opportunity to make our business model clearer. After listening to developers, we realized how this language came across, and how it would impact your ability to choose.Today we have updated our Terms of Service, Section 2.4.* The language is at the bottom of this post.The TOS update highlights that developers can use any third party service that integrate into Unity.Some of these services will be supported, others will not.The distinction is that with a supported service, we understand the technology. We make sure the service and Unity work better together for developers. We also ensure that the supported service always runs well on the latest version of our software, so we can help future proof your project in Unity and ensure access to the latest tech.Additionally we have created, and will continue to create, our own services. We will integrate our own services, but we will not block developers from using competitive third-party services.When you obtain a version of Unity, and don’t upgrade your project, we think you should be able to stick to that version of the TOS.In practice, that is only possible if you have access to bug fixes. For this reason, we now allow users to continue to use the TOS for the same major (year-based) version number, including Long Term Stable (LTS) builds that you are using in your project.Moving forward, we will host TOS changes on Github to give developers full transparency about what changes are happening, and when. The link is https://github.com/Unity-Technologies/TermsOfService.Today’s change in our TOS means Improbable is no longer in breach by providing you a service, and that we are able to reinstate their licenses. But we do not consider them a partner, and cannot vouch for how their service works with Unity as we have no insight into their technology or how they run their business.We know Improbable was in violation even before the December TOS update and misrepresented their affiliation with us. Although SpatialOS is not a supported third-party service, it can continue to be used for development and shipping games.We are holding an AMA on r/Unity3d at 10 a.m. PST to discuss this TOS update in more detail.*Section 2.4 Working with Third Party Service Providers.
Unity developers are free to use any service offered to Unity developers (each, a “Third Party Service”). Unity does not have any obligation to provide support for any Third Party Service provider or Third Party Service under this Agreement. Third Party Service providers may not, without Unity’s express written permission: (1) use a stylized version of any Unity name, trademark, logos, images or product icons, or other Unity-owned graphic symbols; (2) use a product name confusingly similar to a Unity product or that could be construed by Unity developers as being a Unity product or service; or (3) create or use any marketing materials that suggest an affiliation with, or endorsement by, Unity. All use of Unity’s trademarks must comply with Unity’s Trademark Guidelines.]]></description><link>https://unity.com/blog/news/updated-terms-of-service-and-commitment-to-being-an-open-platform</link><guid isPermaLink="true">https://unity.com/blog/news/updated-terms-of-service-and-commitment-to-being-an-open-platform</guid><pubDate>Wed, 16 Jan 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[What(Games) talks the convergence of monetization and design]]></title><description><![CDATA[One of the biggest mistakes a developer can make is only thinking about monetization strategies after designing their game. The choices you make in the initial phases of designing your game will influence the success (or failure) of your app monetization model.We spoke with Matthieu Brossard, the Publishing Director at What(Games) by Gameloft. What(Games) is a French casual F2P mobile game publisher. In our conversation, we discussed the convergence of game design and monetization.At what point in the design/development phase does What(Games) consider ad monetization?Monetization is discussed from the kick-off phase. It is only viable to invest in game development if we have a good chance at making it profitable, therefore we think about the best ways to monetize each specific title from the get-go of your app monetization model.For example, if we know that the game’s monetization strategy will rely on ads for the most part, we start thinking about the best way to integrate them in the game as early as possible. We need to ensure that ad integration is seamless and feels natural.Can you give an example of how design and ad monetization work together in your games?The revive point in a game is a great example of the partnership that exists between our design and ad monetization teams. Many games can monetize during this natural pointcut. Playing the video after the second run tends to perform better than right at the moment of the click for example.Initially, our flow was this:run → die → play IV → revive → dieWe assumed users would leave the game instead of watching an ad if it was placed at the end of their run. However, once our monetization team discovered this phenomenon was not as present as anticipated, they presented their user behavior findings to the design team who were able to optimize the flow.Together, they changed the flow to this:run → die → revive → die → play IVThe new flow resulted an increase in CTROverall, both teams have important contributions to bring to the table when it comes to integrating design into our ad monetization strategy. They should share their learnings and instincts on a regular basis.How do you ensure that your design and ad monetization teams work in tandem from the initial planning phase of the game and even after it’s been launched?They consult at every stage of the project. It starts on paper, in the Game Design Document, continues with key version reviews to get a feel for it and lasts all the way into live game Management for the optimisations.What tips would you give to developers struggling to sync design and monetization?Get rid of any assumptions you have and rely on the data!Every game is different, so it is imperative that you formulate as many hypothesis as possible based on your past experiences and overall knowledge of the market. Once you make these assumptions, you should test them on relevant cohorts.Our industry is lucky to be really good at tracking user behavior, with access to convenient user acquisition channels. Take advantage of these channels in order to deduce what you or your users may not even be thinking.Seamless integration = optimal monetizationCreating a game is hard work, but ensuring that your monetization and design teams are in the loop with one another throughout the process of development will surely bring about success!]]></description><link>https://unity.com/blog/the-convergence-of-monetization-and-design</link><guid isPermaLink="true">https://unity.com/blog/the-convergence-of-monetization-and-design</guid><pubDate>Fri, 28 Dec 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Choosing the resolution of your 2D art assets]]></title><description><![CDATA[At game events and online, people often ask me this question: “I’m making a 2D game in Unity for both PC and mobile: what resolution should my assets be?” There is no simple answer to this question that covers all cases. Read this blog post to get a better idea of what’s the best course of action for your project. In recent years, we’ve been working on a lot of features that help you create 2D games in Unity: Sprite atlas, 2D physics, a Tilemap feature for rectangular, hexagonal or isometric worlds, the spline-based Sprite Shape, 2D animation, and more.Unity doesn’t express the size of an object in pixels and this can confuse artists who are creating assets for 2D games. “How big do they need to be?” As usual in game development, the answer to this question is “it depends”, but let’s go over a few concepts that will make the decision easier.Note: Pictures in this blog post used the beautiful 2D assets from the Asset Store, in this blog we use art by the artist Mikael Gustafsson.Making a 2D game in UnityIf you’re a pixel artist, a word of warning: most of the tips in this post don’t fully apply to your situation. In pixel art graphics you have something that’s extremely low resolution, and you want to blow it up to 2x, 4x, 8x, or maybe even more, its original resolution. It means that one pixel of your original art is now a square of 2x2, 4x4, 8x8 real pixels on the screen. So in general in pixel art, you don’t need to bother too much about the screen resolution, but you start from your art and the feel you want to convey (old-school, NES-era, 16-bit era, higher-resolution “modern” pixel art, etc.) and you scale it up a few times. Unity now has a Pixel Perfect solution in the form of a standalone package if you use the Built-in RP and included in the Universal RP and the 2D Renderer. It comes with a simple component to put on the Camera which will do the hard work for you and make sure the art stays crisp and aligned with the grid of real, small pixels on any screen. You can find more info on the Pixel Perfect in the documentation.Before we go into any consideration about choosing resolution, it’s worth remembering that when you’re authoring your assets it’s good to go for a higher resolution even if you don’t actually need it for the art that goes into the game. You can always scale down art, but you can’t scale it up without losing quality.Consider these scenarios: you might need to print some of the art for your game, or you want to increase the size of an element on a screen, or you want to create an “HD version” of your game for 4K monitors later on.For these reasons, as you are working on the art, consider using work files that are twice the resolution that you actually need or more, then scale them down before bringing them into Unity, or use import settings to reduce their size as they are imported into the engine.The Import Settings also allow you to define a Max Size and other compression settings per platform, so, for instance, you can have some assets on a certain resolution on PC and just half of it on mobile devices, where contained disk space is crucial.Tip: Unity offers a way to consolidate several Sprites into one through Sprite Atlases. In addition to being a way to save texture space, atlases also offer one unified way of controlling the Max Size rather than having to set it individually for every single sprite in your project.When defining asset size, it’s important to consider the platform or the devices that the game is going to be published on. People have very diverse devices and screens and will see your game in a variety of resolutions and aspect ratios.In general, at the time of writing this post, if you’re publishing for PC you are looking at a vast majority of users with 2 resolutions: mostly “full-HD” (1920x1080 pixels, often called 1080p) and a good deal of 1280x720 (often called 720p). A small percentage of people also have 4K monitors (3840x2160) or Retina monitors on Macs (a modern 15-inch MacBook Pro would have a maximum resolution of 3360 × 2100). That’s a lot of pixels to cover!For phones, the range is huge. Some old devices can go down to less than 720 pixels vertically, but some modern ones will be up to 4K.Tip: Unity makes some of these stats available in the Operate Dashboard of your Unity ID. Select a project that has Analytics enabled, and you will be able to go under Analytics > Market Insights and see the aggregated stats. Steam also offers a similar service on this page.With Retina (an Apple trademark) and other modern high-DPI screens, while the actual hardware resolution is very high (e.g. 4K), what they can do is to run at a simulated lower resolution (usually half, say for instance full-HD instead of 4K) but then they render images and text using twice the pixels, so that they appear very crisp.Note: DPI (dots-per-inch) or PPI (points-per-inch, or pixels-per-inch) are different names used interchangeably by different manufacturers, but at the end of the day, they mean the same thing: how many pixels are squeezed in a linear inch on screen. Traditionally, screens were 72 DPI. Today high-DPI screens are usually 144 DPI, but you can find phones that boast up to 400 DPI or more since they are packing a lot of pixels on relatively small screens. Some examples here.For these screens, you have two options. One is to aim at offering an experience that uses the 4K resolution in full. The downside is that producing 4K-compatible assets takes a lot of extra work. In this case, make sure to highlight it in your marketing materials!! (“A Beautiful 4K Experience”… etc.). Owners of consoles like PS4 Pro and Xbox One X, which are compatible with 4K, will love the fact that your game is using the hardware to its full power.Or, you can “just” architect your game to cover full-HD. In this second case, users with higher DPI monitors won’t benefit from the increased resolution of their screens but they will just see the game in full-HD. That’s not ideal, but it might be OK if you are also trying to keep build size under control.So the bottom line is: you need to choose a maximum resolution you are aiming for (based on the current market shares, see above), and set that as your target for the whole project. Everyone in the team will then be able to make decisions knowing that.As we mentioned before, Unity measures distances and sizes in something that is simply called a unit, not in pixels. In general, it’s good practice to match 1 Unity unit to 1 meter. For instance, the average humanoid model between 1.7 and 1.8 units in this scenario. This isn’t mandatory, but it will ensure that games with physics (both 3D and 2D) behave correctly, because physics in Unity are tuned to use 1 unit for a meter. Same goes for 3D lighting, where light parameters are meant to stay true to reality.In 2D this scale is less important, but it’s still good practice to respect it if you’re using physics in your project. If you’re using a Tilemap, it might be nice to keep a scale of 1 tile = 1 unit, just for the sake of simplicity.Now that we have gone over units, let’s move on to the camera. Unity’s 2D cameras (Orthographic) have a parameter called Size, which - when doubled - is telling you how many units this camera is framing on the vertical axis.With a size of 5, we have a viewport that measures 10 Unity units on the vertical. The horizontal axis will just be a consequence of this since we don’t know what aspect ratio the user’s screen will have. But it’s easy to calculate: on your average PC or Android phone, with an aspect ratio of 16:9, you can just do:10 (Vertical Size) x 16 / 9 = 17.7 (Horizontal Size)So we know that with these settings, we’re framing an area of roughly 17.7 by 10 units. On Macs (which are generally 16:10) it will be 16 by 10 (so less visibility on the horizontal). On a 16:9 phone held vertically (so it becomes 9:16), the same camera will show only an area of 5.6 by 10 units.Note: We won’t go over how to cope with aspect ratios in this blog post because if you’re aiming to make a game for different aspect ratios, not only you need to think of the graphics, but in general you need to make a lot of gameplay tweaks to make sure the game doesn’t play differently on devices with different ratios. For instance, any game that scrolls horizontally will benefit from a slender horizontal aspect ratio because the player can see more of the coming hazards. Sometimes making a game that works fine on wildly different aspect ratios is impossible, and people use frames or black bars to fill the negative space that they can’t fill with gameplay.When importing graphics as Sprites, Unity displays a parameter called Pixels per Unit (PPU). Now that we know all about units, this should be very clear. It’s expressing how many pixels from your Sprite fit into a unit in the Unity scene when the GameObject is scaled 1,1,1.Say for instance I have the Sprite of a rock that’s 218 by 175 pixels, and I set the Pixels per Unit to be 100, once I drag that Sprite in the scene my GameObject by default will be 2.18 by 1.75 units, occupying roughly one-fifth of the 10 units on the vertical axis.So let’s take a full-HD screen as our test resolution. The vertical is 1080 pixels, and the rock is less than a fifth of the screen (you can see how the faded rocks fit more than 5 times in the image above), it means we are using 175 pixels of source graphics to render more than 200 pixels. Which means that we are going to have a slightly blurry rock.To fix this, we have several solutions: we can scale down the rock to about half the size, make the camera frame bigger to 10.8 (which produces a zoom out), or we can change the PPU value of the Sprite to 108 (which has the same effect of making the rock smaller on screen). In all three cases, if we want the rock to be crisp, it will have to be smaller.Where are that camera size and the PPU value coming from? Easy! For the camera size, if we import our graphics at 100 PPU, then we would need a 10.8 camera because 10.8x100 equals 1080. This allows us to cover the whole height of the screen. Conversely, to calculate a correct PPU where the camera size stays on 5, if we hope to cover a full-HD screen with 10 Unity units vertically, then we have 1080/10 = 108. This is the number of pixels that we should be cramming in one unit if we don’t change the camera size.Keep in mind that as you’re working on your game, it’s dangerous to mix these workflows as you go: you might end in a position where some graphics used in the wrong scene have a resolution that’s too low and you didn’t even notice. It’s good to establish guidelines: one PPU for most of the asset in your project, and a typical camera size.Then you can break the rules later. Maybe you have a cutscene where the camera zooms in and out, changing the size temporarily. Or maybe your background elements are so big that you can’t afford to keep the same PPU because you would end up with enormous textures. In that case, it’s OK to reduce the PPU for those elements and import smaller sprites, but still cover a big area of the screen with them.As you are working in Unity, you might be wondering what’s the resolution that you are seeing through the Game View and whether that’s an accurate preview of your art on the target platform. Most of the options you will need are in the drop-down menu at the top and the slider next to it.Aspect ratios just force a specific ratio between horizontal and vertical, but they will make use of the current resolution of your Game View viewport, which in turn depends on your screen. So they’re good for setting up UI and objects on a screen, but not really for testing art. While you’re on an aspect ratio, the checkbox Low Resolution Aspect Ratios will be active if you are on a high-DPI screen. If you check it, it will simulate a standard DPI screen resolution. Fixed resolutions, on the other hand, force Unity to render a window of that exact size. At that point, you might need to expand your Game View or maximize it to visualize the whole preview. In this context, the Scale slider can make high resolutions fit into your Game View window, but if you’re going below 1x scale, then you aren’t actually seeing that resolution, but a resampling of it. And don’t forget that you can add your own fixed resolutions and aspect ratios to the drop-down:Tip: Don’t forget that you shouldn’t base your judgment on the editor only. Every now and then, make a build of the game (or just of the art!) and take a look at it on your target device or screen.As you can see, the resolution of your art, the camera size, and the screen you want to go for are all connected and there’s not one pixel size or PPU that fits all cases. Study your target platforms, decide on a resolution, and inform the whole team by making guidelines. Then produce higher-res art anyway, it might be useful later! Finally, resize it to the resolution you need and import it in Unity. And one final suggestion. Even if previously I used the terms “slightly blurry” as if it was the end of the world and something we absolutely MUST FIX, this is not a hard rule. It might be that in your game some objects - sometimes - are under resolution. Especially if there are a lot of minute details on screen, maybe transparencies overlapping, with some fog, rain, or post-processing on top. Play the game at its normal speed. Do you actually notice the fact that they are being re-sampled? If you honestly can’t tell the difference, then maybe the extra work, disk space, and processing needed to render a higher resolution sprite aren’t worth it. Remember: good games make big compromises!We have a reading list of 2D tips and how-to’s in our blog, don’t miss it. If you also want to get an overview of what Unity has to offer for 2D, you can start here.Discover the Unity 2D demo, Dragon Crashers in this blogDo you have some amazing 2D art in the works? Are you curious about our new 2D tools? Make something great with our new 2D animation tools, Tilemaps, SpriteShape, Pixel Perfect package or SVG importer, and join Unity 2D Challenge! I’m one of the judges and can’t wait to see all your brilliant ideas.]]></description><link>https://unity.com/blog/engine-platform/choosing-the-resolution-of-your-2d-art-assets</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/choosing-the-resolution-of-your-2d-art-assets</guid><pubDate>Mon, 19 Nov 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting started with Unity’s 2D Animation package]]></title><description><![CDATA[Have you been looking for an easy way to create skeletal animation for your 2D sprites? We're introducing our own 2D Animation package, which allows you to rig 2D sprites, paint bone weights, and create skeletal animation, all in-editor! On top of that, there is support for Inverse Kinematics as well. You can check the feature out right now - it’s been available as a package in preview since 2018.1. Read on to learn how to use it effectively in your projects right now.2D Animation is currently shipped as a preview package, which means you can use Unity's Package Manager to install it for your project. The Package Manager is accessible from Unity 2018.1 or higher. Make sure to also grab the 2D IK package if you are planning on using Inverse Kinematics too - they will be covered in a separate blog post, coming out later this month.In order to start animating, we’re going to need a couple of things: the first is, of course, the sprite that we wish to animate. It can be anything you want - a character, a monster, an object… you name it!There are a few things to keep in mind when importing your sprites for 2D Animation. First of all, there is currently no layer support. This means that if you wish your rig to use multiple disjointed sprite meshes, e.g. for arms and legs, you will need to space them out directly on one layer. Full layer support is planned to be included in a later release of the package - where it will support layer import from PSD and other file formats. In addition, there is currently no integration with Unity’s new Vector Graphics package, which includes SVG file import. Support for this is also in the works.With all of that in mind, let’s import your sprite. The example we use in this article is Ríkr the Viking. We'll make this character available for you to experiment soon. It has been divided into multiple sprites and re-arranged on one layer:All of the 2D rigging happens in the Sprite Editor. To access it, select your character sprite asset, and then in the Inspector window you will find the Sprite Editor button.In the top left-hand corner of the Sprite Editor, you will see a dropdown with the Sprite Editor selected. Change that to the Bone Editor, and from here, we can start creating the first bones of our rig! In the bottom right-hand corner, you will see an array of bone-editing tools.To add your first bone, choose the Create Bone tool (shortcut ‘B’). If you now left-click anywhere in the Bone Editor, you will set the starting point of your Root bone. Left-clicking again will define the endpoint of the bone and the start of the next one. Right clicking will cancel the creation of the bone:When you are creating the root bone of your skeleton, you may want to consider what type of root bone placement will be the most optimal for your use case. Generally, there are two approaches to this - the first is to put the root bone at an arbitrary point outside of the mesh, usually between the character’s feet - using it as a so-called origin point; the second is to place it at the hips of the character and make it also act as the hip bone. The main point to consider here is whether you plan to implement Root Motion. It is typically easier to do if you isolate the root bone from the rest of the skeleton so that when you do want to use Root Motion, you can simply move the origin to move the whole character. This workflow is also useful when you want to create animations that change the hip placement, but don’t want them to change the root position.There is a selection of other bone editing tools accessible from the Bone Editor. One of them is the Free Bone tool (‘N’). It allows you to create a bone which still has a parent bone but is not directly connected to it. The Free Bone tool is useful for when you have a root bone at the origin which does not connect with the actual mesh of the sprite, as well as for when the elements of your sprite are divided into multiple parts - in this example, we can use free bones to connect our character’s limbs to the rest of the skeleton. Later, when we create our animations, we will be able to move each free bone to a desired position relative to the body of the character, so that they appear to form one complete sprite:The other tools allow you to Split (‘S’) an existing bone into two equal, smaller ones; Parent (‘P’) one bone to another; as well as Move (‘M’) any existing bones that are currently attached, turning them into free bones. Creating a bone by mistake is no big deal - you can get rid of a bone by selecting it and pressing Delete or using the equivalent tool from the tools panel.Once you’re done editing your skeleton, make sure you click the Apply button at the top right of the Sprite Editor UI! Otherwise, you will lose the changes you have made.Note: It’s a good practice to give descriptive names to your bones. If you have complex skeletons, navigating their hierarchies later will be much easier if you know what you are looking for!Once we have a complete rig, we can go ahead and generate the mesh for our sprite. Our mesh, together with bone weights which we will add later, will determine how our sprite gets deformed when we move and rotate the bones in the rig. In the top-left dropdown mentioned earlier, select the Skin Weights and Geometry Editor.From here, you can create your sprite mesh manually by adding vertices and edges. The tools for doing so are found in the top toolbar: Create Vertex, Create Edge, and Split Edge. However, this can be quite time consuming, especially if your sprites have detailed and complex outlines. For this purpose, Unity gives you the option to automatically generate your mesh, using a set of pre-defined parameters.In the top tool panel, click on the Generate dropdown.Here, you can set the Outline Detail of your mesh - which will determine how precisely it fits the graphic.Alpha Tolerance will determine how much transparency is taken into account when creating the mesh. Higher values will usually mean a mesh that more precisely fits the pixels (usually with quite a bit more vertices), however, if you set it too high, you might end up excluding semi-transparent segments of your sprite from the mesh. Also, keep in mind that extremely high-detail meshes might create a potential performance concern.The Subdivide level determines how many vertices (and therefore polygons) are created on the inside of the mesh, and might be useful for when you want to create facial animation or otherwise deform elements on the inside of your graphic. It is also useful for better mesh tessellation in case you wish to use custom lighting shaders.Generally, a good workflow here is to use the auto-generated mesh as a base, and add or remove details by hand where necessary using the editing tools.Once we’ve created our mesh, we need to add some bone weights to it. These will determine which vertices of the mesh are affected by each bone, and by how much. To start editing bone weights, in the top panel switch the editing mode from Geometry to Weights.Right away, you will notice that there is a new tool panel at the bottom right of the Sprite Editor. Using it, you can paint bone weights by hand; but just like with the mesh, you can generate the weights automatically with the Auto tool.While editing weights, you can also preview how the various parts of the mesh will be deformed when they are moved. To do so, you can select any bone in the skeleton by clicking on it, and try and move or rotate it to preview how the mesh is affected. You can also reduce the visibility of the painted weights and bones by adjusting the sliders in the top toolbar. This way you’ll get a better idea how the sprite will look in the scene.Bone weights will generally need more fine tuning than the mesh - you likely want precise control over which vertices get moved by each bone. The Brush and Slider tools in the bottom toolbar exist for this exact purpose!The Brush tool allows you to paint the weights directly onto the individual vertices of the mesh. You can change the Size of the brush, which determines how many vertices it affects; and the Hardness and Step settings allow you to determine how much the weight of one bone will overlay the weight of another if there is more than one bone influencing a vertex.You can start painting weights using the Add and Subtract mode. Simply choose a bone that you want to add weights for by either clicking on it in the Sprite Editor window or selecting it from the brush tool drop-down:The Slider tool allows you to more universally distribute bone weights, and much like the brush tool, it works differently based on the selected Mode.The Add and Subtract mode, in this case, allows you to add a selected bone’s influence to the whole mesh; while the Grow and Shrink mode increases or reduces the bone’s already existing area of influence, and therefore is more confined to the vertices directly around the bone.The Smooth mode is used to even out transitions between all bone weights in the skeleton. Using this mode with the brush tool allows you to do the same, but only for localized areas.When rigging your sprite, you will most likely want to have control over how its parts will overlay each other. For example, you might want the right arm of your character to appear in front of the body, and the left arm to be behind the body, and so on. As such, 2D Animation allows you to set the render order of your bones, called Bone Depth.Bone Depth is configured in the Weights editor and is set per-bone. To change the render order of a bone, select it in the editor window. At the bottom left of the window, you will see an Inspector pop-up. Here, you can set your rendering priority. Higher values mean that parts of the mesh associated with that particular bone will overlay those with lower values. By default, all bones have a depth of 0.Once you have set up a rigged mesh and painted bone weights, you will be able to use it in the scene. To do so, first drag the rigged Sprite asset into the scene, and add a Sprite Skin component to it. If a sprite contains a skeleton, you will have the option to Create Bones, which will instantiate that skeleton in the scene.From here, you are free to move and rotate the bones however you wish to achieve the desired pose for your character. To rotate a bone, either select it and use the Rotate tool (‘E‘), or grab the end of the bone and drag it in the desired direction. To move a bone or detach it from its parent, use the Move tool (’W’) or grab it at the origin and drag. To reset the bones to their default position in the rig, you can use Reset Bind Pose in the Inspector. You can also select multiple bones to rotate them uniformly as a group - this might be useful when trying to create rounded shapes, such as those for hair or roots.Let’s do a quick walkthrough of how you can use your newly built skeleton to create a complete 2D animation!With the 2D Animation package, you can create skeletal animations just like you would in 3D projects before. The simplest way to do so is to select the rigged sprite and open the Animation window (Window > Animation > Animation). From here, you will be prompted to create an Animator component, and the first Animation Clip for this game object. Once you click Create, you can choose the folder where you wish to save these components, and name your first Animation Clip. An Animator asset will be created automatically, but you can rename or move it wherever you wish. Alternatively, you could create the Animator first (Assets > Create > Animator Controller) and attach it as a component onto the game object. After that, you only need to create the Animation Clip.All the animating work happens in the Animation window - you can have multiple Animation Clips per Animator. To create new clips, at the top left of the Animation window you will find a dropdown with the name of the currently selected animation clip. If you click on it, you will see the option to Create New Clip.At the start of your animation, it is a good practice to keyframe all of your bone positions and rotations - even if you aren’t going to change all of them. Otherwise, if you later move or rotate the bones in the scene that haven’t been affected by the animation, they will keep their transforms from the scene, which often changes the animation in an undesirable way.In order to keyframe all of your bones and start recording the changes in the animation, you must first enable recording mode in the Animation window by pressing the red button at the top toolbar. To create your initial keyframe, select all the bones of the rig in the Hierarchy window, and in the Inspector you will be able to right-click the Position and Rotation transforms and choose to ‘Add Key’. This will create keys for all selected bone positions and rotations, respectively. To make sure you’ve selected all the bones and their children, you need to expand your bone hierarchy before you select everything. A quick shortcut to doing this and making sure you don’t miss any bones is to hold Alt (or Option for Mac) and Left Click on the root bone. This will either collapse or expand all of the root’s nested children.From here, while in recording mode, you can move the animation playhead to a new position, and start rotating or moving the bones in the scene to automatically create new keyframes.You can move keyframes along the animation timeline by selecting and dragging them to a desired point; or copy and paste selected keys with familiar shortcuts - Ctrl (Cmd) + C and Ctrl + V respectively. Once you’re done editing the animation, you can exit recording mode and use the Play button to preview the animation.And now you’ve got everything to get you started with creating your own skeletal animation! Here’s an example clip of a walk cycle for our viking that can be put together really quickly:There is additional information on working with 2D Animation in the preview docs, currently available on the feature’s GitHub repository.On the same repository, you will find several sample projects that you can play around with which demonstrate the basics of the workflow described in this blog post.Stay tuned to this blog and learn how to get Started with 2D Inverse Kinematics in the second part of this series.We would love to see what you are creating with our new 2D packages, and to hear about your experience using them!That’s one of the reasons we launched the Unity 2D Challenge. Create a small piece of content using some of our new 2D tools and you can win cash prizes and tickets to Unite! It can be anything from some pixel-perfect art to a thin vertical slice of a 2D game. The challenge is open for submissions until December 17, so now is a great time to get started.You can also share your thoughts and projects with us on the 2D Animation Forum!]]></description><link>https://unity.com/blog/engine-platform/getting-started-with-2d-animation-package</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/getting-started-with-2d-animation-package</guid><pubDate>Fri, 09 Nov 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Performance Reporting is now Cloud Diagnostics]]></title><description><![CDATA[Better name, new features, and now accessible to Unity Personal Edition users! If you’re familiar with Performance Reporting, then Unity Cloud Diagnostics is everything you knew about it, but better. It has more tools to help you find and respond to user issues fast and in real time, and it’s now accessible to everyone!The Performance Reporting name was confusing because it didn’t do “performance reporting” the way most people thought of it. The name implied that it would monitor factors like memory usage and frames-per-second, which is not the purpose of the service.Cloud Diagnostics better represents what we help you measure – discrete technical issues. Furthermore, the types of issues that we track have expanded since Performance Reporting was initially released. Today, Cloud Diagnostics tracks:Unhandled managed exception reportsNative crash reports(NEW) User-submitted reportsSome of you may recognize that “User-submitted reports” is the “Bug Report” feature, which was previously available in an open Alpha. Like Cloud Diagnostics, we are renaming the feature User Reporting for more accuracy as it was common for people to report bugs as well as send suggestions.Crash and Exception reports are a window into what is happening under the hood when your players and/or testers are running your game. By enabling the feature, you’ll have access to information to help you debug faster, which includes stack traces, debug logs, device information, and custom metadata that you define.User Reporting is a great way to collect and aggregate reports from end users. The key difference is that while Crash and Exception reports are generated automatically, User Reporting can be explicitly generated by an end user, so you receive real human feedback. With this feature, you can get user-provided bug reports and feature requests, which can include screenshots, saved games, videos or anything else you find useful to help improve the user experience. You have the freedom to configure the reports in whatever way is valuable to you – be it the type of attachments you accept, the text information you collect or the custom metadata you track with each report.An important aspect of Unity Cloud Diagnostics is that it helps you react to users in real time. Instead of making you monitor yet another tool, Unity Cloud Diagnostics can work with your communication tools of choice. For example, you can integrate it with Discord, Slack, and Jira.Don’t use Discord, Slack or Jira? You can also build custom integrations using webhooks. Here are the four message events that you can access:New Crash or Exception: Triggered whenever a new type of crash or exception is seen.New Crash or Exception Version: Triggered when an existing crash or exception is seen for the first time on a new version of your game.Reopened Crash or Exception: Triggered when a previously closed crash or exception is seen in a new version of your game.New User Report: Triggered whenever a new user report has been received.The biggest change for most of you is that features are no longer limited to Unity Plus and Pro users. Unity Personal users can use these features through a new Starter tier. Additional capacity, as well as some sophisticated features, are available to Plus and Pro subscribers through an Advanced tier. Here’s a full breakdown:Enabling Cloud Diagnostics in your project is easy! If you want to use the Crash and Exception features, you only need to turn them on using a toggle in the Services window:Since User Reporting is often used for manual feedback, there’s an SDK available that has a prefab you can reskin or use for guidance on setting up your own UI. Documentation for all features can be found here.We appreciate all of you who are using User Reporting and have been giving us really useful feedback. As a thank you, we will be giving all projects that used User Reporting during the Alpha access to Advanced Diagnostics! This means that you will not lose access to advanced features or be restricted by Starter-tier limitations for the projects that have been actively using the service. We’d particularly like to call out WashBear Studio, creators of Parkasaurus: thank you for your great feedback about User Reporting!We are really excited for Unity Cloud Diagnostics and we hope you are as well. If you’d like to request a feature or report an issue, you can reach out to us on the Cloud Diagnostics forum or at clouddiagnostics@unity3d.com.]]></description><link>https://unity.com/blog/technology/performance-reporting-is-now-cloud-diagnostics</link><guid isPermaLink="true">https://unity.com/blog/technology/performance-reporting-is-now-cloud-diagnostics</guid><pubDate>Tue, 06 Nov 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Show the world what you can do with 2D]]></title><description><![CDATA[There’s no better opportunity to start a new page of your notepad and start sketching your games ideas because we are celebrating the recently released new 2D tools!The new tools open up a new world of possibilities. You can import vector graphics to reduce sprite sizes and scale at any resolution, make pixel art or retro gaming camera component, organic & efficient environments with SpriteShape, new types of tilemaps, sprite rigging animation in 2D… we will love to see what you can create using these tools to design your 2D demo.Join the ChallengeThe new suite of 2D tools can spark new game ideas, since you are no longer restricted to traditional 2D sprites for your game, side-scrolling or top-down grids. Even better, you can create your own tools using the new 2D tools APIs.We’re looking for demos making a great use of the new 2D tools, you can focus on original game mechanics, gorgeous graphics, or even better, a mix of all those. Just make us say Wow!You must at least use one of the new 2D features in a prominent way in your project, but you don’t need to use all of them. Here’s a list, with links to resources:2D Animation2D Inverse Kinematics2D Cinemachine,2D Tilemaps (square, hexagons or isometric),2D SpriteShape,2D Pixel Perfect,Vector Graphics (this package includes an SVG importer and generic vector graphics APIs).Starting on 23rd October 2018 (during Unite LA’s keynote) until 17th December 2018 you can submit your game projects on Unity Connect.The project can’t have been published before or use copyrighted material.For the submission, you should send a visual presentation of the project and some insight into the making of (sketches, clips using the editor, visual explanations of how you created an interesting part of the project with GIFs…).Remember to use the hashtag #Unity2DChallenge when either submitting your project or while working on it and sharing the progress on social media, we will love to see what’s being cooked.A 1st prize of $2000, 2nd prize of $1000 and a 3rd prize of $500 will be awarded to the best projects submitted for our judges.You can also opt for a special prize of $500 if you create an original editor tool that can help you create your game using the new 2D tools APIsKenney Vleugels - kenney.nl & pixeland.ioAngelos & Nick - Pixel ReignCiro Continisio - Unity EvangelistAndy Touch - Unity EvangelistRus Scammell - Unity Technical Product Manager, 2DPeter Lee - Unity Art Director Content TeamAre you new to Unity and need something to trigger your dormant game creation passion? YES.Are you a 2D artist and want to put your skills to test (and show-off) YES.Are you a Unity fan eager to try the new Unity features? YES.Are you an experienced developer busy working on complex projects? YES (have some fun on the side!)You are on your own? Perfect.You are a team of 4 friends? Perfect, but no more please.Get started with Unity for 2D: https://unity3d.com/learn/tutorials/s/2d-game-creationNew 2D Game kit: https://unity3d.com/learn/tutorials/s/2d-game-kitUnity 2D documentation manual: https://docs.unity3d.com/Manual/Unity2D.htmlNine 2D tools to make your life easier: https://unity3d.com/how-to/highlights-from-end-to-end-2D-toolset]]></description><link>https://unity.com/archive/blog/games/show-the-world-what-you-can-do-with-2d</link><guid isPermaLink="true">https://unity.com/archive/blog/games/show-the-world-what-you-can-do-with-2d</guid><pubDate>Mon, 05 Nov 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making the most of TextMesh Pro in Unity 2018]]></title><description><![CDATA[Whether you’re working on an FPS, a puzzle game or a VR experience, one of the aspects you have to take care of is User Interface. Luckily enough, as of March 2017, TextMesh Pro has joined the Unity family. This means that making your UI in Unity look great has become much easier and faster!For those of you who haven’t followed these developments, TextMesh Pro is a replacement for Unity’s default text components. It is just as performant (even more, in some cases) and it uses a completely different rendering technique called Signed Distance Field (SDF), originally used by Valve in Team Fortress 2. Together with having the power to make your text look great without much effort, TextMesh Pro also provides you with a much more advanced control over it, via inspector or scripting. In this post, we’re going to take a look at how to make the most out of this incredible tool!There are two main reasons why it is a great idea to start your projects using TextMesh Pro. First, visual improvements. Thanks to SDF rendering, it’s easy to change the way your text looks without having to recreate its font. Every TextMesh Pro component has a material attached to it that you can tweak in order to modify the style of your text. Second, better control. The TextMesh Pro component includes all variables you can find in the ordinary text component, plus a lot more. And if this wasn’t enough, just know that TextMesh Pro is currently used by over a quarter of a million developers around the world!Working with the default Unity text, you might have noticed that sometimes stretching or resizing the object causes it to look blurry. This is because the text doesn’t hold information of what it would look like when resized, and Unity therefore has to “improvise” and attempt to generate the missing pixels on the fly. Because of the different rendering technique that TextMesh Pro is using, this is no longer an issue. SDF is based on the principle of rendering a Font Atlas at a high resolution so that the font always has information about what a character would look like when resized.With TextMesh Pro you can import any font file and create your own font asset (Window > TextMesh Pro > Font Asset Creator). This allows you to choose the resolution for its Font Atlas (which will determine how effective SDF rendering will be for your text). Obviously, the lower the resolution you choose, the faster the Font Atlas will be generated.Since the Font has information about how it would look like at different sizes, it can also reconstruct its Outline and Dropped Shadow from the Font Atlas. Simply tweak the material properties and watch your text change its look entirely!As we have seen, TextMesh Pro offers great looking text. But what’s the point of nice text if you have no control over it? The TextMesh Pro component has options that allow you to customize font size, spacing, alignment, kerning, or to enable Autosize and to fit your text into a Container. The last two, in particular, give you great control over working with different platforms or different languages, as they allow your text to autosize depending on a given text container without the need of any scripting. However, if you do wish to change these settings at runtime, you can access all variables in the TextMesh Pro components from the TextMeshPro API.For an extra layer of customization, you can also add the Text Info Debug Tool component to your text object so that you can visually represent characters, words, links, lines etc.If you want to save time reformatting your text every time you insert a header, a title, a quote etc., you can set up a Style Sheet for any specific purpose. One example could be to inject a decoration to a header. To create a Style Sheet, select Create > TextMesh Pro > Style Sheet. You can set this new asset as your default Style Sheet from Edit > Project Settings > TextMesh Pro Settings.In addition to controlling the way the text looks from the inspector or a script, you can control it from the text field itself. If you are familiar with HTML or XML, you can customize the look of your text as you are typing. If you’re not, just read the guide on how to use Rich Text with TextMesh Pro) to get started! This is particularly useful in cases where you want to use multiple styles, sizes, materials in the same text object.Another way of making TextMesh Pro look great is to apply a Surface Shader to your text. This will allow lighting in the scene to affect the text. In the example below, a few real-time point lights are moving around the scene and affecting the text.The material properties give you the option to customize settings like Face, Outline, Bevel, Lighting, BumpMap, EnvMap, Glow, and Debug settings.Once you’ve created a material that you’re happy with, you can create a Material Preset that we will be able to reuse at any point, specifically for the Font Asset we’re using. We can do so by right-clicking on the Material name and selecting ‘Create Material Preset’. This will create an asset that we can select from our TextMesh Pro component > Font Settings > Material Preset.If you have generated a Font Atlas that is missing certain characters, TextMesh Pro will make the character fall back to a default glyph whenever typed. You can change this glyph by going on Edit > Project Settings > TextMesh Pro Settings. Alternatively, you can set up one or more Font Assets to which TextMesh Pro will fall back to if the character is not found in the primary Atlas. For optimization purposes, it makes sense to keep the main Font Atlas at a higher resolution, and all the fallback Atlases to a lower one.In addition to that, you can use the TextMesh Pro Settings to set up Resources paths for Font & Materials or Sprite Assets. When using Rich Text, you can insert a Sprite depending on which are available in the primary Sprite Asset you have defined in the Settings. The easiest way of doing so is by importing a Sprite Sheet, then slicing it in the Sprite Editor, right-clicking on the asset and selecting Create > TextMesh Pro > Sprite Asset. From this new asset, you can customize settings such as offset or pivot. Likewise, you can set up a series of Fallback Sprite Assets to fall back to if a Sprite is not found in the primary Sprite Assets.In terms of performance, as we have already mentioned, TextMesh Pro works similarly to the default text: it still renders on quads, so it is as efficient as using a bitmap font. There is also no runtime memory allocation: TextMesh Pro will only allocate space for the text objects when you press play. If you’re increasing the number of characters by a significant amount, only one reallocation is made; if you are decreasing the number of characters, no reallocation is made, unless it’s decreased of at least 256 characters. And in terms of improvements, you can obtain better results for styles like Outline and Drop Shadow simply because of the SDF rendering technique used by TextMesh Pro.Most of what was mentioned in this blog is available as an example scene when you import TextMesh Pro into your project (from Window > Package Manager > TextMesh Pro > Install from Unity 2018.1 onwards). I strongly recommend you to take a look at them before you start using TextMesh Pro, as their content might answer most of the questions you have. However, if you want to provide your feedback or still have any questions, you are welcome to do so via the Forums.]]></description><link>https://unity.com/blog/technology/making-the-most-of-textmesh-pro-in-unity-2018</link><guid isPermaLink="true">https://unity.com/blog/technology/making-the-most-of-textmesh-pro-in-unity-2018</guid><pubDate>Tue, 16 Oct 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Measuring time-to-engagement in interactive ads]]></title><description><![CDATA[The recent emergence of interactive ads is causing an industry transition from passive to active ad experiences, opening up a realm of optimization possibilities for advertisers which didn’t exist before. The rich data points interactive ads provide, give advertisers the ability to understand and track milestones throughout the ad experience - such as how many users choose to initially engage, how many choose to engage with subsequent interactive touchpoints, how many convert and when - data that is far more useful than just an impression or a click. To fully leverage this data, our team at ironSource has begun using new metrics to better measure a user’s progression throughout interactive ads. Enter TTE (Time to Engagement).What is Time to Engagement?We noticed that some of the interactive ads we were building for advertisers were resulting in low completion rates and low conversion rates. At first, our team thought that users were dropping out after the first or second touchpoint because the interactive ads themselves were too long. But even when we reduced the length of the ad, we didn’t see any significant improvements.Since shortening the entire ad didn’t work, we looked to optimize individual touchpoints. That’s when we came up with TTE, or Time to Engagement.TTE measures the time it takes for users to perform an action within an ad - from the moment a choice screen appears until the user reacts to it. Our goal was to understand how we could control the length of the ad experience by diagnosing which touchpoints were resulting in the most wasted time.What did we learn?We conducted a series of tests, analyzing over 1B ad impressions from tier-one countries, across multiple in-ad touchpoints and different verticals. Here is what we learned:
Clarity is keyFirst, we looked at the change in time between the moment the choice screen appeared and the user’s first action. The weighted average was 5.6 seconds, with 85% of engaged users engaging with an interactive ad within the first 10 seconds. Clearly, we were wasting precious time at the first touch point, likely because users were either failing to understand that the ad itself was interactive, or were unaware of what action was required of them.Too many choices, too little timeNext, we tried to determine what happened at the second and third touchpoints, which would inform us where else in the in-ad funnel users were dropping off. We found that with each additional choice (i.e. the number of choices presented to a user at a given point within an interactive ad), the TTE, or the time it took for users to engage with the ad, increased. The more options users were presented with, the longer it took them to engage - that’s if they engaged with it at all.
Short TTE = higher conversionLastly, our analysis pointed towards a strong correlation between overall conversion and TTE, as we discovered that users who ultimately convert, engage with creatives earlier than those who don’t convert - as they fully completed the ad and got all of the information about the product.Or, put differently: users with a short TTE are more likely to convert. In one ad we looked at, the group who converted had, on average, a 60% shorter TTE than those who didn’t convert. The lower the TTE, the higher the completion rate, and accordingly, the lower the dropout rate as time frame of the ad is being used more efficiently.
How to lower your TTEOnce we understood how long it took for users to engage with touchpoints in interactive ads, we were able to implement a number of changes. In one case, we added a dark overlay in order to make the UI clearer and more focused. We also added a clear and straightforward call to action (“tap to choose”) with pulsating arrows to show users the ad itself was interactive. Users then clearly understood what actions were required of them.In the end, TTE not only helped us understand how long it takes a user to engage with an interactive creative, but also how different triggers affect a user’s reaction time, allowing us to provide users with a richer experience while simultaneously decreasing the time where users weren’t interacting with the ad at all - improving overall conversion.ConclusionThe rise of in-ad data has brought about new ways to optimize ads that were never possible before. With access to rich data points provided by interactive ad units, and with the creation of metrics like TTE, advertisers can fully exploit the limited time before the exit button appears on an ad. As user behavior becomes increasingly transparent, and by diagnosing which touchpoints users get stuck on or engage with the most, advertisers can improve an ad’s overall performance KPIs.]]></description><link>https://unity.com/blog/time-to-engagement</link><guid isPermaLink="true">https://unity.com/blog/time-to-engagement</guid><pubDate>Mon, 15 Oct 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[2018.3 terrain update: Getting started]]></title><description><![CDATA[We now have a team dedicated to terrain, and our initial efforts will soon be publicly available! Unity 2018.3 will ship with an update to the terrain system. This update features improved tools and performance by taking better advantage of the GPU. It also adds support for the HD and LW render pipelines, while being backward compatible with the built-in render pipeline and the existing Unity Terrain system.Get the Unity 2018.3 beta now to get early access to the updates! Please be aware that the user interface and the API are both still subject to change as the beta is still under active development.On the performance side, we added a GPU-instanced render path for terrain. In most cases, instancing yields a dramatic reduction in the number of draw calls issued. Many of our tests saw more than a 50% reduction in CPU costs (though, of course, actual numbers will depend on your platform and use case). You can choose this new render path by enabling ‘Draw Instanced’ in the Terrain settings:When enabled, Unity transforms all of the heavy terrain data, like height maps and splat maps, into textures on the GPU. Instead of constructing a custom mesh for each terrain patch on the CPU, we can use GPU instancing to replicate a single mesh and sample the height map texture to produce the correct geometry. This reduces the terrain CPU workload by orders of magnitude, as a few instanced draw calls replace potentially thousands of custom mesh draws.As a nice side effect, it also improves our load times! Not only can we skip building all of those custom meshes, but we can also use the GPU to build the basemap (pre-blended LOD texture); the GPU is much faster at that kind of thing. This also means that if you have your own custom terrain shader, you can now override the ‘build basemap’ shader and generate matching basemap LOD textures.Instancing also improves the appearance of terrain normals; we decouple the terrain mesh normals from the geometry by storing them in a normal map texture that is generated from the heightmap and sampled in the pixel shader. This means the normals are independent of the mesh LOD level. Consequently, you can increase the ‘pixel error rate’ to decrease vertex cost, with fewer artifacts.We also developed terrain shaders for both the HD and LW render pipelines, available in package versions 4.0.0 or later, with support for instanced rendering and per-pixel normals. The HD shader was further enhanced to support new features such as height and density blend modes, normal scaling, texture controlled surface metalness and smoothness. The HD terrain shader is limited to a single pass, but it does support blending up to 8 terrain layers in one pass.On the editor side, we have exposed a script API for building your own custom terrain tools, along with a suite of utility functions you can use to easily implement seamless cross-tile sculpting and painting operations on the GPU. The new TerrainAPI includes TerrainPaintTool<T0>, a base class for terrain tools, and TerrainPaintUtility, containing utility functions for modifying terrain data.Applying these changes, we converted all of the existing terrain tools to GPU operations. Aside from making these tools much faster, this also gave us larger brush sizes, improved brush previews, and the ability to paint across terrain tile borders with automatic seam-stitching.We’ve also begun experimenting with brush features such as brush rotation and randomization and more advanced painting tools, like heightmap and mesh stamping, clone brushes, and more. These painting tools features are currently not in 2018.3, but we are making them available via our GitHub Terrain Tools project.We made it easier to work with multiple terrain tiles. Aside from seamless painting between terrains, you can now manage the connections between neighboring terrains automatically. Previously, this required writing a script to connect neighbors manually.Enable ‘Auto connect’ in the Terrain Settings, and the Terrain will automatically connect to its neighbors with the same grouping ID.When expanding your existing terrain, you can use our new ‘Create Neighbor Terrain’ tool to quickly add matching terrain tiles along empty borders.We are also working to make resizing and resolution changes less destructive. In 2018.3, the heightmap and splat maps will resample when you change their resolution, instead of the previous behavior of clearing the data and losing all of your work. We are working towards improving all resizing operations in the near future.In order to simplify workflows, we also created two new terrain-related asset types: the TerrainLayer asset and the Brush asset.TerrainLayer lets us define terrain materials independent of the terrain object so that we can easily track the same material across multiple terrains. This helps with seamless painting and material modification. We also extend the TerrainLayer asset to support “mask map” textures, which can be used for arbitrary shading purposes, and a script interface to provide shader-dependent custom GUI for the TerrainLayer asset. The Brush represents the GPU brush shapes used by painting and sculpting tools. They are now defined by a texture and a radial falloff curve. This makes it much easier to create and tweak brush shapes (which previously required dropping arcanely crafted image files into a specially named folder).We also added support for the R16 texture format (a single channel 16-bit format) to Unity. This allows us to avoid 8-bit quantization on our brush shapes, which can cause undesirable ‘terracing’ effects if used as a heightmap stamp.Our terrain team is just getting started and development continues. Please send us feedback in the World Building forum!]]></description><link>https://unity.com/blog/engine-platform/2018-3-terrain-update</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/2018-3-terrain-update</guid><pubDate>Wed, 10 Oct 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Optimizing loading performance: Understanding the Async Upload Pipeline]]></title><description><![CDATA[Nobody likes loading screens. Did you know that you can quickly adjust Async Upload Pipeline (AUP) parameters to significantly improve your loading times? This article details how meshes and textures are loaded through the AUP. This understanding could help you speed up loading time significantly - some projects have seen over 2x performance improvements!Read on to learn how the AUP works from a technical standpoint and what APIs you should be using to get the most out of it.The latest, most optimal implementation of the Asset Upload Pipeline is available in the 2018.3 beta.Download 2018.3 Beta TodayFirst, let’s take a detailed look at when the AUP is used and how the loading process works.Prior to 2018.3, the AUP only handled textures. Starting with 2018.3 beta, the AUP now loads textures and meshes, but there are some exceptions. Textures that are read/write enabled, or meshes that are read/write enabled or compressed, will not use the AUP. (Note that Texture Mipmap Streaming, which was introduced in 2018.2, also uses AUP.)During the build process, the Texture or Mesh Object is written to a serialized file and the large binary data (texture or vertex data) is written to an accompanying .resS file. This layout applies to both player data and asset bundles. The separation of the object and binary data allows for faster loading of the serialized file (which will generally contain small objects), and it enables streamlined loading of the large binary data from the .resS file after. When the Texture or Mesh Object is deserialized, it submits a command to the AUP’s command queue. Once that command completes, the Texture or Mesh data has been uploaded to the GPU and the object can be integrated on the main thread.During the upload process, the large binary data from the .resS file is read to a fixed-sized ring buffer. Once in memory, the data is uploaded to the GPU in a time-sliced fashion on the render thread. The size of the ring buffer and the duration of the time-slice are the two parameters that you can change to affect the behavior of the system.The Async Upload Pipeline has the following process for each command:1. Wait until the required memory is available in the ring buffer.2. Read data from the source .resS file to the allocated memory.3. Perform post-processing (texture decompression, mesh collision generation, per platform fixup, etc).4. Upload in a time-sliced manner on the render thread5. Release Ring Buffer memory.Multiple commands can be in progress simultaneously, but all must allocate their required memory out of the same shared ring buffer. When the ring buffer fills up, new commands will wait; this waiting will not cause main-thread blocking or affect frame rate, it simply slows the async loading process.A summary of these impacts are as follows:To take full advantage of the AUP in 2018.3, there are three parameters that can be adjusted at runtime for this system:QualitySettings.asyncUploadTimeSlice - The amount of time in milliseconds spent uploading textures and mesh data on the render thread for each frame. When an async load operation is in progress, the system will perform two time slices of this size. The default value is 2ms. If this value is too small, you could become bottlenecked on texture/mesh GPU uploading. A value too large, on the other hand, might result in framerate hitching.QualitySettings.asyncUploadBufferSize - The size of the Ring Buffer in Megabytes. When the upload time slice occurs each frame, we want to be sure that we have enough data in the ring buffer to utilize the entire time-slice. If the ring buffer is too small, the upload time slice will be cut short. The default was 4MB in 2018.2 but has increased 16MB in 2018.3.QualitySettings.asyncUploadPersistentBuffer - Introduced in 2018.3, this flag determines if the upload ring buffer is deallocated when all pending reads are complete. Allocating and deallocating this buffer can often cause memory fragmentation, so it should generally be left at its default(true). If you really need to reclaim memory when you are not loading, you can set this value to false.These settings can be adjusted through the scripting API or via the QualitySettings menu.Let’s examine a workload with lots of textures and meshes being uploaded through the Async Upload Pipeline using the default 2ms time slice and a 4MB ring buffer. Since we’re loading, we get 2 time-slices per render frame, so we should have 4 milliseconds of upload time. Looking at the profiler data, we only use about 1.5 milliseconds. We can also see that immediately after the upload, a new read operation is issued now that memory is available in the ring buffer. This is a sign that a larger ring buffer is needed.Let’s try increasing the Ring Buffer and since we’re in a loading screen, it is also a good idea to increase the upload time-slice. Here’s what a 16MB Ring Buffer and 4-millisecond time slice look like:Now we can see that we are spending almost all our render thread time uploading, and just a short time between uploads rendering the frame.Below are the loading times of the sample workload with a variety of upload time slices and Ring Buffer sizes. Tests were run on a MacBook Pro, 2.8GHz Intel Core i7 running OS X El Capitan. Upload speeds and I/O speeds will vary on different platforms and devices. The workload is a subset of the Viking Village sample project that we use internally for performance testing. Because there are other objects being loaded, we aren’t able to get the precise performance win of the different values. It’s safe to say in this case, however, that the texture and mesh loading is at least twice as fast when switching from the 4MB/2MS settings to the 16MB/4MS settings.Experimenting with these parameters outputs the following results.To optimize loading times for this particular sample project, we should, therefore, configure settings like this:General recommendations for optimizing loading speed of textures and meshes:Choose the largest QualitySettings.asyncUploadTimeSlice that doesn’t result in dropping frames.During loading screens, temporarily increase QualitySettings.asyncUploadTimeSlice.Use the profiler to examine the time slice utilization. The time slice will show up as AsyncUploadManager.AsyncResourceUpload in the profiler. Increase QualitySettings.asyncUploadBufferSize if your time slice is not being fully utilized.Things will generally load faster with a larger QualitySettings.asyncUploadBufferSize, so if you can afford the memory, increase it to 16MB or 32MB.Leave QualitySettings.asyncUploadPersistentBuffer set to true unless you have a compelling reason to reduce your runtime memory usage while not loading.Q: How often will time-sliced uploading occur on the render thread?Time-sliced uploading will occur once per render frame, or twice during an async load operation. VSync affects this pipeline. While the render thread is waiting for a VSync, you could be uploading. If you are running at 16ms frames and then one frame goes long, say 17ms, you will end up waiting for the vsync for 15ms. In general, the higher the frame rate, the more frequently upload time slices will occur.Q: What is loaded through the AUP?Textures that are not read/write-enabled are uploaded through the AUP.As of 2018.2, texture mipmaps are streamed through the AUP.As of 2018.3, meshes are also uploaded through the AUP so long as they are uncompressed and not read/write enabled.Q: What if the ring buffer is not large enough to hold the data being uploaded(for example a really large texture)?Upload commands that are larger than the ring buffer will wait until the ring buffer is fully consumed, then the ring buffer will be reallocated to fit the large allocation. Once the upload is complete, the ring buffer will be reallocated to its original size.Q: How do synchronous load APIs work? For example, Resources.Load, AssetBundle.LoadAsset, etc.Synchronous loading calls use the AUP and will essentially block the main thread until the async upload operation completes. The type of loading API used is not relevant.We’re always looking for feedback. Let us know what you think in the comments or on the Unity 2018.3 beta forum!]]></description><link>https://unity.com/blog/engine-platform/understanding-the-async-upload-pipeline</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/understanding-the-async-upload-pipeline</guid><pubDate>Mon, 08 Oct 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Art that moves: Creating animated materials with Shader Graph]]></title><description><![CDATA[In Unity 2018.2 we added the “Vertex Position” input to Shader Graph, allowing you to adjust and animate your meshes. In this blog post, I’ll demonstrate how you can create your own vertex animation shaders, and provide some common examples such as a wind and a water shader.If you’re new to Shader Graph you can read Tim Cooper’s blog post to learn about the main features or watch Andy Touch’s “Shader Graph Introduction” talk on the Unity YouTube channel.This scene does not use any textures or animation assets; everything you see is colored and animated using Shader Graph.Shaders are an incredibly powerful aspect of the rendering pipeline, allowing a great degree of control over how our scene assets are displayed. Using a series of inputs and operations, we can create shaders that change the various rendering properties of our assets, such as their surface color and texture, and even the vertex positions of the mesh. You can also combine all of these into complex, rich animations. This blog post will demonstrate how you can get started with vertex animations, introduce the concept of using masks and properties, and finish by explaining how we made the shaders for the Desert Island Scene.Clone Repository from GitHub or Download .Zip from GitHubDownload the Desert Island Scene sample project to start experimenting and interacting with the shaders yourself! This project contains everything you need to get started with Shader Graph. Ensure you launch the project using Unity version 2018.2 or above.Every shader in the Desert Island Scene was built with customization in mind, so feel free to start playing around with the shader values in the Inspector! Each object also has a preset file that will return the values to default.This work is licensed under the Creative Commons Attribution 4.0 International License.In order to use Shader Graph, your Project must meet the following requirements:Running on Unity Version 2018.2 or above.Using either the new Lightweight or High Definition render pipelines (LWRP is suggested for experimentation due to faster compile times).Have the Shader Graph package installed in the Package Manager.To install Shader Graph, either create or update a Project to version 2018.2 or above, navigate to Window > Package Manager > All, find Shader Graph in the list and click install.If your materials are not animating in the Scene view, make sure you have Animated Materials checked:Making something fancy with Shader Graph?
You can preview Animated Materials by clicking the little picture drop down at the top left of the scene view #UnityTips #Unity3D 
Before we can start using fancy maths to move things, we need to understand what it is that we’re moving.A Mesh in the scene has four types of spaces:Object: Vertex position relative to the mesh pivot.View: Vertex position relative to the camera.World: Vertex position relative to the world origin.Tangent: Addresses some special use cases, such as per-pixel lighting.You can select which Space you wish to affect in the dropdown of the Position node.By using the Split node we can select which axis we want to affect.The Split node outputs to four channels, the first three correspond to our Transform axis (R=X, G=Y, B=Z). In the example above, I’ve split out the y-axis of the object and added 1, moving our object up by 1 on its own axis.Sometimes you may wish to move the object in world space. To do this, select World from the Position node, then convert the output back to object space using the Transform node.Now that we’ve established how to move a Mesh, it’s often useful to know how we can restrict the effect.By using nodes such as Lerp, we can blend between two values. The T Input is the control value for the Lerp. When our T input is 0 (visualized as black), the A channel is used. When our input is 1 (visualized as white), the B channel is used. In the example below, the slider is used to blend between the two inputs. Any of the following examples can be used in place of the slider.With a black and white texture, we can use detailed shapes to push our Mesh. In the above example, you can see how white represents the maximum height of our range, while black represents no effect on the Mesh position. This is because black has the numerical value of 0, and so adding 0 to the Mesh position doesn’t move it.To use a texture with vertex position, you must use the Sample Texture 2D LOD node instead of the typical Sample Texture 2D node. Textures are particularly useful if you need a mask with a unique shape or a certain degree of falloff.While similar to a Texture mask, with a UV mask you can choose which part of the mesh you wish you affect based on the UV Unwrap. In the above screenshot, I’m using the u-axis of the UV to create a gradient from left to right. To offset the gradient, use an Add node; to increase the strength, use a Multiply node; and to increase the falloff, use a Power node.Each vertex stores a unit of Vector3 information that we refer to as Vertex Colour. Using the Poly Brush package, we can directly paint vertex colors inside the editor. Alternatively, you can use 3D modeling software (such as 3ds Max, Maya, Blender, 3D Coat or Modo) to assign vertex colors. It is worth noting that, by default, most 3D modeling software will export models with the maximum value for RGB assigned to each vertex.In the above screenshot, the Vertex Colour node is split into the red (R) channel, then connected to the T channel of the Lerp node, acting as a mask. The A channel of the Lerp node is used when the input is 0, with the B channel being used when the input is 1. In practice, the above set up will only add 1 to the y-axis if the vertices have the red vertex color assigned.By using the Normal Vector node, we can mask an input by the orientation of the Mesh faces. Again, the Split node allows us to select which axis we wish to affect (R=X, G=Y, B=Z). In the above screenshot, I mask using the y-axis, so that only the faces that face up are positive. It’s important to use a Clamp node to discard any values that are not between 0 and 1.This series of nodes masks an input if the object’s position is above world position 0 on the y-axis.When building Shaders, it can be difficult to get the correct input values for the desired effect. For this reason, and for later customization with Prefabs and presets, it’s important to use properties.Properties allow us to modify the Shader’s values after the Shader has compiled. To create a property, click the + symbol in the Blackboard (pictured on the right). There are six types of properties:Vectors (1 to 4): A string of values, with the option of a slider for Vector1.Colour: RGB values with a color picker, and an optional HDR version.Texture2D (and Texture2D Array): A 2D Texture sampleTexture 3D: A 3D texture sampleCubemap: A generated Cubemap sampleBoolean: An either off or on option. Equivalent to 0 or 1.The flag Shader pans an object space sine wave across the flag, using a UV mask to keep the left side still.Full resolution imageA UV mask inverted then multiplied against itself to create a smooth gradient across the y-axis. This is used to bend the center of the flag away from the oar.An object space sine wave is generated, with properties to control the amplitude, frequency, and speed of the wave. The wave is masked by a UV mask on the x-axis to keep the left side of the flag still.By outputting a Gradient Noise into a Step function and then into the Alpha Clip Threshold, we can discard some pixels to tear the flag.The wind Shader uses world space Gradient Noise panning along a single axis to gently push and pull the leaves and grass.Full resolution imageUsing world position, we place a Gradient Noise across the y-axis and x-axis. Using a Vector2, we can control the speed and direction at which it is offset.Properties are used to control the density and strength of the offset. Subtracting 0.5 from the Gradient Noise ensures that the Mesh is equally pushed and pulled.A UV mask is used to keep the base of the leaves and grass stationary. Finally, a Transform node is used to convert the world position to object position.With this Shader, we calculate the distance between the Camera and the clam, then use this as a mask for rotating the top half.

Full resolution imageBy inputting the GameObject’s position and the Camera position into the Distance node, we can create a mask. The One Minus node inverts the distance so that we have a positive value when we’re close to the clam. The Clamp node discards any values above 1 and below 0.This UV mask rotates only the top of the clam, but in most cases a vertex colour mask would be easier and more flexible.A Lerp node is used to blend between the clam being shut and open. The Rotation is applied to the GameObject’s y-axis and z-axis. Rotating it around the x-axis.In this Shader, we’re using a sine wave that’s generated across the object’s axis to make the fish wobble. We then mask off the head of the fish, so that the head stays still.Full resolution imageGenerate a sine wave in object space along the y-axis and z-axis, with properties controlling the frequency and speed of the wave.
 Because we’re using both the x-axis and the y-axis, the fish wobbles along its width, and over its height.Multiply the output of the sine wave to control the amplitude/distance/strength of the wobble, and add it to the object’s x-axis.Use a Lerp node to mask off the front of the fish using the x-axis of the UV channel. By using a Power node with a property, we can push the wobble effect to the back of the fish.Finally, we have the ocean Shader! This Shader offsets the top of the Mesh using three sine waves of different scales and angles. These sine waves are also used to generate the colours for the wave troughs and tips.Full resolution imageThree separate sine waves are generated in world space, each using properties to control the amplitude, frequency, speed, convergence, and rotation of the waves.The three sine waves are then combined with two Add nodes, and multiplied by a world scale gradient to break up the height of the wave tips. After this the combined, waves are added to the object position.Two vertex masks are used to first restrict the waves to the top of the dome, and then to push the waves back down when the froth is painted in.Full resolution imageBy Splitting out the x-axis and z-axis, we generate waves in two directions. The two multipliers are used to set the influence of each wave. For example, multiplying the Z channel by 0, would output a sine wave exclusively across the x-axis.Splitting out a World Position node to the x-axis and z-axis, and then combining them in a Vector2, gives us a UV space in world space. This orientates the Gradient Noise flat across the world. By adding this output to time, we offset the sine waves, helping break up the otherwise straight lines.The Sine node uses world space and time to generate a simple sine wave, to make the wave tips we use an absolute node to flip the negative values. The One Minus node then inverts these values so that the wave tips are at the top.If you would like to know how to get started with Shader Graph, Andy Touch’s GDC talk is a great place to start. If you’re looking for other Shader Graph examples, Andy also has an Example Library available on GitHub.For detailed documentation about Shader Graph, including descriptions of every node, go to the Shader Graph developer Wiki on GitHub. Get stuck in and join the conversation in our Graphics Experimental Previews forum! And finally, if you’re making something cool with Shader Graph, I’d love to see it! Feel free to reach out to me on Twitter @John_O_Really.]]></description><link>https://unity.com/blog/engine-platform/creating-animated-materials-with-shader-graph</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/creating-animated-materials-with-shader-graph</guid><pubDate>Fri, 05 Oct 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Puppo, The Corgi: Cuteness overload with the Unity ML-Agents Toolkit]]></title><description><![CDATA[Building a game is a creative process that involves many challenging steps including defining the game concept and logic, building assets and animations, specifying NPC behaviors, tuning difficulty and balance and, finally, testing the game with real players before launch. We believe machine learning can be used across the entire creative process and in today’s blog post we will focus on one of these challenges: specifying the behavior of an NPC.Traditionally, the behavior of an NPC is hard-coded using scripting and behavior trees. These (typically long) lists of rules process information about the surroundings of the NPC (called observations) to dictate its next action. These rules can be time-consuming to write and maintain as the game evolves. Reinforcement learning provides a promising, alternative framework for defining the behavior of an NPC. More specifically, instead of defining the observation to action mapping by hand, you can simply train your NPC by providing it with rewards when it achieves the desired goal.Training an NPC using reinforcement learning is quite similar to how we train a puppy to play fetch. We present the puppy with a treat and then throw the stick. At first, the puppy wanders around not sure what to do, until it eventually picks up the stick and brings it back, promptly getting a treat. After a few sessions, the puppy learns that retrieving a stick is the best way to get a treat and continues to do so.That is precisely how reinforcement learning works in training the behavior of an NPC. We provide our NPC with a reward whenever it completes a task correctly. Through multiple simulations of the game (the equivalent of many fetch sessions), the NPC builds an internal model of what action it needs to perform at each instance to maximize its reward, which results in the ideal, desired behavior. Thus, instead of creating and maintaining low-level actions for each observation of the NPC, we only need to provide a high-level reward when a task is completed correctly and the NPC learns the appropriate low-level behavior.To showcase the effectiveness of this technique, we built a demo game, “Puppo (read as ‘Pup-o’), The Corgi”, and presented it at Unite Berlin. It is a mobile game where you play fetch with a cute little corgi. Throw a stick to Puppo by swiping on the screen and Puppo brings it back. While the higher-level game logic uses traditional scripting, the corgi learns to walk, run, jump and fetch the stick using reinforcement learning. Instead of using animation or scripted behaviors, the movements of the corgi are trained solely with reinforcement learning. Not only does it look super cute, but the corgi’s motion is driven by the physics engine exclusively. This means for instance that the motion of the corgi can be affected by surrounding RigidBodies.Puppo became so popular at Unite Berlin that many developers asked us how we made it. That’s why we decided to write this blog post and release the project for you to try it out yourself.Download the Unity ProjectTo get started, we will cover the requirements and preliminary work that you need to do to train the corgi. Then, we will share our experience in training it. Finally, we will go over the steps we took to create a game with Puppo as its hero.Before we get into the details, let’s define a few important notions in reinforcement learning. The goal of reinforcement learning is to learn a policy for an agent. An agent is an entity that interacts with its environment: Every learning step, the agent collects observations about the state of the environment, performs an action, and gets a reward for that action. The policy defines how an agent acts based on the observations it perceives. We can develop a policy by rewarding the agent when his behavior is appropriate.In our case, the environment is the game scene and the agent is Puppo. Puppo needs to learn a policy so it can play fetch with us. Similar to how we train a real dog with treats to fetch sticks, we can train Puppo by rewarding it appropriately.We used a ragdoll to create Puppo and its legs are driven by joint motors. Therefore, for Puppo to learn how to get to the target, it must first learn how to rotate the joint motors so that it can move.A real dog uses vision and other senses to orient itself and to decide where to go. Puppo follows the same methodology. It collects observations about the scene such as proximity to the target, the relative position between itself and the target and the orientation of its own legs, so it can decide what action to take next. In Puppo’s case, the action describes how to rotate the joint motors in order to move.After each action Puppo performs, we give a reward to the agent. The reward is comprised of:- Orientation Bonus: We reward Puppo when it is moving towards the target. To do so, we use the Vector3.Dot() method.- Time Penalty: We give a fixed penalty (negative reward) to Puppo at every action. This way, Puppo will learn to get the stick as fast as possible to avoid a heavy time penalty.- Rotation Penalty: We penalize Puppo for trying to spin too much. A real dog would be dizzy if it spins too much. To make it look real, we penalize Puppo when it turns around too fast.- Getting to the target Reward: Most importantly, we reward Puppo for getting to the target.Now Puppo is ready to learn. It took us two hours on a laptop for the dog to learn to run towards the target efficiently. During the training process, we noticed one interesting behavior. The dog learned to walk rather quickly in about 1 min. Then, as the training continued, the dog learned to run. Soon after, it began to flip over when it tried to make a sudden turn while running. Fortunately, the dog learned how to get back up just as a real dog will do. This clumsy behavior is so cute that you could stop the training at this point and use it directly in the game.If you are interested in training Puppo yourself, you can follow the instruction in the project. It includes detail steps on how to set up the training and what parameters you should choose. For a more detailed tutorial on how to train agents, please visit the ML-Agents documentation site.To create “Puppo, The Corgi” game, we need to define the game logic that lets a player interact with the trained model. Because Puppo has learned to run to a target, we need to implement the logic that changes the target for Puppo within the game.In game mode, we set the target to be the stick right after the player has thrown it. When Puppo arrives at the stick, we change Puppo’s target to the player’s position in the scene so that Puppo returns the stick to the player. We do this because it’s much easier to train Puppo to move to a target while defining the game flow logic with a script. It’s our belief that Machine Learning and traditional game development methods can be combined to get the best of both approaches. “Puppo, The Corgi” project includes a pre-trained model for the corgi that you can use immediately and even deploy on mobile devices.We hope this blog post has shed some light on what is achievable with the ML-Agents Toolkit for game development.Want to dive deep into the code of this project? We released the project and you can download it here. To learn more about how to use the ML-Agents Toolkit, you can find our official documentation and a step-by-step beginner’s guide here. If you are interested in getting a deeper understanding of the math, algorithms, and theories behind reinforcement learning, there is a Reinforcement Learning Nanodegree we offer in partnership with Udacity.We would love to hear about your experience using the ML-Agents Toolkit for your games. Feel free to reach out to us on our GitHub issues page or email us directly.Happy creating!]]></description><link>https://unity.com/blog/engine-platform/puppo-the-corgi-cuteness-overload-with-the-unity-ml-agents-toolkit</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/puppo-the-corgi-cuteness-overload-with-the-unity-ml-agents-toolkit</guid><pubDate>Tue, 02 Oct 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Performance benchmarking in Unity: How to get started]]></title><description><![CDATA[As a Unity developer, you want your users to love playing your games, enjoying a smooth experience across all the platforms they may play on. What if I told you that we just made it easier to create performance benchmarks? If you want to learn how to develop games or Unity tools with an eye on performance, please read on!In this post, I explain how to use a couple of Unity tools that give you an easy way to start collecting performance metrics and creating benchmarks with them: the Unity Test Runner that ships with the Unity Editor, the Unity Performance Testing Extension, and the Unity Performance Benchmark Reporter.As a Unity Developer, you might find yourself in the following situation: your project was running fast and smooth not too long ago, but then one or more changes have come in, and now scenes are noticeably slow, frames are dropping, and other performance issues have started popping up. Tracking which changes led to the performance regression can be difficult.If you’re a Unity Partner, you want to understand the performance changes across your SDKs, drivers, platforms, packages, or other artefacts. Or you’d like to collect performance metrics across different versions of Unity with your products, but it’s not very clear how to do this and then make the comparisons.Those are just a couple of examples where establishing performance benchmarks can really save the day. Now, let me show you how you can start collecting performance metrics, create benchmarks with them, and visualize changes in performance metrics.For this discussion, we’ll be looking at the test code in the UnityPerformanceBenchmark sample performance test project.Download the latest XRAutomatedTests release from GitHub. You’ll find the UnityPerformanceBenchmark project in the PerformanceTests subdirectory.The UnityPerformanceBenchmark project contains a variety of sample scenes that are in turn used in Unity Performance Tests using the Unity Performance Testing Extension.The first thing we’re going to do is take a look at how we write performances test using the Unity Test Runner with the Unity Performance Testing Extension. Here is a bit of background info on both of these tools before we proceed.We’re using the Unity Test Runner to run our performance tests. The Unity Test Runner is a test execution framework built into the Unity Editor allowing you to test your code in both Edit and Play mode on target platform players such as Standalone, Android, or iOS. If you aren’t familiar with the Unity Test Runner, check out the Unity Test Runner documentation.The Unity Performance Testing Extension is a Unity Editor package that provides an API and test case attributes allowing you to sample and aggregate both Unity profiler markers and non-profiler custom metrics, in the Unity Editor and players. You can learn more by checking out the Unity Performance Testing Extension documentation, but we’re going to look at some examples here.The Unity Performance Test Extension requires Unity 2018.1 or higher. Be sure to use Unity version 2018.1 or higher if you want to run the sample performance tests in the UnityPerformanceBenchmark project or whenever you are using the Unity Performance Test Extension.The UnityPerformanceBenchmark project implements the IPrebuildSetup interface, a Unity Test Runner facility, where we can implement a Setup method that is automatically called before the test run is executed by the Unity Test Runner.The first thing the UnityPerformanceBenchmark project’s IPrebuildSetup.Setup method does is parse the command line arguments looking for player build settings. This allows us to flexibly build the player for our performance tests using the same Unity project against different platforms, render threading modes, player graphics APIs, scripting implementations, and XR-enabled settings such as stereo rendering path and VR SDKs.Thus, we’ll need to open the UnityPerformanceBenchmark project with Unity from the command line, passing in the player build options we want to use when we run the tests in the Unity Test Runner.Example: Launch UnityPerformanceBenchmark project from Windows to Build Android Player:Unity.exe -projectPath
C:\XRAutomatedTests-2018.2\PerformanceTests\UnityPerformanceBenchmark
-testPlatform Android -buildTarget Android -playergraphicsapi=OpenGLES3 -mtRendering -scriptingbackend=monoHere we launch Unity on Windows to build for Android with OpenGLES3 graphics API, multithreaded rendering, and mono scripting backend.Example: Launch UnityPerformanceBenchmark project from OSX to Build iOS Player./Unity -projectPath /XRAutomatedTests-2018.2/PerformanceTests/UnityPerformanceBenchmark
-testPlatform iOS -buildTarget iOS -playergraphicsapi=OpenGLES3 -mtRendering -scriptingbackend=mono
-appleDeveloperTeamID=<yourAppleDeveloperTeamID>
-iOSProvisioningProfileID=<yourIosProvisionProfileID>Here we launch Unity on OSX to build for iOS with OpenGLES3 graphics API, multithreaded rendering, and mono scripting backend. We also provide the Apple developer team and provisioning profile information needed to deploy to an iOS device.When we open the UnityPerformanceBenchmark project with Unity from the command line like in the examples above, the command line args will be in memory for the IPrebuildSetup.Setup method to parse and use to build the player with.While this launch-from-command-line approach isn’t required to run tests in the Unity Test Runner, it’s a good pattern to use to avoid using a separate test project for each player configuration.I’ve detailed the command line options for opening the project, or just running the tests, from the command line on the wiki for the test project: How to Run the Unity Performance Benchmark Tests. To learn more about how we’re parsing the player build settings in the test project, take a look at the RenderPerformancePrebuildStep.cs file in the Scripts directory of the UnityPerformanceBenchmark test project.After we open the UnityPerformanceBenchmark, we need to open the Unity Test Runner window in the Unity Editorin Unity 2018.1, go to Window > Test Runner.in Unity 2018.2, go to Window > General > Test Runner.The Unity Test Runner window will open and look like the image below.These are our Unity Performance tests. We can run them in the Editor using the Run button at the top left of the window, or on the actual device or platform using the “Run all in player” button at the top right of the window.Debugging Tip
If you want to debug code in your IPrebuildSetup.Setup method1. Set breakpoints in your IPrebuildSetup.Setup code in Visual Studio2. Attach to the Unity Editor with the Visual Studio Tool for Unity extension3. Run your tests in the Editor using the “Run All” or “Run Select” button in the Unity Test Runner window. At this point the Visual Studio debugger will break into your code where you can debug as needed.Let’s take a look at a performance test example so we can get a better understanding of how it works.Example: Sampling Profiler Markers in a Unity Performance TestIn this example, our test method is called SpiralFlame_RenderPerformance. We know from the method decorator [PerformanceUnityTest], that this is a Unity Performance Test.All of the tests in the UnityPerformanceBenchmark test project follow the same pattern we see in this test method:1. Load the scene for the test2. Set the scene as active so we can interact with it in the test method3. Create a test object of type DynamicRenderPerformanceMonoBehaviourTest and add it to the test scene (this happens in SetupPerfTest<T> method)4. Wait for a constant value of time for the scene to “settle” after loading and adding the test object to the scene before we start sample metrics.5. Setup our profiler markers for capture by the Performance Test Extension API6. Let the performance test know we’re ready to start capturing metrics7. Then yield return the test object (an IMonoBehaviourTest) to capture metrics during the rendering loop.We also sample custom metrics (metrics that don’t fall into one of Unity profiler markers, framecount, or execution time) in the RenderPerformanceMonoBehaviourTestBase base class (this class inherits from MonoBehaviour).Example: Sampling Custom Metrics in a Monobehaviour ScriptIn the example above, we’re capturing FPS, GpuTimeLastFrame (if XR is enabled), and application startup time (if Unity Analytics is enabled and we’re running on Unity 2018.2-or- newer where the API we need is available).Finally, notice in the same RenderPerformanceMonoBehaviourTestBase base class that we have implemented a property public bool IsTestFinished.We’re required to implement this property because our RenderPerformanceMonoBehaviourTestBase implements the IMonoBehaviourTest interface.This property is important because the Unity Test Runner uses it to know when to stop the test. When it’s value is true, the test ends. It’s up to you to implement the logic you want in order to determine when the Unity Test Runner should stop running the test.Example: Sampling Custom Metrics in the IsTestFinished PropertyIn this final example, we’re capturing the number of rendered game objects, triangles, and vertices in the scene when the test finishes.Now that we’ve seen some examples of how we make calls into the Performance Testing Extension to sample metrics, let’s talk about how we configure these to begin with.The Measure.* methods generally take a struct as a parameter called a SampleGroupDefinition. When we create a new SampleGroupDefinition we define some properties for the samples we are interested in collecting.Example: Define new SampleGroupDefinition for GpuTimeLastFrame, using Milliseconds as the sample unit, aggregate samples using a minimum valueBelow is the SampleGroupDefinition for GpuTimeLastFrame. This is how we let the Performance Testing Extension know how to collect samples and aggregate them for GpuTimeLastFrame.This SampleGroupDefinition is from the dynamic scene render performance test example, so here we’ve chosen to aggregate our samples using the minimum value collected. But why would we do that rather than use a more common aggregation measure, like median or average?The answer is because the scene is dynamic. In a dynamic scene using a median or average aggregation would be unreliable or inconsistent for the same scene run against the same code given the changing nature of the rendering. This is most likely the best we can do if we want to track a single aggregate for a rendering metric in a dynamic scene. However, when we define a similar SampleGroupDefinition for our static scenes, we definitely use a median aggregation.new SampleGroupDefinition(GpuTimeLastFrameName, SampleUnit.Millisecond, AggregationType.Min)Example: Define new SampleGroupDefinition for FPS, using none as the sample unit, aggregate samples using a median value, an increase in the value is betterBelow is the SampleGroupDefinition for FPS (Frames Per Second). FPS doesn’t have a separate measurement unit; it’s just FPS, so we specify SampleUnit.None here. We’ll using a median aggregation type here; this is in a static scene so we don’t have to worry about an unpredictable rendering experience. We’re explicitly establishing a 15% threshold for the sample group, and passing true for the increaseIsBetter argument because, if FPS increases, it’s a good thing!These last two arguments are collected and saved in our performance test results .xml file when running from the command line, and can be later used in the Unity Performance Benchmark Reporter to establish benchmarks.new SampleGroupDefinition(FpsName, SampleUnit.None, AggregationType.Median, threshold: 0.15, increaseIsBetter: true)When the test completes, all of the metric samples we enabled earlier are then aggregated by the Performance Testing Extension.I want to point out that in our code examples we use a couple of different Unity Performance Testing Extension APIs, namelyMeasure.ProfilerMarkers, andMeasure.CustomThe Unity Performance Testing Extension provides other Measure methods as well that may suit your specific needs depending on what, and how, you’re wanting to measure performance in Unity. These additional methods include:Measure.MethodMeasure.FramesMeasure.ScopeMeasure.FrameTimesLearn more about the different Measure methods in the Unity Performance Testing Extension documentation, specifically in the “Taking measurements” section.Now that we’ve looked at some examples of how we write performance tests using the Unity Test Runner using the Unity Performance Testing Extension, let’s look at how we run them.There are two primary ways we can execute our performance tests1. From the command line, launching Unity with the -runTests option. This is the preferred way for performance tests because the Unity Performance Test Extension will generate a result .xml file for us that we can use in the Unity Performance Benchmark Reporter to view and compare our results.2. Directly from within the Editor. This is a useful approach if you
 a. Just want to run the tests and view the results in the Unity Test Runner window without needing to capture the results for later use, or
 b. Want to verify your tests will run or you need to debug into test code.Here are two examples of how to run performance tests with Unity Test Runner from the command line. These examples should look very familiar, because we’re building off the same examples we saw earlier in our discussion about opening the UnityPerformanceBenchmark project from the command line.Example: Running the UnityPerformanceBenchmark Performance Tests from Windows against an Android PlayerHere we launch Unity on Windows to build for Android with OpenGLES3 graphics API, multithreaded rendering, and mono scripting backend.Unity.exe -runTests [-batchmode] -projectPath
C:\XRAutomatedTests-2018.2\PerformanceTests\UnityPerformanceBenchmark -testPlatform Android -buildTarget Android -playergraphicsapi=OpenGLES3 -mtRendering -scriptingbackend=mono -testResults
C:\PerfTests\results\PerfBenchmark_Android_OpenGLES3_MtRendering_Mono.xml -logfile
C:\PerfTests\logs\PerfBenchmark_Android_OpenGLES3_MtRendering_Mono_UnityLog.txtExample: Running UnityPerformanceBenchmark Performance tests from OSX against an iOS PlayerHere we launch Unity on OSX to build for iOS with OpenGLES3 graphics API, multithreaded rendering, and mono scripting backend. We also provide the Apple developer team and provisioning profile information needed to deploy to an iOS device../Unity -runTests [-batchmode] -projectPath /XRAutomatedTests-2018.2/PerformanceTests/UnityPerformanceBenchmark
-testPlatform iOS -buildTarget iOS -playergraphicsapi=OpenGLES3
-mtRendering -scriptingbackend=mono
-appleDeveloperTeamID=<yourAppleDeveloperTeamID>
-iOSProvisioningProfileID=<yourIosProvisionProfileID> -testResults /PerfTests/results/PerfBenchmark_Android_OpenGLES3_MtRendering_Mono.xml
-logfile /PerfTests/logs/PerfBenchmark_Android_OpenGLES3_MtRendering_Mono_UnityLog.txtFor both of these examples, we’ve introduced three to four new command line options that will help us run our tests instead of just opening the Unity Editor with the command line arguments available to the IPrebuildSetup.Setup method.-runTests
This option tells the Unity Test Runner that you want to run your tests-testResults <pathToWritePerformanceTestResultsFile>
This option specifies the filename and path to the .xml file that the Unity Test Runner should save your performance tests results in.-logfile <pathToWriteUnityEditorLogFile>
This option specifies the filename and path to the file that the Unity Editor should write its logging to. This is optional, but can be really helpful when you’re investigating failures and issues if you can quickly access the Unity Editor log file.-batchmode
This option will force the Unity Editor to open in a headless mode. We use this option when we are only running player performance tests and there is no need to actually open the Unity Editor window. This can save time during automated tests execution. When this option is not used, the Unity Editor will open on the screen before executing the tests.At Unity we run our performance tests from the command line, often in batchmode, in our continuous integration system.Example: Running the UnityPerformanceBenchmark Tests from the Command LineWith the Unity Test Runner window open near the top when PlayMode is selected (PlayMode tests run in either the build player or in the playmode window of the Editor), we have1. Run All - click this button to run all tests in the PlayMode tab2. Run Selected - click this button to run the select test or node and all tests beneath it.3. Run all in player - click this to have the Unity Editor build the player type configured in build settings and run the tests thereImportant Requirement Running performance tests prior to version 0.1.50 of the Performance Testing Extension in the Unity Editor from the Test Runner window will not produce a result .xml file needed for the Unity Performance Benchmark Reporter. However, if you're using version 0.1.50 or later of the Performance Testing Extension, a results.xml file will be written to the `Assets\StreamingAssets` project folder.If you are using a version of the Performance Testing Extension earlier than version 0.1.50 and want to create a result .xml file when you've done your performance tests, you need to run the tests by launching Unity from the command line with the -runTests command line option. Be aware however, that when you're running Unity with the -runTests command line option, the Editor will open and begin running the tests.The result .xml files will contain the results and metadata from the test runs that we'll use with the Unity Performance Benchmark Reporter to create benchmark results and compare to subsequent test runs.Example: Running Performance Tests in the Unity EditorIf we’re running these tests from within the editor, the aggregate values can be seen near the bottom of the Unity Test Runner window by selecting each test.Example: Viewing Performance Test Sample Aggregations from Unity Test RunnerIf you want to see the results of running your Unity Performance Tests from the command line, you’ll need to use the Unity Performance Benchmark Reporter (or just open the result .xml file, but it’s not an easy read).With that, let’s transition to talking about how we can use the Unity Performance Benchmark Reporter to view and compare results.Unity Performance Benchmark Reporter enables the comparison of performance metric baselines and subsequent performance metrics (as generated using the Unity Test Runner with the Unity Performance Testing Extension) in an html report with graphical visualizations.The reporter is built as a .NET Core 2.x assembly so that it is compatible to run across different .NET supported platforms (Windows, OSX, etc). Therefore, to run it, you'll need to ensure you have installed the .NET Core SDK.Executing the Unity Performance Benchmark reporter entails invoking the assembly with the dotnet command like this:dotnet UnityPerformanceBenchmarkReporter.dll
--baseline=D:\UnityPerf\baseline.xml
--results=D:\UnityPerf\results --reportdirpath=d:\UnityPerfAfter the reporter runs, a directory named UnityPerformanceBenchmark will be created with an html report and supporting .css, .js, and image files in it. Open the html report to view visualizations of the performance metrics captures in the .xml result files.--results
The path to a directory where we have one or more non-baseline result .xml files to be included in the html report.At least one --results value must be passed to the UnityPerformanceBenchmarkReporter.dll assembly. This is the only required field.This command line option also can be used to specify the path to a single .xml non-baseline result file. Additionally, you can specify several directories or files by repeating the option like this:--results=D:\UnityPerf\results --results=D:\UnityPerf\results.xml--baseline
The path to a result .xml file that will be used when comparing other results.--reportdirpath
The path to a directory where the reporter will create the performance benchmark report. This is created in a UnityPerformanceBenchmark subdirectory.If the report location is not specified, the UnityPerformanceBenchmark subdirectory will be created in the working directory that the UnityPerformanceBenchmarkReporter.dll was invoked.Let’s compare some performance test results with the Performance Benchmark Reporter.Example: Experiment with Configuration Changes in a VR-enabled Gear VR Scene to Improve Frame RateI have a Unity scene with the following complexity characteristics.732 objects95,898 triangles69,740 verticesI ran a Unity Performance Test against this scene sampling metrics that would help me understand if I could sustain close to 60 FPS using Multi Pass Stereo Rendering. Next, I ran the Performance Benchmark Reporter with the results of my test.What I found is that my FPS is closer to 30 FPS, half of what I’d like to be at.Next, I’m going to try using Single Pass Multiview Stereo Rendering to see how close to 60 FPS I can get. I’ll rerun my Performance Test with the configuration change, then create another Unity Performance Benchmark Report comparing my first results with the new ones.Looks like the configuration switch to Single Pass Multiview rendering improved our FPS to 37. We still need to be closer to 60 FPS if we want this scene to run without significant frame drop on Gear VR.The last thing I’m going to experiment with is reducing the number of rotating cubes in my scene to see if we can get FPS up.After a couple of tries I’m able to improve performance to ~55 FPS. But I had to reduce the number of object in the scene from 732 to 31. That’s quite a bit.I’ll circle back on other improvements I can make for performance optimization, but for now, I’m going to use this as an FPS baseline. I’ll use this as my benchmark going forward, hoping to improve it if I can.Establishing benchmarks can mean many things depending on your project. In this context, running performance tests in Unity, we’re talking about establishing a baseline set of results, a last-known-good set of performance metrics that we can compare subsequent results to as we make changes. These become our benchmark.In the previous section I arrived at a configuration using Single Pass Multiview Stereo Rendering for Gear VR, and a decreased scene object count, that resulted in an “acceptable” FPS. At that point, I decide to use my test results as my benchmark. Let’s see an example of how we can use this benchmark as we make further changes to the player configuration.Example: Use Performance Benchmark to Detect Performance Regression with Configuration ChangesI’d like to enable antialiasing in my scene to smooth the appearance out. The default Quality Settings in Unity for Android disable antialiasing, but I’d like to see if we can enable it and still maintain an acceptable FPS for our Gear VR scene.First I set the antialiasing value in my IPrebuildSetup.Setup method to 4.QualitySettings.antiAliasing = 4;Next I rerun the performance test from earlier on my Gear VR-enabled Android phone. I then use the Unity Performance Benchmark Reporter to compare this new run with my newly-established benchmark results.But look, with the reconfiguration of my Unity player to use antialiasing at level 4, my FPS dropped to 32 FPS, which is about where I originally started out when I created this scene with 732 objects.I’d like to experiment with a few lower antialiasing values to see if I can recover an acceptable FPS for the scene before I bail on this idea. So, I try with antialiasing set to 2, and then finally 1. The results are in the image below.In this reconfiguration scenario, using the performance benchmark I established earlier, I was able to experiment with changes in my Unity player settings and then verify the performance impacts before committing to them.Even though I’m within my default 15% threshold of variance for FPS using antialiasing set to 1, FPS is now at 49, a bit too far from the 60 FPS for my VR-enabled scene that I’d like to be at. I don’t think I’ll commit to these changes today.Unity is putting a lot of focus on great performance by default. But the Unity Engine is only part of what ultimately results in users loving to play your games, enjoying a smooth and high performance experience across all the platforms they may play on. And SDKs, drivers, or Unity packages, for example, that work great without introducing performance regressions are critical to an overall great Performance experience for everyone.I’ve introduced you to a couple of Unity tools that make it easier to start collecting performance metrics and creating benchmarks with them: the Unity Performance Testing Extension, and the Unity Performance Benchmark Reporter. I encourage you to experiment with what they can do for you and your performance-focused efforts.We looked atHow we can use the Unity Test Runner to write performance tests to sample profiler and other metrics,Some different ways we can execute performance tests using the Unity Test Runner, andHow to use the Unity Performance Benchmark Reporter to analyze and compare performance metrics, run over run, as you begin to up your performance testing game.Establishing baselines for these metrics, and using them to create a benchmark for your scenes, game, SDK, driver, package, or other Unity integrations can be an effective way to start creating visibility into impacts your changes have. Good luck!Many thanks and credit go to my Unity colleagues for their help contributing, brainstorming, experimenting, developing, and iterating on this work with me.Qi JiangSakari PitkänenGintautas SkersysBenjamin Smith]]></description><link>https://unity.com/blog/engine-platform/performance-benchmarking-in-unity-how-to-get-started</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/performance-benchmarking-in-unity-how-to-get-started</guid><pubDate>Tue, 25 Sep 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[The High Definition Render Pipeline: Getting started guide for artists]]></title><description><![CDATA[Editor's note: The information in this post is outdated. For newer versions of Unity, we recommend The definitive guide to lighting in the High Definition Render Pipeline (HDRP) e-book, which was last updated in 2022.In this post we will explore authoring a scene to be rendered using Unity’s High Definition Render Pipeline, also known as HDRP. We’ll walk through starting a new HDRP Project, upgrading the Materials of any imported assets, and learn how to use the new parameters within the Material Inspector to create a realistic glass material. We’ll also highlight the differences between the built-in pipeline and HDRP.In 2018.1, Unity introduced a new system called the Scriptable Render Pipeline (SRP), allowing you to create your own rendering pipeline, based on the needs of your project. SRP includes two ready-made pipelines, called Lightweight (LWRP) and High Definition (HDRP). HDRP aims for high visual fidelity and is suitable for PC or console platforms.If you haven’t already, we recommend that you install Unity Hub. It helps you to keep track of your projects as well as your installed versions of Unity. When creating a new Project in Unity Hub, under Template, you will see an option to select High-Definition RP (Preview).Since HDRP is still in preview, it’s not a good idea to switch to HDRP in the middle of production. However, you can try upgrading your project to HDRP by going into the new Package Manager and installing it. Be advised, once you have upgraded your project to HDRP, you won’t be able to revert. Make sure to create a backup of the project prior to upgrading.As mentioned above, HDRP is still in preview, so it's subject to change in the future. In order to upgrade a project from the built-in render pipeline to HDRP, navigate to Window > Package Manager. In the Package Manager, you can see all of the current packages installed within your Unity project. Under All, locate “HD Render Pipeline” (Render-pipelines.high) and install the latest version. Installing the pipeline will also integrate the Render-pipeline core, Shader Graph and the post processing packages.After installing the HDRP package, you need to navigate to Edit > Project Settings > Graphics to assign the Scriptable Render Pipeline asset for HDRP.The Inspector displays the currently installed Render Pipeline Asset under in the “Scriptable Render Pipeline Settings” field. The HDRP Render Pipeline Asset will be assigned if you are installing the Pipeline from Unity Hub. If you're upgrading your project from the Built-In pipeline this field will be set to “None”. We can assign a Pipeline Asset by clicking the button next to the Asset Selection box or by dragging the asset in from the Settings folder.HDRP uses the C# Scriptable Render Pipeline API. With this comes a whole host of different preferences you can set to customise the rendering of your project. The fact that your rendering settings are stored in a Render Pipeline Asset means that you can change your render settings by assigning a new Render Pipeline Asset to this field.To create a new Render Pipeline Asset, right click within your settings folder and choose Create > Rendering > High Definition Render Pipeline Asset.When using a HDRP Project, any Unity built-in, Standard or Unlit Material will not be rendered, and therefore appear using the default pink unlit shader which Unity displays when a shader is broken. This may occur when attempting to upgrade an existing project or when integrating legacy content such as Asset Store assets which do not use HDRP compatible shaders. In order to be rendered by HDRP, the Material needs to be upgraded.Unity 2018.1 is equipped with a Built-in Material Conversion Tool. It takes the Material properties from Unity’s Standard Shader and converts them to new HDRP Materials. It’s worth noting that this does not work for custom shaders, which need to be re-written for HDRP.To access the Material Conversion Tool, navigate to Edit > Render Pipeline.Unity offers several upgrade options in this menu. We’ll focus on the first two here. “Upgrade Project Materials to High Definition Materials”, will upgrade all upgradable Materials in the Project. “Upgrade Selected Materials to High Definition Materials”, lets you select which Materials you want to upgrade from the Project window.It is at this point that we recommend you create a separate backup of your project.Once the Materials have been converted, the Material’s shader will now be called “HDRenderPipeline/Lit”. Now you have complete access to the brand new features of the HDRP lit shader within the Material Inspector.Furthermore, within the Materials Shader options, under “HDRenderPipeline”, you can select and apply a variety of shader types such as LitTesseleation or Unlit, to name a few.The subsequent sections provide an introduction to some of the new features added as part of HDRP. We’ve used some of these new features to enhance the look of our kitchen scene.Lighting in HDRP uses a system called Physical Light Units (PLU). PLU means that these units are based on real-life measurable values, like what you would see when browsing for light bulbs at the store or measuring light with a photographic light meter.We use LUX for Directional Lights because in the real world, those are the values used to measure the intensity of sunlight, which can be easily done with a LUX meter. Other real-world light sources use Lumens to measure intensity, which can be used as a reference for the smaller light emitters in our scene.The Realtime Line Light light maintains a seamless, constant light output emanating from a line of a user-definable length. These lights types are commonly used in animated films to achieve realistic lighting. They add a filmic quality to the lighting of your scenes. Line Lights can be created by selecting the shape type in the Inspector after a Light has been placed in a scene.A lot of modern kitchens use a style of Line Light to illuminate the kitchen workspace, so the Line Light here not only produces realistic lighting, but is accurate to what would be found in a real kitchen.In addition, the Light Inspector can determine the color of a light emitted through temperature. Ranging on a scale of 1000 to 20000 kelvins, the lower the value, the less heat is emitted, the light appears more red. In contrast, as you increase the temperature value, it appears more blue.Similarly, the Rectangle shape type emits a light output based on custom X and Y axis values.Note: Shadows are currently not supported for Line or Rectangle light shape types.As an added tip, using the Light Explorer allows you to easily manage any type of Light within your project. You can modify values, change the type of Lights and even manipulate Shadow types without the need to locate them in the scene. Reflection Probes, Light Probes and Static Emissives can additionally be managed through this window.To access the Light Explorer, navigate to Window > General > Light Explorer:Volume Settings allow you to visually alter your environment preferences, adjusting elements such as your Visual Environment, Procedural Sky and HD shadow settings. This also enables you to create custom volume profiles and switch between them.Volume Settings are managed by creating a GameObject and adding the Volume component. This workflow is similar to the one for creating a volume for the Post-Processing Stack v2. In HDRP, there will be one present within the hierarchy by default.HD Shadow SettingsThe HD shadow settings allow you to determine the overall quality of the Shadows in a Volume. The Max Distance field calculates the quality of the Shadows based on the distance of the Camera from the Shadow.Visual EnvironmentYou have two drop-down menus within Visual Environment.Sky Type provides three options: Procedural Sky, Gradient Sky and HDRI Sky.The Procedural sky produces an environment based on the values you choose within the procedural sky component.HDRI Sky constructs an environment map based on an image set within the Component. By default, the HDRISky Component is not assigned to the Volume Settings, by clicking “Add component overrides...” at the bottom of the Inspector tab and selecting “HDRI Sky”, the component will become available.Now you can assign an HDRI Sky Cubemap and alter the values to achieve accurate, real-world lighting.Unity HDRI Pack is available on the Asset Store for free from Unity Technologies and provides 7 pre-converted (1024x2014 resolution) HDR Cubemaps ready for use within your project.For this Scene, “TreasureIslandWhiteBalancedNoSun” from the Unity HDRI Pack worked best as it supplied enough light to brighten up the kitchen, but not wash it out. Of course, with the modifiers supplied within the Component such as Exposure and Multiplier, brightness can be altered and adjusted. It's important to pick a HDRI map that complements your Scene.Finally, Fog Type gives you 3 options, Linear, Exponential and Volumetric. In order to determine the values, repeat the previous component step ( “Add Component Override”, apply the relevant component to the Inspector)Before the introduction of the HDRP, creating a glass Material was not an easy endeavor. There was no simple way to construct a realistic glass Material without extensive research and shader programming or resorting to the Asset Store to use a custom shader.Now with the new features of the HDRP Lit Shader available in the Material Inspector, you can create glass which not only looks great but refracts light based on definable settings.To start, we want to create a new HDRenderPipeline/Lit Material. This is the default Material shader applied to any new Material created in HDRP.To create a new Material, right-click within the preferred folder, and choose Create -> Material. The Material Inspector will now show the brand new HDRP Material Inspector. In it, there are a few noticeable changes. Let’s review them.Here you can start to determine the surface of the Material.Surface TypeThere are two options for the surface type, Opaque or Transparent. Opaque simulates a completely solid Material, with no light penetration.In contrast, Transparent is an alpha blend and simulates a translucent surface, although useful, this type of surface is more costly to render.An important feature of HDRP is unified lighting across both transparent and opaque objects.Select Transparent for this example. This will provide access to parameters discussed later below.Double SidedThis preference allows the Material to be rendered on both sides. By default, the Normal Mode is set to Mirror, but within the drop-down, we can select Flip or None.If Double sided isn't active, Unity will only render the sides of the Material facing the cameras direction.The Material type options create new behaviors that allow for even more realistic Materials. Each of these options provide additional parameters within the Inspector once activated.StandardUses the basic parameters and is the default Material type.Subsurface Scattering (SSS)Subsurface Scattering works by simulating how light interacts and penetrates translucent objects such as plants. It is also in used in rendering skin. If you have ever shined a light through the tip of your finger, You will have seen that the light changes color as it is scattered under the surface. This can be replicated using this Surface Type.Once activated, a Transmission parameter will appear. Using this, you can determine the translucency of an object by using a Thickness Map.Both of these features can be manipulated by using Diffusion Profiles. Two default profiles called Skin and Foliage are provided and can be used as a basis for these type of SSS Materials. An additional 13 profiles can be customised using the profile settings shown below.For a brief video demonstration, check out my Unity tip on SSS:I have always shied away from Subsurface Scattering (SSS) as it always sounded complicated!! ?



With HD RP, SSS has 2 preset profiles, as well as 13 other profiles which can be customised and add additional depth to any Material.



See below for a simple video demo ?#unitytips pic.twitter.com/NM4Z03l1U1



— Kieran Colenutt Unity (@kierancolenutt) August 28, 2018AnisotropyAnisotropy simulates a surface material which changes properties depending on its orientation, for example, mimicking the look of brushed aluminum. Instead of creating a metallic surface that has clean, neat reflections, using both a Tangent and Anisotropy Maps, you can alter the intensity of the reflections, as well as the orientation.IridescenceProvides the parameters to create an iridescent effect on the surface of the Material, similar to how light appears on an oil spill. The output is determined by an Iridescence Map and Iridescence Layer Thickness Map.Specular ColorA Specular color is used to control the color and strength of specular reflections in the material. This makes it possible to have a specular reflections of a different color other than the diffuse reflection..TranslucentThe Translucent Option can be extremely effective at simulating light interaction for vegetation. This Material type uses profiles, similar to SSS except in this case the thickness map is used to determine how light is transmitted.This useful parameter easily enables the Material to respond to a decal Material, this works for both workflows, either through the Decal Projector or as an object component.Base Color + OpacityAt this point the Glass Material will still appear opaque, this is because you need to change the value of the opacity within Inputs to allow light to penetrate.To do this, open the color swatch window next to “Base Color + Opacity”.Red, Green and Blue channels are used as a base color and an alpha channel determines the opacity. The opacity of the current Material is determined from a value of 0 to 255, 255 is fully opaque, 0 is fully transparent. For this example, we want to set the color of the Material to a light green.We want set the Opacity to 30 as this will alter the Material so it is mostly transparent.Below are the color values I used:RGB Values:R - 201G - 255B - 211Hexadecimal Value - C9FFD3The important thing to remember is that even if you set the alpha of the Material to a low numerical value but keep the surface type set to Opaque, the Material will not be transparent and will retain its opacity.Metallic and SmoothnessThese options can be altered on a slider with values from 0 to 1. Both of the values and outputs are generated from the Mask Maps Alpha and Red Channel below in the Inspector. When a Mask Map is assigned, the sliders are subsequently used to remap the Minimum and Maximum values.Normal MapWith a Normal Map applied, the strength can be modified when adjusting the parameter slider within a range of 0 to 2You could add additional detail and depth to your glass Material by applying a Normal, such as indentation or scratches.Mask MapWithin HDRP, a Mask Map is a combination of:Red Channel - Metallic ranging from 0 to 1
Green Channel - Ambient Occlusion
Blue Channel - Detail Map Mask
Alpha Channel - SmoothnessBy default, textures imported into Unity use sRGB. Within the Texture Inspector, un-checking “sRGB (Color Texture)” converts the texture to using a Linear Format. As the Mask Map uses Mathematics to generate an output, this texture must be linear.Coat Mask
The Coat Mask simulates a clear coat effect on the Material, increasing the smoothness along with it. By Default, the Coat Mask value is set to 0, but the slider can adjust the parameter within a range of 0 to 1. The clear coat mask can be used to mimic Materials such as car paint or plastics.
Detail Inputs
The Detail Map is a new map introduced into HDRP and an amalgamation of additional maps which add minute detail to the Material. The Detail Map uses the following channels:
Red: Grayscale using Overlay Blending
Green: Normal Map Y channel
Blue: Smoothness
Alpha: Normal Map X channelBy modifying the Transparency Input properties of the shader, you can start to determine the overall transparent effect. The Transparency Inputs only become available once the Surface Type is set to Transparent.For this example, the following section will enable you to create the refraction for the glass Material.Refraction ModelThe Refraction Model defines how the bending of light through the Material will be simulated. There are two options, Plane and Sphere.Choosing the Refraction model depends on the shape and size of the object that the Material is being applied to:Sphere: For filled objects, use a Sphere model with a Refraction thickness comparative to the size of the object the Material is placed on.Plane: For an empty object, use a Plane mode with a small Refraction thickness.The Index of Refraction and Refraction Thickness options allow you to control the behavior of the refraction model.Index of RefractionRanging on a scale of 1 to 2.5, adjusting the parameter will provide a different refraction intensity. By default, the value is set to 1, which generates no refraction.Between 1.1 and 1.2 is where the refraction flips and the environment seen through the Material appears upside down.Now that the base of the glass Material has been made, custom adjustments can be added to assemble a Material that will work best for you and for the object the Material is being applied to.I hope this overview has helped you to better understand how to practically apply HDRP within your projects! While it’s still in an experimental preview, we have some preliminary documentation on GitHub that you can also read to get started.HDRP is an ever-growing, exciting new tool for creating projects and I just can’t wait to see what you’re going to make with it. Feel free to contact me on Twitter @kierancolenutt for any question or queries. I want to hear about your experiences, let me know how is it going!To follow and discuss the development of HDRP and SRP in general, join our experimental graphics forum.]]></description><link>https://unity.com/blog/engine-platform/high-definition-render-pipeline-getting-started-guide-for-artists</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/high-definition-render-pipeline-getting-started-guide-for-artists</guid><pubDate>Mon, 24 Sep 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[WebAssembly load times and performance]]></title><description><![CDATA[A few weeks ago we talked about WebAssembly and its advantages over asm.js. As promised, now it’s time to look at the performance and load times of Unity WebGL in four major browsers.It’s been a long time since we ran the Unity WebGL benchmark and published our findings. During this time, both Unity and the browser vendors released many new versions, added support for WebAssembly and implemented post-launch optimizations, especially during the past year or so.On the Unity side, that means many changes have gone into the engine, both new features and optimizations, as well as WebGL2.0 graphics API support and an updated emscripten.What to expect then? Given what we mentioned in the WebAssembly blog post, we expect Unity WebGL to perform better and load faster compared to the last time we ran the Benchmark using asm.js.We rebuilt the Benchmark project with Unity 2018.2.5f1 using the following Unity WebGL Player Settings:On WebAssembly, we take advantage of the automatic Heap growth feature described in the Wasm blog post, so we set the Memory Size to the minimum value. To measure asm.js we made a different build with a fixed Memory Size of 512 MB, which will be enough to run the benchmark. We changed linker target accordingly.We tested four major browsers: Firefox 61, Chrome 70, Safari 11.1.2 and Edge 17. These are the latest stable releases at the time of writing this post, the only exception is Chrome 70 which is due to be released next month, containing a performance regression fix. We should mention that Firefox 62 also regressed in performance compared to Firefox 61 and we reported the issue to Mozilla.Contrary to the last round of performance tests, we only tested desktop 64-bit browsers, for consistency of the results, and we used newer OS/HW:Windows 10 - Intel Xeon W-2145, 32GB RAM, NVIDIA 1080macOS 10.13.6 - 2018 MacBook Pro 15”, Radeon Pro 560XTo run the Benchmark on your machine, use this link (or as a zip). Note that depending on the browser version and os/hw you are testing on, performance may vary. On Windows, make sure to use a 64-bit browser.Note that there is nothing preventing you from running the benchmark on your own mobile device (The alert box about Unity WebGL not supported on mobile devices has been disabled in this build).One thing that changed since last time is that since Unity 5.6, Unity WebGL generates several unityweb files (Code, Data and JS Framework) that will be downloaded on startup, or fetched from browser IndexedDB cache when loading the same content again. This works pretty much the same in both WebAssembly and asm.js, however, you can expect loading Wasm code to be faster for the simple reason that the generated Wasm code is smaller. The Benchmark project outputs 4.6 MB compressed Wasm code as opposed to 6.1 MB for the asm.js version (data file is 5.6 MB and JS Framework file is ~87 KB).Since network latency can affect the results, we measured Benchmark reloads (so that code and data were already in cache), and we served the build files locally. In addition, to speed up unityweb files load from IndexedDB, we changed cacheControl setting to immutable (default is must-revalidate). Here is how you can do the same for your own project html template:var instance = UnityLoader.instantiate("gameContainer", "%UNITY_WEBGL_BUILD_URL%", {
	onProgress: UnityProgress,
	Module : {
	  cacheControl: {"default": "immutable"},
	}
}
This technique works well combined with Name Files As Hashes setting which makes Unity generate unique filenames.First, we are going to look at the total amount of time it takes to get to the main screen for both WebAssembly and asm.js (lower is better):Findings:Firefox is blazingly fast to load on both Windows and macOSBoth Chrome and Edge load massively faster when using WebAssemblyAll browsers, except Safari, load faster with WebAssembly compared to asm.js.Now let’s dive into the numbers that are relevant to WebAssembly. We are going to measure:WebAssembly Instantiation: WebAssembly compilation and instantiation.Engine Initialization: Unity engine initialization and first scene load.Time to Screen: time it takes to render first frame.Time to Interactive: time it takes to load and have a stable frame-rate.Again, we are reloading the Benchmark so the unityweb files can be fetched from IndexedDB cache:Findings:Firefox is the fastest overall on both Windows and MacEdge performs really well. It’s interesting to see that it compiles Wasm really quickly (even faster than Firefox) but then is a bit slower to initialize Unity (Engine Initialization).As we can see, all browsers are faster to load when using WebAssembly compared to asm.js, but where does this improvement come from?This is mainly due to the fact that they implemented a tiered compilation for WebAssembly. This means that the browser will now perform a very quick compilation pass at startup, then optimize hot functions later on.Firefox shipped a tiered compiler with Firefox 58, back in January. Whereas Chrome shipped their new Liftoff compiler with Chrome 69. To give you a bit of perspective on this approach, let's see what difference it makes in Chrome:As we can see, the increase in engine initialization time is negligible, but the speed up in WebAssembly Instantiation is massive. This is great news since load times are critical for the web!For more information about the tiering systems in browsers, check these blog posts:Firefox’s new streaming and tiering compilerWebKit’s Assembling WebAssemblyChrome’s LiftOffBear in mind that the Benchmark project doesn’t use a lot of assets and uses a small number of scripts. Both code and data files are relatively small, but real-world projects might result in larger builds which will impact the end-user's experience.Although loading times from cache are pretty fast now, don't forget that you should still optimize your build size, so that first load time is reasonable. There won't be a second load if the user drops-off while your content is loaded the first time!We recommend checking the Optimizing Binary Deployment Size Unite Berlin talk, as well as the Building and running a WebGL project manual page.Among the things that can also affect load times are shader compilation and audio decoding, so try to minimize that. The complexity of your shaders, as well as audio assets in your build can also lead to slower loading.As explained in the first blog post, the benchmark consists of a collection of scenes that stress different parts of the Unity engine and produces a score based on the number of iterations that can be performed in a limited amount of time.Last time, Firefox outperformed the other browsers. Let’s see what changed.Here is an overview of total scores using WebAssembly and asm.js (higher scores are better):Findings:All browsers perform better when using WebAssemblyOn Windows, all browsers perform very similarlyOn macOS, Firefox outperforms all other browsers. Notice that even the asm.js implementation is faster than other browsers WebAssembly implementation.Safari is the browser that benefits the most by WebAssembly since it doesn’t support asm.js optimizations.Now, let’s take a look a the Individual Benchmark scores (scaled so that Chrome equals to 1):Firefox is the fastest browser in nearly all benchmark scenes and excels in a few individual tests. However, if you measure Firefox 62, it will not perform as well because of the performance regression mentioned earlier, but we expect this problem to be fixed soon.Note that WebGL2.0, a feature we haven’t benchmarked with before, is enabled by default in the build we used. So Chrome and Firefox use WebGL2.0, whereas Edge and Safari still use WebGL1.0. Having said that, we tried to disable it so that all browsers would use the same graphics API, but that didn't seem to affect the results.Outside of the context of a simple demo project, however, WebGL2.0 will result in reduced GC pressure and frame-rate will therefore be more stable.For more information about performance in Unity WebGL, please check the WebGL performance considerations page in the manual.The main takeaway is that today modern browsers load faster and perform better thanks to WebAssembly and that you can expect a more consistent user experience for your web content compared to asm.js. Having said that, we still recommend that you optimize your projects and test it on different browsers and os/hw.In the future, we might update the benchmark project again so that it also stresses other areas, like ECS and the C# Job System as well as test with WebAssembly streaming instantiation/compilation and the upcoming multi-threading support.We're looking forward to hearing your feedback on the Unity WebGL Forum.]]></description><link>https://unity.com/blog/engine-platform/webassembly-load-times-and-performance</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/webassembly-load-times-and-performance</guid><pubDate>Mon, 17 Sep 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Extending Timeline: A practical guide]]></title><description><![CDATA[Unity launched Timeline along with Unity 2017.1 and since then, we have received a lot of feedback about it. After talking with many developers and responding to users on the forums, we realized how many of you want to use Timeline for more than as a simple sequencing tool. I have already delivered a couple of talks about this (for instance, at Unite Austin 2017) on how to use Timeline for non-conventional uses. Timeline was designed with extensibility as a main goal from the beginning; the team which designed the feature always had in mind that users would want to create their own clips and tracks in addition to the built-in ones. As such, there are a lot of questions about scripting with Timeline. The system on which Timeline is built upon is powerful, but it can be difficult to work with for the non-initiated.But first, what’s Timeline? It is a linear editing tool to sequence different elements: animation clips, music, sound effects, camera shots, particle effects, and even other Timelines. In essence, it is very similar to tools such as Premiere®, After Effects®, or Final Cut®, with the difference that it is engineered for real-time playback.For a more in-depth look at the basics of Timeline, I advise you to visit the Timeline documentation section of the Unity Manual, since I will make extensive use of those concepts.Timeline is implemented on top of the Playables API.It is a set of powerful APIs that allows you to read and mix multiple data sources (animation, audio and more) and play them through an output. This system offers precise programmatic control, it has a low overhead and is tuned for performance. Incidentally, it’s the same framework behind the state machine that drives the Animator Component, and if you have programmed for the Animator you will probably see some familiar concepts.Basically, when a Timeline begins playing, a graph is built composed of nodes called Playables. They are organised in a tree-like structure called the PlayableGraph.Note: If you want to visualise the tree of any PlayableGraph in the scene (Animators, Timelines, etc.) you can download a tool called PlayableGraph Visualizer. This post uses it to visualize the graphs for the different custom clips. I will now go through three simple examples that will show you how to extend Timeline. In order to lay the groundwork, I will begin with the easiest way to add a script in Timeline. Then, more concepts will be added gradually to make use of most of the functionalities.I have packaged a small demo project with all of the examples used in this post. Feel free to download it to follow along. Otherwise, you can enjoy the post on its own.Note: For the assets, I have used prefixes to differentiate the classes in each example (“Simple_”, “Track_”, “Mixer_”, etc.). In the code below, these prefixes are omitted for the sake of readability.This first example is very simple: the goal is to change the color and intensity of a Light component with a custom clip. To create a custom clip, you need two scripts:One for the data: inheriting from PlayableAssetOne for the logic: inheriting from PlayableBehaviourA core tenet of the Playable API is the separation of logic and data. This is why you will need to first create a PlayableBehaviour, in which you will write what you want to do, like so:What’s going on here? First, there is information about which properties of the Light you want to change. Also, PlayableBehaviour has a method named ProcessFrame that you can override.ProcessFrame is called on each update. In that method, you can set the Light’s properties. Here’s the list of methods you can override in PlayableBehaviour. Then, you create a PlayableAsset for the custom clip:A PlayableAsset has two purposes. First, it contains clip data, as it is serialized within the Timeline asset itself. Second, it builds the PlayableBehaviour that will end up in the Playable graph.Look at the first line:This creates a new Playable and attaches a LightControlBehaviour, our custom behaviour, to it. You can then set the light properties on the PlayableBehaviour.What about the ExposedReference? Since a PlayableAsset is an asset, it is not possible to refer directly to an object in a scene. An ExposedReference then acts as a promise that, when CreatePlayable is called, an object will be resolved.Now you can add a Playable Track in the timeline, and add the custom clip by right-clicking on that new track. Assign a Light component to the clip to see the result.In this scenario, the built-in Playable Track is a generic track that can accept these simple Playable clips such as the one you just created. For more complex situations, you will need to host the clips on a dedicated track.One caveat of the first example is that each time you add your custom clip, you need to assign a Light component to each one of your clips, which can be tedious if you have a lot of them. You can solve this by using a track’s bound object.A track can have an object or a component bound to it, which means that each clip on the track can then operate on the bound object directly. This is very common behaviour and in fact it’s how the Animation, Activation, and Cinemachine tracks work.If you want to modify the properties of a Light with multiple clips, you can create a custom track which asks for a Light component as a bound object. To create a custom track, you need another script that extends TrackAsset:There are two attributes here:TrackClipType specifies which PlayableAsset type the track will accept. In this case, you will specify the custom LightControlAsset.TrackBindingType specifies which type of binding the track will ask for (it can be a GameObject, a Component, or an Asset). In this case, you want a Light component.You also need to slightly modify the PlayableAsset and PlayableBehaviour in order to make them work with a track. For reference, I have commented-out the lines that you don’t need anymore.The PlayableBehaviour doesn’t need a Light variable now. In this case, the method ProcessFrame provides the track’s bound object directly. All that you need is to cast the object to the appropriate type. That’s neat!The PlayableAsset doesn’t need to hold an ExposedReference for a Light component anymore. The reference will be managed by the track and given directly to the PlayableBehaviour.In our timeline, we can add a LightControl track and bind a Light to it. Now, each clip we add to that track will operate on the Light component that is bound to the track.If you use the Graph Visualizer to display this graph, it looks something like this:As expected, you see the clips on the right side as 5 blocks that feed into one. You can think of the one box as the track. Then, everything goes into the Timeline: the purple box.Note: The pink box called “Playable” is actually a courtesy mixer Playable that Unity creates for you. That’s why it’s the same colour as the clips. What is a mixer? I'll talk about mixers in the next example.Timeline supports overlapping clips to create blending, or crossfading, between them. Custom clips also support blending. To enable it though, you need to create a mixer that accesses the data from all of the clips and blends it.A mixer derives from PlayableBehaviour, just like the LightControlBehaviour you used earlier. In fact, you still use the ProcessFrame function. The key difference is that this Playable is explicitly declared as a mixer by the track script, by overriding the function CreateTrackMixer.The LightControlTrack script now looks like this:When the Playable Graph for this track is created, it will also create a new behaviour (the mixer), and connect it to all of the clips on the track.You also want to move the logic from the PlayableBehaviour to the mixer. As such, the PlayableBehaviour will now look quite empty:It basically only contains the data that will come from the PlayableAsset at runtime. The mixer, on the other hand, will have all of the logic in its ProcessFrame function:Mixers have access to all of the clips present on a track. In this case you need to read the values of intensity and color of all the clips currently participating in the blend, so you need to iterate through them with a for loop. On each cycle, you access the inputs (GetInput(i)) and build up the final values using the weight of each clip (GetInputWeight(i)) to obtain how much that clip is contributing to the blend.So, imagine you have two clips blending: one is contributing red and the other is contributing white. When the blend is a quarter of the way through, the color is 0.25 * Color.red + 0.75 * Color.white, which results in a slightly faded red.Once the loop is over, you apply the totals to the bound Light component. This lets you create something like this:You can see now that the red box is exactly the mixer Playable that you programmed, and on which you now have full control. This is in contrast with the Example 2 above, where the mixer was the default one provided by Unity.Also notice that because the graph is in the middle of a blend, the green boxes 2 and 3 both have a bright line connecting to the mixer, indicating that their weight is somewhat like 0.5 each.Keep in mind that whenever you implement blends in a mixer, it’s up to you to decide what the logic is. Blending two colors is easy, but what happens when you’re blending (wild example) two clips which represent different AI states in your AI system? Two lines of dialogue in your UI? How do you blend two static poses in a stop-motion animation? Maybe your blend is not continuous, but it’s “stepped” (so the poses morph into each other, but in discrete increments: 0, 0.25, 0.5, 0.75, 1).With this powerful system at your disposal, the scenarios are exciting and endless!As a final step in this guide, let’s go back to the previous example and implement a different way of moving data around using something we refer to as “templates”. One big advantage of this pattern is that it lets you keyframe the properties of the template, making it possible to create animations for custom clips directly on the Timeline.In the previous example, you had a reference to the Light component, the color and the intensity on both the PlayableAsset and the PlayableBehaviour. The data was set-up on the PlayableAsset in the Inspector, then at runtime it was copied into the PlayableBehaviour when creating the graph.This is a valid way of doing things, but it duplicates the data which then needs to be kept in sync at all times. This can easily lead to mistakes. Instead, you can use the concept of a PlayableBehaviour “template”, by creating a reference to it in the PlayableAsset.So, first, rewrite your LightControlAsset like this:The LightControlAsset now only has a reference to the LightControlBehaviour rather than the values themselves. It’s even less code than before!Leave the LightControlBehaviour unchanged:The reference to the template now automatically produces this Inspector when you select the clip in the Timeline:Once you have this script in place, you are ready to animate. Notice that if you create a new clip, you will see a circular red button on the Track Header. This means that the clip can now be keyframed without needing to add an Animator to it. You just click the red button, select the clip, position the playhead where you want to create a key, and change the value of that property.You can also expand the Curves view by clicking on the white box button, to see the curves created by the keyframes:There’s one extra perk: you can double-click on the Timeline clip, and Unity will open the Animation panel and link it to Timeline. You will noticed they are linked when this button shows up:When this happens, you can scrub on both the Timeline and the Animation window and the playheads will be kept in sync, so you have full control over your keyframes. You can now modify your animation in the Animation window to work on the keyframes in a more comfortable environment:In this view, you can use the full power of animation curves and the dopesheet to really refine the animations of your custom clips.Note: When you animate things this way, you are creating Animation Clips. You can find them under the Timeline asset:I hope this post was a valuable introduction to the endless possibilities that Timeline can offer when you take it to the next level with scripting.Please ping me on Twitter with your questions, feedback, and your Timeline creations!]]></description><link>https://unity.com/blog/engine-platform/extending-timeline-practical-guide</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/extending-timeline-practical-guide</guid><pubDate>Wed, 05 Sep 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Animation C# Jobs]]></title><description><![CDATA[In Unity 2018.2, the Animation C# Jobs feature extends the animation Playables with the C# Job System released with 2018.1. It gives you the freedom to create original solutions when implementing your animation system, and improve performance with safe multithreaded code at the same time. Animation C# Jobs is a low-level API that requires a solid understanding of the Playable API. It’s therefore aimed at developers who are interested in extending the Unity animation system beyond its out-of-the-box capabilities. If that sounds like you, read on to find out when is it a good idea to use it and how to get the most out of it!With Animation C# Jobs, you can write C# code that will be invoked at user-defined places in the PlayableGraph, and thanks to the C# Job System, the users can harness the power of modern multicore hardware. For projects which see a significant cost in C# scripts on the main thread, some of the animation tasks can be parallelized. This unlocks valuable performance gains. The user made C# scripts can modify the animation stream that flows through the PlayableGraph.New Playable node: AnimationScriptPlayableControl the animation data stream in the PlayableGraphMultithreaded C# codeThe Animation C# Jobs is still an experimental feature (living in UnityEngine.Experimental.Animations). The API might change a bit over time, depending on your feedback. Please join the discussion on our Animation Forum!So, say, you want to have a foot-locking feature for your brand new dragon character. You could code that with a regular MonoBehaviour, but all the code would be run in the main thread, and not until the animation pass is over. With the Animation C# Jobs, you can write your algorithm and use it directly in a custom Playable node in your PlayableGraph, and the code will run during PlayableGraph processing, in a separate thread.Or, if you didn’t want to animate the tail of your dragon, the Animation C# Jobs would be the perfect tool for setting up the ability to procedurally compute this movement.Animation C# Jobs also gives you the ability to write a super-specific LookAt algorithm that would allow you to target the 10 bones in your dragon’s neck, for example.Another great example would be making your own animation mixer. Let’s say you have something very specific that you need - a node that takes positions from one input, rotations from another, scales from a third node, and mixes them all together into a single animation stream - Animation C# Jobs gives you the ability to get creative and build for your specific needs.Before getting into the meaty details of how to use the Animation C# Jobs API, let’s take a look at some examples that showcase what is possible to do with this feature.All the examples are available on our Animation Jobs Samples GitHub page. To install it you can either git clone it or download the latest release. Once installed, the examples have their own scenes which are all located in the “Scenes” directory:The LookAt is a very simple example that orients a bone (also called a joint) toward an effector. In the example below, you can see how it works on a quadruped from our 3D Game Kit package.The TwoBoneIK implements a simple two-bone IK algorithm that can be applied to three consecutive joints (e.g. a human arm or leg). The character in this demo is made with a generic humanoid avatar.The FullbodyIK example shows how to modify values in a humanoid avatar (e.g. goals, hints, look-at, body rotation, etc.). This example, in particular, uses the human implementation of the animation stream.The Damping example implements a damping algorithm that can be applied to an animal tail or a human ponytail. It illustrates how to generate a procedural animation.The SimpleMixer is a sort of “Hello, world!” of animation mixers. It takes two input streams (e.g. animation clips) and mixes them together based on a blending value, exactly like an AnimationMixerPlayable would do.The WeigthedMaskMixer example is a bit more advanced animation mixer. It takes two input streams and mixes them together based on a weight mask that defines how to blend each and every joint. For example, you can play a classic idle animation and take just the animation of the arms from another animation clip. Or you can smooth the blend of an upper-body animation by applying successively higher weights on the spine bones.The Animation C# Jobs feature is powered by the Playable API. It comes with three new structs: AnimationScriptPlayable, IAnimationJob, and AnimationStream.The AnimationScriptPlayable is a new animation Playable which, like any other Playable, can be added anywhere in a PlayableGraph. The interesting thing about it is that it contains an animation job and acts as a proxy between the PlayableGraph and the job. The job is a user-defined struct that implements IAnimationJob.A regular job processes the Playable inputs streams and mixes the result in its stream. The animation process is separated in two passes and each pass has its own callback in IPlayableJob:ProcessRootMotion handles the root transform motion, it is always called before ProcessAnimation and it determines if ProcessAnimation should be called (it depends on the Animator culling mode);ProcessAnimation is for everything else that is not the root motion.The example below is like the “Hello, world!” of Animation C# Jobs. It does nothing at all, but it allows us to see how to create an AnimationScriptPlayable with an animation job:using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Animations;
using UnityEngine.Experimental.Animations;


public struct AnimationJob : IAnimationJob
{
    public void ProcessRootMotion(AnimationStream stream)
    {
    }

    public void ProcessAnimation(AnimationStream stream)
    {
    }
}

[RequireComponent(typeof(Animator))]
public class AnimationScriptExample : MonoBehaviour
{
    PlayableGraph m_Graph;
    AnimationScriptPlayable m_ScriptPlayable;

    void OnEnable()
    {
        // Create the graph.
        m_Graph = PlayableGraph.Create("AnimationScriptExample");

        // Create the animation job and its playable.
        var animationJob = new AnimationJob();
        m_ScriptPlayable = AnimationScriptPlayable.Create(m_Graph, animationJob);

        // Create the output and link it to the playable.
        var output = AnimationPlayableOutput.Create(m_Graph, "Output", GetComponent<Animator>());
        output.SetSourcePlayable(m_ScriptPlayable);
    }

    void OnDisable()
    {
        m_Graph.Destroy();
    }
}The stream passed as a parameter of the IAnimationJob methods is the one you will be working on during each processing pass.By default, all the AnimationScriptPlayable inputs are processed. In the case of only one input (a.k.a. a post-process job), this stream will contain the result of the processed input. In the case of multiple inputs (a.k.a. a mix job), it’s preferable to process the inputs manually. To do so, the method AnimationScriptPlayable.SetProcessInputs(bool) will enable or disable the processing passes on the inputs. To trigger the processing of an input and acquire the resulting stream in manual mode, call AnimationStream.GetInputStream().The AnimationStream gives you access to the data that flows through the graph from one playable to another. It gives access to all the values animated by the Animator componentpublic struct AnimationStream
{
    public bool isValid { get; }
    public float deltaTime { get; }

    public Vector3 velocity { get; set; }
    public Vector3 angularVelocity { get; set; }

    public Vector3 rootMotionPosition { get; }
    public Quaternion rootMotionRotation { get; }

    public bool isHumanStream { get; }
    public AnimationHumanStream AsHuman();

    public int inputStreamCount { get; }
    public AnimationStream GetInputStream(int index);
}It isn’t possible to have a direct access to the stream data since the same data can be at a different offset in the stream from one frame to the other (for example, by adding or removing an AnimationClip in the graph). The data may have moved, or may not exist anymore in the stream. To ensure the safety and validity of those accesses, we’re introducing two sets of handles: the stream and the scene handles, which each have a transform and a component property handle.The stream handles manage, in a safe way, all the accesses to the AnimationStream data. If an error occurs the system throws a C# exception. There are two types of stream handles: TransformStreamHandle and PropertyStreamHandle.The TransformStreamHandle manages Transform and takes care of the transform hierarchy. That means you can change the local or global transform position in the stream, and future position requests will give predictable results.The PropertyStreamHandle manages all other properties that the system can animate and find on the other components. For instance, it can be used to read, or write, the value of the Light.m_Intensity property.public struct TransformStreamHandle
{
    public bool IsValid(AnimationStream stream);
    public bool IsResolved(AnimationStream stream);
    public void Resolve(AnimationStream stream);

    public void SetLocalPosition(AnimationStream stream, Vector3 position);
    public Vector3 GetLocalPosition(AnimationStream stream);

    public void SetLocalRotation(AnimationStream stream, Quaternion rotation);
    public Quaternion GetLocalRotation(AnimationStream stream);

    public void SetLocalScale(AnimationStream stream, Vector3 scale);
    public Vector3 GetLocalScale(AnimationStream stream);

    public void SetPosition(AnimationStream stream, Vector3 position);
    public Vector3 GetPosition(AnimationStream stream);

    public void SetRotation(AnimationStream stream, Quaternion rotation);
    public Quaternion GetRotation(AnimationStream stream);
}

public struct PropertyStreamHandle
{
    public bool IsValid(AnimationStream stream);
    public bool IsResolved(AnimationStream stream);
    public void Resolve(AnimationStream stream);

    public void SetFloat(AnimationStream stream, float value);
    public float GetFloat(AnimationStream stream);

    public void SetInt(AnimationStream stream, int value);
    public int GetInt(AnimationStream stream);

    public void SetBool(AnimationStream stream, bool value);
    public bool GetBool(AnimationStream stream);
}The scene handles are another form of safe access to any values, but from the scene rather than from the AnimationStream. As for the stream handles, there are two types of scene handles: TransformSceneHandle and PropertySceneHandle.A concrete usage of a scene handle is to implement an effector for a foot IK. The IK effector is usually a GameObject not animated by an Animator, and therefore external to the transforms modified by the animation clips in the PlayableGraph. The job needs to know the global position of the IK effector in order to calculate the desired position of the foot. Thus the IK effector is accessed through a scene handle, while stream handles are used for the leg bones.public struct TransformSceneHandle
{
    public bool IsValid(AnimationStream stream);

    public void SetLocalPosition(AnimationStream stream, Vector3 position);
    public Vector3 GetLocalPosition(AnimationStream stream);

    public void SetLocalRotation(AnimationStream stream, Quaternion rotation);
    public Quaternion GetLocalRotation(AnimationStream stream);

    public void SetLocalScale(AnimationStream stream, Vector3 scale);
    public Vector3 GetLocalScale(AnimationStream stream);

    public void SetPosition(AnimationStream stream, Vector3 position);
    public Vector3 GetPosition(AnimationStream stream);

    public void SetRotation(AnimationStream stream, Quaternion rotation);
    public Quaternion GetRotation(AnimationStream stream);
}

public struct PropertySceneHandle
{
    public bool IsValid(AnimationStream stream);
    public bool IsResolved(AnimationStream stream);
    public void Resolve(AnimationStream stream);

    public void SetFloat(AnimationStream stream, float value);
    public float GetFloat(AnimationStream stream);

    public void SetInt(AnimationStream stream, int value);
    public int GetInt(AnimationStream stream);

    public void SetBool(AnimationStream stream, bool value);
    public bool GetBool(AnimationStream stream);
}The last piece is the AnimationJobExtension class. It’s the glue that makes it all work. It extends the Animator to create the four handles seen above, thanks to these four methods: BindStreamTransform, BindStreamProperty, BindSceneTransform, and BindSceneProperty.public static class AnimatorJobExtensions
{
    public static TransformStreamHandle BindStreamTransform(this Animator animator, Transform transform);
    public static PropertyStreamHandle BindStreamProperty(this Animator animator, Transform transform, Type type, string property);

    public static TransformSceneHandle BindSceneTransform(this Animator animator, Transform transform);
    public static PropertySceneHandle BindSceneProperty(this Animator animator, Transform transform, Type type, string property);
}The “BindStream” methods can be used to create handles on already animated properties or for newly animated properties in the stream.API documentation:AnimationScriptPlayableIAnimationJobAnimationScriptTransformStreamHandlePropertyStreamHandleTransformSceneHandlePropertySceneHandleIf you encounter a bug, please file it using the Bug Reporter built in Unity.]]></description><link>https://unity.com/blog/engine-platform/animation-c-jobs</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/animation-c-jobs</guid><pubDate>Mon, 27 Aug 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to create retention in playable ads]]></title><description><![CDATA[In contrast to other ad formats, playable ads are unique in that they aren’t just one component in a larger user acquisition funnel - they’re a funnel in and of themselves. The goal is to push users down that funnel, getting them to progress past the ad’s tutorial all the way through to the call-to-action.This means we can break the ad experience into multiple touch points, just as you would when designing a mobile game. PlayWorks, which is ironSource’s in-house creative studio, quickly made that mental connection, understanding that we can effectively apply game design principles to ad design. The team did just that, marrying user acquisition and game design for the first time.By treating playable ads like mini-games, the PlayWorks team was able to significantly increase various metrics, including “in-ad retention rates.” That’s when having a creative team made up of game designers and developers comes in handy.Where game design and user acquisition meetThere are several parts to a playable ad: the tutorial introducing the player to the game, the gameplay itself, and the end card which displays the call-to-action (CTA). Depending on your UA campaign’s KPIs, any part can be optimized for retention. Let’s take a look.D1 retention is our S1 retentionInstead of optimizing for Day 1 (D1) retention like you would in a mobile game, we optimize for Second 1 (S1) retention in a playable ad. At S1, retention rests on making sure users understand the ad is interactive and playable. This is where short, clear copy and icons like blinking hands work best. Tell the user they need to take action. Use strong action verbs like “match,” “tap,” “strike,” etc.High S1 retention is a good indication of how well the playable ad will perform. If you set your KPI to S1 retention, it’s likely your campaign is centered around brand awareness. In other words, you want users to see your logo, associate your brand or game with a fun and enjoyable ad experience, and hope to convert them in a retargeting campaign later on. You’re measuring the initial look and feel, and first impressions of the ad.S6 retentionIn a 30 second playable ad, you don’t have much time to teach users how to play the mini-game. The user has to understand how the playable ad works in the first few seconds. That means the ‘tutorial’, which takes place in the first few seconds of the ad, must be optimized for retention.There are many tips and best practices for increasing S6 retention - for example, show hands indicating where to swipe, highlight key buttons, offer obvious hints, and provide concise and explicit instructions that are impossible to miss.At S6, you’re measuring the effectiveness of ‘onboarding’ the user into the ad. If the user doesn’t understand how to play the mini-game, they may get frustrated and close the ad. Or worse, they may continue playing the ad, install the app, and then uninstall later after realizing they don’t enjoy the game.S14 retentionHalfway through the ad, at approximately 14 seconds, the user should be completely engaged, having fully understood the tutorial. The gameplay makes up the bulk of the ad, making it one of the most important, yet most difficult sections to optimize.Just like in a mobile game, if the gameplay of a playable ad is too difficult, users will grow frustrated and move on. If it’s too easy, users might not feel like installing the app is worth their time. You need to find the sweet spot, setting the gameplay on the easy side of medium to get the best results. Guide them, but don’t give them all the answers. Keep them interested, and above all keen to come back for more.It’s also important to know your genre. We’ve noticed an interesting correlation between game genre and difficulty: users who lose hyper casual playable ads are more likely to install. This type of information will guide your optimization strategy.To still be playing the game at S14 means users have progressed through the tutorial or ‘early onboarding’ phase and are engaged within the core gameplay loop. Players at S14 are high-quality users who enjoy the gameplay, and thus are more likely to enjoy your game as well, making S14 a measure of overall playable ad enjoyment.S30 retentionBy S30, the user has completed the gameplay, reached the end card, and seen the call-to-action to install the game. This is as far as a user can get, making them the highest-quality acquired players possible. Any user who isn’t interested will have already x’d out by now. But not all players make it this far - and just because they have made it this far, doesn’t necessarily mean they’ll click through to the app store and install.In other words, quality can be very high, but scale is low, and the work of the ad is still not done. Ultimately, you still need to close the loop and entice users to click through and install. That’s what makes optimizing for S30 one of the more difficult bits of playable ad creative optimization.In addition to the copy in the call to action, the colors of the button, and the graphics, it’s important to keep difficulty level in mind here as well. Did the player win or lose? The end result significantly impacts S30 retention, as users who win are more likely to make it through S30, and eventually convert.Wrapping upWe understand that there’s no quick fix, or one-size-fit-all solution for increasing a game’s retention rates. It takes failing, optimizing, learning, and tweaking to first understand what makes your users tick, and then adapt your game design accordingly. Now, no matter the KPI, UA teams today can be sure that their playable ads perform as well as their games.Make sure you subscribe to Level Up in order to continue receiving tips from trailblazers in the gaming industry and stay updated on all things related to gaming.]]></description><link>https://unity.com/blog/create-retention-playable-ads</link><guid isPermaLink="true">https://unity.com/blog/create-retention-playable-ads</guid><pubDate>Sat, 18 Aug 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Cinemachine for 2D: Tips and tricks]]></title><description><![CDATA[Have you been working on a camera system for your 2D game for ages and wish there was something like Cinemachine for 2D? Not many people know about it, but there already is! This blog post gives you some tips for getting the best out of Cinemachine, and how this tool can benefit and speed up the development of your 2D game significantly. Keep reading to find out more about Cinemachine Virtual Cameras, Confiners and more, specifically for use in 2D games.You can get Cinemachine from our Package Manager within Unity if you are using any version greater than 2018.1.0b7.This can be done by going to Window > Package Manager > All and then selecting Cinemachine.With Cinemachine, it’s relatively easy to start creating your camera system for a 2D environment. Let’s take a look at creating a Virtual Camera for 2D.1. Create a 2D Virtual Camera by going to the menu bar and selecting Cinemachine > Create 2D Camera. This will create a Virtual Camera set up for a 2D environment. If it’s your first Virtual Camera in the scene, it will also add a Cinemachine Brain Component to your Main Camera.
 2. Drag your player from the hierarchy to the Follow target.3. Make sure that nothing is in the LookAt Target, if you have something there, select it and press backspace or delete to remove the reference.4. Adjust the Orthographic Size and Body settings to suit your needs.The main thing you will notice between a 2D Virtual Camera and a 3D Virtual Camera is the fact that we are using a Framing Transposer. This special transposer will follow a target on the camera’s X-Y plane, and stop the camera from rotating. For the framing transposer to work correctly we need to ensure that the Virtual Cameras ‘LookAt target’ is null. Another thing to note is that 2D games use an Orthographic View, when first creating your Virtual Camera you will need to change the projection to Orthographic on the Cinemachine Brain Camera of your Scene.An important thing to remember is that with Cinemachine you shouldn’t try to make one camera do everything. Instead, you can have different ‘Virtual Cameras’ around your scene and blend between them using the Cinemachine Brain. This blending can occur if the player is low health, the player has entered a certain area or any other scenario you can imagine that requires a change of Camera framing or Post Processing. You can adjust the blend settings on the Cinemachine Brain depending on how you want the visuals to be.Check out the video below to see how you can adjust your Virtual Camera during Play Mode.Another cool thing we can do with Cinemachine is to use a boundary box to confine the Virtual Camera to a certain area. This feature is available in the extension section of the Virtual Camera. Below are the steps to create this effect.1. Set up a boundary box for our level. This will be used to confine the level. This is done by:Create an empty ‘GameObject’.Add a ‘CompositeCollider2D’ to the GameObject.Set the ‘CompositeCollider2D’s Geometry Type to Polygons.Set the ‘Rigidbody’ on the GameObject to Static.Add a ‘BoxCollider2D’ to the GameObject.Adjust the ‘BoxCollider2D’ to fit your level.Set the ‘BoxCollider2D’ to be “Used by Composite”.2. Add the Confiner Extension to your Virtual Camera.3. Drag in the boundary box we created earlier, to the Bounding Shape 2D Box.4. Decide if you want the Camera to Confine to the Screen Edges, this can be adjusted with the “Confine Screen Edges” checkbox.5. Finally, we can decide if we want the Confiner to have damping. This will allow the camera to smoothly overlap with the edge of the confining collider. If you don’t want this effect - set the Damping Time to 0.See the results of this below:Video Example:Another cool feature from Cinemachine that we can use in 2D is the Group Camera. This camera allows us to create a target group for our camera to look at. A Group Camera is useful if you’re doing a cutscene where you want to show something of importance, you want to keep more than one object in each frame, or if you want to create a local multiplayer game in 2D.In Cinemachine we can do this the following way:1. Create a new 2D Virtual Camera2. Create a new GameObject in the scene
 3. Add Component > Cinemachine > ‘Cinemachine Target Group’4. Add the GameObjects that you want to focus on to the Target Group5. Drag the target group to the Virtual Cameras ‘Follow Target’ property in the Inspector.6. Adjust minimum and maximum Orthographic Size - which in camera terms defines the ‘zoom’ of the camera - to your preferred setting7. Determine the type of Group Framing you want. ‘Horizontal’ only considers the horizontal frame dimension when framing the camera. ‘Vertical’ only considers the vertical frame dimension when framing. ‘Horizontal and Vertical’ type takes both dimensions into account.A ‘Target Group’ is a Cinemachine component that allows you to view multiple targets on the same Virtual Camera. It adjusts the camera’s size to ensure that the targets are visible depending on the weight. For example, if all of the targets have a weight of 1, the target group will ensure that all targets are visible.Here’s an example of a Group Camera that focuses on the player and a chest.With Cinemachine V2.2, we’ve added in a new Impulse Extension. This extension allows users to create camera shake effects without creating any code. Impulse Extension can be added as an extension to your Virtual Camera. I’m going to walk you through how to add this to your scene:Create a 2D Virtual Camera using the Cinemachine menu option and set it up to follow our target.Click Add Extension > Cinemachine Impulse Listener.On the Impulse Listener, ensure the checkbox named ‘Use 2D Distance’ is checked.The Channel Mask allows you to filter the impulses you want to listen to. In this example, we’re going to use the default channel.Select the GameObject to send the Impulse from, in this example we’re going to use a Ball that bounces. Every time it hits the floor, it will broadcast an impulse signal on the default channel and our Impulse Listener will pick it up.Click Add Component and search ‘Cinemachine Collision Impulse Source’.Under the ‘Signal Shape’ heading, we’re going to select a Signal for the Raw Signal variable. This is a ‘NoiseSettings’ profile. We can either use the default ones or create our own.Create a new ‘NoiseSettings’ profile by clicking on the gear icon, and select ‘New Noise Setting’. Save this to your project.We can choose to have the noise affect Position and Rotation or just one of them. Because it’s for a 2D Game, we’ll affect the X and Y positions and the Z rotation. A good noise profile is unpredictable. With noise, the only thing we want to do is replicate some of nature’s randomness. We can do this by having multiple layers with different detail.If we wanted to, we could add a gain to the Frequency and Amplitude that the Noise Profile applies.Under the Spatial Range heading, we’re going to adjust the Dissipation Distance. This determines at what range we no longer feel the impulse. Set it to 25 for now.If we wanted to we could adjust the Dissipation Mode to change the decay type. There are other settings we can adjust, but for now, that’s all we need.You can see the result below:So, to summarize, we now know how to:Get Cinemachine with Package ManagerCreate a 2D Virtual CameraConfine a Virtual Camera to a 2D SpaceCompose a Virtual Camera to follow multiple targetsSet up an Impulse Module to add Camera ShakeI hope you enjoyed this blog post and now feel ready to use Cinemachine in your next 2D project! If you want to keep up to date with Cinemachine? Join in the discussion on our forum.]]></description><link>https://unity.com/blog/engine-platform/cinemachine-2d-tips-and-tricks</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/cinemachine-2d-tips-and-tricks</guid><pubDate>Tue, 17 Jul 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity Hackweek 2018: Creating X Together]]></title><description><![CDATA[When do you do your best creative work? At Unity, we know that when you’re around people you trust, in a relaxed, friendly environment, and you have a chance to deeply concentrate, interesting things happen. Add a time limit and a sense of shared purpose and you might just witness something pretty magical. That’s why we’re gathering our engineers together every year, for a week of experimentation, collaboration and overall good times that we call Unity Hackweek.The principle was simple: think of a project you want to do, find teammates, work on it for a week, present the result. What is special about the way we do Hackweek is the spirit of freedom, openness and collaboration. There’s no central planning. All of the projects that people want to work on are listed in a simple Google Sheet.To turn that wish list of projects into reality, we gathered in a small town in Denmark, around 90 minutes from Unity’s original hometown of Copenhagen. The area is facing the open sea and the huge bridge between islands of Sjælland and Fyn. It really felt like the sky was the limit.So what did everyone actually work on? Most of this year’s projects evolved around learning new things, like ECS, AR, film-making or Machine Learning, or helping fellow developers, both our own engineers and all of you creators. Some great Unity features, like IL2CPP, Progressive Lightmapper and the Profiler, started a long time ago as Hackweek projects. The vast majority of hackweek experiments don’t make it to the Unity roadmap though. The point of Unity Hackweek is to try new approaches, free from the usual quality and workflow constraints we place on Unity code.For Hackweek 2018, we’ve mixed things up a bit, and invited more than 50 external guests, mostly from partners such as Google Cloud, Nordeus and Zynga, but also some of our most enthusiastic and vocal community members. The majority of our guests were a part of our Women in Gaming initiative. All of them were free to join any teams, listen in on internal tech talks, network and share feedback.“I’ve always wanted to go to Unity Hackweek! Compared to going to a conference it’s been a lot more relaxing, very creative place to be,” says Lotte May of LotteMakesStuff. She’s been part of our ECS alpha group for a while and says that it’s been invaluable to be able to talk to the team face to face, instead of just the usual Slack channel. She was part of the “low hanging fruit” group that focused on those tiny practical improvements that we know a lot of people need, but for some reason, we haven’t implemented yet. “Touching Unity source code felt pretty magical! Even if what I made is just a proof of concept,” she says. You can read about her ListDrawerAttributes project on Twitter.Mark Mandel and Joseph Holley came to Unity Hackweek as guests from Google Cloud. You might remember that we just announced our strategic alliance with Google at Unite Berlin. Using Unity, Google Cloud platform and Multiplay hosting, their team was able to turn the Hover Racer game from last year’s Unite Austin Training Day into a multiplayer game with matchmaking in just two days. “It really helped that everyone who could answer our questions was in the same room, so we could move extremely quickly. But hopefully, this will soon be easy for anyone, thanks to our continuing collaboration!,” says Mark Mandel, Developer Advocate for Google Cloud Platform. You can learn more about what we're working on together in Mark's interview with Brett Bibby, our Vice President for Engineering, and Micah Baker, Product Manager for Gaming on Google Cloud Platform.Their project was also one of the many explorations of our new model for writing high-performance code by default, the Entity Component System (ECS). Another was “ECSCraft”, a small game with mining, crafting, and lots of data, designed to test how ECS can make a similar game run more efficiently. “Most of the team started with no knowledge of ECS, but in the end, we put together a prototype in just a few days,” says Fabrice Lété from our core engineering team who also did a presentation on ECS for everyone at the start of the week.Tove Brantberg from Ubisoft Redlynx, who’s a UI programmer in her daily work, coded the procedural generation of the environments in the project. She was a first-time guest at Hackweek, coming from Finland. “Everyone here is interested in the same thing. So even though there’s a lot of people, you can talk to anyone and you’ll have something in common. That’s such a really great feeling”.Morgan Paul (Natural Motion / Zynga), also got the introduction to ECS from Fabrice’s talk: “That absolutely helped. ECS represents a whole new way of thinking, so I had to move away from how I normally go about structuring code.” They worked together with the developers of our upcoming small runtime to explore Unity for Small things and ECS. The resulting game was just 330KB!Morgan has a 1.5 year old daughter and going away for seven days would normally present a logistical challenge for their family. For the first time this year, however, we offered a daycare at hackweek. “The standard of care here is great! This option really brings down the stress of attending a professional event when having kids,” says Morgan. The daycare also meant a lot to a couple who are both working at Unity. They didn’t have to pick who will get to go to Hackweek and who will stay home with children. Taking part in Hackweek is such a big part of being in Unity R&D that it was only natural that we got some proper professionals to look after the little ones while their parents hacked away.The daycare was also one of the things that set Unity Hackweek apart from what some might imagine a hackathon looks like. Yes, a large part of the event consisted of developers furiously drawing diagrams on whiteboards or intently staring at screens until very late in the evening. But the overall atmosphere was relaxed, and people took breaks to recharge. The weather turned out to be amazing, so swimming in the Baltic sea was an option, as well as walking on the beach, or just sitting on the grass and enjoying the view. The goal wasn’t to compete against one another; there were no winners and losers. “Well, my team is done, so I’m happy to help,” was a common sentiment on the last day.Richard Fine, from our Build team, is a veteran of four Hackweeks. “My first Hackweek, my project completely failed! I felt good about it though - Hackweek is a time for testing out risky and ambitious ideas, and if nobody fails, it means we’re not being risky enough.” This time he joined a team adding dynamic content to one of our upcoming example games. “We all learned a lot, but also have a huge list of feedback and code that the game team and the ECS team can take apart”.The basic idea of Unity Hackweek is that we all have a lot to learn from each other and can do amazing things when we get the right people together. Watching the results of all those clever experiments during one long presentation on Friday, with everyone is cheering and clapping, is incredibly inspiring. And inspired and motivated people make great game engines! Therefore, Hackweek is also our long-term investment in solving your real-world problems.If you would like to know more about working at Unity and see open positions, have a look at our Careers page.]]></description><link>https://unity.com/blog/news/unity-hackweek-2018-creating-x-together</link><guid isPermaLink="true">https://unity.com/blog/news/unity-hackweek-2018-creating-x-together</guid><pubDate>Wed, 04 Jul 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Book of the Dead:  Quixel, wind, scene building, and content optimization tricks]]></title><description><![CDATA[In this blog series, we will go over every aspect of the creation of our demo Book of the Dead. Today, we will focus on our partnership with Quixel, our wind system, scene building and content optimization tricks. This is the fourth blog in our ‘Making Of’ blog series. In case you missed it take a look back at the last three posts that go through the creative process for characters, concept art and photogrammetry assets, trees, and VFX within Book of the Dead.Hi! My name is Julien Heijmans, I work as an Environment Artist as part of the Unity Demo team. I only joined Unity last year, but I have around 7 years of experience in the video game industry. This blog post will provide you some insight into the production of Book of the Dead from my perspective, the perspective of a content creator and an environment artist.I am kind of new in the work of photogrammetry assets, but I remember clearly the day Quixel announced the creation of Megascans several years ago. Ever since, I’ve been eager to get an opportunity to work with their assets. Joining Unity’s Demo team made that happen, as I started to work on The Book of the Dead.If you want to start experimenting with the tools discussed in this blog you can download the Book of the Dead: Environment project now.Download the projectWhen I joined the project I realized that we were not only using assets from Quixel’s Megascans library, but that Unity and Quixel were partnering together for the creation of this project.During the production process, the Demo Team created a list of the assets that they would need and Quixel would capture new assets if they were missing an appropriate match in their existing library. Many of those assets were vegetation such as grass, plants, and bushes, that require proper equipment and setup to scan.Quixel did not only provide us with texture sheets for those assets, but they also created the geometry, with their LODs and vertex color setup to support our wind shader.Between the released Book of the Dead: Environment project, and the unreleased assets used in the teaser, we received over 50 assets of high quality and of complexity that would have seen us struggle to make our deadlines with the few artists we have on the team.During the production, we could get the assets pretty quickly into the engine, and looking good. We would often tweak the textures (mostly the albedo, tweaking the brightness/levels/curve and often tweaking the colors to unify them across the scene), repack them properly, tweak a bit the LODs to the level we want, assign the textures to a new HDRP Lit material, and we would be done with it.Luckily Quixel has recently released a tool, Megascans Bridge, that would do most of the importing work that we did manually. It saves time in repacking textures for HDRP and the likes.For those who are interested in more Megascans assets, here’s a reminder that there are several Megascans collections on the Unity Asset Store. All the assets are ready to be imported into a project setup with the High Definition Render Pipeline or the Lightweight Render Pipeline.The creation of a wind system for vegetation assets and its whole pipeline is always a tricky process. There are many different kinds of vegetation assets that would need to be animated in different ways; two different trees might require completely different setup and different shader complexity.For this reason, our team decided to create a custom vertex shader based procedural animation for the wind effect on our vegetation assets. We made it tailored to work with our specific project and the trees or bushes it contains. Allowing us to have a complete control over it.Torbjorn Laedre, our Tech Lead built a shader that would support several different types of vegetation, using 3 different techniques:Hierarchy Pivot, for our trees and some plants with a very defined structure/hierarchySingle Pivot, for grass, small plants and for large bush with undefined structure/hierarchyProcedural Animation, for vegetation assets where pivots cannot be predicted.The trees were the more complex assets to prepare, on the content side, they are using the Hierarchy Pivot type of animation and they rely on 3 distinct levels of hierarchy:Trunk, that rests on the ground.Branches Level A, that are connected to the trunk.Branches Level B, that are connected to the branches of Level A.The shader needs to know the level of hierarchy and the pivot of every single vertex of the tree. I first had to author the geometry of the tree itself, and then assign the level of hierarchy for every polygon of the tree using the green vertex color channel.A value of 0 for the green channel of the vertex color would signify that it is the trunkA value between 0 and 1 would be the branches level AA value of 1 would be the branches level BI did this using Autodesk Maya, with some small scripts I was able to set up all of the LODs of an asset in 10-15 minutes.In addition to this, we also used what we called a ‘Flutter Mask’. They are texture masks that would help determine where in the geometry the pivot of the branch be. We used this for the branches that used hard alpha textures for geometry. Here is an illustration of this mask.With all this information prepared, I could use the C# script that would input my tree prefab, and generate a new prefab with the pivot information of every vertex baked in. After adding a WindControl object to my scene, I can import my tree in the scene, and start playing with the material properties.You can see that each hierarchy level has a range property (basically the length of the trunk, or branches) and an elasticity property.There are also some properties to set up wind flutter animation. They add a bit of procedural noise to the vertex positions, to imitate the vibration of the branches when the wind blows on them.Last, but not least, we had to make the wind sound FX influence the wind animation. The volume of the sound is driving the wind strength of the animation. It is really surprising how a simple idea can add to the project. If you have not done it already, you should open the project and walk around. You will notice the trees and all the grass around shaking when you hear large gusts of wind hit your surroundings.When targeting the level of detail and density of a project like Book of the Dead, it was important for me to think about how I was going to structure the level, to avoid performance issues later in production. One of the things I tried to be careful about, was to limit long view distances in the scene. You can do that by placing ‘corridors’ and ‘bottlenecks’ in the layout of the scene.Those layouts, together with assets correctly set up as ‘Occluder static’ and ‘Occludee static’ flags will make Unity’s occlusion culling more efficient.This video shows the Occlusion Culling Visualization, and you can easily guess where the camera is looking at from the top view. Around the end of the video, I enable/disable the occlusion culling, and see what objects are being culled by the occlusion culling.You will also be able to see that some objects are not culled, those are mostly the really tall trees, some over 25 meters tall, that have a very large bounding box and are therefore hard to cull behind the cliffs.When the trailer was released, we saw comments that there’s no way we use the legacy terrain system. But that’s exactly what we use, and we modified the HD Render Pipeline’s Layered Lit shader to support it.The HDRP Layered Shader allows blending of layers using their heightmap texture, so the result is better than the linear blend that comes with the legacy terrain shader.This is, of course, a temporary solution, and not properly integrated in the UI. To change the terrain you will need to edit the material that is applied to it, instead of using the ‘Edit Texture’ button in the Paint Texture tab of the terrain object.If you want to create a new terrain and apply different textures on it, you will need to duplicate this TerrainLayeredLit material and assign it to your new terrain. You will also need to create those 4 textures sets in the Paint Texture tab. The textures assigned in there won’t be used for rendering the terrain, but they will allow you to paint the different layers on your terrain. It is also there that you can change the tiling properties of the different layers.Also, to be able to fully use the LODGroup feature, all of the assets placed through the terrain are setup as Trees, and not detail assets.But actually, this project has a really high amount of assets scattered on the ground: grass, bushes, plans, wooden twigs, rocks, etc. With all of this, the terrain can be fairly simple, you can see below that in this particular shot the terrain is just a simple tiling material.When you walk around the level, you will notice in places a very large amount of small twigs and pinecones scattered on the ground.Those are not really that obvious when you simply walk around the level, but they really bring the level of detail of the scene when you start looking at the ground. There are sometimes hundreds of tiny twigs on the ground, between rocks and dead trunks, just like they would eventually rest if they fell down from trees. Placing these by hand would be simply impossible, it is for this reason that Torbjorn Laedre made a tool to help us scatter those small details in the level.The twigs are simple cutout planes with an alpha material. We added physics capsule colliders to them.The script will first spawn the desired quantity of those scatter objects around a transform position, and then simulate physics for them to fall down on the ground, colliding with the terrain and all the others assets (rock, dead trunks, etc). Then, by pressing the button ‘Bake’, they will be stripped of their colliders, merged into a single object, and assigned a LODGroup with a specific distance at which they should be culled.This script is used by objects called ‘UberTreeSpawner’ in the scene, and you are free to use it as you wish.Side note about this tool: For the twigs and other scattered objects to fall properly on the ground and other assets, you will need to have quite high-density mesh colliders on all the assets in the scene. At the same time, you don’t want those heavy colliders to be used when the game is running. For this reason, most of the assets in the scene have two different colliders: One light to be used at real-time in play mode by the PlayerController with the Default Layer assigned. And one used exclusively for the physics simulation of those twigs, with the ‘GroundScatter’ Layer assigned.The Book of the Dead: Environment project is using baked indirect global illumination with real-time direct lighting.Both the indirect lighting from the sun and direct plus indirect lighting from the sky is baked into lightmaps and light probes. Reflection probes, occlusion probes and other sources of occlusion are baked as well. Direct sun contribution, on the other hand, is real-time lighting. Shading in the HD Render Pipeline looks best when using real-time direct light, and it also gives us some freedom to animate the rotation, intensity and color temperature of the directional light at runtime.Since the indirect lighting is baked, we cannot change too much the intensity and color of the directional light, or it won’t match anymore with the baked lighting. We wouldn’t be able to get away with a full day/night cycle in this setup, even though a forest is a quite forgiving environment in terms of obscuring mismatched indirect lighting.Baked lightmaps are used mostly for the terrain and a few other assets, but we preferred to use a combination of light probes and occlusion probes for all the rocks and cliffs in the project, as they provide better results for objects with sharp angles and crisp normal maps.Lighting a dense forest is something tricky to achieve in real-time. Trees, with all their leaves and branches, have a huge surface area and complex geometry, so it’s not practical to cover them with lightmaps. Using a single light probe per tree would give it uniform lighting from the bottom to the top. Light Probe Proxy Volumes are closer to what we would want, but it’s not practical to crank up the grid resolution to capture fine details.For that reason that our Senior Graphics Programmer, Robert Cupisz, developed the occlusion probes.From an artist’s point of view, it’s a really nice and easy feature to use: you simply add the object to the scene, and it displays a volume gizmo that you need to scale for it to cover the area you want, and then setup its resolution parameters in X, Y, and Z.It also allows you to create ‘Detail’ occlusion probes if you want some area of the scene to have a higher density of probes. Once it is set up, you will need to bake the lighting of the whole scene. The occlusion probes will be baked during that process.Each probe in the 3D grid samples sky visibility by shooting rays in the upper hemisphere, and stores it as an 8bit value going from fully occluded 0 to fully visible 1. This gives us darker areas wherever there’s a higher concentration of leaves and branches - even more so when a few trees are clustered together.Probes unlucky enough to have landed inside trunks or rocks will be fully black. To avoid that darkness from leaking out, they are marked as invalid and overwritten by neighboring valid probes.Since the probes sample how much of the sky is visible, they should only attenuate direct sky contribution. For this reason, the lightmapper is set up to exclude the direct light contribution from regular light probes, and then probe lighting is composed as light probe plus direct sky probe occluded by occlusion probes.This way we can have tons of cheap occlusion probes sampling small details of how foliage occludes the sky, bring depth to the image, and very few more expensive light probes sampling slower changing indirect light.If you want to have a clearer picture of how they affect the scene, you can also use the SkyOcclusion Debug view.The occlusion probe API for baking occlusion probes and excluding direct sky contribution from light probes has been added to Unity 2018.1, and all the scripts and shaders are available in the project.We ported and re-used the Atmospheric Scattering solution that we originally developed for the Blacksmith demo.Our Senior Programmer Lasse Jon Fuglsang Pedersen has extended it to make use of temporal supersampling, resulting in a much smoother look.The HD Render Pipeline default Lit Shader supports several types of diffusion. It allows you to have materials with sub-surface scattering, or—like used for all our vegetation in this project—a more simple translucent material with only light transmission.This effect is set up in two different locations:On the material you need to choose the ‘Translucent’ material type, input a Thickness map, and choose a diffusion profile, which is the second location:The diffusion profile settings, where you can edit all the other parameters of your transmission effectNote: Our team added additional sliders to control separately the direct and the indirect transmission to have more control over the final result. But this change is not respecting the PBR rules and thus will not make it into the HD Render Pipeline.The Area Volumes are built on the core volume system offered by SRP and are very similar to the Post Process Volumes. Their function is to drive object properties depending on the position of the Main Camera object.Several objects, including the Directional Light, the Atmospheric Scattering, Auto Focus and the WindControl have their properties driven by Area Volumes, so if you want to change the current lighting setup, for example, you will need to do that in the corresponding Area Volume. Those Area Volumes objects are located in the main scene, under _SceneSettings > _AREASETTINGS, and have the suffix ‘_AV’.For those who have not used the HD Render Pipeline much, there is now a specific SRP debug window that you can open through the menu Window > General > Render Pipeline DebugWith this, you will be able to see individual GBuffer layers, lighting components or specific texture maps from your materials, or even override albedo/smoothness/normal. It is a really useful tool when you have some objects that are not rendering correctly or any other visual bug. It will help you pinpoint the source of the issue a lot faster.The best part if that is that those debug views are generated automatically from your shaders, and coders are able to create new debug views quite easily.I even used those debug views to create the tree billboards that are used in the background of the scene. I just placed my assets on an empty scene and took screenshots with the albedo, roughness, normal gbuffer layers visible, and used those to create my texture maps.While a big part of the optimization resides on the code side, it is also important that your assets and scenes are set up properly if you want to have a decent framerate. Here are some of the ways the content was optimized for this project:All our materials are using GPU Instancing.We are using LODs for most of the assets in this scene, this is a must-have.The LOD Crossfade feature is great, it allows the have a nice and smooth blending between the different Level of Details of you object. But this feature is quite heavy and can really increase the draw call count in your project. For this reason, we disabled it on as many assets as possible.To avoid noticeable transition between LODs, we started using Object Space normal maps on many of our large rock and cliff assets.Note: Using Object Space normal map instead of Tangent Space normal map will reduce the precision of the normal map. It is actually not very noticeable on our assets that are very rough and noisy, but you probably don’t want to use it for hard surface assets.While it is important to limit view distance by the way the scene is built, and by using occlusion culling, it is also worth knowing that many of the draw calls used to render your scene are actually coming from the rendering each cascade of your shadow maps (more specifically from the directional light in our project).We had a lot of draw calls coming from the small vegetation assets scattered on the terrain, hundreds and hundreds of them in some locations. We achieved a nice reduction of draw calls by creating larger patches of those grass and plant assets. Instead of having hundreds of them, we would then have only 15-20.
Note that this has an impact on visual quality, with such large assets, it becomes really hard to avoid having the grass clipping with rocks and other assets placed on the ground.We are using layer culling, that is a feature already in Unity but does not have any UI. This feature allows you to cull objects that are assigned to a specific layer, depending on the distance they are from the camera. Torbjorn has extended this feature to be able to also cull the shadow casting of those objects at a different distance. For example, most of our small vegetation assets stop casting shadows at a distance of around 15 meters, which is not very noticeable given the amount of noise with the grass and other plants on the ground, and then they are completely culled at around 25 meters – no matter how their LODGroup are set up.---Stay tuned for the next blog post in the series. We’ll be exploring the work that went into creating the shading, lighting, post-processing, and more from the Book of the Dead.If you couldn’t make it to Unite Berlin, we’ll soon be releasing Julien Heijmans’s presentation about environment art in the demo. You can follow our YouTube channel to keep up to date on when that video is released.More information on Book of the Dead]]></description><link>https://unity.com/blog/industry/book-of-the-dead-quixel-wind-scene-building-and-content-optimization-tricks</link><guid isPermaLink="true">https://unity.com/blog/industry/book-of-the-dead-quixel-wind-scene-building-and-content-optimization-tricks</guid><pubDate>Fri, 29 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[New Best Practice Guide - Memory Management in Unity]]></title><description><![CDATA[Here in Enterprise Support, we get to help out on many projects, with all kinds of combinations of Unity features. What we see is that 10 out of 10 games can improve their memory usage. That’s why we put together our newest best practice guide: Memory Management in Unity.When we go on-site, profiling is always the first order of the day. Whether we’re uncovering coding patterns that add small but unnecessary burdens to the CPU or substantial issues that cause memory fragmentation and Asset duplication, profiling your game early and often is the best way to keep tabs on application health. The most successful teams profile their projects’ memory.Memory is an exceptionally scarce resource (particularly on mobile devices with up to 1GB of memory, which represent 30% of the market today), so it is absolutely essential that you know where your memory is going and why. With memory being managed differently across platforms, it’s not always trivial to understand where memory is being consumed and what influence it has on CPU and GPU performance.But fear not! We’ve created a new best practice guide: Memory Management in Unity. This guide introduces the wide variety of tools available for memory profiling, and dives into the details of how to use them effectively. By using the techniques in this guide in conjunction with the best practices for minimizing memory usage, you will be able to effectively identify and fix problem areas.So you read all of the above and are still itching to dive into more juicy best practices? You’re in luck! While Memory Management in Unity is the latest installment, you can also check out all the other Best Practice Guides we’ve put together, each containing a number of tips and strategies to win back performance and make your project the best it can be:Understanding Optimization in UnityAsset Bundles + ResourcesOptimizing Unity UIMemory Management in UnityLighting in UnityMaking believable visuals in UnityWe update and add to these guides regularly, so be sure to check back once in a while to see what has changed!]]></description><link>https://unity.com/blog/technology/new-best-practice-guide-memory-management-in-unity</link><guid isPermaLink="true">https://unity.com/blog/technology/new-best-practice-guide-memory-management-in-unity</guid><pubDate>Wed, 27 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Solving sparse-reward tasks with Curiosity]]></title><description><![CDATA[We just released the new version of ML-Agents toolkit (v0.4), and one of the new features we are excited to share with everyone is the ability to train agents with an additional curiosity-based intrinsic reward.Since there is a lot to unpack in this feature, I wanted to write an additional blog post on it. In essence, there is now an easy way to encourage agents to explore the environment more effectively when the rewards are infrequent and sparsely distributed. These agents can do this using a reward they give themselves based on how surprised they are about the outcome of their actions. In this post, I will explain how this new system works, and then show how we can use it to help our agent solve a task that would otherwise be much more difficult for a vanilla Reinforcement Learning (RL) algorithm to solve.When it comes to Reinforcement Learning, the primary learning signal comes in the form of the reward: a scalar value provided to the agent after every decision it makes. This reward is typically provided by the environment itself and specified by the creator of the environment. These rewards often correspond to things like +1.0 for reaching the goal, -1.0 for dying, etc. We can think of this kind of rewards as being extrinsic because they come from outside the agent. If there are extrinsic rewards, then that means there must be intrinsic ones too. Rather than being provided by the environment, intrinsic rewards are generated by the agent itself based on some criteria. Of course, not any intrinsic reward would do. We want intrinsic rewards which ultimately serve some purpose, such as changing the agent’s behavior such that it will get even greater extrinsic rewards in the future, or that the agent will explore the world more than it might have otherwise. In humans and other mammals, the pursuit of these intrinsic rewards is often referred to as intrinsic motivation and tied closely to our feelings of agency.Researchers in the field of Reinforcement Learning have put a lot of thought into developing good systems for providing intrinsic rewards to agents which endow them with similar motivation as we find in nature’s agents. One popular approach is to endow the agent with a sense of curiosity and to reward it based on how surprised it is by the world around it. If you think about how a young baby learns about the world, it isn’t pursuing any specific goal, but rather playing and exploring for the novelty of the experience. You can say that the child is curious. The idea behind curiosity-driven exploration is to instill this kind of motivation into our agents. If the agent is rewarded for reaching states which are surprising to it, then it will learn strategies to explore the environment to find more and more surprising states. Along the way, the agent will hopefully also discover the extrinsic reward as well, such as a distant goal position in a maze, or sparse resource on a landscape.We chose to implement one specific such approach from a recent paper released last year by Deepak Pathak and his colleagues at Berkeley. It is called Curiosity-driven Exploration by Self-supervised Prediction, and you can read the paper here if you are interested in the full details. In the paper, the authors formulate the idea of curiosity in a clever and generalizable way. They propose to train two separate neural-networks: a forward and an inverse model. The inverse model is trained to take the current and next observation received by the agent, encode them both using a single encoder, and use the result to predict the action that was taken between the occurrence of the two observations. The forward model is then trained to take the encoded current observation and action and predict the encoded next observation. The difference between the predicted and real encodings is then used as the intrinsic reward, and fed to the agent. Bigger difference means bigger surprise, which in turn means bigger intrinsic reward.By using these two models together, the reward not only captures surprising things, but specifically captures surprising things that the agent has control over, based on its actions. Their approach allows an agent trained without any extrinsic rewards to make progress in Super Mario Bros simply based on its intrinsic reward. See below for a diagram from the paper outlining the process.In order to test out curiosity, no ordinary environment will do. Most of the example environments we’ve released through v0.3 of ML-Agents toolkit contain rewards which are relatively dense and would not benefit much from curiosity or other exploration enhancement methods. So to put our agent’s newfound curiosity to the test, we created a new sparse rewarding environment called Pyramids. In it, there is only a single reward, and random exploration will rarely allow the agent to encounter it. In this environment, our agent takes the form of the familiar blue cube from some of our previous environments. The agent can move forward or backward and turn left or right, and it has access to a view of the surrounding world via a series of ray-casts from the front of the cube.This agent is dropped into an enclosed space containing nine rooms. One of these rooms contains a randomly positioned switch, while the others contain randomly placed un-movable stone pyramids. When the agent interacts with the switch by colliding with it, the switch then turns from red to green. Along with this change of color, a pyramid of movable sand bricks is then spawned randomly in one of the many rooms of the environment. On top of this pyramid is a single golden brick. When the agent collides with this brick, the agent receives +2 extrinsic reward. The trick is that there are no intermediate rewards for moving to new rooms, flipping the switch, or knocking over the tower. The agent has to learn to perform this sequence without any intermediate help.Agents trained using a vanilla Proximal Policy Optimization (PPO, our default RL algorithm in ML-Agents) on this task do poorly, often failing to do better than chance (average -1 reward), even after 200,000 steps.In contrast, agents trained with PPO and the Curiosity-Driven intrinsic reward consistently solve it within 200,000 episodes, and often even in half that time.We also looked at agents trained with the intrinsic reward signal only, and while they don’t learn to solve the task, they learn a qualitatively more interesting policy which enables them to move between multiple rooms, compared to the extrinsic only policy which has the agent moving in small circles within a single room.If you’d like to use curiosity to help train agents in your environments, enabling it is easy. First, grab the latest ML-Agents toolkit release, then add the following line to the hyperparameter file of the brain you are interested in training: `use_curiosity: true`. From there, you can start the training process as usual. If you use TensorBoard, you will notice that there are now a few new metrics being tracked. These include the forward and inverse model loss, along with the cumulative intrinsic reward per episode.Giving your agent curiosity won’t help in all situations. Particularly if your environment already contains a dense reward function, such as our Crawler and Walker environments, where a non-zero reward is received after most actions, you may not see much improvement. If your environment contains only sparse rewards, then adding intrinsic rewards has the potential to turn these tasks from unsolvable to easily solvable using Reinforcement Learning. This has applicability particularly when it makes the most sense for simple rewards such as win/lose or completed/failed for tasks.---If you do use the Curiosity feature, I’d love to hear about your experience. Feel free to reach out to us on our GitHub issues page, or email us directly at ml-agents@unity3d.com. Happy training!]]></description><link>https://unity.com/blog/engine-platform/solving-sparse-reward-tasks-with-curiosity</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/solving-sparse-reward-tasks-with-curiosity</guid><pubDate>Tue, 26 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Book of the Dead: Photogrammetry assets, trees, VFX]]></title><description><![CDATA[In this blog series, we will go over every aspect of the creation of our demo “Book of the Dead”. Today, we focus on photogrammetry assets, trees and VFX. This is the fourth blog in the series, take a look back at the last two blogs that go through creating characters and concept art from “Book of the Dead”.Hello, my name is Zdravko Pavlov and I am a CG and VFX artist with background in VFX, video compositing, editing, graphic design. I’ve been working with Unity’s Demo team since 2014 and contributed various particles, rigid body dynamics and cloth simulations on the demos “Viking village”, “The Blacksmith” and “Adam”.The “Book Of The Dead” demo was a little bit different. A completely new territory for me, since my role for this project would be to create various environment assets using a photogrammetry approach. Outdoor photography is my hobby, so I was more than happy to handle such a task. Creating trees? I mean, how hard can it be, right? In the following blog post I’ll try to describe everything that I learned during the pre-production and development phase of the project.Fortunately, at this point, the Internet is full of valuable info regarding that process, so that’s where my learning began. What most of the articles would tell you is that what you need is any DSLR, camera with 50mm prime lens. I didn’t have any of those at my disposal at the time, so I decided to make my initial tests with my 24MP mirrorless Sony a7II with a 16mm-35mm zoom lens instead. And let me tell you right away it works just fine! The wider lens gives you more distortion, but you can always fix that in Lightroom for example, but in fact, it is better if you don’t! The photogrammetry software handles it gracefully. Prime lenses are more rigid and in theory, should give you a sharper image. They are really great if you scan in a controlled studio environment and I highly recommend it in such scenarios. Out in the field, however, being able to properly frame the desired object with a quality build zoom lens will give you an advantage.I tried out most of the more popular photogrammetry software out there and some of them worked quite well. I chose RealityCapture because of its significantly better performance and ability to process a high amount of photos without running out of RAM. The amount of details it manages to reconstruct from the photos is amazing! I managed to get models, sometimes up to 185 million triangles and successfully export the geometry in PLY format.That, of course, is more than enough and also a little bit extreme. Most of my reconstructions ended up roughly about 50 to 90 million triangles. At first, I was using GF980TI, but later upgraded to GF1080 which gave me a slight performance boost.At some point, I also upgraded my camera to a 42MP Sony aRII with a Planar T* FE 50mm f/1.4 ZA Lens. However, doubling the resolution and using the superior super sharp prime lens didn’t give me the “WOW” results I was expecting. For one thing, the longer (and narrower) prime lens means that you have to step a few steps back in order to have the image overlap that you need for a successful reconstruction. That’s not always possible when you are in the middle of the forest, with all the other trees, shrubs and everything. It also means that you have to manage, store and process twice as many gigabytes of image data. But that doesn’t necessarily lead you to higher definition scans. Having more images is what gets you there and having it in 24MP is more manageable. That may sound obvious, but it didn't occur to me until I actually tried it first hand.As I mentioned I used a PLY format to export the insanely dense geometry. I prefer that over FBX even though the PLY exporter of Reality Capture didn’t have scale and axis orientation controls so unlike the FBXs, the PLYs were out of scale and rotated. I chose to deal with that because I was getting some errors when baking textures using the FBX. Also, the binary FBX export was implemented later.Not a lot of software can handle that amount of polygons, so I just stored the file and used RC’s decimation features to make a low poly version of the same model. Usually around 1M triangles. And that one can be opened in ZBrush, MeshLab or any other modeling software, where it can be retopologized and unwrapped. Depending on the model, I used different techniques for retopology. Often ZRemesher and sometimes by hand.Then I used xNormal to bake textures. xNormal doesn’t seem to be bothered by the hundreds of millions of triangles and handles it with ease. I baked the diffuse texture using the vertex color info. The vertex density in the highpoly was more than enough to produce a clean and sharp texture without any interpolation between vertices. I never used RC’s integrated unwrapping and texturing features.That being said, if for some reason your dense cloud is not dense enough, or there are some areas missing (like in the image below), projecting a texture from your photos can bring additional detail to those areas.What most of the photogrammetry tutorials would teach you is that it is best if you avoid direct, harsh lighting and shadows when scanning an object. If it is a small rock, that you are about to capture, you can bring it in the shade or even in the studio and use softboxes and turntables. You can’t really do that with trees though, so I was watching the forecast and hoping for cloudy weather. However, even in overcast conditions, there were some shadows and ambient occlusion. This is solved with Unity’s DeLighting tool. All it takes is a normal map, a bent normal map and baked AO. It keeps the diffuse values intact while removing the shadows.The resulted assets were then imported into Unity to test the dynamic lighting and shaders.There are times when it is just not possible to capture every single part of your model. Either there’s an obstacle and you can’t get all the angles. Other times you are in a hurry or your battery is dying and you miss something and you don’t realize until you get home and start processing the data. I made a lot of mistakes like that, but then I was able to salvage some of my work by using Substance Painter to clone stamp and try to fix the missing data.For most of the duration of the Book of the Dead production, the Demo team didn’t have an environment artist on staff and we were looking to find one. Some work was contracted out to an external environment artist, Tihomir Nyagolov, who had done the initial explorations and white boxed the environment, but the main load of the work fell on the Creative and Art Director, Veselin Efremov, and myself. Each of us would go out to our nearby forests to capture photogrammetry data, and the work naturally transitioned into producing the final game assets that were needed. I don’t have a background in environment art, and I had zero experience in dealing with game optimizations, LODs etc. At that point there were some placeholder trees already created by Tihomir with the help of GrowFx, so I took over from there, learning as I go.GrowFX proved to be really powerful and versatile tool for creating all kinds of vegetation. It interacts with other objects in your scene so you can achieve all kinds of unique and natural looking results. It isn’t exactly built with game assets creation in mind, but it is controllable enough and can be used for the task. It is a 3DS Max plugin. I’ve been a 3DS Max user for 20+ years and I really feel at home there. Unfortunately GrowFX relies on some of the outdated 3DS Max components like the curves editing dialogs, which aren’t very convenient, but it still was a good tool for the task at hand so I just had to deal with it.The forest in Book of the Dead was intended to be primarily conifer. There are some beautiful forests and parks near my home, so I went on a “hunt” and scanned some of those. Then I proceeded with stitching my GrowFX creations onto the scanned models. The final tree trunk was composed out of scanned geometry and unique texture for the lower part stitched to a procedurally generated trunk with tileable texture for the rest of it, all the way to the top.A small patch of the bottom was clone stamped to the top of texture to make it tileableIt is one thing to do photogrammetry on rocks and tree trunks, but scanning pine needles is a whole new deal. This is where Quixel stepped in and provided us with their beautifully scanned atlases. They collaborated with the Demo Team and did numerous small assets like grass, shrubs, debris, etc. specially created for “Book Of The Dead”.As I mentioned in the beginning, my background is in CG productions and I’ve made large forests before, using Multiscatter or Forest Pack Pro and rendering in V-ray. In such tasks, you can use the Quixel Megascans atlases as they are, but for a realtime project like Book of the Dead we needed to do some optimization. It included building larger elements (branches, treetops etc.) and arranging those into new textures, transferring the initial scanned data for the normal maps, displacement, transmission and so on.The existing Megascans normal data was slightly modified to give a fake overall volume impression.I used different normals editing techniques such as Normal Thief and other custom built 3DSMax scripts to blend the branches with the trunk. Altering the vertex normals so that they can blend with the trunkUsing this approach I was able to produce different types of pine trees.We wanted the forest to feel “alive” and the wind was a crucial element for us. The trees were set up for our vertex shader based wind animation solution by our Environment Artist Julien Heijmans.There are many different ways of creating a vector field and I looked up several different options. Being familiar with Chaosgroup’s fluid solver, PhoenixFD, I decided to see what kind of usable data I can get out of it and bring it into Unity. I was able to export the scene geometry, bring it in 3DS Max as an FBX and run some fluid through it, that swirls around the vegetation and creates the turbulent wind effect. The bigger trees were shielding the smaller vegetation and the effect there was less prominent.I looped the simulated sequence using the integrated PhoenixFD playback controls.The vector information was then read through a PhoenixFD Texmap, normalized and plugged as a diffuse texture over the procedurally created isosurface.The rendered image sequence was then imported back in Unity, where the final texture atlas was assembled. I used to do that in After Effects in the past, but now Unity has a very convenient Image Sequencer tool, that can do that pretty much automatically. It is one of the new VFX tools that is being developed by Unity's GFX team in Paris.The created texture atlas was placed in the scene. I made a simple box to define my simulation boundaries and used that as a position reference.To be clear, this was an experiment that allowed us to push the visuals of some of the shots in the cinematic teaser that we showed. It’s a method that I can recommend if you are using Unity for film production. It plugs into the main procedural vertex shader based wind animation solution, which was developed for the project by our Tech Lead Torbjorn Laedre and was used in most of the scenes of the teaser, as well as for the console version of the project that we showed at GDC.In an upcoming blog post, Julien and Torbjorn will explain more about how we handled the Wind and the final solution we adopted.I started to block some of the ideas about the Hive early on.After the initial design, I started building various game ready elements in order to build the Unity assets.For the screwies crowd, I did some exploration for the body variations. Again I used Chaosgroup’s PhoenixFD and ran a fluid smoke simulation. Then I cut out the screwie shape and created an isosurface based on the fluid temperature  Some shape exploration made with PhoenixFDThis method allowed us to quickly preview different shapes and it was used as a general reference. The final screwie character model was created by Plamen (Paco) Tamnev and you can read all about it in his incredibly detailed blog post.To achieve the dripping sap on the screwie’s face, I used PhoenixFD again. I started with making a little proof of concept showing the capabilities and what we can achieve with a dense viscous liquid.I was quite happy with the overall result and the fluid motion, so I proceeded with setting up the real model. The goal was to prevent the simulation from forming too many separated pieces and droplets.That allowed me to get a single frame from the generated geometry sequence, retopologize it, make UVs, and use WRAP3 to project it over the rest of the shapes in the sequence. As a result, I’ve got a series of blend shapes that use the same topology.I also tried running a sap simulation over some of the tree trunks.We didn’t end up using those in the final project. However, I still find it as a nice way to add some detail over the scanned models.---Stay tuned for the next blog post in the series. We’ll be diving further into the environment art created for Book of the Dead with Julien Heijmans.Meet us at Unite Berlin on June 19 to walk through the Book of the Dead environment on a console yourself, and attend Julien Heijmans’s presentation about Environment art in the demo. See the full schedule here.More information on Book of the Dead]]></description><link>https://unity.com/blog/industry/book-of-the-dead-photogrammetry-assets-trees-vfx</link><guid isPermaLink="true">https://unity.com/blog/industry/book-of-the-dead-photogrammetry-assets-trees-vfx</guid><pubDate>Fri, 15 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Book of the Dead: Character and hero assets ]]></title><description><![CDATA[In this blog series, we will go over every aspect of the creation of our demo “Book of the Dead”. If you haven't already, make sure to check our previous posts on the Book of the Dead creation process: Introduction to Unity’s Demo team and Book of the Dead: Concept Art.My name is Plamen ‘Paco’ Tamnev, and I've been working as a Character/Environment artist on the Unity Demo team for the last couple of years. Some of the previous projects I worked on were Adam, The Blacksmith, Viking Village and a few other smaller projects. In this blog I will go through some of the work I did for Book of the Dead, my process and the pipeline for the creation of the characters and hero assets in the demo.After our concept art director Georgi Simeonov explored lots of quick ideas in 2d, we decided to try and blend different elements that we liked in those sketches. To do that, I started with some rough sculpts in ZBrush to flesh out some of those ideas. Since we worked in parallel from such an early stage, we didn’t intend for these sculpts to end up as the final art, we were rather looking for the opportunity to try things that we otherwise wouldn't. I also wanted to have the chance to play around with different types of surface treatment and some material explorations. Some of the design elements that can be found in those draft sculpts stayed persistent through the entire character creation process. The proportions, on the other hand, changed quite a bit, because it was an important part of the narrative that the Screwie characters had to be realistic, as opposed to the earlier more stylized designs.I took the opportunity to do some material exploration as early as possible to hopefully give better context to the draft sculpts. Those tests helped to explore the dripping sap that made it into the final design.For the final design, I started from a male scan from an online scan library. starting with a scan gave me the base proportions and general features. After cleaning up the mesh in ZBrush, The final sculpt of the screwie was challenging in the sense that It had to be easily recognizable as a normal human at first glance, especially from the back. We had a slow approaching shot from the back and seeing all of the decay right away would have ruined the buildup. I started by blocking out the bigger cavities that were needed for the front of the character and for the back I stayed closer to the original silhouette and muscle flow. Then I've added some bits of bark to break up the silhouette just a bit in certain places, but still careful to not break the outline of the body too much. Most of the low to mid-level detail was hand sculpted and then I used some scanned alphas to add breakup. It was also a matter of balance to not go overboard in terms of detailing the sculpt in ZBrush, since I'm adding quite a bit of detail in Substance Painter later.The backstory of the Screwies required that their look incorporates a combination of solid resin for the dried up bits, and a more liquid resin for the fresh leaks. This complex material was going to be a challenge. We had the very talented Yibing Jiang do some RnD testing for the shader setup of the amber. She came up with the approach of using two layers of geometry. The base layer of amber acted as the core, and we had a slightly offset version of the same geometry as the top layer. The top layer had a dithered alpha as well as a different set of detail maps, in order to give breakup and variety to the core layer. This, in combination with the Subsurface scattering (SSS) profile adjusted the core layer and gave us a nice looking material with some depth to it.The animated sap dripping from the head was made by Zdravko Pavlov, he will talk more about it in his upcoming blog post.We wanted a quick way to have a crowd of characters with some variety to them, without actually having to build a whole new set of characters. We knew the crowd would be mainly visible in the mid to far distance, so we pushed for them to be good enough without wasting too much time on them. I started by using the clone brush in Substance Painter to create a few fully bark covered versions. I repeated the same process to create the amber layer that was undneath the bark.At this point, we still had no height maps placed. They helped to give a more organic feeling to the final material by adding parallax and breakup to the bark bits. After it was all set up and working, it was easy to make alterations to the decay of the crowd members through only editing the masks.The picture above is one of the first tests of the two layers approach, with a few random masks to test the breakup and decay. Shader-wise, there is a height map with tesselation to help with the offset and overall material definition.For the final look, we added the broken hollow bits by using both opacity and height maps. This workflow gave us the chance to add things like missing limbs easily.A shot of the final crowd with all of the effects applied.Karen’s hands and bracelet are seen for a very short time in the teaser, but they are important for the entire experience. As such, we had to treat them properly and give them enough care, even when compared to their short on-screen presence.For the hands of the player character, I started with a scan from the online library Ten24 that I had retopologized and cleaned up. Then I separated the nails and brought the hands into Substance Painter for the texture pass. Some basic weathering was needed as well, but without being covered in mud or being too distracting when on screen.The Bishop went through quite a few blockouts in Unity. This gave us the chance of trying out interesting ideas such as playing with scale, pose, and how they affected what the character had to convey. Once the final design of the character was finished, and approved by the whole team, we started to build the actual asset.We worked with freelance 3D artist Alex Ponomarev to create the high poly sculpt in ZBrush. Once the sculpt was finalized, I began building the game resolution mesh and used the rigging tools in ZBrush to help make the final pose. These tools are a great way to get a quick static pose and tweak the model, without having to build a complex rig and just gives more room for exploration. I then brought it into Substance Painter and made a few quick explorations for the materials and weathering. Given the size of the Bishop, we had to use several tiled detail maps to help with the resolution and sense of scale.The first thing I did after I got the high poly sculpt from Alex, was to build a quick ZSphere rig and pose the character. We didn’t need him to do any gesturing other than turn his torso slightly, it didn’t make sense to make a complex rig for him. In this case, the ZBrush posing worked just fine.As far as materials go, we decided to go with the more traditional type of look you would see for a large monument. I created several custom materials and for the final Bishop, we used detail maps to complement the sense of scale.Before we settled on the final design for the Bishop, I tried a few of Georgi’s earlier designs and brought them into Unity. It was important to try them out and see how they feel when you approach them from the POV of the game character.We approached Environment and Character artist Tinko Wiezorrek for the modeling and texturing of the shells, cars, and hive.He started by making several different sculpts of the shells based on Georgi’s concepts and notes. His approach was to use the sculpt as a base, add a few texture sets of the different scanned bark that we already had, and combine them with the sculpted details.In the teaser, you encounter cars and other mundane objects found in the world. Since those had to have a handcrafted look to them, we used custom baked geometry with opacity and sap added here and there.When creating the hive entrance, Tinko used the same approach he had for the cars. To help add visual interest and scale, the hive was built with even more variety and custom objects.There were a lot more assets and work done by the team, but I think for the purpose of this blog post, we covered most of our more interesting assets and how we approached their creation.You can follow my work on Artstation & Instagram---Stay tuned for our next posts in the series. Next week Zdravko Pavlov explores the themes and process of asset creation in Book of the Dead with his approach to the trees. After that, Julien Heijmans brings you through the tools and tricks used to make the environment believable. More to come after that.Meet us at Unite Berlin on June 19 to walk through the Book of the Dead environment on a console yourself, and attend Julien Heijmans’s presentation about Environment art in the demo. See the full schedule here.More information on Book of the Dead]]></description><link>https://unity.com/blog/industry/book-of-the-dead-character-and-hero-assets</link><guid isPermaLink="true">https://unity.com/blog/industry/book-of-the-dead-character-and-hero-assets</guid><pubDate>Fri, 08 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Procedural patterns to use with Tilemaps, part 2]]></title><description><![CDATA[In part 1 we looked at some of the ways we can create top layers procedurally using various methods, like Perlin Noise and Random Walk. In this post, we are going to look at some of the ways to create Caves with procedural generation, which should give you an idea of the possible variations available.Everything we are going to talk about in this blog post is available within this project. Feel free to download the assets and try out the procedural algorithms.This blog post conforms to the same rules as Part I. To remind you, these rules are:The way we distinguish between being a tile or not is by using binary. 1 being on and 0 being off.We will store all of our maps into a 2D integer array, which is returned back to the user at the end of each function (except for when we render).I will use the array function GetUpperBound() to get the height and width of the map. This means that we have fewer variables going into each function, allowing for cleaner code.I often use Mathf.FloorToInt(), this is because the tilemap coordinate system starts at the bottom left and using Mathf.FloorToInt() allows for us to round the numbers to an integer.All of the code provided in this blog post is in C#.In the previous blog post, we looked at some ways of using Perlin noise to create top layers. Luckily enough, we can also use Perlin Noise to create a cave. We do this by getting a new Perlin noise value, which takes in the parameters of our current position multiplied by a modifier. The modifier is a value between 0 and 1. The larger the modifier value, the messier the Perlin generation. We then proceed to round this value to a whole number of either 0 or 1, which we store in the map array. Have a look at the implementation:The reason we use a modifier instead of a seed, is because the results of the Perlin generation look better when we are multiplying the values by a number between 0 and 0.5. The lower the value, the more blocky the result. Have a look at some of the results. This gif starts with a modifier value of 0.01 and works it way to 0.25 in increments.From this gif, you can see that the Perlin generation is actually just enlarging the pattern with each tick.In the previous blog post, we saw that we can use a coin flip to determine whether the platform will go up or down. In this post, we are going to use the same idea, but with an additional two options for left and right. This variation of the Random Walk algorithm allows us to create caves. We do this by getting a random direction, then we move our position and remove the tile. We continue this process until we have reached the required amount of floor we need to destroy. At the moment we are only using 4 directions: up, down, left, right.We start out the function by:Finding our start positionCalculating the number of floor tiles we need to removeRemoving the tile at the start positionAdding one to our floor countNext, we move on to the while loop. This will create the cave for us:Well, first of all, we are deciding which direction we should move using a random number. Next, we check the new direction with a switch case statement. Within this statement, we check to see if the position is a wall. If it isn’t, we then remove the tile piece from the array. We continue doing this until we reach the required floor amount. The end result is shown below:I also have created a custom version of this function, which includes diagonal directions as well. The code for this function is a bit long, so if you would like to look at it, please check out the link to the project at the beginning of this blog post.A directional tunnel starts at one end of the map and then tunnels to the opposite end. We can control the curve and roughness of the tunnel by inputting them into the function. We can also determine the minimum and maximum length of the tunnel parts. Let’s take a look at the implementation below:public static int[,] DirectionalTunnel(int[,] map, int minPathWidth, int maxPathWidth, int maxPathChange, int roughness, int curvyness)
{
    //This value goes from its minus counterpart to its positive value, in this case with a width value of 1, the width of the tunnel is 3
    int tunnelWidth = 1;
    //Set the start X position to the center of the tunnel
    int x = map.GetUpperBound(0) / 2;

    //Set up our random with the seed
    System.Random rand = new System.Random(Time.time.GetHashCode());

    //Create the first part of the tunnel
    for (int i = -tunnelWidth; i <= tunnelWidth; i++)
    {
        map[x + i, 0] = 0;
    }We first set up a width value. This width value will go from its minus counterpart to its positive value. This will end up giving us the actual size we want. In this case, we are using a value of 1. This, in turn, will give us a total width of 3, because we will use the values -1, 0, 1.The next thing we do is set out starting x-position, this is done by getting the middle of the width of the map. Now we have those first to values set up we can tunnel the first part of the map.Now let’s move on to creating the rest of the map.Generate a random number to check against our roughness value, if it is above the value, we can change the width of the path. We also check to see if we are making the width too small. With this next bit of code, we are working our way through the map, tunneling as we go. With each step, we do the following:Generate a new random number to check against our curve value. Like the previous check, if it is above the value, we can change the center point of the path. We also check to make sure we aren’t going off the edges of the map.Finally, we tunnel out the new section we have created.The end results of this implementation look like this:Cellular Automata uses a neighbourhood of cells to determine whether the current cell is on (1) or off (0). The basis for these neighbourhoods uses a randomly generated grid of cells. In our case, we are going to generate this initial grid using the Random.Next function in C#.Because we have a couple of different implementations of Cellular Automata, I've made a separate function for generating this base grid. The function looks like this:In this function, we can also determine whether we want walls on our grid. Other than that, it’s relatively simple. We check a random number against our fill percentage to determine whether the current cell is on or off. Have a look at the result:The Moore Neighbourhood is used to help smooth out the initial Cellular Automata generation. The Moore neighbourhood looks like this:The rules for the neighbourhood are as follows:Check every direction for a neighbour.If a neighbour is an active tile, add one to the surround tiles.If a neighbour is not an active tile, do nothing.If the cell has more than 4 surrounding tiles, make the cell an active tile.If the cell has exactly 4 surround tiles, leave the tile alone.Repeat until we have tried every tile in the map.The function for checking the Moore Neighbourhood is as follows:static int GetMooreSurroundingTiles(int[,] map, int x, int y, bool edgesAreWalls)
{
    /* Moore Neighbourhood looks like this ('T' is our tile, 'N' is our neighbours)
     *
     * N N N
     * N T N
     * N N N
     *
     */

    int tileCount = 0;

    for(int neighbourX = x - 1; neighbourX <= x + 1; neighbourX++)
    {
        for(int neighbourY = y - 1; neighbourY <= y + 1; neighbourY++)
        {
            if (neighbourX >= 0 && neighbourX < map.GetUpperBound(0) && neighbourY >= 0 && neighbourY < map.GetUpperBound(1))
            {
                //We don't want to count the tile we are checking the surroundings of
                if(neighbourX != x || neighbourY != y)
                {
                    tileCount += map[neighbourX, neighbourY];
                }
            }
        }
    }
    return tileCount;
}After we have checked our tile, we then proceed to use the information in our smoothing function. Again, like the initial Cellular Automata generation, we can set whether the edges of the map are walls.public static int[,] SmoothMooreCellularAutomata(int[,] map, bool edgesAreWalls, int smoothCount)
{
	for (int i = 0; i < smoothCount; i++)
	{
		for (int x = 0; x < map.GetUpperBound(0); x++)
		{
			for (int y = 0; y < map.GetUpperBound(1); y++)
			{
				int surroundingTiles = GetMooreSurroundingTiles(map, x, y, edgesAreWalls);

				if (edgesAreWalls && (x == 0 || x == (map.GetUpperBound(0) - 1) || y == 0 || y == (map.GetUpperBound(1) - 1)))
				{
                    //Set the edge to be a wall if we have edgesAreWalls to be true
					map[x, y] = 1;
				}
                //The default moore rule requires more than 4 neighbours
				else if (surroundingTiles > 4)
				{
					map[x, y] = 1;
				}
				else if (surroundingTiles < 4)
				{
					map[x, y] = 0;
				}
			}
		}
	}
    //Return the modified map
    return map;
}A key thing to note in this function is the fact that we have a for loop to smooth through the map a certain number of times. This ends up giving us a nicer map as the result.We could always go on to modify this algorithm by connecting rooms to each other if, for instance, there are only 2 blocks between them.The von Neumann Neighbourhood is another popular implementation method for Cellular Automata. For this generation, we use a simpler neighbourhood than the one we used in the Moore Generation. The neighbourhood looks like this:The rules for this neighbourhood are as follows:Check around the tile to the direct neighbours, not including the diagonals.If the cell is active, add one to our count.If the cell is inactive, do nothing.If we have more than 2 neighbours, make the current cell active.If we have less than 2 neighbours, make the current cell inactive.If we have exactly 2 neighbours, don’t modify the current cell.The second result takes the same principles as the first but expands the neighbourhood area.We check for the neighbours by using the following function:static int GetVNSurroundingTiles(int[,] map, int x, int y, bool edgesAreWalls)
{
	/* von Neumann Neighbourhood looks like this ('T' is our Tile, 'N' is our Neighbour)
	*
	*   N
	* N T N
	*   N
	*
    */

	int tileCount = 0;

    //Keep the edges as walls
    if(edgesAreWalls && (x - 1 == 0 || x + 1 == map.GetUpperBound(0) || y - 1 == 0 || y + 1 == map.GetUpperBound(1)))
    {
        tileCount++;
    }

    //Ensure we aren't touching the left side of the map
	if(x - 1 > 0)
	{
		tileCount += map[x - 1, y];
	}

    //Ensure we aren't touching the bottom of the map
	if(y - 1 > 0)
	{
		tileCount += map[x, y - 1];
	}

    //Ensure we aren't touching the right side of the map
	if(x + 1 < map.GetUpperBound(0))
	{
		tileCount += map[x + 1, y];
	}

    //Ensure we aren't touching the top of the map
	if(y + 1 < map.GetUpperBound(1))
	{
		tileCount += map[x, y + 1];
	}

	return tileCount;
}After we have our result of how many neighbours we have, we can then move onto smoothing the array. As before, we have a for loop to iterate through the smoothing for the required amount inputted.public static int[,] SmoothVNCellularAutomata(int[,] map, bool edgesAreWalls, int smoothCount)
{
	for (int i = 0; i < smoothCount; i++)
	{
		for (int x = 0; x < map.GetUpperBound(0); x++)
		{
			for (int y = 0; y < map.GetUpperBound(1); y++)
			{
				//Get the surrounding tiles
				int surroundingTiles = GetVNSurroundingTiles(map, x, y, edgesAreWalls);

				if (edgesAreWalls && (x == 0 || x == map.GetUpperBound(0) - 1 || y == 0 || y == map.GetUpperBound(1)))
				{
                    //Keep our edges as walls
					map[x, y] = 1;
				}
                //von Neuemann Neighbourhood requires only 3 or more surrounding tiles to be changed to a tile
				else if (surroundingTiles > 2)
				{
					map[x, y] = 1;
				}
				else if (surroundingTiles < 2)
				{
					map[x, y] = 0;
				}
			}
		}
	}
    //Return the modified map
    return map;
}The end result looks a lot more blocky than the Moore Neighbourhood, as can be seen below:Again, as with the Moore Neighbourhood, we could proceed to have an additional script run on top of the generation to provide better connections between areas of the map.I hope I’ve inspired you to start using some form of procedural generation within your projects. If you haven’t already downloaded the project, you can get it from here. If you want to learn more about procedural generating maps, check out the Procedural Generation Wiki or Roguebasin.com as they both are great resources.If you make something cool using procedural generation feel free to leave me a message on Twitter or leave a comment below!Want to hear more about it and get a live demo? I’m also talking about Procedural Patterns to use with Tilemaps at Unite Berlin, in the expo hall mini-theater on June 20th. I’ll be around after the talk if you’d like to have a chat in person!]]></description><link>https://unity.com/blog/engine-platform/procedural-patterns-to-use-with-tilemaps-part-2</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/procedural-patterns-to-use-with-tilemaps-part-2</guid><pubDate>Thu, 07 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pulling the strings: How Puppet3D brings your games to life]]></title><description><![CDATA[If you’ve ever had the thought: “Wouldn’t it be great if I could do all my skinning, rigging and animation directly in Unity,” you’re not alone. In fact, that’s exactly what was going through the mind of Asset Store publisher, Jamie Niman (AKA Puppetman) when he developed the insanely powerful Puppet2D, and the more recent, Puppet3D animation tools.As a technical animator, Jamie had plenty of experience working with tools like Maya on films such as World War Z, Pirates of the Caribbean, and Harry Potter.For the last six years, however, as Senior Technical Artist at Preloaded in London, his focus has been: games, games, games.“Making games for clients means short turnaround times, so Unity suits us perfectly from that point of view,” Jamie says. “And with the introduction of Timeline and other tools, animating directly in Unity is beginning to feel a lot like it does in other professional 3D animation software.But Jamie wanted to take that one step further. Having created rigging tools in Maya previously, Jamie wanted to develop a tool that would enable artists to do all their skinning, rigging and animation directly in Unity.As Brad Bird once said, animation is about creating the illusion of life. If that’s true, then it fits well with Jamie’s goal of creating tools that enable animators to focus on their art.“I’ve always looked at rigging as being like a puppet maker. You want to make controls that are user-friendly, so the animator can concentrate on the performance part. I try to make it as easy as possible for animators to add those little sparks of character and animation that polish the game and bring it to life,” he says.Puppet3D opens up everything in your game to be rigged and animated without having to go back and forth between Maya (or another program) and Unity. Naturally, that covers quite a lot of ground, and the possibilities of what you can do with Puppet3D are quite varied. Here are three examples:Modify existing animations
 You could download non-animated characters (or ones that don’t have the exact animation you had in mind), and the one-click “ModRig” feature will automatically rig it for you with controls that make animating easy.Do some quick skinning
 Perhaps you’ve got an unskinned character. Using the Autorig feature, you can quickly get it skinned to bones and rigged. It’ll also have an idle and walk cycle on it. Or if you’ve made any other animations with Puppet3D, the control animations that are made with one autorigged character will work on another autorigged character. You can also get these animations onto any Unity humanoid with the "ModRig" feature.Add more life to a cutscene
 Puppet3D is not just for characters. You could, for example, rig a vine so it swings in the wind, or add bones to a chair to make it run off before someone sits in it.Puppet3D has only been out for a few months, but based on his past experience as an Asset Store publisher, Jamie has every reason to believe that Puppet3D will be embraced by Unity artists.His first asset was Puppet2D, a 2D version of the current 3D title, which had followed the introduction of Unity features like sprite support and the 2D view, and really took off in the Unity community. In fact, it’s success took Jamie by surprise.“It dawned on me that I’d made something really well known when I saw a tweet linking to a book about it, which someone had published in Japan. I ordered a copy right away — it’s sort of a souvenir for me,” he says. “The Unity Asset Store has allowed me to make tools for a much larger audience. It so exciting to think of all the games that have been made with my tools, like the award-winning puzzle game, Hue, and the popular arcade platformer, Damsel, to name just a couple of them.”Jamie plans to continue making new rigging features for Puppet3D, and of course, supporting all of his assets, which will keep him busy for a while. However, he doesn’t rule out creating new assets in the future.“My head is always running through new asset idea, and eventually, it’ll be hard to resist making one of them,” he says.If you spend at least $99 during the month of June, you can get Puppet3D plus InControl for free and start animating directly in Unity to give your characters that extra spark of life. Just be sure to activate the promotion using your Unity ID first.]]></description><link>https://unity.com/archive/blog/games/pulling-the-strings-how-puppet3d-brings-your-games-to-life</link><guid isPermaLink="true">https://unity.com/archive/blog/games/pulling-the-strings-how-puppet3d-brings-your-games-to-life</guid><pubDate>Wed, 06 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Book of the Dead: Concept art]]></title><description><![CDATA[In this blog series, we will go over every aspect of the creation of our demo “Book of the Dead”. After we introduced the Unity Demo team last week, it’s now time for Georgi Simeonov to share his work on the concept art in the teaser we’ve revealed. “Book of the Dead” is a living project with a longer story which we haven’t yet told, so we’ll try not to spoil too much...We call these characters “the Screwies”, people stuck between two worlds.These characters had to to be recognizably human while bearing visible signs of disintegration. The challenge was to do that while avoiding horror and decay, while at the same time as avoiding them from to looking too ethereal (making them ghosts) or magical.Dead Matter to Semblance of LifeEarly designs used the bark strips which proved quite a convenient material to augment the human form and shift the silhouette to something else.
A lot of those design ended resembling various animals, but also moving too close to feeling like fantasy/horror beast.Mud, Sticks, and Stones I continued to iterate on the connection to the forests, and the Screwies attempts to rebuild themselves with what’s around - sticks, strips of bark, mud, resin. I then briefly went through the idea of them starting to resemble various memory shapes, maybe associated with fading memories.In a lot of the cases where elements were added or otherwise augmented the base human figure, the designs quickly started to resemble something tribal and reminiscent of a fictional primitive culture.Subtractive / Shattered - Pale remains of what they once wereThey had to be less, a figment of what was once human or a soul, a frame barely standing. I experimented with various ways in which to subtract from or erode the silhouette.Misremembered ShellsNatural, yet semi-abstract and sculptural, unreplenishable amber core.A quick color study of the first Screwie variant that hit on some of the key points I aimed to cover with the design, experimenting with pale ahs, charred wood and a variation of waxy and clearer resin.Three variants for the Screwies that were quite cool in and of themselves, but weren’t right for the story so were discarded:A - This variant quickly devolved into some dark demonic minions and was abandoned.B - The stacked stone and woven grass Screwies reminded some fairytale creatures like trolls and elves too much.C - The candle people which our final design evolved from in many ways.The idea that stuck was the one about the interplay between the outside shell and the emptiness inside. Most silhouette alterations were made by juxtaposing the areas of darker tree bark material and fresh golden resin they used to fill their empty shells.Being quite restricted in expressing design through silhouette meant that I had to rely on textures and interesting erosion patterns. We went for a mix of charred tree bark for the base and the shell with a filling of resin with marks reminiscent of the grooves left by fingers on soft clay.The final design for the first Screwie the viewer or player encounters - incorporating a mixture of the most successful erosion patterns.Some early thumbnail ideas for the location where the protagonist (and the player) sees a Screwie for the first time,The bracelet is the only bit of visual design for Karen’s character that is seen in the teaser. The dialog, supplemented by the bracelet, is the primary way you discover some of her personality and backstory. The design is based on some elements common for medical bracelets but reinterpreted and hidden into what would be perceived as a purely decorative design.The teaser shows only a short glimpse of the Bishop, but he’s an important character for this world and plays a role in the evolving story.I managed to hit on something quite striking early on with his design and went through much fewer cycles of exploration. The sarcophagus/boat is inspired by both Charon, from Greek mythology, and ancient Egyptian sarcophagi. Charon, being the chaperone who helps souls cross the river Styx, and the Egyptian sarcophagi, bringing an evocative element of demi-gods and vessels for travel. We explored various poses and angles in which you can encounter him, sometimes a massive aerostat-like object floating in space sometimes as an unusual part of the landscape.The pattern on his chest and parts of his face is formed out of keyhole-like ornaments and other details found on locks, his earrings resembling keys. The inside of the boat was inspired by old broken typewriters and their tightly stacked letter hammers, in our case used as a support for his body and/or little archival plaques.The hive was based on Weaver birds nests or layered Wasps hives built on much larger scale using strips of tree bark bonded with mud or resin or roughly woven together. A lot of the smaller structures like the cars and lampposts drew inspiration from Cargo Cults, in the way that they mimic barely remembered or understood fragments of reality.This image is one of the early attempts to put our story progression and sequence of story beats into locations on a map. The cyan line is depicting a potential branching path across the environment.Various props embodying the physical manifestation of memories - objects from their past life, rebuilt from the materials available in the forest - tree bark, mud, sticks.Cars made from forest materialsThis is an overpaint of an early screenshot showing the approach to the Hive over a fallen tree bridge up a hill.This image was one of the exploration paintings for the entrance of the hive. One of the main challenges with the design of the Hive was to keep it from looking too much like a traditional manmade fort, or some other fantasy fortress. We wanted it to bare signs on intent and hint of purpose but only barely, straddling the line between accidental and constructed.Stay tuned for our next posts in the series. Next week Plamen ‘Paco’ Tamnev dives into Character Art, and the week after Zdravko Pavlov explores the themes and process of asset creation in Book of the Dead with his approach to the trees. More to come after that.Meet us at Unite Berlin on June 19 to walk through the Book of the Dead environment on a console yourself, and attend Julien Heijmans’s presentation about Environment art in the demo. See the full schedule here.More information on Book of the Dead]]></description><link>https://unity.com/blog/industry/book-of-the-dead-concept-art</link><guid isPermaLink="true">https://unity.com/blog/industry/book-of-the-dead-concept-art</guid><pubDate>Fri, 01 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Procedural patterns you can use with Tilemaps, part 1]]></title><description><![CDATA[Many creators have used procedural generation to add some diversity to their game. Some notable mentions include the likes of Minecraft, or more recently, Enter the Gungeon and Descenders. This post explains some of the algorithms you can use with Tilemap, introduced as a 2D feature in Unity 2017.2, and RuleTile.With procedurally created maps, you can make sure that no two plays of your game are the same. You can use various inputs, such as time or the current level of the player to ensure that the content changes dynamically even after the game has been built.We’ll take a look at some of the most common methods of creating a procedural world, and a couple of custom variations that I have created. Here’s an example of what you may be able to create after reading this article. Three algorithms are working together to create one map, using a Tilemap and a RuleTile:When we’re generating a map with any of the algorithms, we will receive an int array which contains all of the new data. We can then take this data and continue to modify it or render it to a tilemap.Good to know before you read further:The way we distinguish between what’s a tile and what isn’t is by using binary. 1 being on and 0 being off.We will store all of our maps into a 2D integer array, which is returned to the user at the end of each function (except for when we render).I will use the array function GetUpperBound() to get the height and width of each map so that we have fewer variables going into each function, and cleaner code.I often use Mathf.FloorToInt(), this is because the Tilemap coordinate system starts at the bottom left and using Mathf.FloorToInt() allows us to round the numbers to an integer.All of the code provided in this blog post is in C#.GenerateArray creates a new int array of the size given to it. We can also say whether the array should be full or empty (1 or 0). Here’s the code:This function is used to render our map to the tilemap. We cycle through the width and height of the map, only placing tiles if the array has a 1 at the location we are checking.This function is used only to update the map, rather than rendering again. This way we can use less resources as we aren’t redrawing every single tile and its tile data.Perlin noise can be used in various ways. The first way we can use it is to create a top layer for our map. This is as simple as just getting a new point using our current x position and a seed.This generation takes the simplest form of implementing Perlin Noise into level generation. We can use the Unity function for Perlin Noise to help us, so there is no fancy programming going into it. We are also going to ensure that we have whole numbers for our tilemap by using the function Mathf.FloorToInt().This is how it looks rendered onto a tilemap:We can also take this function and smooth it out. Set intervals to record the Perlin height, then smooth between the points. This function ends up being slightly more advanced, as we have to take into account Lists of integers for our intervals.For the first part of this function, we’re first checking to see if the interval is more than one. If it is, we then generate the noise. We do this at intervals to allow for smoothing. The next part is to work through smoothing the points.The smoothing happens through the following steps:- Get the current position and the last position- Get the difference between the two positions, the key information we want is the difference in the y-axis- Next, we determine how much we should change the hit by, this is done by dividing the y difference by the interval variable.Now we can start setting the positions. We’ll work our way down to zeroWhen we do hit 0 on the y-axis, we will add the height change to the current height and repeat the process for the next x positionOnce we have done every position between the last position and the current position, we will move on to the next pointIf the interval is less than one, we simply use the previous function to do the work for us.Let’s see how it looks rendered:The way this algorithm works is by flipping a coin. We then get one of two results. If the result is heads, we move up one block, if the result is tails we instead move down one block. This creates some height to our level by always moving either up or down. The only downside to this algorithm is that it looks very blocky. Let’s take a look at how it works.This generation gives us more of a smooth height compared to the Perlin noise generation.This generation gives us more of a smooth height compared to the Perlin noise generation.This Random Walk variation allows for a much smoother finish than the previous version. We can do this by adding two new variables to our function:The first variable is used to determine how long we have held our current height. This is an integer and is reset when we change the height.The second variable is an input for the function and is used as our minimum section width for the height. This will make more sense when you have seen the functionNow we know what we need to add. Let’s have a look at the function:As you can see from the gif below, the smoothing of the random walk algorithm allows for some nice flat pieces within the level.I hope this has inspired you to start using some form of procedural generation within your projects. If you want to learn more about procedural generating maps, check out the Procedural Generation Wiki or Roguebasin.com, which are both great resources.You can look out for the next post in the series to see how we can use procedural generation to create cave systems.If you make something cool using procedural generation feel free to message me on Twitter or leave a comment below!Want to hear more about it and get a live demo? I’m also talking about Procedural Patterns to use with Tilemaps at Unite Berlin, in the expo hall mini theater on June 20th. I’ll be around after the talk if you’d like to have a chat in person!]]></description><link>https://unity.com/blog/engine-platform/procedural-patterns-you-can-use-with-tilemaps-part-1</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/procedural-patterns-you-can-use-with-tilemaps-part-1</guid><pubDate>Tue, 29 May 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Stripping scriptable shader variants]]></title><description><![CDATA[Massively reduce Player build time and data size by allowing developers to control which Shader variants are handled by the Unity Shader compiler and included in the Player data.Player build time and data size increase along with the complexity of your project because of the rising number of shader variants.With scriptable shader variants stripping, introduced in 2018.2 beta, you can manage the number of shader variants generated and therefore drastically reduce Player build time and data size.This feature allows you to strip all the shader variants with invalid code paths, strip shader variants for unused features or create shader build configurations such as “debug” and “release” without affecting iteration time or maintenance complexity.In this blog post, we first define some of the terms we use. Then we focus on the definition of shader variants to explain why we can generate so many. This is followed by a description of automatic shader variants stripping and how scriptable shader variants stripping is implemented in the Unity shader pipeline architecture. Then, we look at the scriptable shader variants stripping API before discussing results on the Fountainbleau demo and concluding with some tips on writing stripping scripts.Learning scriptable shader variants stripping is not a trivial undertaking, but it can lead to a massive increase in team efficiency!To understand the scriptable shader variants stripping feature it is important to have a precise understanding of the different concepts involved.Shader asset: The full file source code with properties, sub-shader, passes, and HLSL.Shader snippet: The HLSL input code with dependencies for a single shader stage.Shader stage: A specific stage in the GPU rendering pipeline, typically a vertex shader stage and a fragment shader stage.Shader keyword: A preprocessor identifier for compile-time branches across shaders.Shader keyword set: A specific set of shader keywords identifying a particular code path.Shader variant: The platform-specific shader code generated by the Unity shader compiler, for a single shader stage for a specific graphics tier, pass, shader keyword set, etc.Uber shader: A shader source that can produce many shader variants.In Unity, uber shaders are managed by ShaderLab sub shaders, passes, and shader types as well as the #pragma multi_compile and #pragma shader_feature preprocessor directives.To use scriptable shader variant stripping, you need a clear understanding of what a shader variant is, and how shader variants are generated by the shader build pipeline. The number of shader variants generated is directly proportional to the build time and the Player shader variant data size. A shader variant is one output of the shader build pipeline.Shader keywords are one of the elements that cause the generation of shader variants. An unconsidered use of shader keywords can quickly lead to a shader variants count explosion and therefore extremely long build time.To see how shader variants are generated, the following simple shader counts how many shader variants it produces:The total number of shader variants in a project is deterministic and given by the following equation:The following trivial ShaderVariantStripping example brings clarity to this equation. It’s a single shader which simplifies the equation as following:Similarly, this shader has a single sub shader and a single pass which further simplifies the equation into:Keywords in the equation refers to both platform and shader keywords. A graphics tier is a specific platform keyword set combination.The ShaderVariantStripping/Pass has two multi compile directives. The first directive defines 4 keywords (COLOR_ORANGE, COLOR_VIOLET, COLOR_GREEN, COLOR_GRAY) and the second directive defines 3 keywords (OP_ADD, OP_MUL, OP_SUB). Finally, the pass defines 2 shader stages: a vertex shader stage and a fragment shader stage.This shader variant total is given for a single supported graphics API. However, for each supported graphics API in the project, we need a dedicated set of shader variants. For example, if we build an Android Player that supports both OpenGL ES 3 and Vulkan, we need two sets of shader variants. As a result, the Player build time and shader data size are directly proportional to the number of supported graphics APIs.The shader compilation pipeline in Unity is a black box where each shader in the project is parsed to extract shader snippets before collecting the variant preprocessing instructions, such as multi_compile and shader_feature. This produces a list of compilation parameters, one per shader variant.These compilation parameters include the shader snippet, the graphics tier, the shader type, the shader keyword set, the pass type and name. Each of the set compilation parameters are used to produce a single shader variant.Consequently, Unity executes an automatic shader variant stripping pass based on two heuristics. Firstly, stripping is based on the Project Settings, for example, if Virtual Reality Supported is disabled then VR shader variants are systematically stripped. Second, the automatic stripping is based on the configuration of Shader Stripping section of the Graphics Settings.Automatic shader variants stripping is based on build time restrictions. Unity can’t automatically select only the necessary shader variants at build time because those shader variants depend on runtime C# execution. For example, if a C# script adds a point light but there were no point lights at build time, then there is no way for the shader build pipeline to figure out that the Player would need a shader variant that does point light shading.Here’s a list of shader variants with enabled keywords that get stripped automatically:Lightmap modes: LIGHTMAP_ON, DIRLIGHTMAP_COMBINED, DYNAMICLIGHTMAP_ON, LIGHTMAP_SHADOW_MIXING, SHADOWS_SHADOWMASKFog modes: FOG_LINEAR, FOG_EXP, FOG_EXP2Instancing Variants: INSTANCING_ONFurthermore, when Virtual Reality support is disabled, the shader variants with the following built-in enabled keywords are stripped:STEREO_INSTANCING_ON, STEREO_MULTIVIEW_ON, STEREO_CUBEMAP_RENDER_ON, UNITY_SINGLE_PASS_STEREOWhen automatic stripping is done, the shader build pipeline uses the remaining compilation parameter sets to schedule shader variant compilation in parallel, launching as many simultaneous compilations as the platform has CPU core threads.Here’s a visual representation of that process:In Unity 2018.2 beta, the shader pipeline architecture introduces a new stage right before the shader variant compilation scheduling, allowing users to control the shader variant compilation. This new stage is exposed via C# callbacks to user code, and each callback is executed per shader snippet.As an example, the following script enables stripping of all the shader variants that would be associated with a “DEBUG” configuration, identified by a “DEBUG” keyword used in development Player build.
OnProcessShader is called right before the scheduling of the shader variant compilation.Each combination of a Shader, a ShaderSnippetData and ShaderCompilerData instances is an identifier for a single shader variant that the shader compiler will produce. To strip that shader variant, we only need to remove it from the ShaderCompilerData list.Every single shader variant that the shader compiler should generate will appear in this callback. When working on scripting the shader variants stripping, you need to first figure out which variants need removing, because they’re not useful for the project.One use case for the scriptable shader variants stripping is to systematically strip invalid shader variants of a render pipeline due to the various combinations of shader keywords.A shader variants stripping script included in the HD render pipeline allows you to systematically reduce the build time and size of a project using the HD render pipeline. This script applies to the following shaders:The script produces the following results:Furthermore, the Lightweight render pipeline for Unity 2018.2 has a UI to automatically feed a stripping script that can automatically strip up to 98% of the shader variants which we expect to be particularly valuable for mobile projects.Another use case is a script to strip all the rendering features of a render pipeline that are not used for a specific project. Using an internal test demo for the Lightweight rendering pipeline, we got the following results for the entire project:As we can see, using scriptable shader variant stripping can lead to significant results and with more work on the stripping script we could go even further.A project may quickly run into a shader variants count explosion, leading to unsustainable compilation time and Player data size. Scriptable shader stripping helps deal with this issue, but you should reevaluate how you are using shader keywords to generate more relevant shader variants. We can rely on the #pragma skip_variants to test unused keywords in the editor.For example, in ShaderStripping/Color Shader the preprocessing directives are declared with the following code:
This approach implies that all the combinations of color keywords and operator keywords will be generated.Let’s say we want to render the following scene:First, we should make sure that every keyword is actually useful. In this scene COLOR_GRAY and OP_SUB are never used. If we can guarantee these keywords are never used, then we should remove them.Second, we should combine keywords that effectively produce a single code path. In this example, the ‘add’ operation is always used with the ‘orange’ color exclusively. So we can combine them in a single keyword and refactor the code as shown below.
Of course, it’s not always possible to refactor keywords. In these cases, scriptable shader variants stripping is a valuable tool!For each snippet, all the shader variant stripping scripts are executed. We can order the scripts’ execution by ordering the value returned by the callbackOrder member function. The shader build pipeline will execute the callbacks in order of increasing callbackOrder, so lowest first and highest last.A use case for using multiple shader stripping scripts is to separate the scripting per purpose. For example:Script 1: Systematically strips all the shader variants with invalid code paths.Script 2: Strips all the debug shader variants.Script 3: Strips all the shader variants in the code base that are not necessary for the current project.Script 4: Logs the remaining shader variants and strips them all for fast iteration time on the stripping scripts.Shader variants stripping is extremely powerful but requires a lot of work to achieve good results.In the Project view, filter for all shaders.Select a shader and, in the Inspector, click Show to open the list of keywords / variants of that shader. There will be a list of keywords that are always included in the build.Make sure that you know which specific graphics features the project uses.Check whether the keywords are used in all shader stages. Only one variant is necessary for stages that don’t use these keywords.Strip shader variants in the script.Verify the visuals in the build.Repeat steps 2 - 6 for each shader.Download the sample projectThe example project used to illustrate this blog post can be downloaded here. It requires Unity 2018.2.0b1.Come to Jonas Echterhoff's June 21 talk and learn about all the new tools that give you more control over what ends up in your build!]]></description><link>https://unity.com/blog/engine-platform/stripping-scriptable-shader-variants</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/stripping-scriptable-shader-variants</guid><pubDate>Mon, 14 May 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Launching 3D Game Kit: Explore and Learn Unity in 3D]]></title><description><![CDATA[In February, Unity’s Content Team brought you The Explorer 2D Game Kit, a collection of mechanics, tools, systems and assets to hook up gameplay without writing any code. Now we’re bringing you the three-dimensional world of Ellen and her mission to explore the unknown alien landscape where her dropship has crash landed. The beautiful game example takes you through the towering abandoned ruins of this mysterious planet standing in the shadows of strange, giant plantlife.We’ve created the game example using similar systems to the 2D Game Kit, so if you’ve had fun with that and want to learn more, or want to start from scratch with 3D, check it out!Meet Ellen, our Principal Engineer. Her ship has crashed on a mysterious planet, full of monstrous brightly colored plant life, slobbering maniacal creatures and fizzing acid-filled pools. The walls and ruins surrounding her are clearly derelict, abandoned many thousands of years ago. What life can she discover? Who is waiting for her in the dark crypts below the dual-moon skies?The Content Team has crammed this Game Kit project with loads of beautiful galactic 3D art assets. And just like the 2D Game Kit, this includes moving platforms, destructible boxes and switches to open giant alien stone doors. Plus, of course, some excellent evil to defeat.Let’s just quickly recap what we mean by Game Kit. Every single asset, gameplay element, visual effect and sound is saved in the project ready for you to use. Create a new scene using the kit’s tools and find Ellen ready to go on a small piece of ground. Then add hills, pillars, giant towering stairs and doorways. With Prefabs-a-plenty to drag in, start making your own Explorer 3D game with a few clicks.To start making your own 3D platformer, we’ve put together a Quick Start Guide on the Learn Site. Keep an eye out for more step-by-step documentation and a reference guide over the next few weeks.The 3D Game Kit is available now for 2018.1, and you can find it on the Asset Store or through the Learn Site. You can also access the Asset Store from within the Unity engine itself and search for ‘3D Game Kit’. For extra help and to connect with other users of the Kit, head to our dedicated forum thread.On May 23, Matt Schell will be hosting an Online User Group where the development leads of the Kit will be discussing what’s included and how to use it. Tune in at 7pm BST/11am PT.]]></description><link>https://unity.com/archive/blog/games/launching-3d-game-kit-explore-and-learn-unity-in-3d</link><guid isPermaLink="true">https://unity.com/archive/blog/games/launching-3d-game-kit-explore-and-learn-unity-in-3d</guid><pubDate>Thu, 10 May 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[2018.1 is now available]]></title><description><![CDATA[Unity 2018.1 marks the start of a new cycle that introduces a major upgrade to our core technology, which gives artists, developers and engineers the power to express their talents and collaborate more efficiently to make their AAA dreams a reality.Let’s start with a few of the highlights, and then you can dig into the details of all the features. The first two highlights described below, the Scriptable Render Pipeline and the C# Job System, represent the first versions of two major features, which will continue to evolve to help you unlock beautiful graphics and increase the runtime performance of Unity.While you go through the list of new features, you can download Unity 2018.1 here.Scriptable Render Pipeline (SRP)Available in Preview with Unity 2018.1, the new Scriptable Render Pipeline (SRP) places the power of modern hardware and GPUs directly into the hands of developers and technical artists, without having to digest millions of lines of C++ engine code.SRP makes it easy to customize the rendering pipeline via C# code and material shaders, giving you maximum control without all the complexity and challenges of writing or modifying a complete C++ rendering pipeline.We are also introducing two out-of-the-box render pipelines to fit your needs. The High-Definition Render Pipeline (HD RP) is for developers with AAA aspirations, and the Lightweight Render Pipeline (LW RP) is for those looking for a combination of beauty and speed, and it also optimizes the battery life for mobile devices and similar platforms.The C# Job System & Entity Component System (ECS)Combined with a new programming model (Entity Component System), the new runtime system enables you to take full advantage of multicore processors without the programming headache. You can use that extra horsepower, for example, to add more effects and complexity to your games or to add AI that makes your creations richer and more immersive.Level design and shadersUnity 2017.x introduced new features that help teams of artists, designers and developers build experiences together. We added powerful visual tools like Timeline, Cinemachine and a new FBX Exporter, which enables smooth round-tripping with Digital Content Creation tools like 3ds Max and Maya.With Unity 2018.1, we are continuing our efforts to help artists, designers and developers collaborate more efficiently by making it possible to create levels, cinematic content, and gameplay sequences without coding. For example, new tools like ProBuilder/Polybrush and the new visual Shader Graph offer intuitive ways to design levels and create shaders without programming skills.PackagesUnity 2017.2 introduced the Package Manager, an underlying core modular system and API that enables dynamic loading and updating of new Unity features in your projects. Unity 2018.1 builds on that with the newly released Package Manager User Interface, the Hub and Project Templates, all of which help you get new projects started faster and more efficiently.Several of the features are available in packages. The idea is to make Unity more modular so that it’s easier for us to release features on an ongoing basis.We use the "Preview" label for these new features to indicate that they are not recommended for production nor fully supported just yet. Previews offer you an opportunity to update, modify and experiment with features at an early stage as a separate modularized package, which you may want to use at a later time in productions.Unity’s built-in rendering modes offer a compelling pipeline for creating a wide range of games. With the evolution and growing diversity of platforms (performance, architecture, form factors), however, we wanted to provide a more powerful and flexible rendering pipeline.Available in Preview with Unity 2018.1, the new Scriptable Render Pipeline (SRP) places the power of modern hardware and GPUs directly into the hands of developers and technical artists, without having to digest millions of lines of C++ engine code.SRP will allow you to easily customize the rendering pipeline via C# code and material shaders. This gives you maximum control without all the complexity and challenges of writing or modifying a complete C++ rendering pipeline.Unity provides several built-in rendering modes, which are sufficient for the majority of smaller games. However, SRP allows you to go beyond what comes out-of-the-box to tailor the rendering process based on your specific needs and to optimize performance for the specific hardware of your target platform.SRP offers a new way of rendering in Unity. We’re going from a black-box model to one where most things are in C#, a more open system where users can write their own pipelines or customize templates for their needs. We’re releasing two initial pipelines in 18.1 in addition to the built-in rendering engine.You can learn more about the Scriptable Render Pipeline (SRP) and how to get started in our recent blog post.For high-end visuals on PCs and consolesThe HD RP is a modern renderer that will support a limited set of platforms (PC DX11+, PS4, Xbox One, Metal, Vulkan — no XR support yet).The HD RP targets high-end PCs and consoles and prioritizes stunning, high definition visuals. The tradeoff here is that HD RP will not work on less powerful platforms, and there will be some learning and re-tooling required.The renderer is a hybrid Tile/Cluster Forward/Deferred renderer with features parity between Forward and Deferred. Its features include volumetric lighting (in progress), unified lighting (the same lighting for opaque/transparent/volumetric), new light shapes (point lights now have line and rectangle options, spotlights now have box and pyramid options), and decals.Fewer draw callsThe LWRP is a single-pass forward renderer that uses fewer draw calls. Using the LW RP will decrease the draw call count on your project when compared to using the built-in rendering pipeline. While it supports all platforms, it is an ideal solution for mobile, and performance-hungry applications like XR. The trade-off here is that, as with the HDRP, switching to the new SRP workflow will require a learning curve, and it’s worth keeping in mind that some third-party tools are not yet compatible with it.The LW RP has its own process for rendering and therefore requires shaders written with it in mind. We have developed a new set of Standard Shaders that are located under the Lightweight Pipeline group in the material’s shader+selection dropdown. These include a Standard PBR shader, a Non-PBR Standard shader with a simplified lighting model, a Standard Terrain shader and a Standard Unlit shader. It’s worth noting that all Unity’s unlit stock shaders already work with the LW RP. This includes legacy particles, UI, skybox, and sprite shader.Download the LW RP using the Package Manager, and learn more about the LW RP and how to get started by reading our recent blog post.Templates provide pre-selected settings based on common best practices for projects, depending on whether they are 2D, 3D, high-end platforms, such as PC/consoles, or lightweight platforms, such as mobile. That way, you don’t have to worry about setting up the basics, and you have a better out-of-the-box experience.Templates ship with optimized Unity project settings, as well as some prefabs and assets to get you started. You don’t have to worry about changing many of the default settings in Unity when you start a new project because they are already pre-set for a target game-type or level of visual fidelity.Not only does this make it faster to get started, it also introduces you to settings, which you otherwise might not have discovered, and to new features, like Scriptable Render Pipeline, Shader Graph, and the Post-Processing Stack.Below is a list of the various templates you can choose from.Template Description 2D For 2D projects that use Unity’s built-in rendering pipeline.Configures project settings for 2D, including Image Import, Sprite Packer, Scene View, Lighting and Orthographic Camera.3D For 3D projects that use Unity’s built-in rendering pipeline.Configures project settings for 3D, includes updates such as setting the default color space to Linear and the default Lightmapper to Progressive.3D with Extras
(Preview) Similar to the 3D Template but with the added benefits of post-processing, presets and example content. High End
(Preview) For high-end graphics on platforms that support Shader Model 5.0 (DX11 and above). This template uses the HD RP.This template uses the HD RP, a modern rendering pipeline, which includes advance material types and a configurable hybrid Tile/Cluster deferred/Forward- lighting architecture.Lightweight
(Preview) For focus on performance and projects that primarily use a baked lighting solution. This template uses the LW RP, a single-pass forward renderer with light culling per-object. Using the LW RP will decrease the draw call count on your project, making it an ideal solution for lower-end hardware.All lights are shaded in a single pass rather than additional passes per pixel light.Lightweight VR
(Preview) Focuses on performance when developing VR projects that primarily use a baked lighting solution. This template uses the LW RP and requires a VR device to run.Authoring shaders in Unity have traditionally been the realm of people with some programming ability. In 2018 we are changing this!Shader Graph enables you to build your shaders visually using a designer tool — without writing one line of code. Instead, you create and connect nodes in a graph network with easy drag-and-drop usability. You can see the results immediately and then iterate, making it simple for new users to become involved in shader creation.The Shader Graph system:Is designed to work with the LW render pipeline (HD render pipeline coming soon)Can be extended to work with any custom render pipelineHas an open architecture that allows for custom nodes to be writtenIf you want to learn more about how to get started with Shader Graph, we highly recommend that you check out the Shader Graph Example Library on GitHub and our Shader Graph Tutorial videos.The Progressive Lightmapper offers great results for baked lights, and improves the workflow for lighting artists, enabling them to iterate quickly and predictably by providing progressive updates in the Unity Editor.While originally released as a “preview” feature in version 5.6, it has been improved with more features in each subsequent release. In 2018.1, it comes out of preview mode and includes memory optimizations for baking large scenes.As of 2018.1, the Progressive Lightmapper also helps power users via the Custom Bakes API. This enables access to data within the baking solution for the development of new lighting tools, such as the custom Occlusion Probes system used to create the first-person interactive experience in Book of the Dead.The Post-Processing Stack enables you to apply realistic filters to scenes using professional-grade controls. The artist-friendly interface makes it easy to create and fine-tune high-quality visuals for dramatic and realistic effect.Coming out of beta in 2018.1, we’ve added the most requested features and have fixed as many bugs as possible. We’re also improving our XR support by adding mobile-specific paths, volume blending, and a complete framework for custom user-effects.This version of the Post-Processing Stack will be shipped as the first of many upcoming packages, which will give users the plug-in flexibility of an Asset Store pack, but with the update-ability of a core Unity feature.In 2018.1 the Post-Processing Stack has been improved to feature higher-quality effects, automatic volume blending with a powerful override stack, and a flexible framework to write and distribute your own custom effects. It’s compatible with the LW RP, HD RP, and built-in rendering pipelines.Dynamic Resolution was first introduced in Unity for Xbox One in 2017.3. Now we are bringing the same functionality to PS4. The feature helps users dynamically manage their GPU budget. For example, it may be desirable for a game to hit high resolutions (such as 4K) in some scenarios. At other times, however, it is preferable for the resolution to drop in order to allow for GPU performance to increase.Users can select which render textures and cameras will participate in Dynamic Resolution from the Unity Editor and then scale the resolution of those items at runtime from a single script call. This combined with the information provided by the FrameTimingManager allows users to produce scripts that can automatically balance their GPU load by changing the resolution of their chosen render targets. Internally the system uses no more memory for render targets than would be allocated if Dynamic Resolution were not in use, and no significant CPU performance overhead is incurred when changing the resolution.Note: Users should be sure to check that their titles can become GPU-bound before adopting Dynamic Resolution as it will be of no benefit in CPU-bound scenarios.GPU Instancing now supports fetching of Global Illumination data for each instance. This can achieved either by allowing Unity render loops to automatically batch LightProbe-lit or Lightmap-lit objects, or by manually calling the new APIs to extract the LightProbe data baked with the scene into a MaterialPropertyBlock object used later for instanced rendering.
This feature addresses an issue related to undesired artefacts. This occurs when a lightmap is divided into a number of charts and sampled, and the texel values from one chart bleeds into another (if they are too close) leading to undesired artefacts. The new UV Overlap Visualization feature lets you immediately see which charts/texels are affected by this issue. It automatically identifies overlaps and enables you to make more informed decisions when solving such issues (e.g. by increasing chart margins).Tessellation for Metal is a way to increase visual fidelity while using lower-quality meshes. It follows the DX11 hardware tessellation convention of using hull/domain shader stages. Existing HLSL shaders using this feature are cross-compiled and transparently transformed into Metal-compute shaders, aiming to make it a seamless transition between platforms. (Target-graphic APIs have a different underlying native approach to implementing tessellation.)Other graphics improvements and new featuresSky Occlusion ships as an experimental feature in 2018.1. It improves graphical fidelity and realism by including the contribution of lighting from the skybox as part of ambient occlusion calculations.We also added a new experimental C# interface to pass light information to the GI-baking backends.We now provide the ability to use all the CPU cores on a device to perform the rigidbody simulation. This includes the ability to execute the discovery of new contacts, performing both discrete and continuous island solvers and broad-phase synchronization, all using the native Job System. To get started, simply go to the 2D Physics settings and under “Job Options (Experimental),” check “Use Multithreading.” We have also provided a couple of test projects for job-based physics (used during development of this feature), which are available on Github.SpriteShape is a sprite layout and world-building tool that provides the ability to tile sprites along the path of a shape based on given angle ranges. Additionally the shape can be filled with a tiling texture.The main advantage of the SpriteShape feature is the powerful combination of a bezier spline path with the ability to tile sprites adaptively or continuously. When tiling continuously, sprites assigned to given angles are automatically switched.The feature is now available as a preview package and you can get our sample project and documentation here.Head over to our forum and let us know about your experiences. Tell us how this fits into your workflow or enhances your project? What worked smoothly? And what didn’t?We’re working on a new 2D animation system, which will be released over multiple phases and is now available as a preview package.In its first release, we have focused on developing tooling for rigging a sprite for skeletal animation (although similar, it is not an integration of Anima2D into Unity).The tools include: Bind-pose editing, manual mesh-tessellation and skin-weights painting. A runtime component ties it all together to drive sprite deformation. Our goal is to allow users to create simple animated characters that consist of a single sprite.An ongoing projectWe will continue to build new features and workflows on top of this. This may include tooling to make the creation of multi-sprite characters more efficient and to support workflows for larger productions. This will allow you to create complex multi-sprite characters and potentially share rigs and animation clips across multiple characters.The feature is now available as a preview package and you can get our sample project and documentation here. We're eager to hear what you think. Let us know which workflows we supported correctly, and what we missed, ideas for improvement, and more in our dedicated forum.The Particle System now supports GPU Instancing, which enables many more particle meshes to be rendered with a much smaller CPU performance cost. The Particle System uses Procedural Instancing, which is explained in more detail here.Instancing support has been added to the Particle Standard Shaders, and will be enabled by default on all new content. In Unity 2018.1, you can manually enable content from older Unity versions simply by clicking the checkbox in the Renderer Module. It’s also possible to add particle-instancing support to your own shaders.Below, you can see 10,000 sphere meshes using the old non-instanced technique, rendering at 8.6 fps followed by 100,000 sphere meshes using the new instanced technique, rendering at 8 5fps.Unity 2018.1 adds some new options to the Velocity over Lifetime module, allowing you to make particles travel relative to a defined center point. By default, the center is aligned with the Transform, but can be overridden within the Module. Particles can be made to travel around the center point, using the Orbital parameters, and away/towards the center point, using the Radial parameters.All shape types in this module now support a texture. The texture can be used for:Controlling particle colorsControlling particle alphasDiscarding particles based on a threshold and a texture channel of your choiceThere are two new ways to spawn sub-emitters in Unity 2018.1. The first is via the Trigger Module, which works in a similar way to how sub-emitters are spawned from the Collision Module. Simply choose Trigger as the sub-emitter type in the Sub-Emitter Module, and then, when conditions are met inside the Trigger Module (i.e. particles have entered the collision volume), the corresponding sub-emitters will be triggered.The second new way to trigger sub-emitters is via script. We have added a new script API called TriggerSubEmitter, which can be used to trigger a sub-emitter for a single particle, a list of particles, or all particles. In the Sub-Emitter module, you can choose Manual as the spawn type, which tells the Particle System that this emitter will only be triggered via a call in script. It is also possible to use the existing types (Collision or Death) and add additional triggers for these sub-emitters via script.The Legacy Particle System continues to be a development burden for each Unity version where it is supported. New engine features, such as VR and multi-threaded rendering, require time spent on ensuring compatibility as Unity evolves, and there will, of course, always be new engine features requiring maintenance of the Legacy Particle System code.This has prompted us to take the next logical step and retire the Legacy Particle System. Therefore, we have decided to remove its Script Bindings in Unity 2018.1.It has been fully deprecated since Unity 5.4, and our analytics show almost non-existent usage. Our target is to fully remove the Legacy Particle System in Unity 2018.3.If any of this will affect you, you have the following options:Migrate your Legacy Particle Systems to ShurikenUse our auto-updater script to attempt automatic conversion (https://forum.unity.com/threads/release-legacy-particle-system-updater.510879/)Reach out to us for help at https://forum.unity.com/threads/legacy-particle-system-deprecation.420351/While we can’t promise to solve every problem this causes, we will definitely listen to your concerns and do our best to mitigate any pain it may cause.Weight Tangents allows animators to create animation curves with fewer keys and smoother curves by allowing them to control the weight of the tangents. Once a tangent is set to Weighted, you can stretch it to affect the curve interpolation without adding any additional keys, for a smoother, more precise result.The Animation team has added support for weighted tangents to all curve editing in Unity. This means that you can use this new feature with the Particle System.The added bezier handles and weighted tangents enable you to create animation curves with fewer keys and smoother curves by controlling the weight of the tangents. Once a tangent is set to Weighted, you can stretch it to affect the curve interpolation without adding any additional keys, for a smoother, more precise result.We also added a simple, but oh-so-convenient, Zoom Control feature in the Animator Controller window!As we announced in February, ProBuilder and its creators have joined Unity. With the ProBuilder, PolyGrid and Polybrush tools, we are now offering integrated advanced level design in the Unity Editor at no additional cost. The package, which consists of ProBuilder, ProGrid and Polybrush, is included with all Unity subscription plans (Personal, Plus, Pro and Enterprise).ProBuilder is a unique hybrid of 3D-modeling and level-design tools optimized for building simple geometry, but capable of detailed editing and UV unwrapping as needed.You can use ProBuilder to quickly prototype structures, levels, complex terrain features, vehicles and weapons, or to make custom collision geometry, trigger zones, or nav meshes.ProBuilder also includes tools for exporting your models, editing imported meshes, and a run-time ready API for accessing the ProBuilder toolset from your own code.Also available, ProGrid gives you both a visual and functional grid, which snaps on all 3 axes. Working on a grid facilitates speed and quality, making level construction incredibly fast, easy, and precise. It is especially handy for modular or tile-based environments, but when combined with ProBuilder, it enables faster, and more precise geometry construction for all types of work. Check the ProGrid Introduction and Tutorial to learn more. Scroll to the bottom of this blog post for information on the integration and availability of ProGrid.Polybrush enables you to blend textures and colors, sculpt meshes and scatter objects directly in the Unity editor. Combined with ProBuilder, you get a complete in-editor level-design solution.Finally, enjoy Unity’s seamless round-tripping with Digital Content Creation tools (like Maya) to further detail and polish your models.Below are a few examples of how ProBuilder enables you to quickly prototype structures, complex terrain features, vehicles and weapons, or to make custom collision geometry, trigger-zones or nav meshes.Probuilder has been used by many made-with-Unity games. Check out the highlight reel video:Here’s a quick overview of the many features in ProBuilderPolybrush enables you to blend textures and colors, and sculpt meshes directly in the Unity Editor.Polybrush is in beta, and just got a new feature in its latest iteration; it now allows you to scatter objects using highly customizable brushes.Check the Polybrush Introduction and Tutorial to learn more.As a package, ProBuilder, Polybrush and ProGrid give you a complete in-editor level-design solution that enables you to construct precise geometry faster.ProBuilder is available via the new Unity Package Manager. We plan to integrate the other two parts of the package directly into Unity at some point in 2018, but right now, you can download Polybrush (Beta) and ProGrids for free on the Asset Store.How to get started:In the Unity Editor, go to the Window menu>Package Manager, click All, select ProBuilder and click Install:For more information, check the documentation and the Getting Started with ProBuilder tutorial series.If you already purchased one of the packages, have a look at the “How to get the tools, what’s the roadmap” section of this blog post for information.With our new high-performance multithreaded system, we’re rebuilding the very core foundation of Unity. The new system will enable your games to take full advantage of the multicore processors currently available — without the programming headache. This is possible thanks to the new C# Job System, which gives you a safe and easy sandbox in which to write parallel code. We are also introducing a new model to write performant code by default with the Entity Component System, and the Burst compiler to produce highly optimized native code.With performance by default, not only will you be able to run your games on a wider variety of hardware, you’ll also be able to create richer game worlds with more units and more complex simulations.Write very fast, parallelized code in C# to take full advantage of multicore processorsThe trend in modern hardware architecture has been heading towards multiple cores to increase processing power over the more traditional solution of increasing core speed. The introduction of the C# Job System will help you fully leverage this increase in processing power.It enables you to write fast jobified code in C# Scripts. It’s also safe as it provides protection from the pitfalls of multi-threading, such as race conditions and deadlocks.Better performance across the boardThe C# Job System enables better overall performance, especially as new Unity features like the Entity Component System (18.1 preview) and our new Burst compiler (18.1 preview) technology become available. The goal of all of these systems is to increase what is fundamentally possible in Unity in terms of performance, while still supporting existing workflows and allowing for a smooth technical transition.What you’ll need to doIn order to achieve these performance gains, there are a few key changes you need to make to the way you write code in Unity. First, providing the CPU with clean, linear arrays of data to read from, rather than pulling from multiple locations in memory during calculation, allows for much faster performance. By taking an active role in memory management, we ensure that memory is managed in a way that optimizes performance. A new set of tools added to Unity’s API allows you to manage your data layout and the way memory is managed in an explicit and detailed way.The Entity Component System is a way of writing code that focuses on the actual problems you are solving: The data and behavior that make up your game.In addition to being a better way of approaching game programming for design reasons, using Entity Component System puts you in an ideal position to leverage Unity's Job System and Burst Compiler, letting you take full advantage of today's multicore processors.With Entity Component System, we are moving from an object-oriented approach to a data-oriented design, which means it will be easier to reuse the code and easier for others to understand and work on it as well.The Entity Component System ships as a preview package in 2018.1, and we will continue to develop and release new versions of it in the 2018.x cycle.Burst is our LLVM-based compiler, which takes .NET IL and produces machine code using a new math-aware backend Compiler Technology. Burst takes C# jobs and produces highly-optimized code, which takes advantage of the particular capabilities of the platform you’re compiling for. So you get many of the benefits of hand-tuned assembler code across multiple platforms, without all the hard work.Burst Compiler ships as a preview package in 2018.1, and we will continue to develop and release new versions of it in the 2018.x cycle.To help you get started, we’ve also provided a repository of examples that demonstrate using the C# job system to write systems at scale, for reference and sharing: C# Job System Cookbook.For more information on how to build using the Entity Component System, have a look at these Entity Component System Samples.Last fall at Unite Austin 2017, Unity and Autodesk announced a collaborative partnership to build more connected workflows between Autodesk 3D tools and the Unity engine.Since then we have improved the interoperability to benefit any game developer or artist who works on either side of a 3dsMax/Maya/Unity workflow.Our goal is to provide an artist-friendly interface and workflow that allows you to safely merge your changes back into those assets to continue your work.When roundtripping, assets are often edited and renamed, potentially changing their very nature. Now Unity will make sure that modifications made to the FBX by an external application can be remapped to the original with no loss of information.Other improvements to the workflow and integration include Lights roundtripping, Animations roundtripping (including custom properties) and Blendshapes (experimental).Version 6.0 of the remote Cache Server, which is the culmination of a six-month focused effort to elevate quality and performance, is now available. Cache Server makes creating with Unity faster by optimizing the asset-import process, either on your local machine or on a dedicated Local Area Network server. These improvements save time and speed up the development process for individuals and teams. Download Remote Cache Server now on GitHub.Package ManagerIn 2017.2, we introduced the first pillar of the new Package Manager, a more flexible and modular approach to managing Unity-developed features and assets that make up your projects. Initially only exposed as an API in previous releases, in Unity 2018.1, we’re introducing a new Package Manager User Interface. The new Package Manager UI will help you start projects more efficiently, and make it smoother and easier to install, update and enable new Unity features.The Unity Package Manager UI improves the following aspects of your project-management workflow:Quick access to newly released features: Browse the list of available features for your version of the editor, and download them from the cloud. Packages are instantly and dynamically included in your project.Get the latest fixes, instantly: Quickly check, download, and update the packages you have enabled in your project.Access to Preview features: Many new Unity features will be available to download as “Previews” giving you access to the latest technology.Easily share lightweight projects: Unity Packages are kept in a global cache on your machine, and referenced by your project. There’s no need to transfer packages when sharing your project; the editor will fetch and download the needed packages from the cloud repository.You can find the Package Manager in the Window and use it to install features such as Shader Graph, Post Processing, ProBuilder and the Lightweight and High Definition Render Pipelines.Unity automatically defines how scripts compile to managed assemblies. Compilation times in the Unity Editor for iterative script changes increase as you add more scripts to the project, thus increasing compilation time.In 2017.3, we introduced the ability to define your own managed assemblies based on scripts inside a folder. By splitting your project’s scripts into multiple assemblies, script compilation times in the editor can be greatly reduced for large projects. You can think of each managed assembly as a single library within the Unity Project.In 2018.1, Assembly Definition File (asmdef) assemblies are now compiled on startup before any other scripts (Assembly-CSharp.dll and friends), and compilation does not stop at the first compile error.All asmdef assemblies that successfully compile along with all their references are loaded before compiling the remaining scripts (Assembly-CSharp.dll and friends). This ensures that Unity packages are always built and loaded regardless of other compile errors in the project.It also makes it possible for packages to have playmode test assemblies without modifying user project settings.In the past, when adding play-mode tests, users needed to enable it in the settings. This would result in registering the assemblies in the build, and also meant that there was no separation, which C# developers normally employ in projects designated for tests.In 2018.1, you can mark the assembly to reference the test assemblies, and no other assemblies will reference them unless the old settings are used (backwards compatible). However predefined assemblies will not auto-reference these assemblies either.We also added a new BuildOption by default. The normal build will not build assemblies with these settings. Only the TestRunner will include and build test assemblies.All this then makes it possible to have tests in projects without having the setting activated.Presets are assets containing the type of asset to which they apply and a list of property modifications (name/value pairs).Presets can be easily applied to or created from any serializable object via the UI on the object inspector or from a public API method.Objects do not keep a link to an applied preset. Thus, modifying a preset after it has been applied has no side-effects.Each object type may have a single preset registered as its default via the new Preset Manager. Any time an object is created in the Unity Editor, the default preset for that object is automatically applied. Changing the default preset does not affect existing objects.Presets only exist in the editor. There are no runtime API changes.Presets expose API hooks, which allow them to be set immediately before import, and a new object creation API, which allows editor code to create objects with default presets.As announced in December 2017, we are deprecating built-in support for the import of Substance Designer materials in the Unity 2018.1 Editor. You can find more info on how to include substance here.In 2018.1, we are adding a number of improvements to Timeline. With Timeline keyboard navigation, you can now use tabs and arrow keys to speed up your workflow by toggling between collapsing and expanding Tracks easily.We also added the new Timeline Zoom bar which makes it easy to zoom in and out to get an overview of your Timeline tracks.We are also introducing editing modes in Timeline.When manipulating clips, zoom-based snap behaviors keeps clips together with neighboring clips. To create a blend effect, you can release (relax) the edge-magnet behavior through a clutch key (Ctrl). This allows moved/trimmed clips to blend into neighboring clips without being impeded by the edge-magnet.There are three modes:Mix mode allows two clips to blend together in order to create a transition. This mode is how Timeline has worked up until now, and it is the default editing mode.Rippling mode allows clips to be inserted on a track that already contains clips by making room for the new material.Replace mode allows clips to overwrite clips already present on a track in order to update the material while preserving timing.Cinemachine comes packed with improvements in 18.1, including the Cinemachine Storyboard, which enables you to set up the timing and basic animation of storyboards in Timeline as a function of a Cinemachine clip. These people will help you get people to use Unity from start to finish in the storytelling process keeping them there throughout the creative process.You can pace out your boards, do cross-fades, basic zooms and movement ‘Ken Burns’ style.Get your story blocked in and your timing and shots working the way you want them to. Add audio to create a realistic feel and pull your story together. Once you're ready, you can use just one button to toggle between the storyboard and a Cinemachine camera, all the while keeping your editing intact.There is no need to do your storyboard and previs edit in another tool; you can do it all inside Unity.Other improvements include Package Manager integration, camera-shake system, support for custom camera blend curves and numerous others.It’s important to us that we provide you with a great C# IDE experience to accompany the new C# features. So to support the latest C# features and C# debugging on the new .NET 4.6 scripting runtime on macOS, we are replacing MonoDevelop-Unity 5.9.6 with Visual Studio for Mac starting from Unity 2018.1.(as announced in January). This will make support for many of the exciting new C# features available in C# 6.0 and beyond better as we move to the (currently experimental) .NET 4.6 scripting runtime upgrade in Unity.On Windows, we will continue to ship Visual Studio 2017 Community with Unity. The Visual Studio Community already supports the latest C# features and C# debugging on the new .NET 4.6 scripting runtime. MonoDevelop-Unity 5.9.6 will be removed from the Unity 2018.1 Windows installer, as it does not support these features.Visual Studio Code also supports Unity and extensions to accommodate IntelliSense and the Unity Debugger Extension to debug your Unity C# projects. See Unity Development with VS Code for details, and learn more about the implications and alternative IDEs in our blog post.As always, we are looking for feedback, and if you experience issues with Visual Studio or its integration in Unity please report them at https://developercommunity.visualstudio.com/ "In 2018.1, we have added support for IL2CPP scripting backend for Windows standalone and macOS standalone. This brings the CPU speed improvements of IL2CPP to the Mac/OSX standalone and Windows standalone player, as well as enabling third-party DRM tech to help with application code security.The new scripting runtime is no longer experimental in Unity 2018.1. In Unity 2017.1, we shipped the first experimental preview of the stable scripting runtime. Throughout the 2017.2 and 2017.3 release cycle, many Unity users worked with this experimental scripting runtime and provided invaluable feedback. (Thanks, everyone!) We’ve also worked closely with excellent developers from Microsoft, both on the Mono and Visual Studio teams. As we’ve sorted out issues and corrected bugs, the modern scripting runtime has become more and more stable and is now ready for widespread use.Upgraded compilers and runtimes provide improved stability, richer debugging, and better parity with a modern .NET architecture across all platforms. For example, C# 6 and new .NET APIs make Unity compatible with modern .NET libraries and tools.Two profiles are available with the new scripting runtime: .NET 4.x and .NET Standard 2.0. Both of these profiles fully support .NET Standard 2.0 to enable the use of the latest cross-platform libraries. The .NET Standard 2.0 profile is optimized for small build size, cross-platform support, and ahead-of-time compilation. The .NET 4.x profile exposes a larger API surface and exists primarily for backward compatibility.Google’s spatial audio SDK, Resonance Audio is fully integrated in Unity 2018.1, enabling developers to create more realistic VR and AR experiences on mobile and desktop. With Resonance Audio in the Unity Editor, you can now render hundreds of simultaneous 3D sound sources in the highest fidelity for your XR, 3D and 360 video projects on Android, iOS, Windows, MacOS, and Linux.Some recent examples of made-with-Unity games are Pixar’s Coco VR for Gear VR, Disney’s Star WarsTM: Jedi Challenges AR app for Android and iOS, and Runaway’s Flutter VR for Daydream.A new, native, multiplatform XR API has been added in this release laying the groundwork for a more extensible framework that initially targets abstraction over handheld AR SDKs. The API is designed to enable developers to build Handheld AR apps once, and deploy across multiple device types. As functionality is added to this API, we will eventually deprecate the ARKit plugin on Bitbucket as well as the experimental ARInterace project on GitHub. Support for handheld AR SDKs will ship as preview packages in the editor.For all creators looking to start exploring Magic Leap, we’re thrilled to make a Unity for Magic Leap Technical Preview and the Lumin SDK available to you on the Magic Leap Creator Portal.The Magic Leap Technical Preview is meant for anyone looking to get a glimpse at this exciting new platform. In addition to 2018.1 features, the Technical Preview includes a new platform under the Build Window targeting Magic Leap’s Lumin OS. The preview coupled with the Lumin SDK will also give you access to Magic Leap Zero and Magic Leap Remote, which allows for simulation of the hardware platform. Learn more.Unity 2018.1 brings you support for Google’s Daydream standalone VR headset with Worldsense technology, enabling inside-out, six degrees of freedom (6DoF) tracking support for Daydream apps. Use it to get building now, and be ready when the hardware is released later this year!With ARCore out of developer preview, you can now create high-quality AR apps for more than 100 million Android-enabled devices on Google Play. ARCore 1.1 for Unity also enhances the environmental understanding of your scene with oriented feature points, a new capability that allows you to place virtual content on surfaces near detected feature points, such as cans, boxes, and books. It also allows you to test and iterate your AR app in near real-time with ARCore Instant Preview, Learn more about all that ARCore brings to Unity 2018.1.Whether you’re a VR developer who wants to make a 360 trailer to show off your skills, or a director who wants to make an engaging cinematic short film, your workflow just got easier. Unity’s new technology for capturing stereoscopic 360 images and video in Unity empowers you to create and share immersive experiences with an audience of millions on platforms such as YouTube, Within, Jaunt, Facebook 360, or Steam 360 Video.Our device-independent stereo-360 capture technique is based on Google’s Omni-Directional Stereo (ODS) technology, which uses stereo cubemap rendering. We support rendering to stereo cubemaps natively in Unity’s graphics pipeline both in the Unity Editor and on PC standalone players. After stereo cubemaps are generated, the cubemaps are converted to stereo equirectangular maps, which is a projection format used by 360-video players.Stereo 360 capture works in forward and deferred lighting pipelines with screen space and cubemap shadows, skybox, MSAA, HDR and the new Post-Processing Stack.You can find more info in this blog post.In 2018.1, we added ARM64-bit runtime support for Android based on IL2CPP technology. Currently, only 32-bit ARM or x86 builds for Android can be produced using Unity. Almost all current chipsets ship as 64-bit, but we have not been leveraging the potential advantages. The new support for running 64-bit Android apps will have performance benefits, plus games will be able to address more than 4GB of memory space.Android Sustained Performance Mode sets a predictable, consistent level of device performance over longer periods of time without thermal throttling. It offers improved battery life and a smooth experience at the cost of some reduced performance. It’s based on the Sustained Performance API from Google. This setting has already been available for VR applications, and now you can enable it for non-VR applications as well.Performance Reporting (included with Unity Plus and Unity Pro) now supports Windows desktop, joining support for MacOS and mobile platforms (iOS and Android). Native crashes for Windows will now be reported for you to view and debug from the Unity Developer Dashboard. The dashboard is also being updated with new features for managing and viewing reports, as well as better performance for highly active projects.As always, refer to the release notes for the full list of new features, improvements, and fixes. You can also provide us with feedback on our forums.At GDC, we announced our new plans for Unity releases, which include what will be known as the TECH stream and the Long-Term Support stream (LTS). The TECH stream will consist of three major releases a year with new features and functionality. The LTS stream will be the last TECH stream release of each year and will roll over to the following year.The TECH and LTS streams represent a major shift from the current approach of supporting each of the releases for a year. From now on:Support for each respective TECH release will end when the following one goes live.
LTS releases will be supported for two years.Other aspects of our approach to releases will also change:From four to three releases: Instead of four feature releases, we are going to ship three TECH stream releases per year.First release in spring: Each year, a TECH stream will begin in the spring, this year starting with 2018.1. This will be followed by summer and fall releases.Frequency of bug fixes: Whereas the TECH stream will receive a weekly release with bug fixes, the LTS stream will receive regular bug fixes every other week.From patches to updates: We are dropping the .p# suffix for our weekly patches because, due to our improved testing of these releases, we believe they will be suitable for everyone.The first LTS release will be 2017.4, which is simply the latest 2017.3 updated release. The change in version number signifies that it is the beginning of the new LTS cycle. So, xxxx.1, .xxxx.2 & xxxx.3 are TECH releases and xxxx.4 is the LTS release.The regular updates on both TECH and LTS streams will have continuous version numbering. For example, 2017.4.0 will be followed by 2017.4.1, 2017.4.2, 2017.4.3, and so on.The chart below shows an example of how the streams will work, with the blue boxes representing the TECH streams and the green boxes representing the beginning of the LTS streams.To help you learn more about LTS, we created a blog post which answers Frequently Asked Questions.We also want to send a big thanks to everyone who helped beta-test, making it possible to release 2018.1 today. Thanks for wanting to be among the first to try all the new features and for all the great feedback.Info on the 2018.1 sweepstake winnersWe have found and contacted all the beta 18.1 sweepstakes winners and will send out the prizes to the lucky winners in the weeks to come.Be part of the 2018.2 betaIf you aren't already a beta tester, perhaps you’d like to consider becoming one. You’ll get early access to the latest new features, and you can test if your project is compatible with the new beta. By becoming a beta tester, you can:Get early access to all the latest features before they are officially releasedTest your compatibility to make sure your projects are ready to be upgradedJoin the experts to share insights with experienced members of the Unity communityWin cool prizes — beta testers are automatically entered into our sweepstakesInfluence the future of Unity with surveys, feedback and the chance to be invited to roundtablesBe part of an elite group that gets special benefits, such as discounts and invites to special eventsWe've been listening to your feedback from our beta survey and as a result, we're planning to launch a number of new initiatives. We're going to expand these open-beta initiatives into a more formalized program, which will result in a more efficient and speedy QA process and, ultimately, a more polished end product.You can get access simply by downloading our latest beta version. Not only will you get access to all the new features, you’ll also help us find bugs ensuring the highest quality software.As a starting point, have a look at this guide to being an effective beta tester to get an overview. If you would like to receive occasional mails with beta news, updates, tips and tricks, please sign up.]]></description><link>https://unity.com/blog/engine-platform/2018-1-now-available</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/2018-1-now-available</guid><pubDate>Wed, 02 May 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Lifetime value: How app developers can maximize LTV]]></title><description><![CDATA[LTV, or lifetime value, is a critical metric which app developers use to measure overall app success. It does this by quantifying the value of a user cohort (or a group of users segmented by geo, app version, install date etc.) throughout their lifetime within an app. A core measurement of app health, it’s used on both sides - by both monetization and user acquisition managers.How to calculate user lifetime valueThere are many ways to calculate lifetime value, and each depends on how app developers define ‘value.’However, no matter how app developers choose to calculate LTV, one thing remains certain: ‘high LTV’ users always have high retention rates, and contribute generously to the overall revenue of the app. That’s why app developers typically calculate LTV in relation to monetization and/or retention.Monetization and lifetime valueIn relation to app monetization, lifetime value is calculated in order to better quantify the revenue-generating capabilities of an app’s user base - in other words, how much revenue do users generate?Of course, LTV as a factor of monetization depends on the app type and the forms of monetization it employs - in-app purchases, in-app advertising, sales, subscriptions etc. LTV might also differ from category to category.For example, a ride-sharing app might calculate LTV in terms of frequency of use or money spent on rides, while a mobile game might calculate LTV in terms of in-app purchases and rewarded videos watched.Typically, it’s relatively easy for app developers to calculate the IAP-based LTV of their users - i.e. the value of the in-app purchases a given user makes over their lifetime. But ad-based LTV can be harder to calculate since it’s based on data from various different ad networks. There are tools to simplify calculation of ad LTV - you can check out our tool here.Why is LTV so important?LTV is particularly important for app developers running user acquisition campaigns since LTV will help app marketers define what price makes sense to pay for an install. In order to ensure their campaigns are ROI positive, marketers need to ensure that the price they pay for a new user is below the projected LTV for that user.In this sense, the nexus between user retention and lifetime value becomes important. In terms of user retention, or an app’s ability to keep users coming back, lifetime value is calculated to learn the point in a user’s lifetime at which the user become profitable - i.e. when the price point paid for that user is passed.Here, app developers calculate LTV as a function of their app’s retention curve - for example, what is LTV 7 days after install? This way, app developers can hone in on certain points in the app lifecycle at which LTV is low, and amp up resources to increase LTV there.If the cost per acquired user in a user acquisition campaign is higher than the user is going to eventually generate in-app - i.e. if the cost of acquiring a user is higher than their projected LTV - app marketers lose money. That’s why it’s important to make sure that the cost per install (CPI) is less than LTV - so app advertisers can stay ROI positive and turn a profit.In concrete terms this means it’s better to pay $5 for a user that’s predicted to bring an average of $6, than to pay $0.10 for an install that won’t yield revenue.How can app publishers increase lifetime value?Optimize onboardingThe first few minutes of a user’s in-app experience is critical. That means your onboarding process needs to be enticing, simple, sticky, and engaging to ensure users stick around for the long haul and end up generating revenue throughout their lifetime.Integrate rewarded video adsThat brings us to the next point. Some ad units - like rewarded videos - are actually known to increase both retention and lifetime value within an app. This is because they not only drive ad revenue, but also drive further engagement with the app, and down the line, can even increase IAPs. That means better retention and revenue from in-app purchases. Giving users who aren’t ready to pay a way to keep playing your game or engaging with your app is key to building long-term loyalty, and rewarded videos are a win-win way of doing that.What are they? Rewarded videos are ads users watch in exchange for receiving in-app content like game currency or extra lives. In addition to generating high eCPMs and revenue for app developers, rewarded video ads also increase retention rates, since they let users continue playing without requiring they make in-app purchases they’d otherwise need to progress. More importantly, rewarded videos don’t cannibalize IAPs, and can actually increase them. As non-paying users get used to accessing in-app currency through RVs, they often eventually reach a stage where they’re ready to pay for that currency since its value is clear to them. This is why users who frequently watch rewarded videos have higher LTVs than others.Keep users engagedA core component of good LTV is active or engaged users - i.e. users who keep coming back to your app or game to spend time (and money). Increasing the number of engaged users you have will also therefore increase overall LTV.Some key tools to use when trying to increase in-app engagement are deep linking and push notifications. App re-engagement campaigns with deep links will direct lapsed, or unengaged users to specific content in your app that is relevant to them. By removing any ‘unnecessary’ steps like opening the app and navigating to the page they want, deep linking makes it easy for users to re-engage with an app they already have installed.Similarly, push notifications - when implemented thoughtfully - can help remind users of in-app benefits, or highlight special deals that could entice them to come back to the app. For example, showcasing a special promotion on in-app currency that doubles its value for a limited period of time.Wrapping upLTV is one of the most important metrics for determining an app’s success, and there are dozens of strategies for increasing lifetime value. If you’re interested in learning more about improving your app’s lifetime value, contact the team of experts at ironSource here.]]></description><link>https://unity.com/blog/lifetime-value-maximize-ltv</link><guid isPermaLink="true">https://unity.com/blog/lifetime-value-maximize-ltv</guid><pubDate>Sun, 08 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Photogrammetry in Unity: Making real-world objects into digital assets]]></title><description><![CDATA[Photogrammetry is the process of using multiple photos of the real-world objects to author game-ready assets. It’s best suited to objects that are time-consuming to produce in 3D sculpting software. This post explains how new Unity features assist you in working with photogrammetry. We’re also sharing our Fontainebleau photogrammetry demo project, including all meshes, textures and materials.Last year at Siggraph 2017, we revealed a highly detailed field guide for professional artists. It takes you through the entire process, step-by-step, for producing high-quality, reusable, and game-ready digital assets from photos and video.Part of this workflow, the team released the De-Lighting tool on the Asset Store. It enables artists and developers to remove lighting information from photogrammetry textures, so that the final assets can be used under any lighting condition. We also gave a talk at Siggraph about an overview of the photogrammetry workflow and shared technical details about the De-Lighting tool.This year, we created a step-by-step guide to shows how to use a layered shader to achieve the same level of quality as shown in the photogrammetry workflow guide, but optimizes on texture memory budget to cater for your gaming needs.Here’s an overview of the steps of authoring material with Photogrammetry asset in Unity:Check out the complete guide:
Layering materials in Unity with Hight-Definition (HD) Render PipelinePhotogrammetry allows you to get a qualitative result, but requires a very high texture resolution to conserve details, as shown here:This is unpractical for game authoring due to memory budget, and it doesn’t allow you to add any variation to the object.Unity 2018.1 beta introduced a preview of Scriptable Render Pipeline. We will release two built-in render pipelines with Unity 2018.1: the Lightweight (LW) Render Pipeline and High-Definition (HD) Render Pipeline. HD Pipeline provides a shader dedicated to photogrammetry material authoring name: LayeredLit.A layered shader defines the visual with a combination of individual materials.You can see the main material in the picture above is mixed with other materials like stone, ground element and moss. These other materials are tileable. This means they can wrap around objects and you can reuse them on different objects. Using a combination of materials enables you to have a similar visual quality as a high resolution texture (as in a similar texel density on screen), but with low resolution textures, which saves memory:A layered shader allows you to share textures between assets, and to combine tileable materials to add variation. This makes it easy for you to populate a large world at low cost:We created the Fontainebleau demo to illustrate the photogrammetry workflow and the use of the LayeredLit shader. This technical demo is authored with game development condition in mind: it’s a representative game level and targets the standard PlayStation 4 platform at 1080p @ 30fps. The level represents a part of the Fontainebleau forest and uses a limited set of meshes and textures that are reused with different variation with the help of the LayeredLit shader. There is a playable first person and third person mode to walk inside the forest. Targeting consoles like XboxOne or PlayStation 4 requires consideration of how to get the most from these platforms.The demo also supports three different lighting condition to illustrate that correctly authored and de-lighted asset work fine in any lighting condition:Day lighting:Sunset lighting:Night lighting with lights off:Night lighting with lights on:Finally, we included 3 modes to explore the demo:Cinematic mode: select your lighting program, then sit back, relax and enjoy the show,First Person & 3 Person Modes: these are very rudimentary exploration modes to let you discover the environment on your own, with bonuses in First Person mode.Fontainebleau is the name of a forest close to the Unity Paris office. The forest is a good subject to speak about photogrammetry. Natural assets are often complex and hard to reproduce realistically. For our artists, it was important to have the subject close to them to do all the tests needed to analyze the best workflow possible for games.The project is intended to work with 2018.3 and uses the 4.8.0 HDRP package.You can download the pre-built PC stand alone player here.The project is available for clone only here on GitHub. That means that downloading a zip file using the green button on Github will not work. You must use a version of git that has LFS in order to get the project. Take a look at it and inspect the photogrammetry assets: meshes, textures and materials. You’re also allowed to reuse the assets in your Unity project with no restriction.At the start, the photogrammetry process can seem to be hard to manage, but the result is worth it.Hopefully this demo will convince some of you to use photogrammetry to improve the quality of assets and help you speed up your projects.We're looking forward to seeing what you make and talking to you about this demo and the photogrammetry workflow in Unity in general in this forum thread.]]></description><link>https://unity.com/blog/engine-platform/photogrammetry-real-world-objects-into-digital-assets</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/photogrammetry-real-world-objects-into-digital-assets</guid><pubDate>Mon, 12 Mar 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Spotlight Team best practices: Making believable visuals in Unity]]></title><description><![CDATA[Being part of the Spotlight Team, I am fortunate to be involved in some very interesting projects. The Spotlight Team at Unity works on games together with our customers and a significant part of my role is to help developers achieve the desired look and quality for their projects. I get to hear many stories from all across the industry and can identify common issues that content creators are facing. Several of the projects I have worked on aimed for fairly realistic visuals. Given the project’s art contents, how do we make a scene in Unity that will look believable?There are a multitude of topics that need to be covered in order to make believable visuals. In this post I’m going to discuss lighting and render settings. Further down the post I’ll also share our Spotlight Tunnel Sample Scene and explain how you can use it to learn and experiment.Understanding how Unity’s rendering features can be used to realistically mimic the real world will help you to achieve your project’s visual goal.Linear rendering mode
In simple terms, this sets Unity to do lighting and shading calculations using physically accurate math before transforming the final output into the format that works best for monitors.To specify a gamma or linear workflow,
go to Edit > Project Settings > Player and open Player Settings.
Then go to Other Settings > Rendering and change the Color Space to Linear.Defining your color space should be one of the earliest decisions in your project, because of the drastic impact on the final shading and lighting results.Rendering mode.
In the Spotlight Tunnel Sample Scene, we use deferred rendering path. This allows content creators to work with multiple dynamic lights efficiently, combined multiple reflection cubemaps, and have the ability to use the existing Screen Space Reflection features in Unity 2017+.To set this, go to Graphic Settings > Rendering Path or Camera > Rendering PathYou can find more information about render modes refer in this part of Unity documentation.High Dynamic Range (HDR) Camera.
When rendering believable lighting, much like in real life, content creators will be dealing with lighting values and emissive surfaces that have a brightness higher than 1 (high dynamic range). These values then need to be remapped to the proper screen range (this is called tonemapping). This setting is crucial to allow the Unity camera to process these high values and not clip them.To enable this, select the main camera on the scene and ensure that HDR is checked in the inspector tab for the selected camera.HDR Lightmap encoding. (optional)
The Spotlight Tunnel sample scene didn’t use baked lighting, however, if you’re planning to work with High intensity (HDR) baked lighting, we recommend that you set the lightmap encoding to HDR lightmap to make sure the baked light result is consistent.
The option can be found under Edit > Project > Player settings > Other settings > Lightmap encoding (Unity 2017.3+ only).
Detailed information for Lightmap encoding can be found in the manual.Tonemapper for your Scene (part of Post Processing Stack).
To display HDR lighting properly, a tonemapper needs to be enabled in the project.
Make sure to install Unity Post Processing Stack (version 1) from the Asset Store first.Create a Post Process Profile Asset in your project and configure it as follows:Enable Color Grading > Tonemapper > ACES
(Academy Color Encoding Standards)Enable Dithering. Dithering allows the Scene to alleviate banding artifact introduced by 8 Bit/channel output from HDR Scene. Modern engines use this technique to circumvent the limitation of 16M color output. Leave the rest of settings in tonemapper alone for now.Select the “Main Camera” and add component Post Processing Behaviour.Assign the Post Process profile previously created to the profile slot. If you want to use Post Processing Stack Version 2, please refer to the readme of the package as it is currently in Beta.Enable Image effect for viewport.
This enables you to see the tonemapper all the time while working with the Scene view.
Notice the highlight rendition and the dark tunnel value separation improvements in the tonemapped Scene. If you look at the non-tonemapped Scene, you can see how the highlights didn’t converge to a unified color. (the yellowish burning sun in this case).This setup essentially tries to replicate how a digital camera captures a scene with a fixed exposure (without exposure adaptation / eye adaptation features enabled).At this point, content creators have achieved a proper foundational scene rendering setup that should give believable results with a wide range of content.Unity caters to lots of different lighting strategies/systems and project scenarios. We recommend that you check out our extensive documentation on lighting modes and setup to understand all the different options.However, for fast iteration and simplicity, responsive visual feedback is necessary.
For this reason, the Spotlight Tunnel Sample Scene is using real-time lighting with Realtime Global Illumination (GI). This will give us a nice range of specular response, good bounce lighting, and let us change our lights on the fly.Realtime lighting with Realtime GI + Light ProbeGoing back to the lighting itself, a typical Scene, at daytime, with outdoor areas, can be broken down to 3 lighting components:1) Hemisphere (Sky contribution).2) Direct lights (Sun + Local lights).3) Indirect illumination (GI lighting).At this stage, content creators are assumed to have meshes that are properly textured, and an assembled Scene.Initial Hemisphere lighting
First component for outdoor lighting is Hemisphere lighting, called Environment Lighting in Unity. This is a fancy word for skylight. Night sky has minimal contribution, while daytime sky has very bright contribution. Hemisphere settings can be found under the Lighting tab (Window > Lighting > Settings > Environment).
For a start, procedural skybox material would be prefered instead of HDRI cubemap. Create a new material in the project, name it SkyMaterial and then set it to Skybox / Procedural.Assign it to Environment Skybox Material inside Lighting tab > Scene.At this point the Scene is somewhat lit. There is ambient, but not exactly proper hemisphere lighting. We’ll leave this alone for now.Directional Light
Typical sunlight or moonlight is a light source close to infinity distance and has parallel light direction and shadow. They’re usually represented by a directional light.Indirect Illumination / Global Illumination.
Directional light + ambient alone won’t create believable lighting. Proper hemisphere lighting requires occlusion of the skylight lighting. We also need to simulate sunlight bouncing off subjects in the scene. The sky currently renders a single color value to the Scene making it flat. This is where Realtime Global Illumination or Baked Lighting is required to calculate occlusion and indirect bounce lighting. In order to achieve that, follow these steps:Make sure all meshes that need to contribute to the Realtime GI or baking are flagged with Enable Lightmap Static and Reflection Probe Static. These would typically be large static meshes.Next, enable Realtime Global Illumination (Leave at default-medium settings) in the Lighting tab > Scene > Realtime Lighting.Hit Generate Lighting or check Auto Generate.Whoa, the Scene is now dark after light generation has finished. To make matters worse, some elements of the Scene are out of place - notice the Tram and the door on the background.
The static objects in the Scene currently have proper occlusion for hemisphere and indirect bounce response from the directional light, however, the rest of the objects lack a proper lighting setup.Light Probes and Reflection Probes.
For dynamic objects or non-lightmap objects to receive Realtime/Baked Global Illumination, there needs to be light probes distributed in the Scene. Make sure to distribute light probe groups in the Scene efficiently near the areas where dynamically lit objects are located or will pass (such as player). Learn more about Light Probe Group in the manual.
Hit Generate Lighting again or wait for the precomputation to finish if Auto Generate is checked.The Tram and the background door are grounded better, but reflections look out of place. Sky reflection is all over the place and shows up inside the tunnel. This is where reflection probes comes in. Efficiently place reflection probes with proper coverage in the Scene as needed. In the Scene above, one reflection probe for the main room is sufficient and two for each tunnel interior.
128 pixels Cubemap Resolution using box projection usually is a good baseline for typical cases and will keep memory and reflection bake times happy.
Here’s more information about Reflection Probe.The Scene now looked properly grounded and cohesive, an important part of a believable Scene. But everything is even darker than before and nowhere near believable quality.HDR Lighting Value
Many content creators don’t realize that, in reality, hemisphere lighting and sunlight are very bright light sources. They’re much brighter than the value 1. This is where HDR lighting comes into play.For now, turn off the directional light and then set the SkyMaterial Exposure to 16.
This will give you a good idea what proper hemisphere lighting does to a Scene.Things start to look believable. Think of this state as a cloudy day, where sunlight is completely diffused in the sky, so there’s no directional light.At this point, you can reintroduce sunlight back into the Scene at a much higher value. Try Intensity 5 for a start. Despite the sun looking nearly white, it’s important that directional light color is chosen properly as the impact of indirect color from the strong sun can dramatically change the look of the Scene.Now the sun (directional light) looks like a high energy light as expected from real life. The Scene looks quite believable at this point.Screen Space Ambient Occlusion and Screen Space Reflection
While the Scene lighting looks pretty good at this point, there’s additional details that you can add to Scene to push it further. Baking detailed occlusion usually isn’t possible because of the limited resolution set in the Realtime GI for reasonable performance. This is where Screen Space Ambient Occlusion can help. Enable SSAO in the Post Process Profile under Ambient occlusion. Settings for this example are set to Intensity 0.5, Radius to 1, Medium Sample count w/ Downsampling and Ambient Only checked for a start.While SSAO takes care of extra ambient lighting occlusion, reflection could use some accuracy improvements in addition to the simple reflection probes.
Screen Space Raytraced Reflections can helps improve this situation. Enable the Screen Space Reflection in the post process profile.Notice that the left side of the wet track no longer renders bright reflections as SSR gives the Scene more accurate reflections for on screen objects. Both of these post process effects incur performance costs at runtime, so enable them wisely and set the quality settings to fit within your runtime performance constraints.Fog
At this stage the content creators have achieved somewhat believable outdoor and indoor value separation on a fixed exposure. Reflection is visible in the dark indoor areas as strong highlights and not dim muddy values.However, the Scene foreground elements and background elements aren’t showing up despite having strong perspective elements. A subtle fog in the Scene can create a massive difference in giving the Scene additional dimension.Notice the foreground railing has better definition compared to the zero fog Scene.
Fog is enabled in Lighting tab > Scene > Other Settings. Fog color #6D6B4EFF, Exponential at 0.025 density is enabled here. In Unity 2017 deferred rendering, you might also need to enable fog in the post process profile if it’s not activated automatically.Spotlight / Pointlight
The staples of real time local lighting are spotlights and pointlights. Area lighting can only be used when baking lighting, unless you’re using the HD Scriptable Render Pipeline (SRP), introduced in 2018.1 beta. There are new area lights that can be rendered in realtime in HD SRP mode.Fundamentally, both of these types of lights emit light from one point in space and are limited by range with the spotlight having an additional limit by angle. More information about lighting is in the relevant section of Unity docs.The big differences between the two lights has to do with the way they cast shadows and interact with cookies. Shadowing with a point light costs 6 shadow maps compared to a spotlight’s single shadow map. For this reason shadow casting point lights are much more expensive and should be used very sparingly.NOTE: Baked lights don’t need to worry about this issue.
Another difference is that a cookie texture on a Spotlight is a simple straight forward 2d texture while a pointlight requires a cubemap, usually authored in 3D software.Color and Intensity of light.
Choosing the proper color and intensity for your lights needs to follow some loose guidelines to give plausible results.When selecting intensity for indoor lights, try to make sure no indoor lights have a greater intensity than the sun’s. This can create an unbalanced look depending on the Scene.Given this Sample Scene setting, it’s very unlikely that there’s high intensity lights shining from the ceiling that exceed the brightness of the daylight time.When selecting color, try not to leave out any one of the color channels completely. This creates a light that has problem converging to the white point.While it’s technically a valid light color, the light color on the left image removes all blue color from the final output. Having a limited final color palette in the Scene for a baseline isn’t a great idea, especially if you want to do color grading later on.Emissive Surfaces
In Unity, emissive surfaces can contribute to lighting if Realtime GI or baked GI is enabled, giving the effect of area lighting. This is especially useful if Realtime GI is enabled. Content creators can modify the intensity and color of the emissive surface and get the feedback immediately, assuming that precompute has been done ahead of time.The image above showcases the subtle diffuse lighting from meshes on the ceiling.Unity San Francisco Spotlight Team has created the Spotlight Tunnel Sample Scene to help content creators do hands on learning and experimentation.Get the Spotlight Tunnel Sample project file here.Simply extract the project to the folder and open the project using Unity.Spotlight Tunnel Project was made with Unity 2017.1.0f3.Opening this project in a newer version of Unity will require lighting rebuild as there might be lighting data format incompatibility between versions.All assets provided in this project may only be used in a project developed with the Unity Engine.As mentioned before, there are more of things that you need to know about when making believable visuals. You can learn more about this topic in this tutorial. We’re also going to add a full Best Practices Guide to the Unity Docs. Stay tuned!Hopefully this blog helps content creators to stay on track in achieving believable visuals in Unity. We can’t wait to be dazzled by all Unity content creators out there.]]></description><link>https://unity.com/blog/engine-platform/spotlight-team-best-practices-making-believable-visuals-in-unity</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/spotlight-team-best-practices-making-believable-visuals-in-unity</guid><pubDate>Fri, 09 Mar 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity Partners with PiXYZ Software to unlock CAD data for real-time development]]></title><description><![CDATA[Unity today is used across many industries beyond gaming, including aerospace, architecture, automotive, construction, gambling, transportation, manufacturing, medical, and more. The benefits of using real-time in these industries include accelerating innovation through better design collaboration, developing VR and AR training to improve training outcomes, and creating immersive experiences that can increase engagement and drive higher sales.Industry professionals are increasingly seeing the value of bringing real-time into their workflows, recognizing its potential to completely transform the way products and experiences are conceived and built. Despite the fact that forward-thinking individuals in these industries have made great strides to bring real-time into their creation processes, they have encountered persistent challenges, particularly when it comes to preparing or importing large CAD assemblies for real-time development.That’s why Unity and PiXYZ software have joined forces to provide large enterprises and individual professionals alike with best-in-class solutions to easily import and optimize CAD data for creating real-time experiences in Unity.“PiXYZ was founded by CAD professionals, for CAD professionals, with the goal of addressing the difficult challenges presented by working with large-scale CAD assemblies,” said Stéphane Imbert, Chairman, and Founder of PiXYZ Software. “Unity’s real-time development platform is widely recognized as the best real-time workflow for customers who use CAD and want to build high-quality experiences. Our strategic partnership with Unity will allow us to better serve our mutual customers together - today, and in the future - by delivering the best, most responsive, and most painless solution on the market.”With PiXYZ, we’re bringing you a way to work with large scale CAD assemblies in Unity, whether you are an enterprise managing large volumes of data, or an individual professional developing projects in Unity. Let’s take a look at how PiXYZ’s products fit these different needs.One thing all PiXYZ products share is a high performance core that combines fast processing speed, the ability to handle massive assemblies, and the ability to use data from virtually any common design system. Whether you’re working with a complete automotive powertrain assembly in NX, a large architectural curtain wall in CATIA, or manufacturing equipment in Inventor, Unity with PiXYZ has you covered.PiXYZ Plugin adds a menu option in the Unity editor that allows you to directly import CAD models into your project. The Plugin provides a set of dialog controls to scale, orient, repair (stitch), and tessellate your CAD model, and includes options to map UVs, control how design hierarchy is imported, and generate LODs. In addition, the Plugin has a secret superpower – the ability to directly import CAD data into a Windows runtime! Using the Plugin, you can publish a runtime executable from your project, and the end user can trigger the import of new CAD data. This is especially valuable when working with constantly-changing CAD data, providing immediate update without the need to rebuild a project or create asset bundles.PiXYZ Review and Review Premium provide an alternative to interacting with CAD data without the need to build a project at all. With Review, you can quickly open a native CAD file and interact with it using intuitive methods such as dynamic cutting planes, assembly exploding, interactive 3D measurement, and access to PMI (Product Manufacturing Information) data. Review also enables remote collaboration among multiple participants using different device types in different locations. With Review Premium, you can also use VR and AR devices for immersive collaboration.PiXYZ Studio and Studio Editor provide powerful and customizable CAD import and data preparation for the desktop. These products provide additional controls beyond those available in the Plugin, and add tools for model simplification, hidden geometry removal, fixing flipped normals, and interactive modification. With Studio Editor, you can create Python scripts that allow powerful automated processing based upon geometry characteristics or design metadata.PiXYZ Pipeline and Connect enable you to move your process into the datacenter. Pipeline provides all the power of Studio, with the ability to run automated batch processes on your on-premise servers or private cloud instances. If you need to process large volumes of data, you can add additional servers to scale to the capacity you need. With PiXYZ Connect, you can harness the power of multiple Pipeline servers to provide CAD import and data prep as a private web service within your company’s security perimeter.We also recognize that you need more than just industry-leading products. You also need support, training, and the ability to scale your development efforts dynamically. Unity already provides value to customers with a range of enterprise support offerings, and we’re extending that to further meet the needs of enterprise customers in industries beyond gaming by offering the Unity Industry Bundle, a customizable combination of PiXYZ products, support, and training, built on the foundation of Unity.We offer custom training as well as new training offerings focused on the needs of industry professionals. Unity also offers assistance to help your developers use Unity to its full potential. And, when you need to scale up your development efforts, you can look to the massive community of Unity developers – more than 1.5 million active developers per month – to find talent to accelerate your projects.The potential applications for real-time are seemingly endless, and with the ease of working with CAD that PiXYZ and Unity unlock, developers can create experiences for over 20 different platforms including many of the leading virtual reality, augmented reality, PC and mobile devices. In particular, companies and developers in these industries are seeing immense value in using real-time for product design and visualization, training applications, and customer-facing interactive or immersive experiences.Virtual Design Review – Accelerate InnovationUnity’s real-time development platform and augmented & virtual reality capabilities can help you create better designs faster and more efficiently. Designers and engineers can collaborate on common ground with a shared, at-scale visualization of the product where the impact of design changes across different departments and disciplines can easily be visualized. Virtual design review can even be extended to include suppliers and business partners.Training – Transfer KnowledgeVR and AR experiences help deliver training in a true-to-life experience that engages learners through a high-fidelity, realistic setting, resulting in improved training outcomes. With virtual and augmented reality training, you can train workers to operate a factory that is not yet built, or train people on the operation of dangerous equipment without risking physical safety, significantly reducing the risk of an accident happening on the job.Marketing and Sales – Deliver High-Impact ExperiencesUnity allows you to create real-time, interactive, and immersive customer experiences that help drive higher customer engagement and investment in the product, ultimately driving more sales. With PiXYZ, product design data can also be leveraged directly to create an online configurator, or a VR experience that allows customers to experience a product in true-to-life fidelity.If you would like to know more about the Unity Industry Bundle or how Unity and PiXYZ can help you accelerate innovation, deliver high-impact experiences, or transform your business, our dedicated team of experts are standing by and ready to answer your questions!]]></description><link>https://unity.com/blog/technology/unity-partners-with-pixyz</link><guid isPermaLink="true">https://unity.com/blog/technology/unity-partners-with-pixyz</guid><pubDate>Tue, 06 Mar 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing 2D Game Kit: Learn Unity with drag and drop]]></title><description><![CDATA[The Explorer 2D Game Kit is a collection of mechanics, tools, systems and assets to hook up gameplay without writing any code. We’ve also created a game example using these systems, so you can see how they work together in Unity.Unity Brighton’s Content Team - who brought you learning projects Survival Shooter, Adventure Game and Trash Dash - are now unveiling their latest creation: a 2D Gamekit for anyone who want to learn hands-on how to build a game in Unity. This game kit includes everything you need to hook up gameplay without writing any code. Download the kit and you’ll get a collection of art, gameplay elements, tools and systems, and, to show how these elements can be used, we’ve also created a game example using these systems. If you’re an artist, designer or anything in between, this is a great way to get your creative teeth into Unity.Meet Ellen - our Principal Engineer. She has crash-landed her ship on a mysterious planet and has to make her way through the hazardous remains of an ancient alien civilisation, fighting tiny acid spitting creatures, deadly crystal spikes and bubbling murky pools to discover what is hidden in the deep, long forgotten crypts of this overgrown island… sounds good right?With some seriously lush environments using loads of sprite assets, the Content Team have included some platformer classics in the kit including moving platforms, pushable boxes, switches and magical glowing keys for giant alien stone doors. Plus of course, some adorable (and some not so adorable) enemies to defeat.Open the Unity engine and navigate to Scenes in the Project window. From there you will find the pre-made levels 1-5 as well as a Template scene. This template scene shows Ellen standing on a single platform. Add more ground and platforms using Tilemap, throw in some doors and some vegetation sprites, a few little snapping creatures to defeat and bam - you’ve got yourself a miniature level. Get creative with spikes, acid water, teleporters and more.To start making your own 2D platformer, check out the Getting Started guide. If you’re interested in learning about how each component works, you’ll find the Reference Guide super helpful. You can also find all the supporting documentation in the project’s Documentation folder. Use it as a glossary, a step by step or simply as a reference if you get stuck.There are a few ways to access 2D Game Kit. Head to our Learn site or the Asset Store. You can also access the Asset Store from within the Unity engine itself and search for ‘2D Game Kit’.Watch the recording of our live training session on the Game Kit featuring the Content Team’s Producer Aurore Dimopoulos below. You can also discuss the project on our dedicated forum thread.Stay tuned! The Content Team also have another trick up their sleeve. If you’re excited about the 2D Game Kit you might be pleased to know their next project is going to be a 3D Game Kit with the same theme but all in a 3D environment.]]></description><link>https://unity.com/archive/blog/games/introducing-2d-game-kit-with-drag-and-drop</link><guid isPermaLink="true">https://unity.com/archive/blog/games/introducing-2d-game-kit-with-drag-and-drop</guid><pubDate>Tue, 13 Feb 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[2D Tilemap asset workflow: From image to level]]></title><description><![CDATA[In Unity 2017.2, we introduced a new addition to the 2D Feature Set: Tilemaps! Using Tilemaps, you can quickly layout and create 2D levels using a combination of Sprites and GameObjects, and have control over properties such as layer ordering, tilemap colliders, animated tiles and more! In this blogpost, I will explain the full workflow beginning at importing your image file into Unity all the way through to a laid out level for a 2D Platformer!As a TL;DR overview; the workflow can be summarised like this, with each element relating to an Asset or a Component in the Unity Editor:Sprite -> Tile -> Palette -> Brush -> TilemapFrom a Non-Unity point of view, these terms could seem a little abstract. Just imagine the process for a real-life painting on a real-life canvas:Color -> Paint -> Tile Palette -> Paint Brush -> CanvasThere is similar logic to each step of the process and even similar names for each step!For this post, I will use this ‘GrassPlatform_TileSet’ Image as the main example:With the end result being a level constructed of these pieces that a 2D character can run on as a ‘level’:Importing an Image into Unity can be done in a variety of ways:
- Saving the desired Image file into the project’s ‘Assets’ folder.
- From the top menu, selecting ‘Assets -> Import New Asset’ and then selecting the desired file.
- Dragging the Image File from your File Browser into the ‘Project Window’ in the Unity Editor (This is probably the easiest way!)Once the image is imported into your project, its default Texture Type import settings are defined by which behaviour mode your project is currently set to: 2D or 3D.This mode is originally set when a new project is created:Or can be changed from in Editor Settings:As my project already is setup for 2D Behaviour Mode, then ‘GrassPlatform_TileSet’ will automatically import with the Texture Type of ‘Sprite (2D and UI)’ which is the setting that the Tile asset will require to reference the Sprite.As the ‘GrassPlatform_TileSet’ is a series of sprites in one image, we will need to slice it into individual sprites; this can be done by setting the Sprite Mode from ‘Single’ to ‘Multiple’ and opening the Sprite Editor:The Sprite Editor window allows you to ‘slice’ an image into multiple sprites; so you can work on one spritesheet in your desired image editing software and define which areas of the image are treated as ‘individual’ sprites directly in Unity. No need to juggle and manage hundreds of individual image files!As ‘GrassPlatform_TileSet’ is an image composited of a series of tiles, we can use the Sprite Editor’s Grid Slicing Settings to automatically split the image into multiple sprites. The dimensions of each ‘cell tile’ in this tileset are 64 pixels by 64 pixels, so we can input these setting and let the Sprite Editor auto-generate the required sprite slices:And after the ‘Slice’ button is clicked, we now have a sliced set of sprites!In the Sprite Editor window, each sliced sprite is then selectable and editable. For example, you can set names for each sprite and even manually tweak values such as position and pivots.We then need to ‘Apply’ the changes to the Sprite Asset (by clicking the aptly named ‘Apply’ button near the top-right corner of the Sprite Editor) which will then allow us to reference each sliced sprite individually in the Project window:Now that our Sprite Sheet has been sliced into individual Sprites, we next need to ‘convert’ these into Tiles.The Tile is a brand new asset added in Unity 2017.2. Its purpose is to hold data for the Tilemap to use at a specific cell on the grid.The base default Tile asset (which can be generated from ‘Create -> Tile’ in the Project window) allows for a Sprite to be assigned to it and also other customizations such as the Tint of the Sprite and the type of Collider that it would use on the Tilemap (which will be explained later).Unity 2017.2 introduces a new window: the Tile Palette! This window is integral to using the new Tilemap system as it acts as an interface to select which Tiles to use and how the Tilemap is to be edited with them.Before we can add the ’TopGrassTile’ Tile to the Tile Palette window, we first need to create a new Palette. Palettes can be used to organise your sets of Tiles instead of ‘storing’ all of them (could be hundreds or more!) on to one workspace in the window.In the drop-down Palette menu there is an option to create a brand new Palette:It’s as simple & easy as drag-and-drop to add ‘TopGrassTile’ to this newly created Palette!However, in some situations we might be working with hundreds and hundreds of Sprites that build up our 2D scene. It would be very time-consuming to manually create a Tile asset for each of these Sprites and then drag-and-drop each one individually onto the Palette.Thankfully, there is a workflow that can be used to automatically generate a set of Tiles (one for each Sprite) and assign all of them to the desired Palette. And it‘s also as simple & easy as drag-and-drop! Instead of dragging a Tile asset onto the Palette, drag the source Spritesheet that contains the sliced Sprites. In this case, ‘GrassPlatform_TileSet’:Now that our ‘GrassPlatform_TileSet’ spritesheet is successfully set up in the Tile Palette window, it’s time to start constructing a 2D Level!To begin, we need to can create a brand new ‘Tilemap’ in our current scene; this can be done from the ‘GameObject -> 2D Objects -> Tilemap’ drop-down menu. However, this not only creates a ‘Tilemap’ GameObject (With related components) but also a ‘Grid’ GameObject that the Tilemap gameObject is automatically a child of.The most similar GameObject structure to the ‘Grid <-> Tilemap’ setup is Unity’s UI System; where the Canvas parent GameObject acts as a layout container for all of its child UI GameObjects (Such as Text and Images). The ‘Grid’ GameObject uses the ‘Grid’ Component to define the dimensions of all of its child Tilemap GameObjects. There are options that allow for some customization in the layout:The child Tilemap GameObject is then constructed by both the Tilemap component and the Tilemap Renderer component; the former containing the data of the Tiles painted onto it and the later defining the visual settings of how it is rendered.The Tilemap system has been designed so that multiple Tilemap GameObjects can be children of the same Grid, meaning that the end result of your level can be easily composited by multiple layers of different Tiles:Each Tilemap Renderer gives you control over the Material used to render its Tiles, the Sorting Layer it uses (which is the same layer system that Sprite Renderers, UI Canvases and Particle Systems use!) and also how it reacts to the Sprite Mask.Before Tiles can be painted onto the Tilemap, two things have to be selected: which Tilemap is currently focused and which Brush is currently in use.The first can be chosen from the ‘Active Tilemap’ drop-down in the Tile Palette window beneath the Editing Options:This drop-down list will show all instances of the ‘Tilemap’ component in the scene and will allow you to select one to be painted on and edited. The above screenshot only shows one ‘Tilemap’ option, and named after the default Tilemap GameObject, whereas a more complex scene with multiple Tilemaps could display a list of possible Active Tilemaps such as this:For the ‘GrassPlatform_TileSet’ example, renaming the “Tilemap’ GameObject to be more accurate will also update the Active Tilemap list name(s):The next thing to select is the current Brush. Whilst the Tile asset determines what data a cell would contain (Visuals, Collider Type, etc), a Brush asset defines how a Tile (or Tiles) would be placed onto a Tilemap. Currently, Unity only has one Brush (named ‘Default Brush’) built-in to be selected; and it has expected functionality of its name such as placing, erasing, moving and filling Tiles on the Tilemap. However, on the Unity Technologies Team GitHub there is a 2D Extras’ Repository that has a variety of examples of how you can script your own custom Brushes and Tiles! Once these are imported into your project, the current Brush menu (at the bottom of the Tile Palette window) will allow you to choose which Brush to use:Whilst this article doesn’t dive into the use of Scriptable Brushes and Scriptable Tiles, it’s a very powerful area to study and integrate into your tilemap-based level-design toolset.With the Active Tilemap and Current Brush set, we can then select a specific Tile, in the Tile Palette window, and then paint it onto the Tilemap in the Scene! You will also need to make sure that the ‘Paintbrush’ Icon in the Edit Tools is also selected:Success! Tiles are being painted on the Tilemap! However, you may notice that the Tiles are slightly smaller than the size of the Grid’s cells. This is not a bug, but we need to step back a bit for some explanation of why - and how you can change the default.The Grid component’s Cell Size uses Unity’s world space distance units (For example, a primitive Unity cube with default scaling of 1 for each axes will be the same size as one cell on the default Grid). Each Sprite asset has a Pixels Per Unit value in its Import Settings, with the default value being 100:]]></description><link>https://unity.com/blog/games/2d-tilemap-asset-workflow-from-image-to-level</link><guid isPermaLink="true">https://unity.com/blog/games/2d-tilemap-asset-workflow-from-image-to-level</guid><pubDate>Thu, 25 Jan 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting started in interactive 360 video: Download our sample project]]></title><description><![CDATA[The release of Unity 2017.3 marked another step in our commitment to empowering filmmakers to create truly interactive 360 videos.Creators can now bring a 360 2D or 3D video into Unity and play it back on the Skybox Panoramic Shader to create standalone 360 video experiences targeting VR platforms. Additionally, Unity now offers built-in support for both 180- and 360-degree videos in either an equirectangular layout (longitude and latitude) or a cubemap layout (6 frames).With Unity you can build real-time effects, interactions and UI on top of your videos to achieve a highly immersive and interactive experience. To make this process even easier, we have just released the Interactive 360 Video Sample Project on the Asset Store. It’s a free download and we encourage creators interested in making interactive 360 videos to give it a try.The Sample Project contains scenes, Prefabs, code, and video files that can be used by anyone who wants to learn how to build interactive 360 video experiences for mobile or desktop VR. The project shows you how to use Unity’s UI system and Video Player, and how to get input data from VR controllers.In the project are two ready-to-build scenes for gaze-based interactions, which work with Oculus, OpenVR (Vive), Android (Samsung Gear VR, Google Daydream, Google Cardboard) and iOS (Cardboard). The project also includes sample scenes for Oculus+Touch and Google Daydream controller configurations.You can start a project by importing your own 360 videos in either 2D (monoscopic) or 3D (stereoscopic) formats. The Sample Project also supports 180 videos.To get started using the Interactive 360 Video Sample Project:Download Unity 2017.3 here.Download the project here.Watch the tutorial video below
Add your 360 masterpieces to the project and start building.Learn more about Unity for 360 video and how esteemed creators are already using Unity for their award-winning projects.We will be hosting a live web training session on building interactive 360 videos on February 28. Mark your calendars!]]></description><link>https://unity.com/blog/games/getting-started-in-interactive-360-video-download-our-sample-project</link><guid isPermaLink="true">https://unity.com/blog/games/getting-started-in-interactive-360-video-download-our-sample-project</guid><pubDate>Fri, 19 Jan 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Crunch compression of ETC textures]]></title><description><![CDATA[This blog post describes the basics of Crunch compression and explains in details how the original Crunch algorithm was modified in order to be able to compress ETC1 and ETC2 textures.Crunch is an open source texture compression library © Richard Geldreich, Jr. and Binomial LLC, available on GitHub. The library was originally designed for compression of DXT textures. The following section describes the main ideas used in the original algorithm.DXT is a block-based texture compression format. The image is split up into 4x4 blocks, and each block is encoded using a fixed number of bits. In case of DXT1 format (used for compression of RGB images), each block is encoded using 64 bits. Information about each block is stored using two 16-bit color endpoint values (color0 and color1), and 16 2-bit selector values (one selector value per pixel) which determine how the color of each pixel is computed (it can be either one of the two endpoint colors or a blend between them). According to the DXT1 compression format, there are two different ways to blend the endpoint colors, depending on which endpoint color has higher value. However, Crunch algorithm uses a subset of DXT1 encoding (endpoint colors are always ordered in such a way that color0 >= color1). Therefore, when using Crunch compression, endpoint colors are always blended in the following way:DXT encoding can therefore be visually represented in the following way:Each pixel can be decoded by merging together color0 and color1 values according to the selector value.For simplicity, information about color0 and color1 can be displayed on the same image (with the upper part of every 4×4 block filled with color0 and the lower part filled with color1). Then all the information necessary for decoding the final texture can be represented in a form of the following 2 images (4×4 blocks are displayed slightly separated from each other):For an average texture it is quite common that neighbor blocks have similar endpoints. This property can be used to improve the compression ratio. In order to achieve this, Crunch introduces the concept of “chunks”. All the texture blocks are split into “chunks” of 2x2 blocks (the size of each chunk is 8x8 pixels), and each chunk is associated with one of the following 8 chunk types:Blocks with identical endpoints form a “tile” within a chunk, and are displayed united together on the picture above. Once the information about the chunk types has been encoded, it is sufficient to encode only one endpoint per tile. For example, in case of the leftmost chunk type, all the blocks within a chunk have the same endpoints, so for such a chunk it is sufficient to encode only one endpoint pair. In case of the rightmost chunk encoding, all the endpoint pairs are different, so it is necessary to encode all 4 of them. The following example shows texture endpoints, grouped into chunks, where each chunk is split into tiles:Of course, the described chunk types don’t cover all the possible combinations of matching endpoints, but at the same time, this way the information about the matching endpoints can be encoded very efficiently. Specifically, encoding of the chunk type requires 3 bits per 4 blocks (0.75 bits per block, uncompressed).Crunch algorithm can enforce the neighbor blocks within a chunk to have identical endpoints in cases when extra accuracy of the encoded colors isn’t worth spending extra bits for encoding of additional endpoints. This is achieved in the following way. First, each chunk is encoded in 8 different ways, corresponding to the described 8 chunk types (instead of using DXT1 optimization for each block, the algorithm is using DXT1 optimization for each tile). The quality of each encoding is then evaluated as the PSNR multiplied by a coefficient associated with the used chunk type, and the optimal encoding is selected. The trick here is that chunk types with higher number of matching endpoints also have higher quality coefficients. In other words, if using the same endpoint for two neighbor blocks within a chunk doesn’t reduce the PSNR much, then the algorithm will most likely select the chunk type where those neighbor blocks belong to the same tile. The described process can be referenced as “tiling”.The basic idea of Crunch compression is to perform quantization of the determined endpoints and selectors blocks, in order to encode them more efficiently. This is achieved using vector quantization. The idea is similar to color quantization, when a color image is represented using a color palette and palette indices defined for each pixel.In order to perform vector quantization, each endpoint pair should be represented with a vector. For example, it is possible represent a tile endpoint pair with a vector (color0.r, color0.g, color0.b, color1.r, color1.g, color1.b), where color0 and color1 are obtained from DXT1 optimization. However, such representation doesn't reflect the continuity properties of the source texture very well (for example, in case of a solid block, a small change of the block color might result in significant change of the optimal color0 and color1, which are used to encode this color). Instead, Crunch algorithm is using a different representation. Source pixels of each tile, which are represented by their (r, g, b) vectors, are split into 2 clusters using vector quantization, providing two centroids for each tile: low_color and high_color. Then the endpoints of each tile are represented with a (low_color.r, low_color.g, low_color.b, high_color.r, high_color.g, high_color.b) vector. Such representation of the tile endpoints doesn't depend on the DXT1 optimization result, but at the same time performs quite well.Note that after quantization all the blocks within a tile will be associated with the same endpoint codebook element, so they will get assigned the same endpoint index. This means that initially determined chunk types will be still valid after endpoint quantization.Selectors of each 4x4 block can be represented with a vector of 16 components, corresponding to the selector values of each block pixel. In order to improve the result of the quantization, selector values are reordered in the following way, in order to better reflect the continuity of the selected color values:Vector quantization algorithm splits all the input vectors into separate groups (clusters) in such a way so that vectors in each group appear to be more or less similar. Each group is represented by its centroid, which is computed as an average of all the vectors in the group according to the selected metric. The computed centroid vectors are then used to generate the codebook (centroid vector components are clipped and rounded to integers in order to represent valid endpoints or selectors). The original texture elements are then replaced with the elements of the computed codebooks (endpoints for each source 4×4 block are replaced with the closest endpoint pair from the generated endpoint codebook, selectors for each source 4×4 block are replaced with the selector values of the closest selector codebook element).The result of vector quantization performed for both endpoints and selectors can be represented in the following way:After quantization, it is sufficient to store the following information in order to decode the image:- chunk types- endpoint codebook- selector codebook- endpoint indices (one index per tile)- selector indices (one index per block)The quality parameter provided for Crunch compressor directly controls the size of generated endpoint and selector codebooks. The higher is the quality value, the larger are the endpoint and selector codebooks, the wider is the range of the possible indices, and subsequently, the bigger is the size of the compressed texture.DXT encoding for the alpha channel is very similar to the DXT encoding of the color information. Information about the alpha channel of each block is stored using 64 bits: two 8-bit alpha endpoint values (alpha0 and alpha1), and 16 3-bit selector values (one selector value per pixel) which determine how the alpha of each pixel is computed (it can be either one of the two alpha values or a blend between them). As has been mentioned before, Crunch algorithm uses a subset of DXT encoding, so the possible alpha values are always blended in the following way:Vector quantization for the alpha channel is performed exactly the same way as for the color components, except that vectors which represent alpha endpoints of each tile, consist of 2 components (low_alpha, high_alpha), and are obtained through clusterization of the alpha values of all the tile pixels.Note that the chunk type, determined during the tiling step, is common for both color and alpha endpoints. So in case of textures using alpha channel, chunk type is determined based on the combined PSNR computed for color and alpha components.The main idea used in Crunch algorithm for improving the compression ratio is based on the fact that changing the order of the elements in the codebook doesn't affect the decompression result (considering that the indices are reassigned accordingly). In other words, the elements of the generated codebooks can be reordered in such a way, so that the dictionary elements and indices acquire some specific properties, which allow them to be compressed more efficiently. Specifically, if the neighbor encoded elements appear to be similar, then each element can be used for prediction of the following element, which significantly improves the compression ratio.According to this scheme, Crunch algorithm is using zero order prediction when encoding codebook elements and indices. Instead of encoding endpoint and selector indices, the algorithm encodes the deltas between the indices of the neighbor encoded blocks. The codebook elements are encoded using per-component prediction. Specifically, each endpoint codebook element (which is represented by two RGB565 colors) is encoded as 6 per-component deltas from the previous dictionary element. Each selector codebook element (which is represented by 16 2-bit selector values) is encoded as 16 per-component deltas from the previous dictionary element.On the one hand, endpoint indices of the neighbor blocks should be similar, as the encoder compresses the deltas between the indices of the neighbour blocks. On the other hand, the neighbor codebook elements should be also similar, as the encoder compresses the deltas between the components of those neighbor codebook elements. The combined optimization is based on the Zeng's technique, using a weighted function which takes into account both similarity of the indices of the neighbor blocks and similarity of the neighbor elements in the codebook. Such reordering optimization is performed both for endpoint and selector codebooks.Finally, the reordered codebooks and indices, along with the chunk type information, are encoded with Huffman coding (using zero order prediction for indices and codebook components). Each type of encoded data uses its own Huffman table, or multiple tables. For performance reasons adaptive Huffman coding isn't used.We performed a comprehensive analysis of the algorithms and techniques used in the original version of Crunch and introduced several modifications which allowed us to significantly improve the compression performance. The updated Crunch library, introduced in Unity 2017.3, can compress DXT textures up to 2.5 times faster, while providing about 10% better compression ratio. At the same time, decompressed textures, generated by both libraries, are identical bit by bit. The latest version of the library, which will reach Beta builds soon, will be able to perform Crunch compression of DXT textures about 5 times faster than the original version. The latest version of the Crunch library can be found in the following GitHub repository.The main modifications of the original Crunch library are described below. The improvement in compressed size and compression time, introduced by each modification, is described as a saved portion of the compressed size and compression time spent by the original library. It has been evaluated on the Kodak image test set. When compressing real world textures, the improvement in compression size should be normally higher.1. Replace chunk encoding scheme with block encoding scheme (improvement in compressed size: 2.1%, improvement in compression time: 7%)As described above, in the original version of Crunch algorithm all the blocks are grouped into chunks of 2x2 blocks. Each chunk is associated with one of 8 different chunk types. The type of the chunk determines which blocks inside the chunk have the same endpoints indices. This scheme performs quite well, because it is often more efficient to compress information about the endpoint equality, rather than compress duplicate endpoint indices. However, this scheme can be improved. The modified Crunch algorithm no longer uses the concept of chunks. Instead, for each block it can encode a reference to the previously processed neighbor block, where the endpoint can be copied from. Considering that the texture is decompressed from left-to-right, top-to-bottom, endpoints of each decoded block can be either decoded from the input stream, copied from the left nearest block (reference to the left) or copied from the upper nearest block (reference to the top):The following example shows quantized texture endpoints with the references:Note that the modified Crunch encoding is a superset of the original encoding, so all the images previously encoded with the original Crunch algorithm can be losslessly transcoded into the new format, but not vice versa. Even though the new endpoint equality encoding is more expensive (about 1.58 bits per block, uncompressed), it also provides more flexibility for endpoint matching inside the previously used “chunks”, but more importantly, it allows to copy endpoints from one “chunk” to another (which isn’t possible when using the original chunk encoding). The blocks are no longer grouped together and are encoded in the same order as they appear on the image, which significantly simplifies the algorithm and eliminates extra levels of indirection.2. Encode selector indices without prediction (improvement in compressed size: 1.8%, improvement in compression time: 10%)The original version of Crunch encodes the deltas between the neighbour indices in order to get advantage of the neighbour indices similarity. The efficiency of such approach highly depends on the continuity of the encoded data. While neighbour color and alpha endpoints are usually similar, this is often not the case for selectors. Of course, in some situations, encoding the deltas for selector indices makes sense, for example, when an image contains a lot of regular patterns aligned to the 4×4 block boundaries. In practice, however, such situations are relatively rare, so it usually appears to be more efficient to encode raw selector indices without prediction. Note that when selector indices are encoded without prediction, the reordering of the selector indices no longer affects the size of the encoded selector indices stream (at least when using Huffman coding). This makes the Zeng optimization of selector indices unnecessary, and it’s sufficient to simply optimize the size of the packed selector codebook.3. Remove duplicate endpoints and selectors from the codebooks (improvement in compressed size: 1.7%)By default, the size of the endpoint and selector codebooks is calculated based on the total number of blocks in the image and the quality parameter, while the actual complexity of the image isn’t evaluated and isn’t taken into account. The target codebook size is selected in such a way that even complex images can be approximated well enough. At the same time, normally, the lower the complexity of the image, the higher is the density of the quantized vectors. Considering that vector quantization is performed using floating point computations, and the quantized endpoints have integer components, high density of quantized vectors will result in a large number of duplicate endpoints. As the result, some identical endpoints are being represented with multiple different indices, which affects the compression ratio. Note that this isn’t the case for selectors, as their corresponding vector components are rounded after quantization, but instead it leads to some duplicate selectors in the codebook being unused. In the modified version of the algorithm all the duplicate codebook entries are merged together, unused entries are removed from the codebooks, endpoint and selector indices are updated accordingly.4. Use XOR-deltas for encoding of the selector codebook (improvement in compressed size: 0.9%)In the original version of Crunch, selector codebook is encoded with Huffman coding applied to the raw deltas between corresponding pixel selectors of the neighbour codebook elements. However, using Huffman coding for raw deltas has a downside. Specifically, for each individual pixel selector, only about half of all the possible raw deltas are valid. Indeed, once the value of the current selector is determined, the selector delta depends only on the next selector value, so only n out of 2 * n – 1 total raw delta values are possible at any specific point (where n is the number of possible selector values). This means that on each step the impossible raw delta values are being encoded with a non-zero probability, as the probability table is calculated only once throughout the whole codebook. The situation can be improved by using modulo-deltas instead of raw deltas (modulo 4 for color selectors and modulo 8 for alpha selectors). This eliminates the mentioned implicit restriction on the values of the decoded selector deltas, and therefore improves the compression ratio. Interestingly, the compression ratio can be improved even further if XOR-deltas are used instead of modulo-deltas (XOR-delta is computed by simply XOR-ing two selector values). At first it might seem counterintuitive that XOR-delta can perform better than modulo-delta, as it doesn’t reflect the continuity properties of the data that well. The trick here is that the encoded selectors are first sorted according to the used delta operation and the corresponding metric.5. Improve Zeng reordering algorithm (improvement in compressed size: 0.7%, improvement in compression time: 5%)After the endpoint codebook has been computed, the endpoints are reordered to improve the compression ratio. As has been described above, optimization is based on Zeng’s technique, using a weighted function which takes into account both similarity of the indices in neighbor blocks and similarity of the neighbor elements in the codebook.The ordered list of endpoints is built starting from a single endpoint and then adding one of the remaining endpoints to the beginning or to the end of the list on each iteration. It’s using a greedy strategy which is controlled by the optimization function. The similarity of the endpoint indices is evaluated as a combined neighborhood frequency of the candidate endpoint and all the endpoints in the ordered list. The similarity of the neighbor endpoints in the codebook is evaluated as Euclidian distance from the candidate endpoint to the extremity of the ordered list. The original optimization function for an endpoint candidate p can be represented as:F(p) = (endpoint_similarity(p) + 1) * (neighborhood_frequency(p) + 1)The problem with this approach is the following. While the endpoint_similarity(p) has a limited range of values, the neighborhood_frequency(p) grows rapidly with the increasing size of the ordered list of endpoints. With each iteration this introduces additional disbalance for the weighted optimization function. In order to minimize this effect, is it proposed to normalize the neighborhood_frequency(p) on each iteration. For computational simplicity, the normalizer is computed as the optimal neighborhood_frequency value from the previous iteration, multiplied by a constant. The modified optimization function can be represented as:F(p) = (endpoint_similarity(p) + 1) * (neighborhood_frequency(p) + neighborhood_frequency_normalizer)Additional improvement in compression speed has been achieved by optimizing the original algorithms, reducing the total amount of computations by caching the intermediate computation results, and spreading the computations between threads more efficiently.The described modifications of the Crunch algorithm don't change the result of the quantization step, which means that decompressed textures, generated by both libraries, will be identical bit by bit. In other words, the improvement in compression ratio has been achieved by using a different lossless encoding of the quantized images. It might therefore be interesting to compare Crunch encoding with alternative ways of compressing the quantized textures. For example, quantized textures can be stored in a raw DXT format, compressed with LZMA. The following table displays the difference in compression ratio when using different approaches:According to the test results, it seems to be more efficient to use Crunch encoding of the computed codebooks and indices, rather than compress the quantized texture with LZMA. Not to mention that Crunch decompression is also significantly faster than LZMA decompression.Even though the Crunch algorithm was originally designed for compression of DXT textures, it is in fact much more powerful. With some minor adjustments it can be used to compress other texture formats. This section will describe in detail how the original Crunch algorithm was modified in order to be able to compress ETC and ETC2 textures.ETC is a block-based texture compression format. The image is split up into 4x4 blocks, and each block is encoded using a fixed number of bits. In case of ETC1 format (used for compression of RGB images), each block is encoded using 64 bits.The first 32 bits contain information about the colors used within the 4x4 block. Each 4x4 block is split either vertically or horizontally into two 2x4 or 4x2 subblocks (the orientation of each block is controlled by the “flip” bit). Each subblock is assigned its own base color and its own modifier table index.The two base colors of a 4x4 block can be encoded either individually as RGB444, or differentially (the first base color is encoded as RGB555, and the second base color is encoded as RGB333 signed offset from the first base color). The type of the base color encoding for each block is controlled by the “diff” bit.The modifier table index of each subblock is referencing one of the 8 possible rows in the following modifier table:The intensity modifier set (modifier0, modifier1, modifier2, modifier3) defined by the modifier table index, along with the base color, determine 4 possible color values for each subblock:base_color + RGB(modifier0, modifier0, modifier0)
base_color + RGB(modifier1, modifier1, modifier1)
base_color + RGB(modifier2, modifier2, modifier2)
base_color + RGB(modifier3, modifier3, modifier3)
Note that the higher is the value of the modifier table index, the more distributed are the subblock colors along the intensity axis.Another 32 bits of the encoded ETC1 block describe 16 2-bit selectors values (each pixel in the block can take one of 4 possible color values, described above).ETC1 encoding can therefore be visually represented in the following way:Each pixel color of an ETC1 block can be decoded by adding together the base color and the modifier color, defined by the modifier table index and selector value (the result color should be clamped).For simplicity, information about the base colors, block orientations and modifier table indices can be displayed on the same image. The upper or the left part of each 2×4 or 4×2 subblock (depending on the block orientation) is filled with the base color, and the rest is filled with the modifier table index color. Then all the information necessary for decoding of the final texture can be represented in a form of the following 2 images (subblocks on the left image and blocks on the right image are displayed slightly separated from each other):The detailed description of ETC1 format can be found at this Khronos Group page.Even though DXT1 and ETC1 encodings seem to be quite different, they also have a lot in common. Each pixel of an ETC1 texture can take one of four possible color values, which means that ETC1 selector encoding is equivalent to DXT1 selector encoding, and therefore ETC1 selectors can be quantized exactly the same way as DXT1 selectors. The main difference between the encodings is that in case of ETC1, each half of a 4x4 block has its own set of possible color values. But even though ETC1 subblock colors are encoded using a base color and a modifier table index, the four computed subblock colors normally lie on the same line and are more or less evenly distributed along that line, which highly resembles DXT1 block colors. The described similarities allow to use Crunch compression for ETC1 textures, with some modifications.As has been described above, Crunch compression involves the following main steps:tilingendpoint quantizationselector quantizationcompression of the determined codebooks and indicesWhen applying Crunch algorithms to a new texture format, it is necessary to first define the codebook element. In the context of Crunch, this means that the whole image consists of smaller non-overlapping blocks, while the contents of each individual block are determined by an endpoint and a selector from the corresponding codebooks. For example, in case of DXT format, each endpoint and selector codebook element corresponds to a 4x4 pixel block. In general, the size of the blocks, which form the encoded image, depends on the texture format and quality considerations.It’s proposed to define codebook elements according to the following limitations:Codebook elements should be compatible with the existing Crunch algorithm, while the image blocks defined by those codebook elements should be compatible with the texture encoding format.It should be possible to cover a wide range of image quality and bitrates by changing the size of the endpoint and selector codebooks. If there is no limitation for the codebook size, it should be possible to achieve lossless or near-lossless compression quality (not considering the quality loss implied by the texture format itself)In case of ETC1, the texture format itself determines the minimal size of the image block, defined by an endpoint: it can be either 2x4 or 4x2 rectangle, aligned to the borders of the 4x4 grid. It isn't possible to use higher granularity, because each of those rectangles can have only one base color, according to the ETC1 format. For the same reason, any image block, defined by an endpoint codebook element, should represent a combination of ETC1 subblocks.At the same time, each ETC1 subblock has its own base color and modifier table index, which approximately determine the high and the low colors of the subblock (even though there are some limitations on the position of those high and low colors, implied by the ETC1 encoding). If an endpoint codebook element is defined in such a way that it contains information about more than one ETC1 base color, then such a dictionary will become incompatible with the existing tile quantization algorithm for the following reason. The Crunch tiling algorithm first performs quantization of all the tile pixel colors, down to just 2 colors. Then it performs quantization of all the generated color pairs, generated by different tiles. This approach works quite well for 4x4 DXT blocks, as those 2 colors approximately represent the principal component of the tile pixel colors. In case of ETC1, however, mixing together pixels, which correspond to different base colors, doesn't make much sense, because each group of those pixels has its own low and high color values independent from other groups. If those pixels are mixed together, the information about the original principal components of each subblock will get lost.The described limitations suggest that ETC1 endpoint codebook element should represent the area of a single ETC1 subblock (either 2x4 or 4x2). This means that ETC1 endpoint codebook element should contain information about the subblock base color (RGB444 or RGB555) and the modifier table index (3 bits). And it is therefore proposed to encode an ETC1 “endpoint” as 3555 (3 bits for the modifier table index and 5 bits for each component of the base color).In case of DXT format, both endpoint codebook elements and selector codebook elements correspond to the same size of the decoded block (in case of DXT it is 4x4). So it would be reasonable to try the same scheme for ETC1 encoding (i.e. to use 2x4 or 4x2 blocks for selector codebooks, matching the blocks which are defined by endpoint codebook elements). Nevertheless, after additional research we discovered a very interesting observation. Specifically, endpoint blocks and selector blocks don't have to be of the same size in order to be compatible with the existing Crunch algorithm. Indeed, selector codebook and selector indices are defined after the endpoint optimization is complete. At this point each image pixel is already associated with a specific endpoint. At the same time, the selector computation step is using those per-pixel endpoint associations as the only input information, so the size and the shape of the blocks, defined by selector codebook elements, doesn't depend in any way on the size or shape of the blocks, defined by endpoint codebook elements.In other words, the endpoint space of the texture can be split into one set of blocks, defined by endpoint codebook and endpoint indices. And the selector space of the texture can be split into a completely different set of blocks, defined by selector codebook and selector indices. Endpoint blocks can be different in size from the selector blocks, as well as endpoint blocks can overlap in arbitrary way with the selector blocks, and such setup will still be fully compatible with the existing Crunch algorithm. The discovered property of the Crunch algorithm opens another dimension for optimization of the compression ratio. Specifically, the quality of the compressed selectors can now be adjusted in two ways: by changing the size of the selector codebook and by changing the size of the selector block. Note that both DXT and ETC formats have selectors encoded as plain bits in the output format, so there is no limitation on the size or shape of the selector block (though, for performance reasons, non-power-of-two selector blocks might require some specific optimizations in the decoder).Several performance tests have been conducted using different selector block sizes, and the results suggest that 4x4 selector blocks perform quite well.As has been described above, each element of an ETC1 endpoint codebook should correspond to an ETC1 subblock (i.e. to a 2x4 or a 4x2 pixel block, depending on the block orientation). In case of DXT encoding, the size of the encoded block is 4x4 pixels, and tiling is performed in a 8x8 pixel area (covering 4 blocks). In case of ETC1, however, tiling can be performed either in a 4x4 pixel area (covering 2 subblocks), or in a 8x8 pixel area (covering 8 subblocks), while other possibilities are either not symmetrical or too complex. For performance reasons and simplicity it is proposed to use 4x4 pixel area for tiling. There are therefore 3 possible block types: the block isn't split (the whole block is encoded using a single endpoint), the block is split horizontally, the block is split vertically:The following example shows computed tiles for the texture endpoints:At first, it might look like ETC1 block flipping can bring some complications for Crunch, as the subblock structure doesn't look like a grid. This, however, can be easily resolved by flipping all the “horizontal” ETC1 blocks across the main diagonal of the block after the tiling step, so that all the ETC1 subblocks will become 2x4 and form a regular grid:Note that decoded selectors should be flipped back according to the block orientation during decompression (this can be efficiently implemented by precomputing a codebook of flipped selectors).Endpoint references for the ETC1 format are encoded in a similar way to the DXT1 format. The are however two modifications, specific to the ETC1 encoding:In addition to the standard endpoint references (to the top and to the left blocks), it is also possible to use an endpoint reference to the top-left diagonal neighbour block.Endpoint references for the primary and secondary subblocks have different meaning.The primary ETC1 subblock has the reference value of 0 if the endpoint is decoded from the input stream, the value of 1 if the endpoint is copied from the secondary subblock of the left neighbour ETC1 block, the value of 2 if the endpoint is copied from the primary subblock of the top neighbour ETC1 block, and the value of 3 if the endpoint is copied from the secondary subblock of the top-left neighbour ETC1 block:The reference value of secondary ETC1 subblock contains information about the block tiling and flipping. It has the reference value of 0 if the endpoint is copied from the primary subblock (note that in this case flipping doesn’t need to be encoded, as endpoints are equal), the value of 1 if the endpoint is decoded from the input stream and the corresponding ETC1 block is split horizontally, and the value of 2 if the endpoint is decoded from the input stream and the corresponding ETC1 block is split vertically:The following example shows ETC1 texture endpoints with tiles and references (considering that flipping has been already performed by the decoder):Considering that each endpoint codebook element corresponds to a single ETC1 base color, the original endpoint quantization algorithm works almost the same way for the ETC1 encoding as for the DXT1 encoding. An endpoint of en ETC1 tile can be represented with a (low_color.r, low_color.g, low_color.b, high_color.r, high_color.g, high_color.b) vector, where low_color and high_color are generated by the tile palletizer, exactly the same way as for the DXT1 encoding.Note that low_color and high_color, computed for a tile, implicitly contain information about the base color and the modifier table index, computed for this tile. Indeed, the base color normally lies somewhere in the middle between low_color and high_color, while the modifier table index corresponds to the distance between low_color and high_color. Vectors which represent tiles with close values of low_color and high_color, will most likely get into the same cluster after vector quantization. But this also means that for the tiles from the same cluster, the average values of low_color and high_color, and distances between low_color and high_color should be also pretty close. In other words, the original endpoint quantization algorithm will generate tile clusters with close values of the base color and the modifier table index.Selectors of each 4x4 block can be represented with a vector of 16 components, corresponding to the selector values of each block pixel. This means that ETC1 selector quantization step is identical to the DXT1 selector quantization step.The result of the vector quantization performed for both ETC1 endpoints and selectors can be represented in the following way:Note that according to the ETC1 format, the base colors within an ETC1 block can be encoded either as RGB444 and RGB444, or differentially as RGB555 and RGB333. For simplicity, this aspect is currently not taken into account (all the quantized endpoints are encoded as 3555 in the codebook). If it appears that the base colors in the resulting ETC1 block can not be encoded differentially, the decoder will convert both base colors from RGB555 to RGB444 during decompression.The Crunch algorithm doesn't yet support ETC2 specific modes (T, H or P), but it’s capable of efficiently encoding the ETC2 Alpha channel. This means that the current ETC2 + Alpha compression format is equivalent to ETC1 + Alpha. Note that ETC2 encoding is a superset of ETC1, so any texture, which consists of ETC1 color blocks and ETC2 Alpha blocks, can be correctly decoded by an ETC2_RGBA8 decoder.ETC2 encoding for the alpha channel is very similar to the ETC1 encoding of the color information. Information about the alpha channel of each block is stored using 64 bits: 8-bit base alpha, 4-bit modifier table index, 4-bit multiplier and 16 3-bit selector values (one selector value per pixel).The modifier table index and selector value determine a modifier value for a pixel, which is selected from the ETC2 alpha modifier table. For performance reasons, ETC2 Crunch compressor is currently using only the following subset of the modifier table:The final alpha value for each pixel is calculated as base_alpha + modifier * multiplier, which is then clamped.Note that unlike ETC1 color, ETC2 Alpha is encoded using a single base alpha value per 4×4 pixel block. This means that each element of the alpha endpoint dictionary should correspond to a 4×4 pixel block, covering both primary and secondary ETC1 subblocks. For this reason, alpha channel can be ignored when performing color endpoint tiling.The compression scheme for ETC2 Alpha blocks is equivalent to the compression scheme for DXT5 Alpha blocks. As has been shown before, vector representation of alpha endpoints doesn’t depend on the used encoding. This means that all the initial processing steps, including alpha endpoint quantization, will be almost identical for DXT5 and ETC2 Alpha channels. The only part which is actually different for the ETC2 Alpha encoding is the final Alpha endpoint optimization step.In order to perform ETC2 Alpha endpoint optimization, the already existing DXT5 Alpha endpoint optimization algorithm is run to obtain the initial approximate solution. Then the approximate solution is refined based on the ETC2 Alpha modifier table values. Note that ETC2 format supports 16 different Alpha modifier indices, but for performance reasons, only 2 Alpha modifier indices are currently used: modifier index 13, which allows to perform precise approximation on short Alpha intervals, and modifier index 11, which has more or less regularly distributed values, and is used for large Alpha intervals.At first it might seem that different size of the color and alpha blocks can bring some complications for Crunch, as according to the original algorithm, both color and alpha endpoints should share the same endpoint references. This, however, is easily resolved in the following way: each alpha block is using the endpoint reference of the corresponding primary color subblock (this allows to copy alpha endpoint from the left, top, left-top or from the input stream), while the endpoint reference of the secondary color subblock is simply ignored when decoding alpha channel.The performed research demonstrates that Crunch compression algorithm in not limited to the DXT format and with some modifications can be used on a different gpu texture formats. We see some research potential to expand this work to cover further texture formats in the future.]]></description><link>https://unity.com/blog/engine-platform/crunch-compression-of-etc-textures</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/crunch-compression-of-etc-textures</guid><pubDate>Fri, 15 Dec 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Spectating VR]]></title><description><![CDATA[A fun game experience is something that players want to show off, record, and share. With VR, seeing what the player sees on a single, rectangular screen doesn’t always convey the entire feeling. This means that spectators can often find the default ‘seeing through a player’s POV’ experience underwhelming. What I wanted to do was set up a simple starter system for how a spectator camera should work and to add a little more fun for those not in the VR experience themselves. Fortunately, there have been a few shipped examples that successfully designed a good spectator view. The goal of this project was to come up with a spectator system that builds on those designs, is compact and portable, and can easily be integrated into your own projects.You can download the associated project here.
Requires Unity version 2017.2 or later.The first thing I need to do is to create a second camera specifically for the Spectator. I create a second camera and place it facing my first, original camera. Then, in the Camera Settings, I need to set the Target Eye to None (Main Display).Run the project in the editor, and already Unity’s game view is rendered independent of what the VR headset displays. It’s that easy! But don’t worry, there’s more fun we can have here.If I point that spectator camera back at myself, and hit play, I can’t see anything! I need to create an avatar to represent me in the world. I managed to create a nice little head and hands model using Unity's built-in shapes, and can now link them up as a head and hands. I want these to move with my tracked devices in the real world. To link these up, we have a new component in 2017.2: The Tracked Pose Driver. Drop it onto a gameobject, set whether you want to use the HMD or a Controller, and voila, that gameobject will be updated and can be used as an in-game proxy for any tracked part of your VR hardware. This makes it trivial to build a quick player VR rig.My narcissistic itch satisfied, now I want to get a few more in-game angles. All I need is a few world locations, and a small script, called the Spectator Controller, to iterate over those locations. The core of this script keeps track of the transform that the camera is currently attached to. In our sample, we are tracking m_CurrentTransform. I want to be able to switch cameras both as a VR player, and as a spectator, so I’ve linked that up to both the touchpad/stick clicks on the VR controllers, and the spacebar on the keyboard. The second responsibility of this Spectator Controller is to enable and disable the color and viewfinders of the currently active camera. I'll opt to create a CameraAttachPoint MonoBehaviour in order to handle the elements that are specific to my high tech camera and viewfinder.Next up, I want to be able to see what the Spectator sees, while still in VR. I won’t know if I’m `striking a good pose until I can see for myself, in real time. For this, I need a render target, and an extra camera. If I render my spectator’s camera to a render target, I can then redirect the output to both a texture in the world, and a camera directed towards the Main Display. This part just needs a few more assets, conveniently located in the Assets/RenderTarget folder. I also need a third camera. We now have 3 cameras: the VR camera, the spectator camera, and the spectator display, which takes the spectator camera’s render target and displays it to the user. I’ll opt to use a Canvas UI object here so that I could then add additional UI not visible to the VR player nor any spectator render targets.That’s fun, but now that I can see myself dance, I don’t just want to iterate over preset angles, I want to be able to set my own. I want to be able to grab that camera and really show myself off. For that, I need to build a small component called the Grabber. It’s a simple system: when I press the trigger, I check for any physics objects in a small radius that are on a specific layer. While the trigger is held, I continue to update the position and rotation of any found objects to match that of the grabbing hand. Simple, but it gets the job done.An important note about moving the camera: getting the camera tossed around like a small ragdoll can be disorienting to our spectators. If you don’t have your inner ear helping you out, it can be hard to understand jittery movement. For that purpose, all camera movements (Grabber and Spectator Controller behaviours) contain settings for smoothing. These smoothing values, which go from 0 (no smoothing) to 1 (stays at the original position indefinitely), will use linear interpolation between the original and desired camera location and orientation to smooth out any sudden movements. I’ve found 0.1 is generally enough, but it’s a personal preference and can depend on context, so adjust as needed.I’ve now got everything bundled up nicely. I’ve got a series of toggleable spectator cameras that can be grabbed, posed with, and presented within the VR world itself. I still need a way to make sure the users know what they can manipulate, without interfering with the spectator scenery. Since I’ve got separate cameras for the spectator and the player, it’s trivial to use the cameras layer mask to create a player-only layer and place instructions there.It’s important to note that all these cameras get expensive. We draw the whole world twice and then re-render the spectator’s view a third time. Disabling both spectator cameras when not in use would be a useful addition. To do that, turn off both the Spectator Camera and Spectator View cameras and the system will fall back into the original ‘render from the player’s POV’ way of spectating.And this is where I leave it up to you. There is a grabbable, movable spectator camera, with its own in-game viewfinder and a separate UI layer for both player and spectator. Take it apart, swap out the assets, change the camera switching behaviour and UI, and turn this project into your own. I’ve tried to keep it light and easy to dissect, with environment and visual assets easy to exclude, and there is a minimal amount of custom scripts. This would be an excellent place to start looking into Cinemachine to pick the right angles to maintain a good view of the action. A crafty developer could even add more to the spectator UI and inputs and design a new asymmetric style of gameplay where the spectator can be a real participant.What would you like to see in a good VR spectator system?]]></description><link>https://unity.com/blog/games/spectating-vr</link><guid isPermaLink="true">https://unity.com/blog/games/spectating-vr</guid><pubDate>Tue, 12 Dec 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[A new way to learn Unity: Game development from A-to-Z]]></title><description><![CDATA[New to Unity? Start building with Unity Game Dev Courses and create your own dungeon crawler game, Swords and Shovels.Learn Unity and game development from start to finish with Unity Game Dev Courses. You’ll learn all the essential concepts of game development, then focus on the areas that appeal to you, all while creating an awesome looking game that you can play. You’ll build your foundations in core topics like C#, cameras, animation, and lighting. You’ll also begin working with non-Unity applications necessary for the full game dev pipeline, such as Maya, 3DS Max, and Photoshop.The courses include AAA-quality assets used in Swords & Shovels, and at each step, you’ll learn new skills that will make these assets come to life. By the end of the course, you will have a working dungeon crawler style arena battle game. And, it will look amazing!When you sign up for Unity Game Dev Courses, you’ll get access to more than 20 hours of instructional videos, created by game industry veterans with a knack for teaching. You can learn at your own pace, practice, or review as you like. We designed these courses in Partnership with Pluralsight, the enterprise technology learning platform, so now you can get the best of Unity’s content expertise delivered on the easy to use Pluralsight learning platform."At Unity we are passionate about enabling the success of our developers, so it's important that we equip them with the tools and resources they need to bring their ideas to life. Pluralsight's reputation as a leading learning platform makes them an ideal partner for helping game developers acquire new skills and learn new techniques that will raise the quality of creations in the gaming industry.”-- Jessica Lindl, Global Head of Education at Unity TechnologiesFor a limited time, you can get the low introductory rate of $12/month. Your monthly subscription gives you access to:Unlimited access to a growing library of expertly-authored Unity courses.High-quality Swords and Shovels assets get you started quickly.Easy-to-understand courses taught by game-industry veterans.Learn the basics of content-creation tools like 3ds Max and Maya.Skill assessments that help you validate your skills in minutes.Absolutely no commitment. Period. You can cancel at any time.Sign up now and start building!]]></description><link>https://unity.com/archive/blog/games/a-new-way-to-learn-unity-game-development-from-a-to-z</link><guid isPermaLink="true">https://unity.com/archive/blog/games/a-new-way-to-learn-unity-game-development-from-a-to-z</guid><pubDate>Thu, 02 Nov 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Trends and Challenges in User Acquisition: Q&A with Playrix's Artur Grigorjan]]></title><description><![CDATA[Artur is Head of Growth Marketing and is charged with the mission of finding unique opportunities to grow and improve the marketing efforts of Playrix - one of the biggest game developers in the world. They’re the team behind the wildly popular, and top-grossing titles of Township, Gardenscapes and Fishdom.Artur knows a thing or two about acquiring great users and keeping them in-app, and at this year’s China Joy conference in Shanghai, he spoke to the community of local developers on the latest UA trends.Yoni Eyal, ironSource’s GM of APAC sat down with Artur to get his take on the biggest challenges app developers are facing, and how they can ace user acquisition and find great users in the face of rising costs.Globally, what markets are the biggest opportunities for game developers today?Artur: Asia represents the biggest opportunity for game developers to see growth. Playrix is also experiencing growth in these areas - after the US, our next biggest markets are China, Japan and Korea.Not all western game developers see growth in Asia at first, so it’s important to approach the Asian market differently than you would at ‘home’. It’s unconventional and sounds counter-intuitive, but my advice is that it’s better to differentiate your games in the Asian markets, rather than adjusting your content to look more Asian or overhauling the game to match the Asian user.Using this approach, Playrix was able to find our niche in Asia, and now Township is the most successful farm simulation game in China.What are some of the challenges you think that app marketers are facing today?Artur: The first challenge facing app marketers today is simply the amount of change and growth in this industry. Often, the processes can’t keep up with the pace of change. The marketers who will succeed are those who can adapt their games quickly to the changing industry and make the most of the opportunities. For example, by working quickly to incorporate dynamic ad units into their marketing strategies.The second challenge resulting from the rapidly-growing industry is quality user acquisition. Increasing UA costs combined with reduced user quality and reduced retention means it’s getting harder to find quality users at an affordable cost.It’s also becoming harder to target and segment quality users, and to find out how relevant they are for your app. Game marketers should approach user acquisition knowing that perhaps only a portion of their acquired users will be high-quality or with high LTV-potential. The trick is to see which traffic sources are bringing in the highest volume of quality users, and then double-down on them.The third big challenge is fraud. Of course, we have seen moves in the industry to tackle fraud, and some companies are doing better than others at fighting it. Unfortunately, it’s an issue that will probably never completely disappear, so the industry needs to work together on fraud prevention tools that will benefit both app marketers and publishers.What are some ways that developers can fight the rising costs of user acquisition and declining retention?One way to tackle declining retention is to work hard on your product - try to make the actual game you are marketing better all the time. In-app engagement equates to revenue, so also develop and refine in-app engagement opportunities with your users.Game developers can also differentiate their portfolio to find out where there’s an open niche in the market, and acquire users this way. To do this well, developers need to be able to deploy multiple games in a short space of time. That way, if you have a user in one game, you can then offer them another of your titles, and still keep that user. If you don’t have these capabilities, don’t worry. At Playrix we focus on developing a small amount of titles and then constantly improving them to improve retention.Retention in the industry will continue to decrease, so the only thing that makes a difference is the potential longevity of the product. Developers should build extensive engagement features and social features into the game, and always be open to communication with their users. This is a great way to understand what users want out of your game, and potentially increase retention, so don’t ignore user feedback.What impact have you seen at Playrix from playable ads for UA?Artur: Playable ads are the hottest thing in the industry right now because they give the user an opportunity to become familiar with the app and the basic mechanics of the game before choosing to install.We’ve seen the “try before you buy” model work perfectly well in the commerce industry - it’s something which builds up engagement before the actual decision making, so I think we’re only going to see more of their impact in the mobile space.A challenge with playable ads that app marketers should keep in mind is that A/B testing a playable is more complex than other ad units, so it’s important for app marketers to work out a testing methodology before progressing with this new format.What do you think is going to be the biggest UA trend this year?Artur: First, I think a big trend on the horizon is more sophisticated ad tech tools that will allow advertisers to run even better campaigns, and to optimize them in a more intelligent way.If we look at UA just two or three years ago, there were far fewer tools. Now the technology is only getting better, and there is even more transparency. A lot of the partners Playrix works with give us a lot of transparency - they explain how their business works, and where our campaign spend is going. We’re also trying to be more transparent from our side too, which is equally important in a successful partnership. Increased transparency is a win-win situation for everyone.Second, the rise of programmatic will continue to be a significant trend in app marketing and user acquisition.Finally, new creative formats are going to continue to make waves, like playables and interactive rewarded video ads. Further down the road I think we will see the rise of AR in ads, it definitely has exciting potential.Learn more about ironSource playable ads here!]]></description><link>https://unity.com/blog/trends-challenges-ua-qa-playrix-artur</link><guid isPermaLink="true">https://unity.com/blog/trends-challenges-ua-qa-playrix-artur</guid><pubDate>Tue, 17 Oct 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2017.2 is now available]]></title><description><![CDATA[Unity 2017.2 introduces new 2D world-building tools, support for new XR platforms, and thanks to an exclusive collaboration between Unity and Autodesk, faster importing and exporting between Maya/3DS Max and Unity. Unity 2017.2 includes updates to the robust storytelling tools Timeline and Cinemachine, as well as support for ARCore, ARKit, Vuforia, and Windows Mixed Reality immersive headsets. Unity 2017.2 is now available for download. This blog post gives you an overview of some of the highlights followed by more detailed information about new features and improvements.2DUnity 2017.2 puts the power in the hands of 2D creators with a complete suite of 2D tools, including the new 2D Tilemap feature for fast creation and iteration cycles, and Cinemachine 2D for intelligent and automatic composition and tracking.Cinemachine’s dynamic, procedural cameras come to 2D game design making it easy to automate composition and tracking to enhance 2D gameplay, characters, and environments.Tilemap makes it fast and easy to create and iterate level design cycles right in Unity, so artists and designers can rapidly prototype when building 2D game worlds.XRUnity 2017.2 increases the level of support for new XR (augmented and virtual reality) platforms significantly. You can now count on native support for Windows Mixed Reality, Vuforia, and OpenVR on macOS. This means you can reach a wider audience, as well as take advantage of performance optimizations and enjoy a more efficient development workflow.Platform support: Our mission to help streamline AR development continues with support for Google’s ARCore SDK and for Apple’s ARKit through Unity’s ARKit plugin. We are already inspired by the experimentation and innovation we’re seeing from creators around the world, and we can’t wait to see all types of augmented reality experiences come to life as we continue to build up an expanded, customized AR development workflow for the latest and greatest AR platforms. We are also unlocking access to numerous immersive headsets with new support for Windows Mixed Reality, which will enable virtual reality developers to reach the widest audience.Performance: 2017.2 also brings VR creators more features that dramatically boost and optimize performance. Stereo Instancing (the next iteration of single-pass rendering) is now available for all integrated PC platforms using DX11. This rendering advancement will help optimize use of hardware, allowing developers to build better games and experiences. Another new feature is Video Asynchronous Reprojection for Google VR, offering a much higher quality video experience on Daydream View.These new platforms and improvements make cross-platform VR and AR development easier and faster. Combined with our existing feature set, developers can continue to push the boundaries of immersive storytelling on the largest number of XR platforms.Digital Content Creation tools workflow–FBX supportUnity and Autodesk have been working together to dramatically improve FBX support. This collaboration has enabled Unity to work directly on FBX SDK source code speeding up the development of a smooth and non-destructive round-trip workflow between the tools.Now all users, including artists and designers, can easily send scenes back and forth between Maya/Max and Unity with high fidelity. The new 2017.2 FBX Importer/Exporter package includes a custom Maya plug-in, and provides the following features: support for GameObject hierarchies, materials, textures, Stingray PBS shaders, and animated custom properties.There’s more!Those are just the highlights of Unity 2017.2, read on to get the and juicy details!TilemapThe new Tilemap feature enables you to build complex, grid-based worlds in 2D games right in Unity. You can quickly and easily create tilemap-based levels without using a third-party solution. Among other things, you can create your own palettes of tiles and smart brushes and then easily access them to paint on a grid-based system directly in the scene.Cinemachine comes to 2DThe power of Cinemachine’s dynamic, procedural cameras has come to 2D game design. Now, you can easily enhance and automate composition and tracking for 2D gameplay, characters, and environments to improve the player experience and save hours of programming. The Cinemachine feature is available via the Asset Store, add it to your project now.While Cinemachine already had a broad feature set in which many of the modules functioned perfectly well for 2D, we’ve now added some 2D-specific functionality, including the following.Framing Transposer: Move the camera to track and follow objects.Group Target: Track the center of a group of objects, and adjust the weight and influence of each one.Group Composer: Have the camera zoom and/or dolly to keep a group of targets on screen (more for 2.5d or ‘3d’ 2d games).Orthographic projection rendering: Set the Main Unity camera to Orthographic projection for a pure 2D game (works in 3D for those 2.5d games where you want to use actual parallax and perspective).Other 2D improvementsImprovements also include sprite atlas packing, which now uses less time reconciling sprites from the cache atlas. We’ve also updated BoxCollider2D Sprite Tiling generation to produce cleaner shapes.Finally, we’ve changed the 9-Sliced Sprites rendered in SpriteRenderer with Sprite Tiling behavior for negative width/height values to produce a more polished result.2D Extras2D-extras is a repository containing helpful custom Tiles and Brushes like the custom rule based Tilemap shown at the Unite Keynote with assets from the 2D game Phased (by Epichouse Studios):These reusable scripts will help you create custom tiles & brushes to make your games. Feel free to customize the behavior of the scripts to create new tools for your own specific use cases!
Timeline visualization of audio clipsYou can now see a visualization of audio clips in the form of audio waveforms when using Timeline.This is useful when timing actions and events to audio cues, just like in a non-linear video-editing system. You can easily drag any timeline clip to match audio, or move audio to match actions in the scene.Interactive TutorialsIn-Editor Tutorials offer a new interactive way of learning how to get started in Unity. The new Tutorial panel in Unity 2017.2 instructs you and responds to your actions as it leads you through a series of tutorials for absolute beginners. Each tutorial gives you the opportunity to interact with Unity to fix parts of a ready-made game as you try and get the player character to the goal. At the same time, you learn the interface and basic Unity concepts..We will be creating more interactive tutorials and plan to open up the creative tools that power this to the community, so that you too can create interactive tutorials for Unity or for your asset store tools. We hope you like this new tool and can’t wait to hear your feedback, so sound off in the comments below or on the dedicated forum thread and let us know!Visualization of NavMesh in real time for debuggingDebug data from the process of building a NavMesh with the NavMeshBuilder API can now be selectively collected and visualized in the Editor using `NavMeshEditorHelpers.DrawBuildDebug()`.Workflow with Digital Content Creation (DCC) toolsFBX Importer/Exporter: Unity and Autodesk are directly collaborating to bring you the best FBX support in the industry. We are working to make your content creation and interactive workflow pipelines as efficient and effective as possible. This collaboration has enabled Unity to work directly on FBX SDK source code making improvements to the Unity FBX importer and exporter and a custom Unity plugin for Maya. All in all, it has resulted in a powerful round-trip workflow.The new Unity FBX Exporter adds the ability to export FBX geometry for use outside of Unity. In particular, the improvements in FBX support allow you to send your work to Maya/Max and then non-destructively merge changes back into your Unity Asset. The exporter also provides support for materials and textures, and GameObject components including colliders, rigid body, scripts, and audio, etcExporting from Maya to Unity is now simpler and more complete than ever thanks to the Unity custom Maya exporter plugin. With one click in Maya, you can export FBX files, including materials, textures, and Stingray Physically-Based Shaders, with maximum fidelity for use in Unity.The improved Unity FBX importer provides support for hierarchies, materials, textures, Stingray PB shaders, and animated custom properties (when present in the FBX file). With these improvements, work done in Unity is preserved and updated Maya assets slot right back into your Unity scene, so you can simply pick up where you left off and continue your work.The FBX Exporter package (in beta) is available from the Unity Asset store, and includes the custom Maya plug-in.Embedded materials on importNow you can create materials inside the import prefab instead of in an external 'Materials' folder. FBX files may contain embedded textures and materials. Until recently, the first import always created additional assets. However, subsequent imports did not create additional assets, unless the generated materials had been moved or deleted. Textures were overwritten on every import. We have added the option of making embedded materials appear inside the FBX in the project, and made them read-only. You can also manually extract textures via a button in the import inspector. Finally, extracting an FBX file into the project creates an editable clone. This clone is explicitly associated with the original FBX meshes via the importer’s metadata.Animated Custom PropertiesVarious DCCs (e.g. Maya and 3DSMax) support adding custom properties (or attributes) to objects:Unity can now import animation curves on custom properties from FBX files (disabled by default):These will appear in the Animation Window as Animator properties, just like additional curves created from imported clips:You can then use a MonoBehaviour to drive other Component properties, or use an AssetPostprocessor to bind your curves directly to any Component.Maya/3DSMax Stingray physically based shaderImporting FBX files containing models using the Stingray PBS shader is now supported:Stingray PBS Materials in Maya 2016:Same materials imported in Unity:Notes:The Stingray PBS has slightly different properties than the Unity Standard Shader, so we have created a shader variant called “Standard (Roughness setup).” This shader has a separate roughness map, and thus consumes more graphics resources than the Unity Standard Shader. For this reason, this shader requires shader model 3.5 in forward rendering. We recommend using the Standard shader where possible.The Stingray PBS and Unity Standard Shaders have similar looks and responses to light, but do not use the same code. There will be differences between what you see in Maya or 3DSMax and what you see in Unity.Any changes made to the underlying ShaderFX graph in Maya or Max are not exported in the FBX file and thus will not be reflected in Unity. We do not recommend modifying the ShaderFX graph.Improvements to Avatar MasksIn 2017.2, the workflow and UI for mask updates has been improved by displaying the updated hierarchy, with the invalid mask paths in red. Mask checkboxes for invalid paths are disabled.New AssetBundle API for more controlAssetBundles lets you segment your app into multiple files, and call upon them when you need them, whether they’re local or remote. This is great for optimizing performance or managing how your app files are distributed. Shipping with 2017.2 is a brand new API for AssetBundles. If you use AssetBundles to pull in content securely from a CDN, this could be for you.
Previously, your options for loading AssetBundles were either from File or Memory. Sometimes, however, an intermediary step needs to be taken before the data is usable. For example, we wanted to solve the issue where a client is pulls data from a secure CDN. In this case, decrypted content would be served as a stream, and you’d have to write extra steps to convert the data to a useable format. Now, you can read the data directly as a managed Stream object with a new API, AssetBundle.LoadFromStream. And less code is required from you!
Platform: Built-in Vuforia SupportWe have introduced integrated support for the development of Vuforia-enabled apps in the Unity Editor. With Vuforia, you can now create cross-platform augmented reality experiences using everyday objects. Vuforia enables you to attach digital content to images and physical 3D objects, identify and track objects using custom-designed marker icons, and much more.Vuforia support can be installed through the Unity Download Assistant and enabled under Project Settings > Player Settings > XR Settings. You can learn more about Vuforia here and download their Core Sample Assets here for free.About Vuforia:
Vuforia is a software platform for augmented reality applications on handheld and headworn devices. It delivers a cross-platform solution for attaching digital content to physical objects and environments. Vuforia is supported by a global ecosystem of more than 375,000 registered developers and more than 45,000 published applications.Windows Mixed RealityUnity now has brand new native support for Windows Mixed Reality immersive headsets, enabling creators to publish VR content to the Microsoft Store.Unity’s support also includes workflow enhancements, such as being able to preview the HMD view on-device through the Editor.Whether you’re creating a tailored experience just for this platform or porting an existing VR game, Unity has unlocked access to an entirely new range of VR devices.For more detailed information, head to the getting started guide.OpenVR support for MacOSUnity has worked closely with Apple and Valve to optimize Metal 2 to run against Unity’s current VR rendering paths, Multi-Pass, and variants of Single-Pass. For the final release, developers will be able to improve performance using the new Metal 2 features announced at WWDC and combining them with the use of instancing. This will cut the number of draw calls required in half.For more information on virtual reality development in Unity, head to our manual page.Google ARCore (plugin)We have added support for Google ARCore augmented reality technology when targeting Android 7.0 and above. The ARCore API provides accurate device position and orientation information as well as feature point-detection, which identifies the physical space of the user's surroundings.Unity's support for ARCore makes it easy for you to drive a standard Unity camera using your device's real-world position and orientation. This enables you to create planes representing surfaces of the device's surroundings and to render the color camera's image as the background for an augmented reality experience.The SDK currently supports development for Google Pixel or Pixel XL, and Samsung Galaxy S8 running Android 7.0 Nougat and above. It requires Android API SDK v.24 or later.To set up the SDK, follow these steps:Download and import the ARCore SDK for Unity.Configure Unity for ARCore development following the steps in the Unity Forum.We can’t wait to see the amazing experiences that you produce with ARCore. Join the discussion on our forum to be a part of this exciting new frontier in AR!Apple ARKit (Plug-in)Since the original announcement of ARKit at WWDC and the launch of our Unity ARKit plugin back in June, we’ve seen an incredible response from the community. We have worked side-by-side with developers and made continual improvements to our plugin.The Unity ARKit plugin provides you with friendly access to ARKit’s features: motion tracking, live video rendering, plane finding and hit-testing, ambient light estimation, raw point cloud data, and more. There are also Unity components that make it easier for you to create new AR apps, or easily integrate AR features in existing Unity projects.Unity’s ARKit Plugin has a unique capability that will save you hours of development time: the Unity ARKit Remote. This tool speeds up iteration by allowing you to make changes to the scene and debug scripts in the Unity Editor, in real-time, without having to build to the device.
Our plugin now supports access to the following new functionalities:Light estimation for ambient color temperature, in addition to the ambient intensitySpecifying your own User AnchorsReceiving events when the tracking state has changedEvent notifications for when an AR session is interrupted or resumesWe have included many new examples to help you get up and running on your AR project fast, including:Scaled content (imagine a city in your living room)Focus Square (a UI element to show where to place objects)Occlusion (shader and material that will hide virtual objects behind real ones)Shadow (shader and material to ground your virtual object in the real world)The Unity ARKit Plugin is available now as a package from the Asset Store. It is also available as an open-source repository on BitBucket, where you can join us in making it even better. Head over to the forums to learn how to get started or if you have any questions.Stereo Instancing (PC)Stereo Instancing (also known as single-pass instanced rendering) is an evolution of Unity’s single-pass rendering and is now supported when building with DX11, allowing developers to greatly optimize performance for Vive, Oculus Rift, and Windows Mixed Reality immersive headsets.The biggest impact of using this technique is that you can dramatically reduce (half, at times) the number of draw calls generated on the API side, saving a good chunk of CPU time. Additionally, the GPU itself is able to more efficiently process the draws (even though the same amount of work is being generated). Note: Stereo Instancing is only supported with forward rendering.To enable this feature, open Player Settings (menu: Edit > Project Settings > Player). In Player Settings, navigate to XR Settings, ensure the Virtual Reality Supported checkbox is ticked, then tick the Single-Pass Stereo Rendering checkbox. Note that stereo instancing only works with Windows 10; you can find more information here.Tracked Pose DriverThe Tracked Pose Driver is a new cross-platform component that makes recognition between devices and game objects in the scene simpler and more intuitive.More info can be found here.Editor Simulation for Vive HMDThis new feature allows certain aspects of the Vive HMD to be simulated in the Editor, without the need of a physical HMD. This is enabled by adding "Mock HMD‒Vive" to the Virtual Reality SDKs in Player Settings > XR Settings.The mock HMD will use the same asymmetric projection matrix, hidden occlusion mesh, field of view, aspect ratio, and eye texture size as the Vive. Mock HMD can be used with both multiple and single-pass rendering paths, and it will render as a split screen stereo display in Editor.
Native Rendering Plugin support for Nintendo SwitchOther improvements include Native Rendering Plugin support for Nintendo Switch, which enables you to implement low-level rendering and work with Unity’s multi-threaded rendering.macOS player Retina supportWe’ve added support for targeting Retina resolutions for macOS on devices that support it.Windows Player LauncherWe’ve moved the majority of the Windows Standalone Player into a separate signed DLL ("UnityPlayer.dll"), leaving the executable to be a thin wrapper that just calls into it.Support for Samsung Tizen & SmartTVUnity 2017.2 will be the last version to support Samsung Tizen and SmartTV. Following this release, Unity will provide 12-months of support, including patches and security updates. To get the latest info on Tizen and SmartTV for Unity, visit the partner page for Samsung.
GI ProfilerThe addition of the GI profiler shows relevant statistics, including how much CPU time is consumed by the Realtime Global Illumination subsystem to help you optimize GI in your scenes.HDR EmissionGlobal Illumination emission now uses 16-bit floating point format for both realtime and baked GI. The HDR color picker limit increased from 99 to 64k to unlock the full range. This makes it possible to emit much stronger light from emissive surfaces.Lightmap background (push-pull dilation)The feature fills the empty areas in the lightmaps with content from lower MIP levels (push-pull dilation). This will fix the cases where dark pixels around geometry edges are visible when rendering with lightmaps. This is due to dark background texels bleeding in when lower MIPs are accessed.Progressive Lightmapper ImprovementsWe now support double-sided materials in the Progressive Lightmapper. We’ve added a new material setting that causes lightning to interact with backfaces. When enabled, both sides of the geometry are accounted for when calculating Global Illumination.Tree Lightmap BakingTerrain trees can now cast shadows into the baked lightmap for a lightmap static terrain. The trees themselves will be lit using a light probe that is automatically placed above the tree.Lightmap stitchingLightmap seam stitching makes it easy to get rid of those annoying edge seams in lightmaps.A-Trous filteringFor Unity 2017.2, we have added advanced filtering options with a new A-Trous kernel. The new filter preserves shadow edges and contact shapes much better, while at the same time smoothing out noisy areas.Linear Rendering with WebGL 2.0You can now be sure that linear rendering inputs, outputs, and computation are in the correct color space. The brightness of the final image will be adjusted linearly according to the amount of light in the scene. That means more consistent lighting across your scenes and assets. You can get more details here.Linear rendering is now supported on:Windows, Mac OS X and Linux (Standalone)Xbox OnePlayStation 4Android with OpenGL ES 3.x and VulkaniOS with MetalWebGL 2.0Linear rendering is particularly interesting because it allows you to use the Unity Post Processing Stack, including temporal anti-aliasing, and also achieves excellent results with WebGL.Linear rendering in Unity WebGL player works on any web browser that supports WebGL 2.0.Editable Custom Data Module LabelsThe Custom Data module allows you to specify data that can be used for many different purposes. We’ve made the labels on the curves and gradients editable to allow you to describe what each bit of custom data is used for.Inherit Lifetime for sub-emitter particlesThere is a new option in the Inherit dropdown for sub-emitters, allowing them to base their own lifetime on the remaining lifetime of their parent system.This can be useful for creating effects that are guaranteed to only last a specific amount of time, even if they collide and create new particles, for example.Linear DragA new option in the Limit Velocity over Lifetime Module allows you to apply linear drag to your particles. Add it to effects with various sized particles in order to have the smaller ones travel further and faster than the larger particles. A great use-case for this is when creating explosion debris effects.Auto-Destruct/DisableIt’s now possible to destroy or disable a Particle System when it has finished playback. Destroying is great for one-shot effects. Destroying allows you to avoid having to perform your own cleanup code. Disabling, on the other hand, can be useful when you are managing your own pool of Particle System Game Objects.Burst EmissionBursts counts can now be configured to use the same curve options as many other Particle System properties.Restart ButtonWe’ve added a Restart Button to the Scene View overlay in order to spare you the trouble of having to press Stop and Play to restart an effect.
Running a game as a live service means you can adapt your game to your players’ needs, keep your game fresh, and make the experience more enjoyable. In 2017.2, our Remote Settings feature is officially out of beta.Remote SettingsRemote Settings is easy to use. It’s native to the Unity engine and employs an API similar to PlayerPrefs that most Unity developers are familiar with. Recently, we made a significant update to this feature. Remote Settings now supports segments. So you can act directly and immediately on player segments and tailor your game to suit specific groups of players — all without shipping a new binary. The above demo of the upcoming Final Fantasy XV Pocket Edition, a remaster of the original title in the form of an all-new mobile adventure, shows how Remote Settings works in a AAA title.Remote Settings is now officially live and available on your Analytics dashboard.Performance Reporting: Android Native CrashNow, when you use the Performance Reporting service, native crash reports will automatically get sent from your players’ Android devices to the Performance Reporting service. In the developer dashboard, you’ll be able to see these crash reports alongside your unhandled managed exceptions and native iOS crash reports. You can enable the Performance Reporting service for your project in the services window in the Editor.Recorder (experimental)The Recorder captures frames during gameplay and produces image sequences (JPG, PNG, GIF, OpenEXR) and video files (WebM, H.264/Windows only). You can add this feature to the Unity Editor by downloading the Recorder from the asset store.This first experimental release includes a dedicated recorder window to select recording options:You can also trigger recording sessions directly from Timeline with a Frame Recorder Track:Package ManagerAlthough Unity user won’t see any change in 2017.2, we wanted to give you a heads up. In 2017.2, we are introducing a Package Manager which will enable a more flexible and modular approach to manage all the components and subsystems that ultimately make up Unity. For this first release, we are exposing an API for enabling internal components to be updated more frequently than the editor (the first pillar of the system). Stay tuned for more details.
As always, refer to the release notes for the full list of new features, improvements and fixes.We also want to send a big thanks to everyone who helped beta test 2017.2 making it possible to release 2017.2 today.Info on the asset store sweepstake winners
We are currently reviewing all the beta 17.2 sweepstakes winners and will send gift vouchers to those of you who have qualified in the weeks to come by email.Be part of the 2017.3 beta
If you are not already a beta tester–perhaps you’d like to consider becoming one. You’ll get early access to the latest new features, and you can test if your project is compatible with the new beta.You can get access simply by downloading our open beta test. By joining our open beta, you won’t just get access to all the new features, you’ll also help us find bugs ensuring the highest quality software. As a starting point, have a look at this guide to being an effective beta tester to get an overview. If you would like to receive occasional mails with beta news, updates, tips and tricks, please sign up below.Sign up for Beta Newsletter
 First Name:
 Last Name:
 Email Address:
 Processing...Thank you! Your data has been successfully sent.We are sorry! Some error occurred. please, try again later.]]></description><link>https://unity.com/blog/technology/unity-2017-2-is-now-available</link><guid isPermaLink="true">https://unity.com/blog/technology/unity-2017-2-is-now-available</guid><pubDate>Thu, 12 Oct 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Neon]]></title><description><![CDATA[Neon is a small environment created by our Demo team’s creative director Veselin Efremov in just a couple of days, with Unity 2017.1 and models from the Asset Store. In this blog post he will be sharing some thoughts around the project and how it came about.Starting with a bit of background: we were on the lookout for an environment artist, and I’d invited a candidate to an on-site interview in our Stockholm office. My idea was, rather than asking questions, to just build an actual small scene together for the two days we had. I’d been working on a larger project for a while, so it was a welcome break for me. The “art jam” experience felt refreshingly creative, so after we were done, I decided to do another one from scratch, with the help of our tech lead Torbjorn Laedre -- and it became Neon.I started with downloading the latest public release of Unity from the website, and brought in the Post-Processing stack v1 and the Realtime area lights / Volumetric fog on GitHub. These are the first things I usually put in a new project, because I like to use the high quality effects and lighting to guide my creative decisions later on. I can’t bear to look at ugly stuff even if it’s just a box in an empty scene.Torbjorn had suggested to go for a cyberpunk vibe, so I added some emissive boxes and cranked up the atmosphere density. Having made this rough layout, I liked the mood that the lighting and the fog were creating, and decided to develop it a bit further. I decided to use the Asset Store to achieve a finished look as quickly as possible.There’s a huge choice of assets, so I’d just grab whatever looked like it would fit the overall idea, and used these to detail the scene in passes. Many of the Asset Store assets were very cheap and some were even free, so I had a lot of choice and was able to advance from the first generic sketch to a fairly finished look in less than two days:I take many screenshots as I work - here they are in a sequence which shows how the look evolved.I quickly realised that I can go for a relatively polished look with these assets, so I decided to turn it into a deliberate challenge to not move a single vertex but rely entirely on the stock models. Instead of creating custom props, I would experiment with what was available and often used the assets in unlikely ways. For instance, the mechanical underside of this building overhang is actually a part of a spaceship. And I got an entire factory set only to use the cables.This is obviously a very unoptimised way of working, but its value is in how quickly it allows me to build a space which, to the “naked eye”, has the look and feel of something complete and visually appealing.Early prototyping to final quality is essential to the way I work, and applies to larger projects as well -- for instance, the cinematic demos we do at Demo team. If we were making a Blade Runner-inspired demo, this small vignette would serve as our starting point for the breakdown of the project. On a small team, having a prototype on day 2 from project start means that everyone gets a very good idea of what needs to be done. It’s especially important that the artists get to discover what potential the engine tech can give them, when it is early enough to change course creatively and decide to make use of some opportunities they wouldn’t otherwise foresee. It is even more important that the programmers get a clear picture of the art- and rendering-related tasks on the project, and can identify pitfalls early on. Game designers can dive right in and start experimenting with the experience. Needless to say, it also helps guide the decisions about where to put most effort in asset production. You don’t always need to design and create your own custom set of pipes and cables, when some existing ones might do a perfect job, while the art team is focusing on the most important assets that are unique and style-defining for the game.At the end stretch, we pulled in some help from the others on our team in order to make the scene feel more complete.The rain was an important part of achieving the look, and Torbjorn had been working on it in the meantime. Our VFX artist Zdravko Pavlov rendered the rain texture.The characters were static, as I was using them to populate the space and for scale reference, so it was great that our Animation Director Krasimir Nechevski could pitch in with some animations he had lying around from another project, and made the humans walk around and idle.Aleksander Karshikoff made the audio.By now many others from Unity are using this small scene to try something out, stretch a feature, or have some creative fun; and I’ve gone back to my main project.Hope you enjoyed this glimpse into my work process. Here is the full list of the stock assets I used:Asset Store AssetsPackage Name:  Umbrella Pro  |  Publisher: Indie_G  |  Price: 4.02 (EUR)                                Package Name:  Assorted Prop Pack      |  Publisher: Volumetric Games  |  Price: 10.71 
Assorted Prop Pack                           Volumetric Games                   10.71 
Dragon Statue                                    Viacheslav Titenko                   Free 
Fire Escape                                         Undead Studios                        4.47 SciFi Industrial Level Kit                     Ximo Catala                             62.53 The Probe                                            MACHIN3                                 13.40 
The Starfighter                                    MACHIN3                                 44.67 
Pipes Kit                                               Mojo Structure                         Free 
Neon Signs Asset Pack                        Zymo Entertainment                 8.93 
Street Props Pack                                 Coded Soul                                8.93 
RainDrop Effect 2                                  Globe Games                           Free 
Retro Cartoon Cars - Cicada - Free     Retro Valorem                          Free 
SF Buildings (RTS, FPS)                       GESO Media                              17.87 
Unity Particle Pack                               Unity Technologies                  Free 
Sci-Fi Top Down Pack 1                       Velkin Labs                               35.73       
Street Lights                                          AI Games                                   2.23 

Total                                                                                                         213.49 


Other Assets  

Four surfaces                                         Quixel Megascans                   Subscription Sky HDRI                                                NoEmotionHDRs.net                Free (CC 4.0) 
Human Character - Male Écorché        3dscanstore.com                     45.00]]></description><link>https://unity.com/blog/games/neon</link><guid isPermaLink="true">https://unity.com/blog/games/neon</guid><pubDate>Tue, 03 Oct 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Unity Machine Learning Agents Toolkit]]></title><description><![CDATA[Our two previous blog entries implied that there is a role games can play in driving the development of Reinforcement Learning algorithms. As the world’s most popular creation engine, Unity is at the crossroads between machine learning and gaming. It is critical to our mission to enable machine learning researchers with the most powerful training scenarios, and for us to give back to the gaming community by enabling them to utilize the latest machine learning technologies. As the first step in this endeavor, we are excited to introduce Unity Machine Learning Agents Toolkit.Machine Learning is changing the way we expect to get intelligent behavior out of autonomous agents. Whereas in the past the behavior was coded by hand, it is increasingly taught to the agent (either a robot or virtual avatar) through interaction in a training environment. This method is used to learn behavior for everything from industrial robots, drones, and autonomous vehicles, to game characters and opponents. The quality of this training environment is critical to the kinds of behaviors that can be learned, and there are often trade-offs of one kind or another that need to be made. The typical scenario for training agents in virtual environments is to have a single environment and agent which are tightly coupled. The actions of the agent change the state of the environment, and provide the agent with rewards.The typical Reinforcement Learning training cycle.At Unity, we wanted to design a system that provide greater flexibility and ease-of-use to the growing groups interested in applying machine learning to developing intelligent agents. Moreover, we wanted to do this while taking advantage of the high quality physics and graphics, and simple yet powerful developer control provided by the Unity Engine and Editor. We think that this combination can benefit the following groups in ways that other solutions might not:Academic researchers interested in studying complex multi-agent behavior in realistic competitive and cooperative scenarios.Industry researchers interested in large-scale parallel training regimes for robotics, autonomous vehicle, and other industrial applications.Game developers interested in filling virtual worlds with intelligent agents each acting with dynamic and engaging behavior.We call our solution Unity Machine Learning Agents Toolkit (ML-Agents toolkit for short), and are happy to be releasing an open beta version of our SDK today! The ML-Agents SDK allows researchers and developers to transform games and simulations created using the Unity Editor into environments where intelligent agents can be trained using Deep Reinforcement Learning, Evolutionary Strategies, or other machine learning methods through a simple to use Python API. We are releasing this beta version of Unity ML-Agents toolkit as open-source software, with a set of example projects and baseline algorithms to get you started. As this is an initial beta release, we are actively looking for feedback, and encourage anyone interested to contribute on our GitHub page. For more information on Unity ML-Agents toolkit, continue reading below! For more detailed documentation, see our GitHub Wiki.A visual depiction of how a Learning Environment might be configured within Unity ML-Agents Toolkit.The three main kinds of objects within any Learning Environment are:Agent - Each Agent can have a unique set of states and observations, take unique actions within the environment, and receive unique rewards for events within the environment. An agent's actions are decided by the brain it is linked to.Brain - Each Brain defines a specific state and action space, and is responsible for deciding which actions each of its linked agents will take. The current release supports Brains being set to one of four modes: External - Action decisions are made using TensorFlow (or your ML library of choice) through communication over an open socket with our Python API.Internal (Experimental) - Actions decisions are made using a trained model embedded into the project via TensorFlowSharp.Player - Action decisions are made using player input.Heuristic - Action decisions are made using hand-coded behavior.Academy - The Academy object within a scene also contains as children all Brains within the environment. Each environment contains a single Academy which defines the scope of the environment, in terms of: Engine Configuration - The speed and rendering quality of the game engine in both training and inference modes.Frameskip - How many engine steps to skip between each agent making a new decision.Global episode length - How long the episode will last. When reached, all agents are set to done.The states and observations of all agents with brains set to External are collected by the External Communicator, and communicated to our Python API for processing using your ML library of choice. By setting multiple agents to a single brain, actions can be decided in a batch fashion, opening the possibility of getting the advantages of parallel computation, when supported. For more information on how these objects work together within a scene, see our wiki page.With Unity ML-Agents toolkit, a variety of training scenarios are possible, depending on how agents, brains, and rewards are connected. We are excited to see what kinds of novel and fun environments the community creates. For those new to training intelligent agents, below are a few examples that can serve as inspiration. Each is a prototypical environment configurations with a description of how it can be created using the ML-Agents SDK.Single-Agent - A single agent linked to a single brain. The traditional way of training an agent. An example is any single-player game, such as Chicken. (Demo project included - “GridWorld”)Simultaneous Single-Agent - Multiple independent agents with independent reward functions linked to a single brain. A parallelized version of the traditional training scenario, which can speed-up and stabilize the training process. An example might be training a dozen robot-arms to each open a door simultaneously. (Demo project included - “3DBall”)Adversarial Self-Play - Two interacting agents with inverse reward functions linked to a single brain. In two-player games, adversarial self-play can allow an agent to become increasingly more skilled, while always having the perfectly matched opponent: itself. This was the strategy employed when training AlphaGo, and more recently used by OpenAI to train a human-beating 1v1 Dota 2 agent. (Demo project included - “Tennis”)Cooperative Multi-Agent - Multiple interacting agents with a shared reward function linked to either a single or multiple different brains. In this scenario, all agents must work together to accomplish a task than couldn’t be done alone. Examples include environments where each agent only has access to partial information, which needs to be shared in order to accomplish the task or collaboratively solve a puzzle. (Demo project coming soon)Competitive Multi-Agent - Multiple interacting agents with inverse reward function linked to either a single or multiple different brains. In this scenario, agents must compete with one another to either win a competition, or obtain some limited set of resources. All team sports would fall into this scenario. (Demo project coming soon)Ecosystem - Multiple interacting agents with independent reward function linked to either a single or multiple different brains. This scenario can be thought of as creating a small world in which animals with different goals all interact, such a savanna in which there might be zebras, elephants, and giraffes, or an autonomous driving simulation within an urban environment. (Demo project coming soon)Beyond the flexible training scenarios made possible by the Academy/Brain/Agent system, the Unity ML-Agents toolkit also includes other features which improve the flexibility and interpretability of the training process.Monitoring Agent’s Decision Making - Since communication in Unity ML-Agents toolkit is a two-way street, we provide an Agent Monitor class in Unity which can display aspects of the trained agent, such as policy and value output within the Unity environment itself. By providing these outputs in real-time, researchers and developers can more easily debug an agent’s behavior.Above each agent is a value estimate, corresponding to how much future reward the agent expects. When the right agent misses the ball, the value estimate drops to zero, since it expects the episode to end soon, resulting in no additional reward.Curriculum Learning - It is often difficult for agents to learn a complex task at the beginning of the training process. Curriculum learning is the process of gradually increasing the difficulty of a task to allow more efficient learning. The Unity ML-Agents toolkit supports setting custom environment parameters every time the environment is reset. This allows elements of the environment related to difficulty or complexity to be dynamically adjusted based on training progress.Different possible configurations of the GridWorld environment with increasing complexity.Complex Visual Observations - Unlike other platforms, where the agent’s observation might be limited to a single vector or image, the Unity ML-Agents toolkit allows multiple cameras to be used for observations per agent. This enables agents to learn to integrate information from multiple visual streams, as would be the case when training a self-driving car which required multiple cameras with different viewpoints, a navigational agent which might need to integrate aerial and first-person visuals, or an agent which takes both a raw visual input, as well as a depth-map or object-segmented image.Two different camera views on the same environment. When both are provided to an agent, it can learn to utilize both first-person and map-like information about the task to defeat the opponent.Imitation Learning (Coming Soon) - It is often more intuitive to simply demonstrate the behavior we want an agent to perform, rather than attempting to have it learn via trial-and-error methods. In a future release, the Unity ML-Agents toolkit will provide the ability to record all state/action/reward information for use in supervised learning scenarios, such as imitation learning. By utilizing imitation learning, a player can provide demonstrations of how an agent should behave in an environment, and then utilize those demonstrations to train an agent in either a standalone fashion, or as a first-step in a reinforcement learning process.As mentioned above, we are excited to be releasing this open beta version of Unity Machine Learning Agents Toolkit today, which can be downloaded from our GitHub page. This release is only the beginning, and we plan to iterate quickly and provide additional features for both those of you who are interested in Unity as a platform for Machine Learning research, and those of you who are focused on the potential of Machine Learning in game development. While this beta release is more focused on the former group, we will be increasingly providing support for the latter use-case. As mentioned above, we are especially interested in hearing about use-cases and features you would like to see included in future releases of Unity ML-Agents Toolkit, and we will be welcoming Pull Requests made to the GitHub Repository. Please feel free to reach out to us at ml-agents@unity3d.com to share feedback and thoughts. If the project sparks your interests, come join the Unity Machine Learning team!Happy training!]]></description><link>https://unity.com/blog/engine-platform/introducing-unity-machine-learning-agents</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/introducing-unity-machine-learning-agents</guid><pubDate>Tue, 19 Sep 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to integrate 360 video with Unity]]></title><description><![CDATA[Since the introduction of the new Video Player component in Unity 5.6, we've had a lot of questions about how to integrate 360 video into a Unity project. Over the past months we have slowly been refining our suggested workflow and working on a high quality shader to make it happen. Today, we are pleased to announce that we are ready to share our work in the form of a beta shader ready for use in any Unity 5.6 or later project.The concept is simple and straightforward. Take any supported video file (like an .mp4) containing either 360 or 180 equirectangular or cubemap content, import it as an asset, and play it through a Video Player component. The key is to target the Video Player to a Render Texture of the same dimensions as the video. Then, connect that texture to a Material set to use the new Skybox/PanoramicBeta shader and use that as your Scene Skybox Material.Voila! You now have a Skybox being driven by your panoramic video! Turn on the Virtual Reality Support Player Setting and throw on a VR headset and you'll immediately be surrounded by your video in full 360.If you have 3D 360 content, you can take things a step further for the ultimate immersive experience by using the Skybox Panoramic shader's 3D settings.Full project details and documentation available at our GitHub project page.]]></description><link>https://unity.com/blog/engine-platform/how-to-integrate-360-video-with-unity</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/how-to-integrate-360-video-with-unity</guid><pubDate>Thu, 27 Jul 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Spotlight Team best practices: Optimizing the hierarchy]]></title><description><![CDATA[On the Spotlight Team, we work with the most ambitious Unity developers to try to push the boundary of what a Unity game can be. We see all sorts of innovative and brilliant solutions for complex graphics, performance, and design problems. We also see the same set of issues and solutions coming up again and again.This blog series is going to look at some of the most frequent problems we encounter while working with our clients. These are lessons hard won by the teams we have worked with, and we are proud to be able to share their wisdom with all our users.Many of these problems only become obvious once you are working on a console or a phone, or are dealing with huge amounts of game content. If you take these lessons into consideration early in the development cycle, you can make your life easier and your game much more ambitious.Every time a GameObject moves, altering its transform, we need to let every game system that might care about this know. Rendering, physics, and every parent and child of the GameObject needs to be informed of this movement in order to match. As the scope of a game increases, and the number of game objects skyrockets, just the overhead of sending out all these messages can become a performance problem.Take an example from one our recent projects, Shadow Tactics.This is one of their NPCs with all of its component parts. This screenshot was taken after they had already moved all their rigs over to use Optimize Game Objects, so the original version had all of the NPC model’s bones in addition to all of the gameplay objects and model structure.This is a completely normal, expected setup for a game. Level designers are placing NPC spawners. Those spawners then, at runtime, create NPC instances as their own children. Enemy_normal is the root of the NPC. This contains the NavAgent that controls the NPC’s movement. Each NPC has a bunch of GameObject children that define their abilities and tuning. Nothing about this is at all wrong.What this all means, though, is that every frame, when the NPC moves, it must inform all of its children and all of its parents that its transform has changed. Every frame, every NPC is sending hundreds of Transform Changed messages and taking up a good amount of the frame doing so.Once we saw how much frame time Transform Changed messages were taking, we talked with Mimimi Productions and they altered their spawning in some simple ways. In addition to turning on Optimize Game Objects, they started spawning their NPCs at the root level of their scene. They also moved all of the NPC Ability Game Objects up to the root of the NPC, so they would not be a child of the NavAgent. This left only the visuals and the physics of the NPC under the Nav Agent. On their target hardware this improved performance by ~10 FPS.Let’s say that again, for those in the back.10 frames per second.Without majorly impacting workflow. Without needing to go back and redo a ton of content. Just by taking the content they already had and moving it around a little bit.Staring with Unity 5.4, we have been heavily optimizing all of the code having to do with transforms and the Transform Changed message. We have optimized memory layout and provided the .SetPositionAndRotation API to avoid extraneous changes. We are now allowing systems to register as caring about a specific transform, rather than needing to broadcast the Transform Changed message to every system in the engine.One of the largest changes, that is still ongoing, is moving over to a delayed and threaded TransformChangeDispatch system. This lets us queue up all of the Transform Change notifications in a bit of the hierarchy that is completely self-contained and then resolve them in a job off of the main thread. We are moving as many systems as we can over to dispatching these notifications, rather than making them on the main thread synchronously.Even with all these improvements, it is very important that you think about the structure of your hierarchy as you develop your game. With a bit of forethought, you can save yourself frames of execution time, and use that for things your players will care about.If something moves every frame, make sure all its children care about position. Only rendering, physics, audio, or core systems like that should be there.When dynamically creating game objects at runtime, if they do not need to be children of the spawner for the above reasons, spawn things at the root of the scene.You can easily register everything you spawn and pass along the ActiveInHeirarchy state of the spawner using OnEnable and OnDisable.Try to group your moving transforms such that you have around 50 or so GameObjects per root. This lets the underlying system group your TransformChangeDispatch jobs into a fairly optimal amount of work per thread. Not so few that the thread overhead dominates; not so many that you are waiting on thread execution.Thanks to Mimimi Productions for letting us use their game Shadow Tactics for our examples. We will be back next time with lessons learned working with Realtime Global Illumination and multi-scene editing.]]></description><link>https://unity.com/blog/engine-platform/best-practices-from-the-spotlight-team-optimizing-the-hierarchy</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/best-practices-from-the-spotlight-team-optimizing-the-hierarchy</guid><pubDate>Thu, 29 Jun 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Should non-gaming apps use playable ads?]]></title><description><![CDATA[This article originally appeared on iMedia Connection.Advertising technology is evolving, and as developers continue to become more creative with their ad formats, the industry is revealing there is much more to digital advertising in 2017 than simple banner or interstitial ads.The time is right for new, exciting ad formats. 91 percent of users say adverts are more intrusive than they were three years ago, leading them to skip or block adverts. The advertising industry needs to innovate quickly to correct this imbalance in user experience.What are playable ads?Playable ads, a form of interactive advertising, are an exciting format that delights users and offers new engagement opportunities. They are in a format users already understand and enjoy; about two-thirds of the US regularly play video games on a mobile or console. The truth is, people love to play.Game advertisers are rapidly adopting playable ads as a way for users to sample a game app in an entertaining, and rewarding format. It’s not just fun and games though -- the format is paying off. Playable ads result in CTR (click through rates) up to 7x higher than video ads. They also result in 2x the user retention rates compared to video ads, as users get an in-depth experience of the app before installing.Even more interesting, the ad format increases the LTV (lifetime value) of users acquired, because they demoed the app before installing. This means more long-term revenue, better ROAS (return on ad spend), and decreased cost-per-click (CPC). Game developers Jam City saw their ARPI (average revenue per install) at 158 percent higher than their average using a playable ad.Even if a user doesn’t install the app, advertisers still see their interaction path in the ad. These insights lead to improved playable ads and installs, especially if many users get stuck or pause at a similar point. It may even help with optimizing the gameplay inside the app itself.Gamifying non-gaming appsWhile it makes sense for gaming apps to use this ad unit, what about other genres of apps? Should non-gaming apps be using playable ads too? And, more importantly, can they adapt their app’s flow for these new ad units in a way that interests users?Non-gaming apps should definitely get in the game.The first challenge of a non-game app looking to leverage this format is finding a gamified or competitive aspect of their app to showcase (via a playable). A utility app may find it difficult to gamify the in-app experience to catch users’ attention in 30 seconds or less. Not all non-games can have a playable with a ‘3 color match’ core.Creative app marketers take core elements of their app and gamify them for maximum engagement by thinking outside the app itself. Marketers can think of a mini-game that isn’t directly related to their app experience, but is related to their industry or business.For instance, a travel app could have a playable ad with letter tiles spelling out a destination city, or a multiple choice quiz on capital cities.A food delivery app could have a simple puzzle, which when completed shows a popular dish.A playable ad can also be relevant to what users are doing when using your app. Since a user is more likely to browse a shopping app on their commute than at work, marketers can develop a playable that relates to this specific timeframe and mindset as the theme.Playable ads can be centered around trending themes as well, such as widely watched events like The Super Bowl or The Olympics. When marketers think creatively about their apps and brands, they harness the impact of interactivity, and generate a positive brand association of playing and winning -- resulting in connections with potential and even existing users.If playable ads don't fit, get interactiveNot all apps should take a playable ads approach though. If gamifying your app or industry just isn’t an appropriate fit - take banking apps for example, no one wants to think of banks playing with their money - app marketers can think of leveraging another critical element of playable ads: interactivity.By incorporating interactive elements into ads, you create an experience where users can engage with the ad itself. Even something as simple as an interactive end card offering users the choice between different in-app elements could have a big effect on user experience and your campaign results.There’s everything to gain when including playable or interactive ads in a non-gaming app campaign. The gamification, or the ‘win or lose’ element of playable ads, has clearly been shown to impact user experience.The time when users will respond positively to an interstitial interrupting their app experience is running out.If playable ads aren’t entirely suitable for your app, try to build the best user experience by integrating interactivity as much as possible, and go for opt-in ad formats like rewarded video that respect the user’s time and attention.Giving users choice, and the ability to impact the ad they are watching, makes a huge difference in terms of brand recall, user engagement and enjoyment.]]></description><link>https://unity.com/blog/non-gaming-apps-playable-ads</link><guid isPermaLink="true">https://unity.com/blog/non-gaming-apps-playable-ads</guid><pubDate>Sun, 25 Jun 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[What are interactive ads?]]></title><description><![CDATA[As smartphone capabilities have evolved, it’s become possible to support the richness of interactive ad experiences on mobile - and the format is fast-becoming the hottest ad unit out there.What are interactive ads?Interactive ads are digital ads designed for user interaction and they can be used on desktop, tablet and mobile.4 types of interactive adsInteractive ads let users choose or interact with the ad in some way. There are a few different kinds of interactive ads.Interactive adAn interactive ad is an ad with any kind of interactivity for the user.Example: a photo editing app that lets you sample filters or other features in the ad itself.Interactive videoAn interactive video ad is a video ad with an added layer of interactivity.Example: a 360 video that the user can control.Interactive end cardInteractive end cards add an additional layer of engagement at the end of a regular 15-30 second video ad, giving users a feel for the app’s functionalities and allowing them to interact.Example: users can select the car model they most prefer and see a spec list after watching an auto ad.Playable adPlayable ads offer users a snippet of interactive gameplay. Users are guided by hints and are able to ‘win’ or ‘lose’ in the ad. They’re completely opt-in, true to the spirit of the game and give users an immersive and enjoyable ad experience.Example: a crossword app gives users a clue and 8 letters to choose from to fill the gaps.Benefits of interactive adsThere’s a reason why advertisers are flocking to interactive ads lately. Interactive ads drive higher conversions and retention rates, increase LTV and brand awareness, and offer unique in-ad data.Higher conversionsInteractive ads see much higher conversion rates compared to normal video ads. This is because the ads are enjoyable and immersive for users - by getting users actively involved in the advertising experience, you create a much greater impact.Higher retention ratesUsers acquired through interactive ads also show higher retention - sticking around in the advertised app for longer. In interactive ads overall, retention rates can are much higher than normal video ads.Increased LTVLTV (lifetime value) is a metric you can use to define the value of users who use your app for a period of time. Interactive ads do a great job of illustrating an app’s core elements and functions before the user installs. Users who download an app after engaging with an interactive ad are already familiar with a few of the functions, so are more likely to keep engaging with the app regularly and for longer. The longer a user has a relationship with an app and can make in-app purchases or view ads, the higher the potential LTV.Increased brand awarenessCompare the experience of passively viewing an ad, versus touching and affecting the ad yourself. Interactive ads create a significantly more impactful experience that stay with users for longer. The ability for a user to choose, decide or even ‘win’ or ‘lose’ in the ad also has a positive impact on user experience, creating positive brand associations.Unique in-ad dataEven if a user doesn’t install an app after seeing an interactive ad, the advertiser is able to see their interaction path in the ad. This data is critical to improving the ad experience, or even for improving the UX in the app itself.Want to learn more about ironSource’s suite of interactive ad units? Click here. Plus learn more about the next generation of interactive ads here.]]></description><link>https://unity.com/blog/what-are-interactive-ads</link><guid isPermaLink="true">https://unity.com/blog/what-are-interactive-ads</guid><pubDate>Thu, 15 Jun 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[TextMesh Pro Joins Unity]]></title><description><![CDATA[TextMesh Pro is a replacement for Unity’s existing text components like Text Mesh and UI Text. TextMesh Pro uses Signed Distance Field (SDF) as its primary text rendering pipeline making it possible to render text cleanly at any point size and resolution. Using a set of custom shaders designed to leverage the power of SDF text rendering, TextMesh Pro makes it possible to dynamically change the visual appearance of the text by simply changing material properties to add visual styles such as dilation, outline, soft shadow, beveling, textures, glow, etc. and to save and recall these visual styles by creating/using material presets.TextMesh Pro provides improved control over text layout and formatting giving users control over character, word, line and paragraph spacing, support for kerning and basic hyphenation, additional text alignment modes like Justified and Flush text, over 30 Rich Text Tags are available giving users control over margins, indentation, user definable styles, links and even support for using multiple fonts and graphics inline with the text.Optimized for both mobile and PC, head to the Asset Store today to download the new, freely available version of TextMesh Pro today (Unity 5.3 or higher required, Unity 5.6 compatible release coming soon).We have already started work to integrate TextMesh Pro’s functionality into Unity 2017, and will continue to support the asset with periodic updates to functionality and compatibility to ensure a seamless experience for TextMesh Pro users.]]></description><link>https://unity.com/blog/games/textmesh-pro-joins-unity</link><guid isPermaLink="true">https://unity.com/blog/games/textmesh-pro-joins-unity</guid><pubDate>Mon, 20 Mar 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mr Carton - The world's first cartoon series MadeWithUnity]]></title><description><![CDATA[My name is Mathieu Muller and I am a Field Engineer in EMEA and a film specialist at Unity. Last November, during Unite Los Angeles, I organized a panel called “Unity For film”, presenting various usage of Unity in the cinematic industry (The Gift by Marza Animation Planet, Disney’s Jungle Book Previz, the Adam short by Unity, the short Sonder by Soba Productions, on set video playback for the movie Passengers and the animated series Mr Carton by Tant Mieux Productions) together with some of the people who worked on these projects.This week, Mr. Carton, the first cartoon series produced for television #MadeWithUnity is launching on the national french TV website.Today, Michaël Bolufer, the creator, designer, co-director, co-scenarist, main lighter, and fireman animator of the 13 episodes of the two minute series, is my guest to talk about this production.- What is the story of Mr. Carton?Mr.Carton is a clumsy driver who wants to reach a lighthouse on the top of a mountain. That’s the plot! But every single vehicle, every little rock could be a danger.Above all, the greatest danger is himself: He has poor driving skills, as if he was not supposed to be there...- Michaël, are you from the game industry or the movie industry?I started 15 years ago in a video game company (Etranges Libellules in Lyon) as graphics artist, then game/level designer, and cinematic designer. After 4 years in the game industry I wanted to go further, and moved to the cinematic industry as a CG artist and art director. Being from the games industry helped me a lot in the CG industry in regards to being efficient and knowing about the machine constraints. Now I am playing ping pong between the two industries, working as a contractor or on my own productions of both games and animated series.- What game engines did you use?I was using an in-house engine when working at Etranges Libellules, which was really great for what we were doing, especially the camera system. I used Epic UDK for six months, making a fighting system for a game. I discovered Unity 4 in 2013 at Artefacts studio in Lyon working as a contractor on a racing game, and making side projects. This is when I started to test my ideas about realtime animation.- How did you come up with the concept? Did you want to use a realtime engine and created Mr Carton, or the other way around?In 2008, I won a prize at the Annecy animation festival with the scenario of a short film about the game industry, and that would have been made with a game engine. The aesthetic of Feist was the revelation that a game engine could visually generate something so singular and attractive that it could be used for an animated film. This short never happened, but the idea of making a film with a real-time engine was planted forever. The worm was in the apple, as we say in French…In 2012, I was making a lot of commercials which was very lucrative but boring, and I had a paper under my keyboard accumulating ideas for a story taking place in a cardboard world.Then I did the first “Teaser” of Mr Carton with 3DSMax and VRay. My machine was slow, and the “worm” kept telling me that maybe using Unity would make my life better.In 2013 it all came together. I was working in parallel on the writing of Mr Carton, a racing game made with Unity at Artefacts Studios, and a small side project on Unity for my tween girls. Unity 5 was just around the corner, and the french-german TV station, Arte, asked Artefacts Studios to realise a title sequence for their children program. And we decided to make it with Unity.It went very well, and soon I was starting the production of Mr Carton using Unity. We were very lucky to have the full support of our beloved producer (Tant Mieux Prod.) in this adventure. They strongly believed in the potential of Mr.Carton and in the way we wanted to craft his universe using Unity.- Can you explain the production and the pipeline and how it differs from standard CG pipeline?Fabien Daphy co-director, Nicolas Le Nevé our chief storyboarder, and I, made the storyboard and animatics in ToonBoom. The storyboard is a key element to communicate with the production and the rest of the team all along the project. I made the first 3D models, rigs and animations in 3DSMax, and they were reworked, finalised and cleaned up by our 3D supervisor Olivier Roos using the same tools. Everything was exported to Unity through FBX.Four animators (Raphaël Gauthey, Christophe Devaux, Samuel Chauvin and Fabien Bougas) and Benedicte Peyrusse, the animation supervisor, produced most of the animations over a period of about 2 months. We started with the principle of having all animations made in 3DSMax, including retakes. However we ended up doing more and more of the retakes directly in Unity’s animation window, because it was the best place to adjust things in the context of the shot (camera, lighting,...).We soon had to hire an extra modeler (François Beudin) for a few months, because we ended up reusing less models than planned. Especially, developing the model with cardboard edges was very time consuming.Fabien and I made the greyboxing in 3DSMax and Blender, based on the storyboard, and gave it to the animators and modelers to create what would become the prefabs of each scene. The scenery was a big object containing a bunch of individual objects already in place (mountains, roads,...) that we could adjust later in Unity. Trees, rocks, and other details were each an individual FBX and soon became prefabs that we painted in the scene directly in Unity using Quickbrush from the Asset Store.Fabien and I did all the lighting and compositing, and had in average 2 days per episode for it. We were too lazy and busy to do external compositing, so we did it all in Unity. Color grading were per episode, and depth of field, bloom, ambient occlusion were per shot.Where the workflow gets really different from standard offline pipeline (long CG rendering, compositing) is sequencing. We used Flux from the Asset Store to do all the sequencing of each episode directly in the Editor. We chose Flux because it was frame based and allowed a precise sequencing of animations at 24 frames per seconds. Nuno Afonso, the creator of Flux, was very reactive to implement features and fix bugs all along the production.Each animation was provided with an extra margin around what was required in the storyboard, and we assembled animations, models, cameras, lighting, and compositing all together in the sequencer. The sequencer is where a big boost, time and creative wise, is happening in a realtime animation production pipeline.Finally we exported the sequence to a video (via a custom script exporting PNG sequences) and did the final cut in Adobe Premiere. Each shot in the sequence was a bit longer than planned in the storyboard to allow the final cut to be made externally. It also allowed to cover precomputed real-time GI “pumping” that we experienced sometimes when transitioning in one frame between two distant locations.Finally, all the music and sounds (made exclusively by mouth) were done live on top the animatic.- How did you do the lighting?We used Deferred (allows many realtime lights) and Linear (more realistic lighting) rendering. I generated a second set of UVs to use with the precomputed realtime GI in Unity for each object of the scenery. I did not use the automatic generation of UVs inside of Unity in order to keep a strong control over it. We had mainly one light doing indirect lighting, and the rest with direct lighting only. In some shots we used up to 40 lights. On some occasions we used extra indirect lights (eg: the UFO blue light bounced, and the red light lighting on the road was direct only).We used a lot of projectors with cookies (more than 40, all hand made!) to have precise control over the lighting, and give life to the light. On some episodes we used volumetric lighting like in the image above for the lights of the car and the laser of the UFO.For shadows, I used real-time shadows, mostly on the directional light and sometimes on a few extra lights. I also tweaked the quality settings per shot to get various aspects of the shadows. On top of this, I used two kinds of screen space ambient occlusions with different radius and intensities for extra shadowing (SSAO Pro and Unity free Cinematic effects pack from the Asset store). We did not use the latest Unity post processing stack because we locked our version of Unity before it became available.These are a few examples among many. There is no recipe in lighting, only methods and tricks. The story is the one telling the lighting, and we used many different tricks on each episode.- Did you have issues with aliasing?To have the stop motion effect, we wanted to shoot at 12 frames per seconds. Animations could be created at 12 or 24 frames per second, but we only took even frames when exporting to video at 24 FPS. All this to say that we did not want any kind of motion blur effect! This discarded temporal anti-aliasing. So in the end we only used SMAA (Subpixel Morphological Anti Aliasing). We have some shots where anti-aliasing could have been improved, but we were generally satisfied with what we had and did not have time to work on it more.- This cardboard looks great! How did you do it?We used real photos of cardboard that we worked and cleaned up in the classic gaming tradition style, to tile and render nicely. On the entire seasons we use about 10 textures for it. We had about six shaders made in Shader Forge depending on the complexity of the characters, managing different normal and occlusion maps, plus the pen markings on top.- Now the production is finished, would you say it was worth using a realtime engine compared to more “traditional” methods?We probably could have never finished on this time and on this budget with an offline process. But actually the question never came out, because we wanted to do it this way anyway and everything went quite as planned. The worm in the apple was right!- What would be your advice to someone who wants to start his own film with Unity?Don’t try to redo what you can do now with offline. Build a good vision in the technical art direction, take the technical constraints as an art choice, and the art choice as constraints. It is consequently necessary to get some knowledge about how real-time rendering and engines work. And then, have fun with the creative freedom you will get!]]></description><link>https://unity.com/blog/technology/mr-carton-the-worlds-first-cartoon-series-madewithunity</link><guid isPermaLink="true">https://unity.com/blog/technology/mr-carton-the-worlds-first-cartoon-series-madewithunity</guid><pubDate>Thu, 23 Feb 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Top tips and strategies for improving mobile app retention]]></title><description><![CDATA[This article originally appeared on App Annie. Adam Ben David is the Vice President of the Supply Side Platform at ironSource.Understanding your mobile app retention strategy can provide you with insight as to why some users drop off and don’t return, and what publishers can do to fix that.One of the best strategies to convince app users to stay for the long term is to reward them with in-app currency, says Adam Ben-David, vice president of supply-side-platform Developer Solutions at ironSource. Rewarded ads have worked time and time again.App Annie sat down with Ben-David to talk about user retention, mobile app retention strategies, ad monetization and the morphing definition of a “loyal” user.App Annie (AA): What is one thing an app developer can do to help improve retention?Adam Ben David (ABD): Typically, users drop off because they can’t advance without in-app currency. Rewarded ads let them stick around longer. These are user-initiated ad units that allow users to earn in-app bonuses in exchange for viewing advertising content.As users get deeper into the game or app, they become progressively more addicted to it. Rewarded video watchers who weren’t initially prepared to make an in-app purchase (IAP) will often turn into paying users.AA: Let’s say a developer has determined where in their app users start dropping off. What are some common scenarios where they notice churn?ABD: Most developers see a sharp initial churn during onboarding, because the user experience is not streamlined and gripping enough. At ironSource we work with a lot of gaming apps, so we’re exposed to complex in-app economies that produce a range of drop-off points. An application that has a poor return value on its primary feedback loops (aka recursive core loops) tends to have significant drop-off, since the user won’t be engaged in the long run.AA: What kind of things can an app developer A/B test to prevent churn and increase retention?ABD: A/B testing the onboarding flow can greatly help developers see what it takes to create simple tutorials and intuitive registration features. To keep users interested, apps must demonstrate clear value in the first 30 seconds of the user journey.A/B testing your ad monetization strategy is equally important. Developers can generate significant increases in retention with rewarded video, as I already mentioned. But it takes careful iterations and tons of A/B testing to get the right reward payout, the perfect timing and the best gameplay circumstances.AA: How might app developers segment their users from a monetization perspective? What would the buckets be?ABD: The easiest place to start is segmenting according to IAP users (i.e., spenders) and free riders. Then you can push IAPs more heavily to spenders and better understand purchase motivations to convert non-IAP users. Publishers can also segment by ad unit engagement and then optimize for maximum revenue, retention and engagement.AA: For app developers, what is a “loyal” user? How do you segment them?ABD: The conventional definition for a loyal user is one that opens and engages an app at least three times. But that interpretation is perhaps a bit too liberal. There are plenty of instances where a user may open an app three times and never open it again. Categorizing this segment as a loyal audience is misleading and can inflate the loyal proportion of your app base.Loyalty as a concept differs greatly across categories. While games see very high retention, it is lower for food and beverage apps. I think a short-term user who is highly engaged for just a few days is also “loyal.” It’s still possible to monetize a short-term user, after all. By segmenting short-term users, you can adjust ad targeting and increase the rate of ads they view, for example.AA: What are some strategies you think we’ll see emerging in the next year for keeping retention high?ABD: Currently, push notifications and in-app messages are the most common app retention strategies. Publishers stick to these because they can better control the message. But only 27% of users “always” allow app notifications — so publishers are missing out on a large majority of users.I think we’re going to see ad monetization become a more popular strategy for in-app retention. Letting ads run on an app doesn’t mean less control. Publishers can still cap frequency and choose points in the app flow to run an ad, and even use personalized segmentations to do it.Since every user will come across an ad at some point in the lifecycle, we see it as a potentially more impactful user retention strategy, and a great complement to push notifications.]]></description><link>https://unity.com/blog/mobile-app-retention-best-practices</link><guid isPermaLink="true">https://unity.com/blog/mobile-app-retention-best-practices</guid><pubDate>Wed, 22 Feb 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why advertisers should be running rewarded video ads in UA campaigns]]></title><description><![CDATA[There’s a great misconception that app developers and app advertisers can’t both get their way -- publishers are worried ad campaigns will damage user experience and advertisers are looking for maximum exposure and impact. But app advertising doesn’t have to be a zero sum game. It's why more and more app advertisers are turning to rewarded video ads. Let’s learn why.What are rewarded video ads?Rewarded video ads offer users a clear value exchange -- users watch a video ad and get in-app rewards (like in-app currency, premium content, etc) in return.RV is quickly becoming one of the fastest growing ad units, and for good reason. They're completely opt-in so they don’t damage user experience; they increase user engagement (no addicted gamer will turn down free coins, I know first hand); they bring app developers more revenue; and give advertisers higher viewability rates and engaging, enjoyable ad campaigns. They're a win-win-win.For advertisers: better viewability and campaignsWhen it comes to app advertising, marketers are looking to connect with consumers in a medium where they are wired to engage and convert, but viewability remains an industry-wide problem. In fact,according to a Google study, 56.1% of all ad impressions are not seen.Fortunately, rewarded videos have just what it takes to solve advertisers’ concerns.How do rewarded video ads increase viewability?If an ad takes too long to load, users might click away. The ad was served, but no one saw it. The same can happen if users quickly scroll and swipe past it.Since rewarded video ads are user initiated, they're a guaranteed view for advertisers. In order for the ad to be served, users have to click to accept the rewarded video. This gives advertisers complete certainty that an ad was only shown to someone who chose to see it.How do rewarded video ads drive successful campaigns for advertisers?Rewarded videos are like rocket fuel for app campaigns. In contrast to other non-skippable video advertisements, which might damage user experience and upset users, users have a high incentive to watch a rewarded video. Because they’re less likely to find the advertisement intrusive, they’ll remain positive during the duration of the advertisement and respond better to messaging.In addition, marketers have the option to place a specific call to action at the end of a rewarded video ad. Offering users a “click to download” or “click to purchase” button is a great way to drive app downloads, increase sales and build on lead generation efforts.Clearly, rewarded videos offer great opportunities for advertisers. We expect this lucrative ad unit to continue gaining popularity in the coming years. Are you next?Need help setting up rewarded videos in your next ad campaign? Get in touch with us here!]]></description><link>https://unity.com/blog/rewarded-video-ads-advertisers</link><guid isPermaLink="true">https://unity.com/blog/rewarded-video-ads-advertisers</guid><pubDate>Tue, 31 Jan 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[#UnityTips: ParticleSystem Performance – Culling]]></title><description><![CDATA[Culling is only possible when a system has predictable behaviour.Turning on a single module will not only add to that module’s overhead, but may increase the overall systems impact due to switching from procedural to non-procedural mode.Changing values via script will prevent culling.Using custom culling can provide a performance benefit, but only you the developer can decide if and when it is appropriate. Take into consideration the type of effect, if the player may notice it isn’t animating when invisible, and if it is possible to predict the area it will affect?Internally, each particle system has 2 modes of operating, procedural and non-procedural.In procedural mode it is possible to know the state of a particle system for any point in time (past and future) whereas a non-procedural system is unpredictable. This means that it is possible to quickly fast forward (and rewind) a procedural system to any point in time.When a system goes out of the view of any camera, it becomes culled. When this occurs, a procedural system will halt updating. It will efficiently fast forward to the new point in time when the system becomes visible again. A non-procedural system cannot do this, it must continue updating the system even when invisible due to its unpredictable nature.For example, the following system is predictable.It’s in local space, so the movement of the particle system’s transform does not matter; the particles are not influenced by any external forces such as collisions, triggers and wind. This means we are able to calculate the total bounds that particles will exist within during the lifetime of the system (yellow box) and can safely cull the system when not visible.By changing the particle system to world space, it becomes unpredictable. When a particle is spawned it will need to sample the position of the transform at that moment. The position of the transform is unpredictable, its history and future are unknown.,Therefore, the system must continue to update itself even when invisible in order for the particles to be in the correct positions when it becomes visible again.When a particle system doesn’t support procedural mode, a small icon is displayed in the Inspector. Mousing over this icon will provide a tooltip that lists the reasons why the system no longer supports procedural mode and cannot be culled. It’s also possible to see that non-procedural mode is in use by looking at the bounding bound of the particle system, a continually changing bounds that only encapsulate the particles are a sign that procedural mode isn’t being used.The following are examples of conditions that break support for procedural mode.Module Property What breaks it? Simulation Space World space Main Gravity modifier Using curves Emission Rate over distance Any non zero value External forces enabled true Clamp velocity enabled true Rotation by speed enabled true Collision enabled true Trigger enabled true Sub Emitters enabled true Noise enabled true Trails enabled true Rotation by lifetime Angular Velocity if using a curve and the curve does not support procedural* Velocity over lifetime X, Y, Z If using a curve and the curve does not support procedural* Force over lifetime X, Y, Z If using a curve and the curve does not support procedural* Force over lifetime Randomise enabled*A curve can not support procedural mode if it has more than 8 segments. A segment is the number of keys plus an additional key if the curve does not start at 0.0 and another if does not end at 1.0.Procedural mode is based on knowing exactly how the system will behave at a specified point in time with no external influences. If a value is changed via script or in the editor during play mode then those assumptions can’t be made and procedural mode is invalidated. This means that even though a system is using all procedurally safe settings, it’s no longer possible to use procedural mode and the system will not be culled anymore.Changing a value or Emitting via script will invalidate procedural mode, which you can notice by examining the bounds of the system in the scene. If the bounds are continuously changing then the procedural mode is no longer being used.Sometimes this can be avoided by using the particle system’s built in features to change properties, instead of using a script.Calling Play on a system that has been stopped will reset the system and re-validate procedural mode.The performance difference between a procedural and a non-procedural system can be significant. This difference is most noticeable when a system is offscreen. In a scene containing 120 default systems, each simulating 1000 particles, the following performance difference is shown between local space (procedural) and world space (non-procedural). The left area shows the performance when not culled, and the right shows when culled.The following example shows a simple 2D rain effect that uses the collision module (breaking procedural mode).By using the collision module the system is now unpredictable; colliders could be moved or have their properties changed throughout the life of the system. This means that predicting where particles will be in the future is impossible, and therefore the system must continue to update whilst culled.We can see that the collision effect is localised within an area and we will not be moving the transform throughout the life; the particle system has no way to know this though.It is safe for an effect like this to not be updated whilst invisible; it could benefit from custom culling.The CullingGroup can be used to integrate into Unity’s culling system, using it we can create a culling area using bounding spheres. When the spheres go in and out of visibility a notification is sent; we can use this to pause the particle system when it is not visible and resume it when it becomes visible again. One downside is that off-screen particles will appear motionless, which can be noticeable in some effects. It's possible to hide this issue by simulating the system forward a little so as to give the illusion that the system was still active whilst not visible.using UnityEngine;

public class CustomParticleCulling : MonoBehaviour
{
    public float cullingRadius = 10;
    public ParticleSystem target;

    CullingGroup m_CullingGroup;
    Renderer[] m_ParticleRenderers;

    void OnEnable()
    {
        if(m_ParticleRenderers == null)
            m_ParticleRenderers = target.GetComponentsInChildren<Renderer>();

        if (m_CullingGroup == null)
        {
            m_CullingGroup = new CullingGroup();
            m_CullingGroup.targetCamera = Camera.main;
            m_CullingGroup.SetBoundingSpheres(new[] { new BoundingSphere(transform.position, cullingRadius) });
            m_CullingGroup.SetBoundingSphereCount(1);
            m_CullingGroup.onStateChanged += OnStateChanged;

            // We need to start in a culled state
            Cull(m_CullingGroup.IsVisible(0));
        }

        m_CullingGroup.enabled = true;
    }

    void OnDisable()
    {
        if(m_CullingGroup != null)
            m_CullingGroup.enabled = false;

        target.Play(true);
        SetRenderers(true);
    }

    void OnDestroy()
    {
        if (m_CullingGroup != null)
            m_CullingGroup.Dispose();
    }

    void OnStateChanged(CullingGroupEvent sphere)
    {
        Cull(sphere.isVisible);
    }

    void Cull(bool visible)
    {
        if(visible)
        {
            // We could simulate forward a little here to hide that the system was not updated off-screen.
            target.Play(true);
            SetRenderers(true);

        }
        else
        {
            target.Pause(true);
            SetRenderers(false);
        }
    }

    void SetRenderers(bool enable)
    {
        // We also need to disable the renderer to prevent drawing the particles, such as when occlusion occurs.
        foreach (var particleRenderer in m_ParticleRenderers)
        {
            particleRenderer.enabled = enable;
        }
    }

    void OnDrawGizmos()
    {
        if (enabled)
        {
            // Draw gizmos to show the culling sphere.
            Color col = Color.yellow;
            if (m_CullingGroup != null && !m_CullingGroup.IsVisible(0))
                col = Color.gray;

            Gizmos.color = col;
            Gizmos.DrawWireSphere(transform.position, cullingRadius);
        }
    }
}Not all effects are suited to custom culling. The system on the left is custom culled and can be seen to clearly go out of sync whilst the system on the right isn’t culled. This illustrates why non-procedural systems must be updated when not visible.]]></description><link>https://unity.com/blog/engine-platform/particlesystem-performance-culling-tips</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/particlesystem-performance-culling-tips</guid><pubDate>Tue, 20 Dec 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Just in time for the holidays: How to get the most out of currency sales]]></title><description><![CDATA[In-app promotional offers can spark positive feelings for your game and earn you extra money to boot. But how do you get the most out of such campaigns? Here’s a few best practices to follow for maximizing currency sale promotions."Q4 with its various festivities and celebrations is the perfect quarter to benefit from video ads" Jacob Krüger (Head of Marketing, Social Point)It’s important to consider the timing of when you run your sales. Timing refers to when your campaign starts and ends, but also how often you run your campaigns. You can take advantage of the highest activity days of the week by running your campaigns on the weekend, for example. But it’s important not to run the currency sales more than twice a month. Otherwise you risk lowering the perceived value of the rewards you normally offer within your game outside of your currency sales.Tis the season to play gamesIn addition to peak times like weekends, you also might want to take advantage of holiday seasons. As with the weekend, the number of Daily Active Users (DAU) increases during holidays offering you a great opportunity to double down on impressions.Plus the holidays make your campaign communications seem more relevant and natural, so there’s less chance of wearing out your welcome. You can dress your campaign up by designing themed updates around Christmas, Thanksgiving, or even Halloween, for example.“Q4 with its various festivities and celebrations is the perfect quarter to benefit from video ads,” says Jacob Krüger, Head of Marketing at Social Point, which has an estimated monthly 50M+ monthly active users (MAU).“There’s a lot of high quality inventory available, and the users appreciate the chance to earn virtual currency. This, in turn, helps to increase user engagement and revenues of our games, such as, Monster Legends, World Chef, and Dragon City,” Krüger says.On Social Point’s Dragon Land Facebook community, some players even excitedly discuss upcoming campaigns and wonder when they’ll be able to earn more valuable game gems. “Maybe for Christmas, they will add more than one campaign!!!” one player commented.In order to make sure your players embrace your rewarded video ads, it’s important that you offer them clear incentives for watching. Players need to feel that the reward is worth the time they spend on the video ad. And during a currency sale, it has to be really obvious that the value they derive is even greater.How do rewards become a cool part of your game?More spins, bigger perks, double currency, the nature of the rewards depends on the given title. But the important thing is that they’re designed to feel like a natural part of the game, and that players perceive them as adding value to their experience.A good example of this is the way the studio Seriously integrates ads seamlessly into gameplay, offering players rewards that help them succeed in their challenging and addictive match 3 game. Seriously designs the rewards to fit right in with the wacky, cartoon-like fun style of their Best Fiend’s game. At the same time, the rewards themselves help players succeed in the challenging and addictive match 3 game.In order to get the most out of your holiday campaign, it’s important ramp up expectations by letting your players know it’s coming. You could inform players of an upcoming campaign via push notifications or some sort of in-game message: a timer counting down to when the currency sale goes live, for example.How Futureplay give players the scoopFutureplay designed a special communication feature in their Build Away! game, which informs players of upcoming events in their city-building game. A built-in newspaper feature tells players about rewarded video sales on the way.After their recent currency sale went live, ad impressions increased by 50% during the events and stabilized at a higher baseline. “We saw a 20% increase in Average Revenue Per Daily Active Users (ARPDAU) and a 10% boost in players’ Lifetime Value (LTV),” said Camilo Fitzgerald, Analyst and Product Manager, Futureplay.“What’s more, player retention and average time spent playing per day increased from 7 minutes to 8.5 minutes, and player feedback has been overwhelmingly positive on the new feature.”Will you be running a virtual currency sale this holiday season?If so, remember to time the start and end dates during peak periods, offer a clear exchange of value, and build anticipation by letting your players know it’s coming. To learn exactly how one developer ran currency sales, check out how Futureplay did it.]]></description><link>https://unity.com/blog/games/just-in-time-for-the-holidays-how-to-get-the-most-out-of-currency-sales</link><guid isPermaLink="true">https://unity.com/blog/games/just-in-time-for-the-holidays-how-to-get-the-most-out-of-currency-sales</guid><pubDate>Wed, 07 Dec 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Free VFX image sequences and flipbooks]]></title><description><![CDATA[It is not so common to have either resources or budget to author smoke, fire and explosion flipbooks in video game industry. Here are some image sequences we want to share with you under CC0 license. Feel free to use them in your projects!At Unity Labs Paris, we are working on Real Time VFX R&D tools and as such we authored over the time some sequences using Houdini to try out our tools.
Today, we release some of these sequences under CC0 license so you can use them in your projects.These sequences comes in various flavors: either as raw frames sequences you can import and assemble into flipbooks using our experimental VFX Toolbox Image Sequencer*, or already assembled flipbook texture sheets (done by us using this same tool).
Image sequences are available in zip packages of two flavors, either as HDR Linear EXR* or as Uncompressed TGA*Please note that EXR support and the Image Sequencer are compatible with Unity 5.5 and newerCandleSmoke01Flipbooks EXR Sequence TGA SequenceCloud01Flipbooks EXR Sequence TGA SequenceCloud02Flipbooks EXR Sequence TGA SequenceCloud03Flipbooks EXR Sequence TGA SequenceCloud04Flipbooks EXR Sequence TGA SequenceDiscSmoke01Flipbooks EXR Sequence TGA SequenceExplosion00Flipbooks EXR Sequence TGA SequenceExplosion01Flipbooks EXR Sequence TGA SequenceExplosion01-lightFlipbooks EXR Sequence TGA SequenceExplosion01-light-nofireFlipbooks EXR Sequence TGA SequenceExplosion01-nofireFlipbooks EXR Sequence TGA SequenceExplosion02Flipbooks EXR Sequence TGA SequenceExplosion02HDFlipbooks EXR Sequence TGA SequenceFireBall01Flipbooks EXR Sequence TGA SequenceFireBall02Flipbooks EXR Sequence TGA SequenceFireBall03Flipbooks EXR Sequence TGA SequenceFireBall04Flipbooks EXR Sequence TGA SequenceFlame02Flipbooks EXR Sequence TGA SequenceFlame02-temperatureFlipbooks EXR Sequence TGA SequenceFlame03Flipbooks EXR Sequence TGA SequenceFlame03-hollowFlipbooks EXR Sequence TGA SequenceSmallFlame01-mini-temperatureFlipbooks EXR Sequence TGA SequenceSmallFlame01-smaller-temperatureFlipbooks EXR Sequence TGA SequenceSmallFlame01-temperatureFlipbooks EXR Sequence TGA SequenceWispySmoke01Flipbooks EXR Sequence TGA SequenceWispySmoke02Flipbooks EXR Sequence TGA SequenceWispySmoke03Flipbooks EXR Sequence TGA SequenceWispySmoke03bFlipbooks EXR Sequence TGA Sequence]]></description><link>https://unity.com/blog/engine-platform/free-vfx-image-sequences-flipbooks</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/free-vfx-image-sequences-flipbooks</guid><pubDate>Mon, 28 Nov 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Understanding memory in Unity WebGL]]></title><description><![CDATA[Some users are already familiar with platforms where memory is limited. For others, coming from desktop or the WebPlayer, this has never been an issue until now.Targeting console platforms is relatively easy in this respect, since you know exactly how much memory is available. That allows you to budget your memory and your content is guaranteed to run. On mobile platforms things are a bit more complicated because of the many different devices out there, but at least you can choose the lowest specs and decide to blacklist lower-end devices at the marketplace level.On the Web, you simply can’t. Ideally, all end-users had 64-bit browsers and tons of memory but that’s far from reality. On top of that, there is no way to know the specs of the hardware your content is running on. You know the OS, Browser and not much more. Lastly, the end-user might be running your WebGL content as well as other web pages. That’s why this is a tough problem.Here is an overview of memory when running Unity WebGL content in the browser:This image shows that on top of the Unity Heap, Unity WebGL content will require additional allocations in browser's memory. That's really important to understand, so that you can optimize your project and therefore minimize users drop-off rate.As you can see from the image, there are several groups of allocations: DOM, Unity Heap, Asset Data and Code which will be persistent in memory once the web page is loaded. Other ones, like Asset Bundles, WebAudio and Memory FS will vary depending on what's happening in your content (e.g.: asset bundle download, audio playback, etc.).At loading-time, there are also several browser’s temporary allocations during asm.js parsing and compilation that sometimes cause out-of-memory problems to some users on 32-bit browsers.In general, the Unity Heap is the memory containing all Unity-specific game objects, components, textures, shaders, etc.On WebGL, the size of the Unity heap needs to be known in advance so that the browser can allocate space for it and once allocated, the buffer cannot shrink or grow.The code responsible for allocating the Unity Heap is the following:buffer = new ArrayBuffer(TOTAL_MEMORY);

This code can be found in the generated build.js, and will be executed by the browser’s JS VM.TOTAL_MEMORY is defined by WebGL Memory Size in the Player Settings. The default value is 256mb, but that’s just an arbitrary value we chose. In fact an empty project works with just 16mb.However, real-world content will likely need more, something like 256 or 386mb in most cases. Keep in mind that the more memory is needed, the fewer end-users will be able to run it.Before the code can be executed, it needs to be:downloaded.copied into a text blob.compiled.Take into consideration that, each of these steps will require a chunk of memory:The download buffer is temporary, but the source and the compiled code ones are persistent in memory.The size of the downloaded buffer and the source code are both the size of the uncompressed js generated by Unity. To estimate how much memory will be needed for them: make a release buildrename jsgz and datagz to *.gz and unpack them with a compression tooltheir uncompressed size will also be their size in browser’s memory.The size of the compiled code depends on the browser.An easy optimization is to enable Strip Engine Code so that your build will not include native engine code that you don’t need (e.g.: 2d physics module will be stripped if you don’t need it). Note: Note: Managed code is always stripped.Keep in mind that Exceptions support and third party plugins are going to contribute to your code size. Having said that, we have seen users that need to ship their titles with null checks and array bounds checks but don't want to incur in the memory (and performance) overhead of full exception support. To do that, you can pass --emit-null-checks and --enable-array-bounds-check to il2cpp, for instance via editor script:PlayerSettings.SetPropertyString("additionalIl2CppArgs", "--emit-null-checks --enable-array-bounds-check");

Finally, remember that Development builds will produce larger code because it is not minified, though that's not a concern since you are only going to ship release builds to the end user... right? ;-)On other platforms, an application can simply access files on the permanent storage (hard-drive, flash memory, etc...). On the web this is not possible since there is no access to a real file system. Therefore, once Unity WebGL data (.data file) is downloaded, it is then stored in memory. The downside is that it will require additional memory compared to other platforms (as of 5.3, the .data file is stored in memory lz4-compressed). For instance, here is what the profiler tells me about a project that generates a ~40mb data file (with 256mb Unity Heap):What’s in the .data file ? It's a collection of files that unity generates: data.unity3d (all scenes, their dependent assets and everything in the Resources folder), unity_default_resources and a few smaller files needed by the engine.To know the exact total size of the assets, have a look at data.unity3d in Temp\StagingArea\Data after you built for WebGL (remember the Temp folder will be deleted when Unity editor is closed). Alternatively, you can look at the offsets passed to the DataRequest in UnityLoader.js:new DataRequest(0, 39065934, 0, 0).open('GET', '/data.unity3d');

(this code might change depending on the Unity version - this is from 5.4)Although there is no real file system, as we mentioned earlier, your Unity WebGL content can still read/write files. The main difference compared to other platforms is that any file I/O operation will actually read/write in memory. What's important to know is that this memory file system does not live in the Unity Heap, therefore, it will require additional memory. For instance, let's say I write an array out to file:var buffer = new byte [10*1014*1024];

File.WriteAllBytes(Application.temporaryCachePath + "/buffer.bytes", buffer);The file will be written to memory, which can also be seen in the browser's profiler:Note that Unity Heap size is 256mb.Similarly, since Unity's caching system depends on the file system, the whole cache storage is backed in memory. What does that mean? It means that things like PlayerPrefs and cached Asset Bundles will also be persistent in memory, outside of the Unity Heap.One of the most important best practices to reduce memory consumption on webgl, is to use Asset Bundles (If you are not familiar with them, you can check the manual or this tutorial to get started). However, depending on how they are used, there can be a significant impact on memory consumption (inside the Unity Heap and outside as well) that will potentially make your content not work on 32-bit browsers.Now that you know you really need to use asset bundles, what do you do? Dump all your assets into a single asset bundle?NO! Even though that would reduce pressure at web-page loading time, you will still need to download (a potentially very big) asset bundle causing a memory spike. Let’s look at memory before the AB is downloaded:As you can see, 256mb are allocated for the Unity Heap. And this is after downloading an asset bundle without caching:What you see now is an additional buffer, approximately of the same size of the bundle on disk (~65mb), which was allocate by XHR. This is just a temporary buffer but it will cause a memory spike for several frames until it’s garbage collected.What to do then to minimize memory spikes? create one asset bundle for each asset? Although it’s an interesting idea, it’s not very practical.The bottom line is that there is no general rule and you really need to do what makes more sense for your project.Finally, remember to unload the asset bundle via AssetBundle.Unload when you are done with it.Asset Bundle caching works like it does on other platforms, you just need to use WWW.LoadFromCacheOrDownload. There is one pretty significant difference though, which is memory consumption. On Unity WebGL, AB caching relies on IndexedDB for storing data persistently, the problem is that the entries in the DB also exist in memory file system.Let’s look at a memory capture before downloading an asset bundle using LoadFromCacheOrDownload:As you can see, 512mb are used for the Unity Heap and ~4mb for other allocations. This is after loading the bundle:The additional required memory jumped to ~167mb. That’s additional memory we need for this asset bundle (~64mb compressed bundle). And this is after js vm garbage collection:It’s a bit better, but ~85MB are still required: most of it is used to cache the asset bundle in memory file system. That’s memory you are not going to get back, not even after unloading the bundle. It's also important to remember that when the user opens your content in the browser a second time, that chunk of memory is allocated right away, even before loading the bundle.For reference, this is a memory snapshot from Chrome:Similarly, there is another caching-related temporary allocation outside of the Unity Heap, that is needed by our asset bundle system. The bad news is that we recently found it is much larger than intended. The good news though, is that this is fixed in the upcoming Unity 5.5 Beta 4, 5.3.6 Patch 6 and 5.4.1 Patch 2.For older versions of Unity, in case your Unity WebGL content is already live or close to release and you don’t want to upgrade your project, a quick workaround to set the following property via editor script:PlayerSettings.SetPropertyString("emscriptenArgs", " -s MEMFS_APPEND_TO_TYPED_ARRAYS=1", BuildTargetGroup.WebGL);

A longer term solution to minimize asset bundle caching memory overhead is to use WWW Constructor instead of LoadFromCacheOrDownload() or use UnityWebRequest.GetAssetBundle() with no hash/version parameter if you are using the new UnityWebRequest API.Then use an alternative caching mechanism at the XMLHttpRequest-level, that stores the downloaded file directly into indexedDB, bypassing the memory file system. This is exactly what we have developed recently and it is available on the asset store. Feel free to use it in your projects and customize it if you need to.In 5.3 and 5.4, both LZMA and LZ4 compressions are supported. However, even though using LZMA (default) results in smaller download size compared to LZ4/Uncompressed, it has a couple of downsides on WebGL: it causes noticeable execution stalls and it requires more memory. Therefore, we strongly recommend to use LZ4 or no compression at all (as a matter of fact, LZMA asset bundle compression will not be available for WebGL as of Unity 5.5), and to compensate for the larger download size compared to lzma, you may want to gzip/brotli your asset bundles and configure your server accordingly.See the manual for more information about asset bundle compression.Audio on Unity WebGL is implemented differently. What does that mean for memory?Unity will create specific AudioBuffer’s objects in JavaScript land, so that they can be played via WebAudio.Since WebAudio buffers live outside the Unity Heap and therefore cannot be tracked by the Unity profiler, you need to inspect memory with browser-specific tools to see how much memory is used for audio. Here’s an example (using Firefox about:memory page):Take into consideration that these Audio Buffers hold uncompressed data, which might not be ideal for large audio clip assets (e.g.: background music). For those, you may want to consider writing your own js plugin so that you can use <audio> tags instead. This way audio files remain compressed, therefore use less memory.Here is a summary:Reduce the size of the Unity Heap: Reduce your code size:   Reduce your Data size:  Yes, the best strategy would be to use the memory profiler and analyse how much memory your content actually requires, then change WebGL Memory Size accordingly.Let's take an empty project as an example. The Memory Profiler tells me that "Total Used" amounts to just over 16MB (this value might differ between releases of Unity): that means I must set WebGL Memory Size to something bigger than that. Obviously, "Total Used" will be different based on your content.However, if for some reason you cannot use the Profiler, you could simply keep reducing the WebGL Memory Size value until you find the minimum amount of memory required to run your content.It’s also important to note that any value that is not a multiple of 16 will be automatically rounded (at run-time) to the next multiple as this is an Emscripten requirement.WebGL Memory Size (mb) setting will determine the value of TOTAL_MEMORY (bytes) in the generated html:So, to iterate on the size of the heap without re-building the project, it is recommended to modify the html. Then, once you found a value you are happy with, you can change the WebGL Memory Size in the Unity project.Thankfully this is not the only way and the next blog post on the Unity heap will try to provide a better answer to this question.Finally, remember that Unity’s profiler will use some memory from the allocated Heap, so you might need to increase WebGL Memory Size when profiling.It depends on whether it’s Unity running out of memory or the browser. The error message will indicate what the problem is and how to solve it: "If you are the developer of this content, try allocating more/less memory to your WebGL build in the WebGL player settings." Then you can adjust the WebGL Memory Size setting accordingly. However, there’s more you can do to solve the OOM. If you get this error message:In addition to what the message says, you can also try to reduce the size of code and/or data. That’s because when the browser loads the web page, it will try to find free memory for several things, most importantly: code, data, unity heap and compiled asm.js. They can be quite large, especially Data and Unity heap memory, which can be a problem for 32-bit browsers.In some instances, even though there is enough free memory, the browser will still fail because the memory is fragmented. That’s why, sometimes, your content might succeed to load after you restart the browser.The other scenario, when Unity runs out-of-memory, will prompt a message like:In this case you need to optimize your Unity project.To analyze browser’s memory used by your content, you can use Firefox Memory Tool or Chrome Heap snapshot. Though, be aware that they will not show you WebAudio memory, for that you can use about:memory page in Firefox: take a snapshot, then search for “webaudio”. If you need to profile memory via JavaScript, try window.performance.memory (Chrome-only).To measure memory usage inside the Unity Heap, use the Unity Profiler. Though, be aware that you might need to increase WebGL Memory Size, in order to be able to use the profiler.In addition, there is a new tool we have been working on that allows you to analyze what’s in your build: To use it, make a WebGL build, then visit https://files.unity3d.com/build-report/. Although this is available as of Unity 5.4, note that this functionality is a work-in-progress and subject to change or being removed at any time. But we are making it available for testing purposes for now.16 is the minimum. The maximum is 2032, however, we generally advise to stay below 512.This is a technical limitation: 2048 MB (or more) will overflow the 32-bit signed integer size of the TypeArray used to implement the Unity heap in JavaScript.We have been considering using the ALLOW_MEMORY_GROWTH emscripten flag to allow the Heap to be resized, but so far decided not to because doing so would disable some optimizations in Chrome. We have yet to do some real benchmarking on this impact of this. We expect that using this might actually make memory issues worse. If you have reached a point where the Unity Heap is too small to fit all the required memory, and it needs to grow, then the browser would have to allocate a bigger heap, copy everything over from the old heap, and then deallocate the old heap. By doing so, it needs memory for both the new and the old heap at the same time (until it finished copying), thus requiring more total memory. So the memory usage would be higher than when using a predetermined fixed memory size.32-bit browsers will run into the same memory limitations regardless of whether the OS is 64 or 32-bit.The final recommendation is to profile your Unity WebGL content using browser-specific tools as well, because as we described there are allocations outside of the Unity Heap that Unity's profiler cannot track.Hopefully, some of this information will be useful to you. If you have further questions, please don’t hesitate to ask them here or in the WebGL forum.Update:We talked about memory used for code and we mentioned that the source JS code is copied into a temporary text blob. What we discovered is that the blob was not properly deallocated so effectively it was a permanent allocation in browser memory. In about:memory, it’s labelled as memory-file-data:Its size is dependent on the code size and for complex projects can easily be 32 or 64mb. Thankfully, this has been fixed in 5.3.6 Patch 8, 5.4.2 Patch 1 and 5.5.In terms of Audio, we know that memory consumption is still a problem: Audio streaming is not currently supported and audio assets are currently kept in Browser memory as uncompressed. So we suggested to use <audio> tag to playback large audio files. For this purpose we recently published a new Asset Store package to help you minimize memory consumption by streaming audio sources. Check it out!]]></description><link>https://unity.com/blog/engine-platform/understanding-memory-in-unity-webgl</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/understanding-memory-in-unity-webgl</guid><pubDate>Tue, 20 Sep 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[How offerwall makes high-engagement ads cost effective]]></title><description><![CDATA[It’s notoriously difficult to balance quality and scale in user acquisition campaigns, since increasing scale can mean risking quality. The key to minimizing this risk is to buy app advertising inventory according to different pricing models, such as CPE.What is cost per engagement (CPE)?CPE, or cost-per-engagement, is a pricing model used in mobile campaigns in which advertisers choose a post-install event to measure and only pay for the users who engage in that specific app event. In these sorts of campaigns, advertisers can set the event to whatever they’d like, such as: completing registration for an app, or reaching Level 2 in a game.The trick is to ensure you use your app analytics to set the engagement at a point where users will have become hooked on your app. If the user doesn’t complete the post-install event that your analytics say will guarantee you a certain LTV, the advertiser simply doesn’t pay. This means that positive ROI is almost assured.With CPE, performance advertisers only need to shell out for users that they deem are “high quality.” After all, a user who took the time to complete a registration or get to a certain level is more likely to have a higher LTV than a user who tapped ‘install’ and never looked back.The problem is scale. In contrast to CPE, rewarded CPI campaigns (using an offerwall ad unit, for example) are often used by advertisers looking to get as many installs as possible. In instances like this, advertisers are satisfied with getting lots of (possibly low quality) installs as long as the rush of installs pushes their app to Number 1. These batch users are low quality because advertisers typically set the threshold to be acquired very low - just a quick tap to install. (Aaddicted gamers might install any app presented to them as long as it got them those extra few coins. More on this later.)CPE, on the other hand, prioritizes quality - sometimes at the expense of scale. Since the threshold for payment is higher (ie, getting to Level 2), only some will pass through.To pick up the slack, it’s best to combine the CPE pricing model with an ad unit that is known more for its ability to acquire users at scale, such as an offerwall.What are offerwall ads?An offerwall is a type of app advertisement that gives users in-app rewards or incentives in exchange for completing an action, such as installing an app listed on the ‘wall’. It is user-initiated, meaning users tap on a button to view the offerwall and choose whether or not they want to engage with it.Because installs from offerwalls are rewarded, the acquired users run the risk of being low in quality. But this can actually be used to an app marketer’s advantage, since it means offerwall inventory is more competitively priced than inventory of other ad units. The goal with rewarded ad units like offerwall is to find the right price for those lower quality users to make the campaign sustainable. Offerwalls can be an ideal fit for advertisers looking for cost-effective scale.Combining CPE and offerwalls to your advantageSince CPE is high-quality and low-scale and offerwalls are often low-quality and high-scale, buying offerwall inventory on a CPE basis is like putting two pieces of a puzzle together, it just fits. Together, you have a combination that drives high-quality, high-scale campaigns - which critically, are cost effective.The biggest benefit of CPE is that it pushes users to “try” the product that’s being advertised. Because organic discovery is so difficult, users who wouldn’t have otherwise come across the app on the App Store might not have known there was an app out there that they either or enjoyed or needed.For example, let’s say you purchase offerwall inventory and set the engagement event to “users who reach Level 2.” Since it’s rewarded, you’re likely to see a large sum of app installs. But since it’s CPE, you’re not paying for everyone who taps “install” -- just the users who first install your app from the offerwall and then continue playing long enough to reach Level 2.How to set your CPE engagement eventIt’s recommended that advertisers set the engagement event to an event that happens just before the “tipping point.” The tipping point is the point in the game that is most likely to bring about payout, scale, and engagement. In other words, it’s the point in the app in which users begin spending enough money or watching enough ads to generate a high LTV. The ratio between the CPE conversions and how many users reaching the tipping point should be your main optimization methodology. In this case, Level 3 is the tipping point - which is why the engagement event was Level 2.Bonus: Adding a CPA campaign objective as a failsafeYour campaign optimization should always take into account the impact rewarded ads can have on behavior. You may see a higher drop off with rewarded CPE, since users might reach the engagement event, collect their reward, and leave. Therefore, it’s wise to pair CPE with another, deeper campaign objective, like a CPA, ROAS, or a specific retention goal. If the CPE is Level 2, then set a CPA target for Level 5. The second target acts as a failsafe and will balance out the low quality users that only completed the initial engagement event because it was rewarded.If after calculating their LTV at various stages throughout the game, advertisers see that users who reach Level 5 will go on to generate $40, then paying $30 for that user in a CPA campaign is worth it. In the end, they’re guaranteed a $10 profit. The next step is to set the CPE to Level 2, while you’re optimizing towards a $30 eCPA for Level 5.Advertisers must be strategic when it comes to managing their user acquisition campaigns. It’s important to carefully consider which ad units match with which pricing models - offerwalls and CPE is just one of many successful marriages. If advertisers continue thinking prudently, they’ll never have to make the Sophie’s choice between quality and scale again.Click here to learn how ironSource can help you find users that matter]]></description><link>https://unity.com/blog/user-acquisition-offerwall-cpe</link><guid isPermaLink="true">https://unity.com/blog/user-acquisition-offerwall-cpe</guid><pubDate>Tue, 16 Aug 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[List View Framework]]></title><description><![CDATA[In order to implement project Carte Blanche’s card system, we developed an extensible framework for creating dynamic, scrollable lists of objects. This article discusses the structure and contents of this framework. The code and sample scenes are available as a Unity Asset Store package and a public repository for the developer community.Project Carte Blanche (PCB) is Unity Lab's research initiative on VR-in-VR authoring tools for non-technical users. As illustrated in the concept video, its user interface is based on a playing cards metaphor. Central to the design of Carte Blanche is the idea that objects and actions are represented by virtual cards which users grab and place on a virtual table. The user will physically interact with cards by using tracked motion controllers.PCB’s cards are a more complex version of conventional scrollable lists. List Views are common widgets provided in many GUI toolkits. Unity’s UI system includes several layout components and customizable controls to make dynamic lists which are scrollable and have hover states. A GridLayout or VerticalLayout will get most of the work done, and there’s even a handful of packages on the Asset Store just for lists. However, the existing solutions we found required the lists to be inside of a canvas and exist within the UI system. PCB requires cards to animate in and out of existence and to let the user touch them. Furthermore, performance in VR is critical. One common drawback of "classic" UI list views is that the full list is represented by scene objects which are only masked. If the list structure changes, or perhaps an item is expanded to take up more space, the system must re-evaluate all of the items in the list. We also want to avoid instantiating and destroying scene objects if possible, because this can be costly. Finally, for reusability and consistency of look and feel, we need an extensible solution that allows us to create similar behavior in other UI elements.We developed a general framework for creating list views, which serves as the foundation of PCB’s card system. Since there are also broad use-cases for such a framework, we decided to release it as an Asset Store package for the community.One goal of this framework is to follow the MVC and MVVM design patterns, decoupling the logic which displays the underlying data (the view) from the state of the data itself (the model). In any given frame, the framework should automatically handle displaying the current state of the list. This way we only need to take into account the current state of the data without worrying about how to trigger updates to the view. Likewise, we don’t need to worry about synchronization issues when user actions are performed quickly or frames are taking too long to render. As an added bonus, the CPU overhead for the list will stay relatively consistent, since it will be doing the same amount of work all the time. Performance will not degrade significantly when the list size increases or states change in unexpected ways.The idea to represent a list this way is borrowed from the Android and iOS UI frameworks. Both use slightly different implementations, but essentially take the same approach. A container element controls the position of a number of child elements, which are pooled in memory to avoid the cost of allocating and freeing them each time they are scrolled on/off screen. Separately, an interface is defined for how the view gets the information for each list item from the data source. The developer writes code for the data source and designs the list items, and the framework takes care of the rest. Both SDKs provide helpful guides on how to implement a list following the same design pattern of pooling rows and establishing an interface with a data source. iOS calls theirs a UITableView, and Android just calls it a ListView with an associated ListAdapter which talks to the data source.Both implementations set up a framework for laying out scrollable UI elements, and allow developers to define custom functions for how to define what goes on those elements based on rows in a database, lines in a text file, or any data source they desire. The view needs to know the total number of elements in the data set, as well as a method for getting the information to display such as a movie title and rating. Generally there is a default template for just displaying text, but developers can also customize the design of each list row with custom UI layouts. The framework itself takes care of allocating memory for these list rows, and re-using them after they are scrolled offscreen to display upcoming list rows. If each row is using the same template, the system should never have to allocate more than one full-screen’s worth of rows, plus one additional row if the list can scroll smoothly. That last row exists in order to display the first and last row only part-way on screen. We can think of it as having extra “bleed” space at each end of the list.The List View Framework is available as an Asset Store package, as well as an open-source git repository on Unity’s BitBucket account. We hope that this package, and others that we publish in the future, will live on to be used, improved, and re-used by the community. Feel free to fork this repository into your own project with its own fixes or enhancements. The code is released under the MIT/X11 license, which basically means that you can do whatever you want with it as long as you keep the disclaimer. In the future, we at Unity want to release more of our original content as modular open-source packages that can be valuable and improved by the community. This is the first of many modules from Project Carte Blanche which will be released in this way.The framework boils down to three C# classes: ListViewController (split in two), ListViewItem, and ListViewItemData:
The reason for splitting ListViewController in two is so that we can access properties which are not dependent on the data type without knowing what implementation of the list we are using. In this way, InputHandler scripts can scroll any kind of list, regardless of what class is actually implementing ListViewController. The framework includes a very basic implementation of ListViewController which accepts items with no data (other than a template) which can be set up in the inspector:The simplest possible list (Example 0) uses all of the base classes and just allows the user to scroll a set of objects based on template prefabs and a data array set up in the Inspector. To display meaningful data, users are expected to extend ListViewItemData and ListViewController into classes that describe their particular data, as illustrated in further examples.The ListViewInputHandler class sets up a base for scrolling or click behavior based on mouse input, for example. And of course, the ListViewScroller sub-class sets up some useful patterns for scrolling behavior. Mouse and Touch input are easy to handle at the same time, but these classes could also conceivably handle gamepad, UI, gestural input or VR devices as well. In the case of PCB , the list views in are manipulated via hand-tracked motion controllers.We hope that this article helps to explain the framework, examples, and how to get started including list views into your next project. Consult the wiki for further reading and an in-depth description of the Core Classes and Examples. Even if you don’t end up using any of this code directly, the concept of decoupling model and view code is a powerful one, and leads to more efficient code that is easy to maintain as your project grows. Game systems often benefit from stateless designs that make very few assumptions, and constantly re-evaluate as much available information as possible, within reason. Our goal was to come up with a system to create a scrollable list that is highly customizable and performs well given a potentially infinite set of data. We now have a robust toolkit of features to support asynchronous caching, non-uniform template sizes, nested data, and complex animation behavior. As should be clear by the diversity of example code, one size does not fit all, and every implementation will have its own caveats, many of which have not been covered.The intent with this package is that it becomes property of the community. It was created at Unity, but the source is publicly available on BitBucket, and we encourage users to fork the repo and share their improvements. We can’t wait to see what you come up with!We'll leave you with some eye candy:Cover image: Timoni West, Unity Labs Principal Designer.
 Article images: Dennis DeRyke, Unity Graphics Software Development Engineer in Test
 Matt Schoen & Dio Gonzalez work at Unity Labs; Schoen is a Senior Software Engineer and Dio is a VR Principal Engineer.]]></description><link>https://unity.com/blog/technology/list-view-framework</link><guid isPermaLink="true">https://unity.com/blog/technology/list-view-framework</guid><pubDate>Fri, 05 Aug 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[IL2CPP optimizations: Devirtualization]]></title><description><![CDATA[The scripting virtual machine team at Unity is always looking for ways to make your code run faster. This is the first post in a three part miniseries about a few micro-optimizations performed by the IL2CPP AOT compiler, and how you can take advantage of them. While nothing here will make code run two or three times as fast, these small optimizations can help in important parts of a game, and we hope they give you some insight into how your code is executing.There is no other way to say it, virtual method calls are always more expensive than direct method calls. We’ve been working on some performance improvements in the libil2cpp runtime library to cut back the overhead of virtual method calls (more on this in the next post), but they still require a runtime lookup of some sort. The compiler cannot know which method will be called at run time - or can it?Devirtualization is a common compiler optimization tactic which changes a virtual method call into a direct method call. A compiler might apply this tactic when it can prove exactly which actual method will be called at compile time. Unfortunately, this fact can often be difficult to prove, as the compiler does not always see the entire code base. But when it is possible, it can make virtual method calls much faster.As a young developer, I learned about virtual methods with a rather contrived animal example. This code might be familiar to you as well:Then in Unity (version 5.3.5) we can use these classes to make a small farm:Here each call to Speak is a virtual method call. Let’s see if we can convince IL2CPP to devirtualize any of these method calls to improve their performance.One of the features of IL2CPP I like is that it generates C++ code instead of assembly code. Sure, this code doesn’t look like C++ code you would write by hand, but it is much easier to understand than assembly. Let’s see the generated code for the body of that for each loop:I’ve removed a bit of the generated code to simplify things. See that ugly call to Invoke? It is going to lookup the proper virtual method in the vtable and then call it. This vtable lookup will be slower than a direct function call, but that is understandable. The Animal could be a Cow or a Pig, or some other derived type.Let’s look at the generated code for the second call to Debug.LogFormat, which is more like a direct method call:Even in this case we are still making the virtual method call! IL2CPP is pretty conservative with optimizations, preferring to ensure correctness in most cases. Since it does not do enough whole-program analysis to be sure that this can be a direct call, it opts for the safer (and slower) virtual method call.Suppose we know that there are no other types of cows on our farm, so no type will ever derive from Cow. If we make this knowledge explicit to the compiler, we can get a better result. Let’s change the class to be defined like this:The sealed keyword tells the compiler that no one can derive from Cow (sealed could also be used directly on the Speak method). Now IL2CPP will have the confidence to make a direct method call:The call to Speak here will not be unnecessarily slow, since we’ve been very explicit with the compiler and allowed it to optimize with confidence.This kind of optimization won’t make your game incredibly faster, but it is a good practice to express any assumptions you have about the code in the code, both for future human readers of that code and for compilers. If you are compiling with IL2CPP, I encourage you to peruse the generated C++ code in your project and see what else you might find!Next time we’ll discuss why virtual method calls are expensive, and what we are doing to make them faster.]]></description><link>https://unity.com/blog/engine-platform/il2cpp-optimizations-devirtualization</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/il2cpp-optimizations-devirtualization</guid><pubDate>Tue, 26 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 Key Pokemon Go Takeaways for App Developers]]></title><description><![CDATA[I’ll admit it -- I proudly collected and traded Pokemon Cards as a child, bought and played nearly every Game Boy game, slept with a Pikachu doll tucked under my arms, and watched Ash Ketchum foil Team Rocket weekly. That was 1998.But it’s 2016, and Pokemon Fever is back.In early July, Nintendo released Pokemon Go, an augmented reality mobile game that lets us nineties kids relive our childhood, allowing us to capture, battle, and train virtual Pokemon.Nintendo and Niantic, the company that developed Pokemon Go and branched off of Google, successfully created the fastest growing game to ever top mobile revenue charts, outpacing even Clash Royale. It’s become an international phenomenon in just two weeks.At ironSource, our goal is to help apps succeed. Naturally, we were curious about Pokemon Go’s success and decided to explore further, discovering some key takeaways for app developers looking to translate the success of Pokemon Go into their own applications.Going viral through IRL socialIf you’ve read any post about the secrets to going viral, you probably know that implementing social interaction functionality tops the list. Usually, this includes adding share buttons within the app so that users can easily share their actions with friends on social media -- the point being that the shares will multiply and the application will spread through social media like a ‘virus.'In the case of Pokemon Go, however, this sort of interaction through social media in-app is unavailable. (Though, it’d be great to have an in-app screen shot button that auto-posts to Facebook, for the next time you see a Pidgey squatting in your bathtub.) Rather, Niantic takes the social graph to a completely new level, that is, to the streets IRL. In some ways, this is the ultimate form of social virality -- to see someone nearby walking seemingly aimlessly with their head buried in their smartphone look up and share with you (literally) that he’s looking for an Ivysaur. In this way, Pokemon Go is able to seamlessly marry the online world with the real world and also utilize that real world to drive online virality.It doesn’t mean, however, that applications need to be augmented reality in order to experience similar real world virality. Instead, the lesson is that mobile apps must encourage conversation among users -- not instead of, but in addition to simple shares and user generated content -- in order to truly go viral. Think of the success of Yo (1.2M MAU in 2014), Venmo (179M MAU), Draw Something (24M DAU in 2012), and Words with Friends (5.6M DAU in 2011), or even the Pokemon Go chat extension called GoChat that a third-party developed. All these apps utilize cross-user engagement to increase public awareness and virality.Long sessions + timed incentives = high engagementIt’s often the case that apps that go viral have high engagement rates, but few have seen the incredible engagement rates Pokemon Go is boasting in their first week. In a study by SimilarWeb, analysts found that 60% of users who downloaded Pokemon Go in the US are using it daily. This means that as of now, there are just as many daily active users on Pokemon Go as there are on Twitter and even more than there are on Tinder.If that doesn’t impress you, perhaps this will. As of July 8, users played Pokemon Go for an average of 43 minutes per day -- an average higher than WhatsApp (30), Instagram (25), Snapchat (23), and Facebook Messenger (13).It might be easy to attribute this high engagement to the popularity of the franchise, but because all age groups are equally addicted, it seems clear that the app offers more than just nostalgia. In fact, you could argue that Pokemon Go has perfected the art of maintaining high engagement rates.Specifically, the mobile game includes four great engagement features: endless session times, lots of early rewards, various currency layers, and just enough incentive to get the user to stay in the game.The session time in Pokemon Go is essentially endless, unconstrained by lost lives or a set amount of levels. This means that unless something calls them away from their mobile device, the app is doing all it can to keep players within the game.In addition, it offers just the right amount of rewards and incentives at the most opportune times: a lot in the beginning and then less and less as users continue to play. This works to get players excited, grab their attention and get them in the door in the first instance, and then keeps them engaged throughout by building on previous rewards, such as offering power ups just in time for your Charmander to evolve. The fact that they received multiple rewards in the beginning, users will not only be itching to receive more, they’ll trust that they will since they know it’s possible.Location-based monetization is the futureIf you’ve played Pokemon Go, you know just how critical PokeSpots and Gyms are (if not, PokeSpots are where you can get free items and Gyms are where you can train and battle Pokemon). In order to use them, you have to be in close physical proximity to these specific ‘places’.Since the app’s launch, there have been dozens of articles illustrating how small businesses located near a PokeSpot or Gym have profited from the immense amount of foot traffic. Niantic, having recognized how profitable integrating the real world with the digital world is, said that they may soon be adding “sponsored locations,” where companies and brands would pay to become a PokeStop or Gym. It’s not difficult to imagine users arriving at a specific location and seeing a location-based ad pop up on their screen.The key to monetization in this case is marrying the digital and real worlds through location-driven experiences. In the coming future, apps will likely begin utilizing localized surroundings to drive revenue, much like Snapchat and their geotags.Of course, in addition to this, Pokemon Go excels because it monetizes everything. If you can’t wait and want to evolve your Pokemon ASAP, there’s an IAP for that. If you’re short on Poke Balls and can’t find any, there’s an IAP for that. In doing so, Pokemon Go ensures that no monetization opportunity falls through the cracks.It’s been a couple of weeks and Pokemon Go shows no signs of slowing down. Even if Pokemon Mania begins to wane, the key takeaways we learned from its success will continue to stand. It will be interesting to see how other apps attempt to mimic the virality, engagement, and monetization strategies of Pokemon Go in the future.]]></description><link>https://unity.com/blog/key-pokemon-go-takeaways-app-developers</link><guid isPermaLink="true">https://unity.com/blog/key-pokemon-go-takeaways-app-developers</guid><pubDate>Wed, 20 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[‘Wait, I’ve changed my mind’ – State Machine Transition interruptions]]></title><description><![CDATA[So let’s dive into some intricate details of State Machine Transitions and interruptions!By default in the animation system, transitions cannot be interrupted: once you start going from one state to the other, there’s no way out. Like a passenger on a transatlantic flight, you’re cozily nestled in your seat until you reach your destination and you can’t change your mind. For most users, this is fine.But if you need more control over transitions, Mecanim can be configured in a variety of ways to meet your needs. If you’re unhappy with your current destination, you can hop in the pilot’s seat and can change plans midway through your flight. This means more responsive animations, but also many opportunities to get lost in the complexity.So let’s walk through a few examples to sort that out. We can begin with a fairly simple state machine with four states, labeled A to D, and triggers hooked to every transition on the state machine.By default, when we trigger the A->B transition, our state machine transitions towards B and nothing can keep it from reaching its destination. But if we go on the A->B transition inspector and change the interruption source from “None” to “Current State”, our journey from A to B can be interrupted by some triggers on state A.Why only “some”? Because the “Ordered Interruption” checkbox is also checked by default. This means only transitions on state A that have a higher priority than the current one are allowed. Looking at the inspector of state A, we can see that this only applies to the A->C transition.So if we activate the A->B trigger, then shortly after the A->D trigger, our transition remains uninterrupted. However, if we press the A->C trigger instead, then the transition is immediately interrupted and the state machine starts transitioning towards C.



Internally, the animation system records the pose at the time of the interruption, and will now blend between that static pose (X) and the new destination animation. Why a static pose, instead of a possibly smoother blend between the current and new transitions? Simply put: performance. When a game faces a cascade of interruptions, keeping track of several dynamic transitions taking place simultaneously would quickly made the animation system unscalable.Now, if we uncheck that “Ordered Interruption” checkbox, then both A->C and A->D can interrupt the transition. However, if they are both triggered on the same frame, A->C will still take precedence because it has a higher priority.If we change the interruption source to “Next State”, A->C and A->D can no longer interrupt the transition, regardless of their order. However, if we press the B->D trigger, we will immediately start transitioning from A to D, without completing the transition towards B.Transition order matters on state B too. The “Ordered Interruption” checkbox is not available anymore (any triggered transition on B can interrupt the transition because they do not have a priority ranking relative to A->B), but the order of the transitions on B will determine which transition wins if both are triggered within the same frame. In this case, if B->D and B->C are triggered in the same frame, B->D will be selected.Finally, for complete control, we can set the Interruption Source to “Current State Then Next State”, or “Next State Then Current State”. In that case, the transitions will be analyzed independently on one state, then the other.So, let’s assume we have the following configuration.During the A->B transition, a very excited player triggers four transitions within the same frame: A->C, A->D, B->C and B->D. What happens?First, “Ordered Interruption” is checked, so we can ignore A->D right away: it has lower priority than A->B. The current state gets resolved first, so we do not even have to look at state B to know that transition A->C wins.]]></description><link>https://unity.com/blog/engine-platform/state-machine-transition-interruptions</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/state-machine-transition-interruptions</guid><pubDate>Wed, 13 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Adam: Production design for the real-time short film]]></title><description><![CDATA[We are launching a series of articles about the making of our latest demo, Adam. Over the course of the next several weeks, we will cover various aspects of production: concept art, assets production, in-engine setup, animation pipeline, VFX, and custom features as well as the tools we created for the project. We also plan to release various character and environment projects - basically all the material we can with no dependencies on Unity’s upcoming (but currently not publicly available) sequencer tool.In addition to publishing a series of making of blog posts, we’re working hard to prepare as much as possible from this project for release. The plan is to make our assets and custom tech available this autumn.My name is Georgi Simeonov and I was responsible for a lot of the art direction and production design on the project. I previously worked as a concept artist on games like Brink, Batman: Arkham origins, and Dirty Bomb as well as designing Volund for the Blacksmith Demo.The film is set in a future where human society is transformed by harsh biological realities and civilization has shrunk to a few scattered, encapsulated communities clinging to the memory of greatness.
Adam, as our main character, was the starting point of our visual design process. He was designed to provide a glimpse into the complex backstory of the world, by revealing himself as a human prisoner whose consciousness has been trapped in a cheap mechanical body.One of the early ideas that stuck was of that the mechanical body, while being functional, should still resemble and reference the human anatomy and organs in multiple ways, being in a way a mock écorché - a twisted stripped down copy of the real thing. This broad idea gave direction to multiple smaller details and decisions, both functional and decorative like - the cranium as a steel box reminiscent of human brain, covered by geometric machine cuts to create a pattern resembling the brain folds; the part exposed ribcage and spine - resembling a patient or a corpse awoken mid surgery/autopsy.Another key concept for the design was reducing the convicts to walking records of their crimes, manifested in the chest monitor or tablet perpetually showing their sentence. For most of the production the sentence had their original mugshot as an additional reference to their human past and to provide a stark contrast with the near blank expressionless masks. At the end having a human face on the chest proved too distracting, so we went with the simpler design.To continue the theme of a rough, inferior copy, the face was created as a Death Mask, from a hastily-scanned 3d print of the original. The concept included a mouth for quite a while, but a frozen expression, no matter if it was neutral or not, proved distracting from the eyes’ expressiveness. At the end, removing the mouth completely not only helped draw the focus to what mattered, but also helped to emphasize the convicts’ oppression.We needed the characters partially dressed in orange, a color evocative of prison uniforms. But since mechanical bodies don’t exactly need clothes, and painting them in any risked pushing them far into the realm of maintenance or utility robots, our way of hinting at clothing was through a shrink wrap package - such as could be used for mechanical elements before they are unwrapped, in a factory, mass-production setting.Our two other key characters were supposed to work as a pair from the start. We needed Sebastian to look wise and majestic but also fearsome, but in a non combative way. The Lieutenant, whom we came to call Lu, was to be his right hand, near equal, and counterpoint: the person of action and wielder of aggression when needed.Pursuing the design of the two strangers we blended eastern and western archetypal savior influences, designs that can specifically serve their function and yet convey universal ideas and narratives beyond their few minutes of screen time.Some of the main goals with Sebastian’s design were to show the two travelers an embodiment of a new culture that has developed outside, and to showcase the effort of its people to preserve their humanity and regain the ability to express their individuality.We wanted Sebastian to look ancient, possibly one of the first or even the first to be cast out. At the same time, he carries the idea of a new beginning - of rebirth and regeneration. We mixed tribal elements like the sprouting seedling symbol on his forehead and in his chest cavity with more traditional messianic features. Material-wise, we went to one of our source inspirations and made Sebastian resemble a living bronze monument.FacesSebastian and Lu’s masks/faces had to show the lengths to which some would go to reshape themselves in the pursuit of regaining and expressing their personality. We explored a carved/moulded and painted/stained look to emphasize the self-created image of the character as much as possible.It was important that Lu didn’t just come across as a subordinate - we wanted her to be more of a partner. The warrior counterpoint to Sebastian’s spiritual leadership. In contrast to Sebastian, Lu is lighter and more mobile, but still intimidating.Initially we nicknamed the guards “surgeon sentries,” reflecting the two simple ideas behind their design. The guards of The City were one of only a few chances to directly visually communicate any aspect of the civilization within the the walls. In a way, they became a human manifestation of the city and its dwindling civilization. Closed in, wrapped, sterile, purist, desperate to retain their own identity in the face of self inflicted decline.Initial Research and IdeasThe Cell provided the start of our narrative and the “birthplace” of Adam. As such, it played an important role and it naturally went through a number of iterations until we arrived at the balance of key elements we wanted.
We wanted it to be claustrophobic and in continuation of the theme of pseudo anatomy, we went for something resembling a mechanical womb with thick intestine-like pipes filling the space on all sides and compressing it even further.Finding The Shape LanguageThumbnail explorations for the wall details of the Reformation Cell. These came at a relatively late stage in the project at a point when we already had a base variant of the room in blockout, a camera and a mocap setup: we just needed to distil the shapes and elements we wanted to use.3D BlockoutMost of the actual environment design beyond the initial reference boards and thumbnail explorations was done in Maya. This allowed us to have a working version of the world in Unity, including spaces, key structures and distances at a very early stage, allowing us the freedom and flexibility to iterate with all other aspects of production. Some of the blockout meshes worked so well we ended using them in the final version of the short.Initial Research and IdeasThe Wall of the City as the primary manifestation of the setting had to express the nature of the society living behind. Medical themes and influences were also to the fore here; combining the sterile simplicity of Brutalism with the rows of indexed folders in a medical archive, thus making the wall an actual physical archive of the medical/biological memory of disappearing humanity.Finding The Shape LanguageInitial Research and Ideas
For the Broken highway or meeting point where the strangers meet Adam and the other convicts, we wanted to create the impression of a holy place: an accidental temple. We used the symmetrical shape of a broken off highway section to create our shrine-like backdrop. A strong influence here was a woodblock print by Hiroshi Yoshida (In A Temple Yard).Concept Art]]></description><link>https://unity.com/archive/blog/games/adam-production-design-for-the-real-time-short-film</link><guid isPermaLink="true">https://unity.com/archive/blog/games/adam-production-design-for-the-real-time-short-film</guid><pubDate>Thu, 07 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Evolution of our products and pricing]]></title><description><![CDATA[Firstly, our move to subscription had some of you asking why?! We’ve explained the rationale in the follow-up blog post by Joachim - Subscription! Why?. If you haven’t read it yet, check it out.Secondly, some of you raised major concerns with the new pricing:Some of you have been customers for a long time and have made use of upgrade discounts to your perpetual licenses. Those averaged to a yearly cost that was lower than the new subscription costs.If you develop for desktop only, the new all-platform cost is significantly higher than your old yearly cost.For those of you hit hard by this, we think we've found a good solution.Now, we don't want to go back to the old model of having iOS and Android be paid add-ons, while desktop is included in the base cost. This was always rather arbitrary. Developing and maintaining our desktop platforms is a real cost for us, just like for our mobile platforms, and yet mobile developers have been paying more. Now we're committed to making the price the same regardless of which platforms you target. We hope you understand and are with us in this decision.At the same time, a lot of customers are telling us that the new prices are a very good deal. Some have the privilege to even say it's too cheap, though these people, being happy with the new prices, have not been as vocal in comments and social media.The objective for us is to make everyone as happy as is possible given a rapidly growing global group of developers using Unity for many, many different things. We want paid versions of Unity to be affordable for developers big and small who want to go beyond Unity Personal, or are required to due to the revenue cap.So with this goal in mind we are going to make these changes to what we announced previously:We're making the Unity splash screen in Unity Plus optional, like it is in Unity Pro.We're raising the revenue cap in Unity Plus from $100k to $200k so that more of you are able to take advantage of it.In order to be able to do this, we removed the option to subscribe to Unity Plus without a one-year commitment. We also restricted Pay to Own to only apply to Unity Pro and not Unity Plus (see Pay to Own details further down). We let these things go from Unity Plus in order to be able to introduce the new advantages.We know this is not going to change things for all of you. If your revenue is beyond the $200k cap for Unity Plus, and you are already a Unity user, we're announcing Transition offers below. We hope though that these changes will make Unity a great choice to those of you who might otherwise have had difficulties affording it.Apart from price changes, we’re also working on some changes to the Unity splash screen.The new splash screen will read “Made with Unity” in all editions of Unity - no more mention of “Personal Edition”. You will also be able to customize it with your own (blurred) background image and your own company logo in addition to the Unity logo. This feature is coming, but give us a bit of time to perfect the technical aspects of it before we release it. The customizable splash screen will be available in all versions of Unity, but can be completely turned off in Unity Plus and Unity Pro. We’ll have a blog post with further details later.Free$100k revenue or funding capAll platformsUnity splash screen (with customization options)Personal tier servicesPay $35 per month with 12 month commitment$200k revenue or funding capAll platformsOptional Unity splash screen (with customization options)Dark Editor SkinPlus tier servicesPay $125 per month with 12 month commitmentNo revenue capAll platformsOptional Unity splash screen (with customization options)Dark Editor SkinPro tier servicesPay to OwnBoth Plus and Pro tiers can be paid monthly or upfront (for people who find that easier for budgeting or billing purposes), and require you to commit to at least 12 months of subscription. There will also be an option to commit to Pro for 24 months, for people who want long term price certainty.We will launch the new products soon, for new customers to buy. As an existing Unity 5.x perpetual license customer, you will no longer get new updates after March 2017. However, you have a few options if you want to keep getting updates:For up to five seats, you may subscribe to Unity Pro at the special price of $75 per month for a limited transition period, after which the price will revert to the normal subscription price of $125 per month:  If you make less than $200k per year, you may choose Unity Plus and pay $35 per month with an annual commitment.We will start sending out these transition offers by email after the new products have launched in our store.If you pay for 24 or more consecutive months of a new Unity Pro subscription, you get to keep and use the version you have when you notify us that you are stopping subscription and choosing pay to own. At such point, you will stop receiving access to Pro tier services, new features and upgrades. You will receive the next 3 patches. We reserve the right to grant access to additional patches in the event that we find severe bugs. If you later resume the subscription, you will still own the perpetual license you elected but again start receiving updates, fixes and services. Once you have subscribed for another 24 consecutive months, and should you then elect to cease this new subscription, you will then be granted a new perpetual license of the then current version of Unity.Thanks for taking the time to read all the detail. Please let us know your thoughts.Read the updated Unity Subscription FAQ.Talk to us about the new licensing on the forum.]]></description><link>https://unity.com/blog/news/evolution-of-our-products-and-pricing</link><guid isPermaLink="true">https://unity.com/blog/news/evolution-of-our-products-and-pricing</guid><pubDate>Thu, 16 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Serialization, MonoBehaviour constructors and Unity 5.4]]></title><description><![CDATA[The majority of the Unity API should only be called from the main thread, e.g. from Start/Update/etc on MonoBehaviour. Similarly, only a subset of the Unity API should be called from script constructors/field initializers, like Debug.Log or Mathf. As Unity will invoke constructors when creating an instance of a class during deserialization (load), which might run on a non-main thread.These requirements were not strictly enforced in versions of Unity prior to 5.4. Which could lead to crashes, race conditions and issues that were hard to diagnose and reproduce.In Unity 5.4, the new errors will in most cases not throw a managed exception and will not interrupt the execution flow of your scripts. This approach has been taken to reduce the amount of friction caused by upgrading your projects to Unity 5.4. These errors will throw a managed exception in a future release of Unity. We recommend that you fix these errors (if any) in your project when upgrading to 5.4.The new errors are documented in the “Script Serialization Errors” section on the Script Serialization page in the manual.Let’s have a look at the new serialization errors in some common scenarios and how to fix them.When Unity creates an instance of your MonoBehaviour/ScriptableObject derived class, it calls the default constructor to create the managed object. When this happens, we are not yet in the main loop and the scene has not been fully loaded yet. Field initializers are also called when calling the default constructor of a managed object. Calling the Unity API from a constructor is considered unsafe for the majority of the Unity API.Examples:public class FieldAPICallBehaviour : MonoBehaviour
{
   public GameObject foo = GameObject.Find("foo");
}public class ConstructorAPICallBehaviour : MonoBehaviour

{
   ConstructorAPICallBehaviour()

   {
       GameObject.Find("foo");
   }

}In these case we will get the the error “Find is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call in in Awake or Start instead. ...”. The fix is to put the call to the Unity API in MonoBehaviour.Start.When Unity loads a scene, it recreates the managed objects from the saved scene and populates them with the saved values (deserializing). In order to create the managed objects, the default constructor for the objects must be called. If a field referencing an object is saved (serialized) and the object default constructor calls the Unity API you will get an error when loading the scene. As in the previous error, we are not yet in the main loop and the scene is not fully loaded. This is considered unsafe for the majority of the Unity API.Example:public class SerializationAPICallBehaviour : MonoBehaviour{
   [System.Serializable]
   public class CallAPI
   {
       public CallAPI()
       {
           GameObject.Find("foo");
       }
   }

   CallAPI callAPI;
}Here we get the error “Find is not allowed to be called during serialization, call it from Awake or Start instead.” Fixing this issue requires us to refactor the code to make sure that no Unity API calls are made in any constructors for any serialized objects. If it is necessary to call the Unity API for some objects, then this must be done in the main thread from one of the MonoBehaviour callbacks, such as Start, Awake or Update.If you have any comments, questions or general feedback on these errors, you can post them here in this “Script Serialization Errors Feedback” thread on the Unity 5.4 beta forums.]]></description><link>https://unity.com/blog/technology/serialization-monobehaviour-constructors-and-unity-5-4</link><guid isPermaLink="true">https://unity.com/blog/technology/serialization-monobehaviour-constructors-and-unity-5-4</guid><pubDate>Mon, 06 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Subscription! Why?]]></title><description><![CDATA[Over the last days I’ve been reading all comments about the new products and prices, and first of all, do know that we are very carefully listening to everything, discussing a lot especially what we can do to make the subscription pricing appealing especially to Indie devs who have been using Unity Pro for the longest time.I especially care a lot about this group of developers, who effectively funded this company with us and have been with us on this journey for a very long time. So we will figure something out. Needs a bit of time but we’ll follow up soon…In the meantime I want to give a bit of background about why we are doing this subscription thing and some thoughts on what was a bit lost in the announcement so far.Why Subscription?When we started Unity, we would ship Unity every once in a while on just 2 platforms. Initially just Aras and I, gradually adding a couple engineers every few months. We’d decide on a couple major features and focus working on that for a year and a bit, go through beta and then ship it.Today Unity lets you target 28 platforms. No one targets all platforms at the same time, but the ability to choose to easily switch your game to any platform gives Unity developers incredible advantages.Each platform is supported by a team of dedicated engineers. We have teams focused on different areas of the engine, working on improving each major area all the time.We ship a patch release every week. Supported by the awesome Sustained Engineering team.We ship point releases with major new features and improvements multiple times per year.All of this is necessary because the platforms we support rapidly change. In today’s world, we can’t leave customers behind for a year because we are in the process of releasing a major version. We think it would be very bad for Unity developers if we held features for a full number release, rather than launch these features along the way, when they are ready.With this in mind, we want to be clear. There will be no major Unity 6 release.In the dev team we wanted to stop doing major releases for a long time. With the major releases model we had done up until Unity 5, it has always forced us to bundle up a bunch of features and release them in one big splash. Usually it results in that good & complete features would be artificially held back for a long time while other features are still maturing, and eventually releasing some of these features before they are ready. All in the name of creating one big splashy release that customers feel is worth upgrading to. It’s what we did because we had to in a model where we worked toward an unnatural new major release every few years. This is not some evil marketing team pushing for it, it is the inherent nature of that business model. It was always a painful process for us and you and it really serves no one.With our switch to subscription we can make Unity incrementally better, every week. When a feature is complete, we will ship it. If it is not ready we will wait for the next point release.Our switch to subscription is absolutely necessary in order for us to provide a robust and stable platform.Pay to own!Along with the new subscription model, we are introducing “pay to own”. After having paid for 24 months of subscription, you can stop paying and keep on using the version you have at that point. Of course, you would also stop getting new features, services or fixes; choice is yours.If you are upgrading from a previously bought perpetual license of Unity and you are switching to subscription after March 2017, then you get “pay to own” right away with your subscription license.
Pay to own applies to everyone; there’s no special “license option” you have to get. Simple!Thanks for listening, I hope this gives some much needed background on our switch to subscription.]]></description><link>https://unity.com/blog/subscription-why</link><guid isPermaLink="true">https://unity.com/blog/subscription-why</guid><pubDate>Sun, 05 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Debugging memory corruption: Who wrote ‘2’ into my stack?!]]></title><description><![CDATA[Several weeks ago we received a bug report from a customer that said their game was crashing when using IL2CPP scripting backend. QA verified the bug and assigned it to me for fixing. The project was quite big (although far from the largest ones); it took 40 minutes to build on my machine. The instructions on the bug report said: “Play the game for 5-10 minutes until it crashes”. Sure enough, after following instructions, I observed a crash. I fired up WinDbg ready to nail it down. Unfortunately, the stack trace was bogus:Clearly, it tried executing an invalid memory address. Although the stacktrace had been corrupted, I was hoping that only a part of the whole stack got corrupted and that I should be able to reconstruct it if I look at memory contents past the stack pointer register. Surely enough, that gave me an idea where to look next:Here’s a rough reconstructed stacktrace:Alright, so now I knew which thread was crashing: it was the IL2CPP runtime socket polling thread. Its responsibility is tell other threads when their sockets are ready to send or receive data. It goes like this: there’s a FIFO queue that socket poll requests get put in by other threads, the socket polling thread then dequeues these requests one by one, calls select() function and when select() returns a result, it queues a callback that was in the original request to the thread pool.So somebody is corrupting the stack badly. In order to narrow the search, I decided to put “stack sentinels” on most stack frames in that thread. Here’s how my stack sentinel was defined:When it’s constructed, it would fill the buffer with “0xDD”. When it’s destructed, it would check if those values did not change. This worked incredibly well: the game was no longer crashing! It was asserting instead:Somebody had been touching my sentinel’s privates - and it definitely wasn’t a friend. I ran this a couple more times, and the result was the same: every time a value of “2” was written to the buffer first. Looking at the memory view, I noticed that what I saw was familiar:These are the exact same values that we’ve seen in the very first corrupted stack trace. I realized that whatever caused the crash earlier was also responsible for corrupting the stack sentinel. At first, I thought that this was some kind of a buffer overflow, and somebody was writing outside of their local variable bounds. So I started placing these stack sentinels much more aggressively: before almost every function call that the thread made. However, the corruptions seemed to happen at random times, and I wasn’t able to find what was causing them using this method.I knew that memory was always getting corrupted while one of my sentinels is in scope. I somehow needed to catch the thing that corrupts it red handed. I figured to make the stack sentinel memory read only for the duration of the stack sentinel life: I would call VirtualProtect() in the constructor to mark pages read only, and call it again in the destructor to make them writable:To my surprise, it was still being corrupted! And the message in the debug log was:Memory was corrupted at 0xd046ffeea8. It was readonly when it got corrupted.
CrashingGame.exe has triggered a breakpoint.This was a red flag to me. Somebody had been corrupting memory either while the memory was read only, or just before I set it to read only. Since I got no access violations, I assumed that it was the latter so I changed the code to check whether memory contents changed right after setting my magic values:My theory checked out:Memory was corrupted at 0x79b3bfea78.
CrashingGame.exe has triggered a breakpoint.At this point I was thinking: “Well, it must be another thread corrupting my stack. It MUST be. Right? RIGHT?”. The only way I knew how to proceed in investigating this was to use data (memory) breakpoints to catch the offender. Unfortunately, on x86 you can watch only four memory locations at a time, that means I can monitor 32 bytes at most, while the area that had been getting corrupted was 16 KB. I somehow needed to figure out where to set the breakpoints. I started observing corruption patterns. At first, it seemed that they are random, but that was merely an illusion due to the nature of ASLR: every time I restarted the game, it would place the stack at random memory address, so the place of corruption naturally differed. However, when I realized this, I stopped restarting the game every time memory became corrupted and just continued execution. This led me to discover that the corrupted memory address was always constant for a given debugging session. In other words, once it had been corrupted once, it would always get corrupted at the exact same memory address as long as I don’t terminate the program:Memory was corrupted at 0x90445febd8.
CrashingGame.exe has triggered a breakpoint.
Memory was corrupted at 0x90445febd8.
CrashingGame.exe has triggered a breakpoint.I set a data breakpoint on that memory address and watched as it kept breaking whenever I set it to a magic value of 0xDD. I figured, this was going to take a while, but Visual Studio actually allows me to set a condition on that breakpoint: to only break if the value of that memory address is 2:A minute later, this breakpoint finally hit. I arrived at this point in time after 3 days into debugging this thing. This was going to be my triumph. “I finally pinned you down!”, I proclaimed. Or so I so optimistically thought:I watched at the debugger with disbelief as my mind got filled with more questions than answers: “What? How is this even possible? Am I going crazy?”. I decided to look at the disassembly:Sure enough, it was modifying that memory location. But it was writing 0xDD to it, not 0x02! After looking at the memory window, the whole region was already corrupted:As I was ready to bang my head against the wall, I called my coworker and asked him to look whether I had missed something obvious. We reviewed the debugging code together and we couldn’t find anything that could even remotely cause such weirdness. I then took a step back and tried imagining what could possibly be causing the debugger to break thinking that code set the value to “2”. I came up with the following hypothetical chain of events:1. mov byte ptr [rax], 0DDh modifies the memory location, CPU breaks execution to let debugger inspect the program state
2. Memory gets corrupted by something
3. Debugger inspects the memory address, finds “2” inside and thinks that’s what changed.So… what can change memory contents while the program is frozen by a debugger? As far as I know, that’s possible in 2 scenarios: it’s either another process doing it, or it’s the OS kernel. To investigate either of these, a conventional debugger will not work. Enter kernel debugging land.Surprisingly, setting up kernel debugging is extremely easy on Windows. You’ll need 2 machines: the one debugger will run on, and the one you’ll debug. Open up elevated command prompt on the machine which you’re going to be debugging, and type this:Host IP is the IP address of the machine that has the debugger running. It will use the specified port for the debugger connection. It can be anywhere between 49152 and 65535. After hitting enter on the second command, it will tell you a secret key (truncated in the picture) which acts as a password when you connect the debugger. After completing these steps, reboot.On the other computer, open up WinDbg, click on File -> Kernel Debug and enter port and key.If everything goes well, you’ll be able to break execution by pressing Debug -> Break. If that works, the “debugee” computer will freeze. Enter “g” to continue execution.I started up the game and waited for it to break once so I could find out the address at which memory gets corrupted:Memory was corrupted at 0x49d05fedd8.
CrashingGame.exe has triggered a breakpoint.Alright, now that I knew the address where to set a data breakpoint, I had to configure my kernel debugger to actually set it:After some time, the breakpoint actually hit...Alright, so what’s going on here?! The sentinel is happily setting its magic values, then there’s a hardware interrupt, which then calls some completion routine, and that writes “2” into my stack. Wow. Okay, for some reason Windows kernel is corrupting my memory. But why?At first, I thought that this has to be us calling some Windows API and passing it invalid arguments. So I went through all the socket polling thread code again, and found that the only system call that we’ve been calling there was the select() function. I went to MSDN, and spent an hour rereading the docs on select() and rechecking whether we were doing everything correctly. As far as I could tell, there wasn’t really much you could do wrong with it, and there definitely wasn’t a place in docs where it said “if you pass it this parameter, we’ll write 2 into your stack”. It seemed like we were doing everything right.After running out of things to try, I decided to step into the select() function with a debugger, step through its disassembly and figure out how it works. It took me a few hours, but I managed to do it. It seems that the select() function is a wrapper for the WSPSelect(), which roughly looks like this:The important part here is the call to NtDeviceIoControlFile(), the fact that it passes its local variable statusBlock as an out parameter, and finally the fact that it waits for the event to be signalled using an alertable wait. So far so good: it calls a kernel function, which returns STATUS_PENDING if it cannot complete the request immediately. In that case, WSPSelect() waits until the event is set. Once NtDeviceIoControlFile() is done, it writes the result to statusBlock variable and then sets the event. The wait completes and then WSPSelect() returns.IO_STATUS_BLOCK struct looks like this:On 64-bit, that struct is 16 bytes long. It caught my attention that this struct seems to match my memory corruption pattern: the first 4 bytes get corrupted (NTSTATUS is 4 bytes long), then 4 bytes get skipped (padding/space for PVOID) and finally 8 more get corrupted. If that was indeed what was being written to my memory, then the first four bytes would contain the result status. The first 4 corruption bytes were always 0x00000102. And that happens to be the error code for… STATUS_TIMEOUT! That would be a sound theory, if only WSPSelect() didn’t wait for NtDeviceIOControlFile() to complete. But it did.After figuring out how the select() function worked, I decided to look at the big picture on how socket polling thread worked. And then it hit me like a ton of bricks.When another thread pushes a socket to be processed by the socket polling thread, the socket polling thread calls select() on that function. Since select() is a blocking call, when another socket is pushed to the socket polling thread queue it has to somehow interrupt select() so the new socket gets processed ASAP. How does one interrupt select() function? Apparently, we used QueueUserAPC() to execute asynchronous procedure while select() was blocked… and threw an exception out of it! That unrolled the stack, had us execute some more code, and then at some point in the future the kernel would complete the work and write the result to statusBlock local variable (which no longer existed at that point in time). If it happened to hit a return address on the stack, we’d crash.The fix was pretty straightforward: instead of using QueueUserAPC(), we now create a loopback socket to which we send a byte any time we need to interrupt select(). This path has been used on POSIX platforms for quite a while, and is now used on Windows too. The fix for this bug shipped in Unity 5.3.4p1.This is one of those bugs that keep you up at night. It took me 5 days to solve, and it’s probably one of the hardest bugs I ever had to look into and fix. Lesson learnt, folks: do not throw exceptions out of asynchronous procedures if you’re inside a system call!
]]></description><link>https://unity.com/blog/engine-platform/debugging-memory-debugging-memory-corruption-who-wrote-2-into-my-stack-who-the-hell</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/debugging-memory-debugging-memory-corruption-who-wrote-2-into-my-stack-who-the-hell</guid><pubDate>Mon, 25 Apr 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Key metrics to measure your app’s success]]></title><description><![CDATA[We live in an increasingly data-driven world, and that’s no less true in the mobile industry. App metrics have become absolutely vital to developers looking to understand their users better and improve their experience in the app.From engagement metrics allowing developers to optimize app content and campaigns, to business metrics measuring revenue against UA costs, the challenge remains in understanding the power of app metrics to improve user acquisition.A recent survey revealed that more than 90% of developers implement third party analytics within their app, but are still unsure how to leverage their app metrics correctly. Between industry jargon and all the different formulas, too many developers are simply at a loss of what to do with all the collected data.In an attempt to help you understand the power of app metrics, and to an extent, mobile game KPIs, we’ve compiled a glossary of the many different app metrics.User & usage metricsUser metrics shed light on how large your user base is and illustrate what kind of users your app appeals to, i.e. users segmented by demographic, geo, or device. Developers can use this information to optimize and localize their app for a better user experience.Daily active users (DAU): This metric reflects the total amount of users that visit your app on a daily basis. This gives you insights on how immersed users are within your app, and is a measure of your app’s success.Monthly active users (MAU): This metric is similar to the above - it reflects the total amount of users visiting your app on a monthly basis. This will help you understand your app’s popularity (increasing, stagnant or decreasing).Device/OS: Mobile apps are deployed on so many different devices. It’s important for you to identify which device,operating system (OS) and OS version (iOS 7.x, iOS 8, …) your loyal user base is coming from, so you can optimize your app for those specific platforms.Geo segmentation: This metric will tell you where your users are located. This will help you localize your app, and identify issues more easily. (Before introducing your app to new geos, it is also highly recommended to check out your competitor’s traction in the local market. This will help you understand where it would be best to launch first.)Engagement metricsEngagement metrics provide valuable insights into user behavior and engagement. Understanding users’ interaction with your app is essential to improving its functionality, retaining a loyal user base, and optimizing your monetization strategy.Average session duration: This measures how long your average user will spend on your app within one session. The more engaged your users are, the longer they will interact with your app.Session interval: The time-span between one app session and the next. This metric shows how frequently your users engage with your app.Retention rate: This metric is calculated by dividing the amount of Monthly Active Users with the Amount of Monthly Installs. This metric gives you an overview of how loyal your user base is over a longer period of time.Churn rate: The churn rate is the opposite of the Retention Rate (RR), and references how many users uninstalled your app. You can easily calculate this by using this formula {1-RR%}. So if your app’s retention rate is 60% from one month to the next, the churn rate will amount to 40%.App rating: One of the strongest engagement metrics is your app’s rating - i.e. the average rating your users grant your app - this metric references user satisfaction with your app. It’s prominently displayed on your app profile within the app marketplace and is a major incentive for users to install your app.Business metricsA vital part of your app’s success lies in its ability to generate revenue and remain ROI positive. Business metrics keep track of monetization and user acquisition strategies, helping developers make informed decisions as well as foresee any financial issues with their app.eCPM: This is a revenue measurement every developer should be familiar with. It literally means “effective Cost Per Mille”, meaning your advertising revenue per 1K impressions. eCPM ultimately measures how well your ads are performing and how much revenue your app is amassing from them. Simply divide your total earnings by total impressions and multiply that number by 1,000. This metric is also very useful to predict future earnings. However, developers beware - eCPM neglects to account for fill rate.Average revenue per user (ARPU): Not to be confused with LTV, this metric reflects the current average revenue derived from your user base. It is calculated by summing up your app’s total revenue, and dividing that number by active users. The higher the average, the more lucrative your user base is.Lifetime value (LTV): This is your primary revenue assessment metric, defining the financial value of your app and each user’s net worth. It estimates the amount of revenue a user will contribute during their lifetime using your app. This metric varies from app type: for example a commerce app like Uber will calculate user LTV in terms of frequency of use or money spent on rides. LTV is probably the easiest way to quantify your app’s overall success. High LTV users = higher overall revenue. Tracking LTV is necessary in order to identify which user base your revenue is flowing from (existing or new users), foresee revenue fluctuation, and also ensure you make calculated decisions on acquisition spending.Performance metricsPerformance Metrics provide valuable insights on the user’s experience within your app, tracking technical errors and failures. It’s critically important to understand these metrics since users won’t give your app the time of day if it keeps crashing, or loads really slowly.Crash rate: The crash rate will show you the ratio of crashes versus the action performed, so you can pinpoint the problem within your app. At first, all mobile apps crash. Developers need to stay on top of this technical failure to avoid disrupting the user’s experience and causing data loss. Some app intelligence solutions also provide deeper insights, such as how much a crash costs you, if they happen with app updates, etc.API latency: Most apps use several APIs or services (for example mobile advertising networks.) API latency refers to the amount of time it takes for a response after your user makes a request or a transaction within your app. The rule of thumb is one second per request.App loading: This metric measures how long different requests take to load in your app. For example, how long it takes for a game level to load or the amount of time it takes for a search to return results. Also known as app load per session/period.]]></description><link>https://unity.com/blog/key-metrics-to-measure-your-apps-success</link><guid isPermaLink="true">https://unity.com/blog/key-metrics-to-measure-your-apps-success</guid><pubDate>Thu, 11 Feb 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Profiling with Instruments]]></title><description><![CDATA[In the Enterprise Support team, we see a lot of iOS projects. At some point, in any iOS development, developers often end up running their game and sitting there thinking “Why the hell is this running so slowly?”. There are some great sets of tools for analysing performance out there and, one of the best is Instruments. Read on to find out how to use it to find your issues!To use Instruments, or any of XCode’s debugging tools, you will need to build a Unity project for the iOS Build Target (with the Development Build and Script Debugging options unchecked). Then you will need to compile the resultant XCode project with XCode in Release mode and deploy it to an attached iOS device.After starting Instruments (by either a long press on the play button, or selecting Products>Profile), select the Time Profiler. To begin a profiling run, select the built application from the application selector, then press the red Record button. The application will launch on the iOS device with Instruments connected, and the Time Profiler will begin recording telemetry. The telemetry will appear as a blue graph on the Instruments timeline.P.S. To clean up the call hierarchy, press the Call Tree button at the bottom left of the Details pane to show options and select Flatten Recursion and Hide System Libraries.A list of method calls will appear in the detail section of the Instruments window. Each top-level method call represents a thread within the application.In general, the main method is the location of all hotspots of interest, as it contains all managed code.Expanding the main method will yield a deep tree of method calls. The major branch is between two methods:[startUnity] and UnityLoadApplication (These method names sometimes appear in ALL CAPS).PlayerLoop[startUnity] is of interest as it contains all time spent initializing the Unity engine. A method named UnityLoadApplication will be found beneath it. It is beneath UnityLoadApplication that startup time can be profiled.Once you have a nice time-slice of your application profiled, pause the Profiler, and start expanding the tree. As you work down the tree, you will notice the time in ms reduces in the left hand column. What you are looking for are items that cause a significant reduction in the time. This will be a performance hotspot. Once you have found one, you can go back to your code-base, and find out WTF is going on that is taking so much time. It could be that it is a totally necessary operation, or it could be some time in the distant past you hacked some pre-production code in that has made it over to your production project, or ...well… it could be a million reasons really. If or how you decide to fix this hotspot would be largely up to you, as you know your codebase better than anyone. :DInstruments can also be used to look for performance sinks that are distributed broadly — ones that lack a single large hotspot, but instead show up as a few milliseconds of lost time in many different places in a codebase. To do this, type either a partial or full function name into Instruments’ symbol search box, shown by pressing ⌘F or clicking Find/Find… in the Edit menu. If profiling a slice of gameplay, expand PlayerLoop and collapse all the methods beneath it. If profiling startup time, expand UnityLoadApplication and collapse the methods beneath it. The total number of milliseconds wasted on a specific operation can be roughly estimated by looking at the total time spent in PlayerLoop or UnityLoadApplication and subtracting the number of milliseconds located in the self column.Common methods to look for:“Box(“, “box” and “box” — these indicate that C# value boxing is occurring; most instances of boxing are trivially fixed“Concat” — string concatenation is often easily optimized away“CreateScriptingArray” — All Unity APIs that return arrays will allocate new copies of arrays. Minimize calls to these methods.“Reflection” — reflection is slow. Use this to estimate the time lost to reflection and eliminate it where possible.“FindObjectOfType” — Use this to locate repeated or unnecessary calls to FindObjectOfType, or other known-slow Unity APIs.“Linq” — Examine the time lost to creating and discarding Linq queries; consider replacing hotspots with manually-optimized methods.As well as profiling CPU time, Instruments also allows you to profile memory usage. Instruments’ Allocations profiler provides two probes that offer detailed views into the memory usage of an application. The Allocations probe permits inspection of the objects resident within memory during a specific time-span. The VM Tracker probe permits monitoring of the dirty memory heap size, which is the primary metric used by iOS to determine when an application must be forcibly closed.Both probes will run simultaneously when selecting the Allocations profiler in Instruments. As usual, begin a profiling run by pressing the red Record button.To set up the Allocations probe correctly, ensure the following settings are correct. At the bottom of the window, ensure Allocation Lifespan (middle option) is set to Created & Persistent. In the Recording Options (File menu), ensure Discard events for freed memory is checked.The most useful display for examining memory behavior is the Statistics display, which is the default display when using the Allocations probe. This display shows a timeline. When used with the recommended settings, the graph displays blue lines indicating the time and magnitude of memory allocations which are still currently live. By watching this graph, you can watch for long-lived or leaked memory by simply repeating the scenario under test and ensuring that no blue lines remain alive between runs.Another useful display is the Call Trees display. It displays the line of code at which allocations are performed, along with the amount of memory consumption the line of code is responsible for. You can change the display by clicking on the right of Details, as shown here:Below you can see that about 25% of the total memory usage of the application under test is solely due to shaders. Given that the shaders’ location in the loading thread, these must be the standard shaders bundled with default Unity projects which are then loaded at application startup time.As before, once you have identified a hotspot, what you do with it is totally dependent on your project.So there you go. A brief guide to Instruments. 1000(ish) words and no A-Team references. We don’t want to get into trouble like last time. Copyright violations are officially Not Funny™.The Enterprise Support team is creating more of these guides, and we will be posting the full versions of our Best Practice guides in the coming months!We love it when a plan comes together.]]></description><link>https://unity.com/blog/engine-platform/profiling-with-instruments</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/profiling-with-instruments</guid><pubDate>Mon, 01 Feb 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[3 tips for increasing app retention (what is retention marketing?)]]></title><description><![CDATA[Guest post by Eugine Dychko, Content Manager at GoWide.Until recently, the bulk of mobile app marketing concentrated on amassing new users. The user acquisition funnel consisted of the following: thousands of users see an ad, many of them install your app, and just as many stop using it after the first few days. In the end, there are a number of users who stuck till the point of generating revenue. Although this CPI model wasn't too consistent or well-calculated, it managed to work the majority of the time. However, as the mobile industry continues to change, so have the strategies to gain loyal users.User acquisition has shifted its focus to retaining existing users, as opposed to simply generating downloads. As the mobile market gets increasingly saturated, app owners can no longer ignore the importance of retention marketing in ensuring they build a sustainable user base for their mobile app.Here’s why:– App stores are getting increasingly saturated. Apple’s App Store started off with just 500 apps in 2009, and six years later, there are more than 1.5 million apps available.– The cost of acquiring a new user increases every year on both iOS and Android platforms. Based on Fiksu’s November 2015 indexes below, the average CPI for iOS is $1.54, which marks a 40% annual increase. For Android, the CPI is $2.27, which is 101% higher than last year.– Users have dozens of apps installed on their smartphones, yet use only a few of them. A Pew Research Center report shows that 46% of users utilize only 1-5 apps per week, whereas only 35% use 6 to 10.– Most apps are abandoned by users after being used 3-4 times.The shift to retention marketingUser Acquisition is a starting point for every mobile app. If done correctly, it is intended to effectively draw in new users and create an active user base. While it’s important to spend some of your budget on UA in order to build your app’s initial user base, this activity should be accompanied by a long-term retention marketing plan.Retention marketing is a safety net that keeps in users who just happened to leave your app for one reason or another. Retention helps activate otherwise dormant users, by reaching out and reminding them of the product they were at some point interested enough to install.Below is a prime example of People Tree App utilizing the tools of retention marketing, with a banner retargeting a user. The banner shows an image of the exact dress the user has previously browsed in an effort to lead them directly back to the app page where that item can be purchased.How to use retention app marketingThere are several retention marketing strategies, techniques and media channels an app owner can use. The choice depends greatly on your app’s category and the type of services it offers. Below are the most common principles of retention marketing:1. Start from the get-goRetention begins with onboarding and should start right away, as an average app loses as much as 80% of users in the first 3 days post-install. This is the ugly truth: by not describing their features properly to a new user, most apps ignore the importance of a diligent onboarding process.If your user does not understand how to use your app, he or she will leave shortly thereafter. A thought-out registration and onboarding process for new users is a much more effective, and easily established, practice of retention than launching an email campaign the following week.For example, Flipboard offers an engaging onboarding process that starts before a user signs up. A new user chooses their theme preferences and immediately gets a general idea of how to use the app, stimulating a trusting and loyal relationship with the brand:2.Know your audienceRetention won’t work without a vast knowledge base on user behavior, so the sooner you gather all the data you need, the better. Don’t hesitate to install a good in-app analytics tool such as Flurry Analytics or Localytics to help you track metrics such as number of sessions and session lengths, buttons clicked, time spent on page, and more demographic and technical data.This data creates a detailed picture of how users interact with content and behave inside your app and, more importantly, where in your app users are less engaged, helping you gain insight into why they abandon your app and how to reactivate them.3.Keep it briefWhen it comes to retaining existing users, your content should be as simple and as brief as possible. Keep your message clear and to the point. Below are some options of media channels to choose from when reaching out to your dormant users:Email Marketing: While often the most low-cost method, it’s not the fastest one, and would be more appropriate to use in a long-term retention strategy.Push Notifications: Limited in content length and quantity, these can still be very effective for immediate messages that then deep-link to a specific page in your app (for example, a push notification for a ‘Sale’ announcement that will open to your app’s ‘discounted items’ page)In-App Messaging: These can be seen as a part of an app’s onboarding process and are a great re-engagement tool for people already using your app. According to Localytics, apps that utilize in-app messages increase user retention in 2-3.5 times.Retargeting Ads: Constitute the least intrusive way to reach users. Works best for users who have recently shown interest in your app (such as, for example, filling a shopping cart without checking out and making an in-app purchase).The vital benefits of retention app marketing1. You gain insight into your users' in-app behaviorApp retention marketing helps measure how valuable your app is to your users. They have installed it, which is a clear sign that they are interested. But what next? How many of them return? Which functions or parts of the app engage users, and which seem to deter them from engaging with or visiting your app again? Monitoring user behavior through in-app analytics is essential for a successful retention strategy, which will provide unique insight into how users view your app and what needs to be enhanced or adjusted.2. You save on budgetDid you know it costs 7 times more to acquire a new user than to retain an existing one? Retention marketing is a cost-saving opportunity. Data-driven remarketing ads have much higher conversion rates than regular ads, plus they boost in-app revenue. According to Kelsey Ricard from Taplytics, existing users spend 33% more than new ones.3. You build a loyal user baseRetention marketing concentrates on turning users into loyal customers. Take the gaming industry, for example, where every gaming app is looking for the highest-paying users. Utilizing retention marketing through the use of demographic and behavioral targeting can help determine your app’s most relevant audience segment and nurture your most loyal users.Even though retention marketing is relatively new in the mobile app ecosystem, it has proven to be an effective strategy for growing an app’s user base long-term. According to an Appboy study, apps that ran re-engagement campaigns with push notifications and emails or in-app messages during the seven day post-install period saw user retention increase 130% over the month.You can expect to see retention marketing become a driving force in the mobile app industry moving forward. Data shows that of last year’s total global growth in mobile app usage, an impressive 40% came from existing users, a jump from the 20% in 2014 and 10% in 2013.More and more apps across all categories have come to rely on retention marketing in order to succeed. While this marketing approach demands extensive planning, UX expertise, data analysis, and effective UA budget management, these efforts pay off in the long run - creating a durable base of loyal and engaged users.Learn about more mobile app retention strategies you can use.Guest Post by: Eugine Dychko, Content Manager at GoWide, a global mobile app marketing platform with mobile traffic solutions for app owners, developers, affiliate marketers and advertising agencies.]]></description><link>https://unity.com/blog/retention-marketing-how-to-awaken-your-dormant-users</link><guid isPermaLink="true">https://unity.com/blog/retention-marketing-how-to-awaken-your-dormant-users</guid><pubDate>Wed, 27 Jan 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[The what, how, and why of deep linking]]></title><description><![CDATA[Deep linking empowers app developers to more quickly, seamlessly, and effectively answer specific consumer needs. Below we decipher the what, how, and why of deep linking. We look at exactly what it is, how you can apply it to your app, and why it can benefit your mobile strategy.What is deep linking?A deep link is a hyperlink that, rather than linking to an app’s main page, links to a specific piece of content or page in an app. Deep linking is a way for you to display your product more precisely, and therefore effectively, by directing your user past your app’s homepage and into the specific pages containing the relevant content that they engaged with.In order to increase conversion, apps utilize deep linking to generate traffic to pages with in-app purchases or special offerings. Deep linking, for example, allows for a retail app to show an ad for a dress on mobile web and, upon clicking the ad, the user is taken directly to the page within the app where the dress is made available for purchase - seamlessly converting mobile web users to app users, as well as driving revenue - all through the use of deep linking.In another example, a gaming app can promote today’s ‘special deal’ on weapons in an ad, which will then take the user directly to that specific IAP offering, as opposed to the game’s main page or general IAP Store, where they would need to look for that specific IAP package. In other words, by simplifying the conversion process, targeting content discoverability and seamlessly optimizing the app’s user flow, it can directly lead potential buyers to what they would like to buy.1. Traditional deep linkingThis is the basic hyperlink that links to a specific page within an app. The issue with traditional deep links is that they won’t work if the app has not previously been installed in the user's’ phone. The phone will look for the app content and, if not installed, will show an error. This means this kind of deep linking won’t work as a way to drive new installs of your app.2. Deferred deep linkingWith deferred deep linking, access to specific content in an app is simply ‘deferred’ until after a user installs the app. The user can click on a link that points to a specific page or content inside an app which they haven’t actually installed. In the meantime, the deep link will direct the user to the relevant app store to install the app and then, once installed, will instantly redirect the user to the specific content they wanted and were expecting - no search required. In other words, deferred deep linking allows for seamless and precise movement across mobile web, apps and the app store.3. Contextual deep linkingContextual deep links take deferred deep linking one step further. While the user is immediately directed to the content of the links within the app whether or not the app has been installed, contextual deep links can also store and pass referring information through the app store - bringing the app relevant information about who the user is, where they came from, which ad campaign they clicked, and where they want to go.Contextual deep links are useful for both sides of the exchange. They can improve a developer's app personalization process by incorporating features such as personalized welcomes (where you see your friend's recommendation in the app if they share an item with you), while providing the user with a better experience, more personal ads, and highly relevant information.How can you apply it to your app?1. In-app adsIn-app messages can appear as a part of an app’s onboarding process and also function as a great re-engagement tool for people already using your app. According to Localytics, apps that utilize in-app messages increase user retention by 2-3.5 times. Add a ‘buy now’ button in a banner over relevant mobile content, instantly delivering the user the same content in-app to give them a continuous experience.2. Push notificationsPromote any special deal or content offered in your app using push notifications.You can utilize push notifications to bring back users who don’t frequent your app very often. Limited in length and quantity, this method can be very effective for immediate messages that deep link to a specific page in your app (for example, a push notification for a Sale announcement that will open to your app’s ‘discounted items’ page).So your users will see an ad promoting a new IAP offering, and will then be brought to the specific page with that offering. Push notifications can also be used to spur users to download a new feature of your app - bringing them straight to the app store for the download, and then back to the last page they were at in your app.Why is it beneficial?1. Deep linking boosts user acquisitionInstead of expecting a new or potential user to move from a browser (where they saw an ad) to the app store and conduct their own search for your app, you can use a deep link to direct them straight to a specific screen in your app. This gives you more control over your app's targeting process, with the potential to reach an entirely new audience that is experiencing your brand for the first time in a more effective way. You can track what these potential users liked, and direct them to pages within your app that they are more likely to engage with.2. Deep linking eases your app’s onboarding processNormally, clicking an ad promoting a specific feature or offering within an app would lead a user to that app’s generic homepage, its mobile website, or to the app store to download the app. This takes a potential user away from the app, putting in an extra step that might deter them from completing the installation process. Even once installed, a user would have to navigate to the specific page or special offer that was shown in the ad by themselves.These links tend to dump the user at the front door, leaving him or her to sift through countless pages within the app to find what they were looking for in the first place. By linking to specific pages within apps, deep links allow you to place the user directly within reach of the content, product or functionality they want - providing you with one of the most effective ways to get your content in front of the right consumers.3. Deep linking optimizes user engagementEvery app page is now a potential home or landing page, as every section in your app is now an area you can deep link to. By allowing potential customers to go directly to specific or relevant landing pages rather than simply opening the app, you create an invaluable and highly personalized user experience - increasing efficiency and improving your app’s UX by optimizing the browsing experience for the user and engaging with them on their terms.4. Deep linking increases revenueDeep links allow developers to drastically improve ROI by driving traffic to specific pages based on different user interests - building a shortcut for users looking to make a purchase or convert on an in-app offering. Specific pages, when linked to specific users at a specific time, will lead to greater opportunity for revenue.With more of our time spent in mobile apps, providing targeted navigation between apps and within pages in apps is becoming more critical. Deep links provide exposure for the content inside your apps, and shorten the distance and time between new users and the content they will enjoy. Through pinpointed navigation based on specific user interests, deep links allow you to bridge the gap between you and your users by building app experiences that directly and precisely fulfill their needs.]]></description><link>https://unity.com/blog/the-what-how-and-why-of-deep-linking</link><guid isPermaLink="true">https://unity.com/blog/the-what-how-and-why-of-deep-linking</guid><pubDate>Sat, 16 Jan 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[10000 Update() calls]]></title><description><![CDATA[For an experienced developer this code is a bit odd.1. It's not clear how exactly this method is called.2. It's not clear in what order these methods are called if you have several objects in a scene.3. This code style doesn't work with intellisense.No, Unity doesn't use System.Reflection to find a magic method every time it needs to call one.Instead, the first time a MonoBehaviour of a given type is accessed the underlying script is inspected through scripting runtime (either Mono or IL2CPP) whether it has any magic methods defined and this information is cached. If a MonoBehaviour has a specific method it is added to a proper list, for example if a script has Update method defined it is added to a list of scripts which need to be updated every frame.During the game Unity just iterates through these lists and executes methods from it — that simple. Also, this is why it doesn't matter if your Update method is public or private.The order is specified by Script Execution Order Settings (menu: Edit > Project Settings > Script Execution Order). It might be not the best way to manually set the order of 1000 scripts but if you want one script to be executed after all other ones this way is acceptable. Of course, in the future we want to have a more convenient way to specify execution order, using an attribute in code for example.We all use an IDE of some sort to edit our C# scripts in Unity, most of them don't like magic methods for which they can't figure out where they are called, if at all. This leads to warnings and makes it harder to navigate the code.Sometimes developers add an abstract class extending MonoBehaviour, call it BaseMonoBehaviour or alike and make every script in their project extend this class. They put some basic useful functionality in it along with a bunch of virtual magic methods like so:This structure makes using MonoBehaviours in your code more logical but has one little flaw. I bet you already figured it out...All your MonoBehaviours will be in all update lists Unity uses internally, all these methods will be called each frame for all your scripts, mostly doing nothing at all!One might ask why should anyone care about an empty method? The thing is that these are the calls from native C++ land to managed C# land, they have a cost. Let's see what this cost is.For this post I created a small example project which is available on Github. It has 2 scenes which can be changed by tapping on a device or pressing any key in editor:(1) In the first scene 10000 MonoBehaviours are created with this code inside:(2) In the second scene another 10000 MonoBehaviours are created but instead of having an Update they have a custom UpdateMe method which is called by a manager script every frame like so:The test project was run on 2 iOS devices compiled to Mono and IL2CPP in non-Development mode in Release configuration. Time was measured as following:Set up a Stopwatch in the first Update called (configured in Script Execution Order),Stop the Stopwatch at LateUpdate,Average the timings over a few minutes.Unity version: 5.2.2f1
iOS version: 9.0WOW! This is a lot! There must be something wrong with the test!Actually, I just forgot to set Script Call Optimization to Fast but no Exceptions, but now we can see what impact on performance this particular setting has... not that anyone cares anymore with IL2CPP.OK, this is better. Let's switch to IL2CPP.Here we see two things:1. This particular optimization still makes sense in IL2CPP.2. IL2CPP still has room for improvement and as I'm writing this post Scripting and IL2CPP teams are working hard to increase performance. For example the latest Scripting branch contains optimizations making the test run 35% faster.I’ll explain what Unity is doing under the hood in a few moments. But right now let’s change our Manager code to make it 5 times faster!If you haven't read this great series of posts about IL2CPP internals you should do it right after you finish reading this one!It turns out that if you'd wanted to iterate through a list of 10000 elements every frame you'd better use an array instead of a List because in this case generated C++ code is simpler and array access is just faster.In the next test I changed List<ManagedUpdateBehavior> to ManagedUpdateBehavior[].This looks much better!Update: I ran the test with array on Mono and got 0.23ms.We figured out that calling functions from C++ to C# is not fast, but let’s find out what Unity is actually doing when calling Updates on all these objects. The easiest way to do this is to use Time Profiler from Apple Instruments.Note that this is not a Mono vs. IL2CPP test — most of the things described further are also true for a Mono iOS build.I launched the test on iPhone 6 with Time Profiler, recorded a few minutes of data and selected a one minute interval to inspect. We are interested in everything starting from this line:
If you haven't used Instruments before, on the right you see functions sorted by execution time and other functions they call. The most left column is CPU time in ms and % of these functions and functions they call combined, second left column is self execution time of the function. Note that since CPU wasn't fully used by Unity during this experiment we see 10 seconds of CPU time spent on our Updates in a 60 seconds interval. Obviously we are interested in functions taking most time to execute.I used my mad Photoshop skills and color coded a few areas for you to better understand what’s going on.In the middle you see our Update method or how IL2CPP calls it — UpdateBehavior_Update_m18. But before getting there Unity does a lot of other things.Unity goes over all Behaviours to update them. Special iterator class, SafeIterator, ensures that nothing breaks if someone decides to delete the next item on the list. Just iterating over all registered Behaviours takes 1517ms out of total 9979ms.Next, Unity does a bunch of checks to make sure that it is calling a valid existing method on an active GameObject which has been initialized and its Start method called. You don’t want your game to crash if you destroy a GameObject during Update, do you? These checks take another 2188ms out of total 9979ms.Unity creates an instance of ScriptingInvocationNoArgs (which represents a call from native side to managed side) together with ScriptingArguments and orders IL2CPP virtual machine to invoke the method (scripting_method_invoke function). This step takes 2061ms out of total 9979ms.scripting_method_invoke function checks that passed arguments are valid (900ms) and then calls Runtime::Invoke method of IL2CPP virtual machine (1520ms). First, Runtime::Invoke checks if such method exists (1018ms). Next, it calls a generated RuntimeInvoker function for method signature (283ms). It in turn calls our Update function which according to Time Profiler takes 42ms to execute.And a nice colorful table.Now let’s use Time Profiler with the manager test. You can see on the screenshot that there are the same methods (some of them take less than 1ms total so they are not even shown) but most of the execution time is actually going to UpdateMe function (or how IL2CPP calls it — ManagedUpdateBehavior_UpdateMe_m14). Plus, there’s a null check inserted by IL2CPP to make sure that the array we are iterating over is not null.The next image uses the same colors.So, what do you think now, should one care about a little method call?To be honest, this test is not completely fair. Unity does a great job guarding you and your game from unintended behavior and crashes: Is this GameObject active? Wasn’t it destroyed during this update loop? Does Update method exist on the object? What to do with a MonoBehaviour created during this update loop? — my manager script doesn’t handle anything of that, it just iterates through a list of objects to update.In real world manager script probably would have been more complicated and slower to execute. But in this case I am the developer — I know what my code is supposed to do and I architect my manager class knowing what behavior is possible and what isn’t in my game. Unity unfortunately doesn’t possess such knowledge.Of course it all depends on your project, but in the field it’s not rare to see a game using a large number of GameObjects in the scene each executing some logic every frame. Usually it’s a little bit of code which doesn’t seem to affect anything, but when the number grows very large the overhead of calling thousands of Update methods starts to be noticeable. At this point it might already be too late to change the game’s architecture and refactor all these objects into manager pattern.You have the data now, think about it at the beginning of your next project.]]></description><link>https://unity.com/blog/engine-platform/10000-update-calls</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/10000-update-calls</guid><pubDate>Wed, 23 Dec 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Going deep with IMGUI and Editor customization]]></title><description><![CDATA[Strange timing, you might think. Why care about the old UI system now that the new one is available? Well, while the new UI system is intended to cover every in-game user interface situation you might want to throw at it, IMGUI is still used, particularly in one very important situation: the Unity Editor itself. If you're interested in extending the Unity Editor with custom tools and features, it's very likely that one of the things you'll need to do is go toe-to-toe with IMGUI.First question, then: Why is it called ‘IMGUI’? IMGUI is short for Immediate Mode GUI. OK, so, what’s that? Well, there’s two major approaches to GUI systems: ‘immediate’ and ‘retained.’A retained mode GUI is one in which the GUI system ‘retains’ information about your GUI: you set up your various GUI widgets - labels, buttons, sliders, text fields, etc - and then that information is kept around and used by the system to render the screen, respond to events, and so on. When you want to change the text on a label, or move a button, then you’re manipulating some information which is stored somewhere, and when you’ve made your change then the system carries on working in its new state. As the user changes values and moves sliders, the system simply stores their changes, and it’s up to you to query the values or respond to callbacks. The new Unity UI system is an example of a retained mode GUI; you create your UI.Labels, UI.Buttons and so on as components, set up them up, and then just let them sit there, and the new UI system will take care of the rest.Meanwhile, an immediate mode GUI is one in which the GUI system generally does not retain information about your GUI, but instead, repeatedly asks you to re-specify what your controls are, and where they are, and so on. As you specify each part of the UI in the form of function calls, it is processed immediately - drawn, clicked, etc - and the consequences of any user interaction returned to you straight away, instead of you needing to query for it. This is inefficient for a game UI - and inconvenient for artists to work with, as everything becomes very code-dependent - but it turns out to be very handy for non-realtime situations (like Editor panels) which are heavily code-driven (like Editor panels) and want to change the displayed controls easily in response to current state (like Editor panels!) so it’s a good choice for things like heavy construction equipment. No, wait. I meant, it’s a good choice for Editor panels.If you want to know more, Casey Muratori has a great video where he discusses some of the upsides and principles of an Immediate Mode GUI. Or you can just keep reading!Whenever IMGUI code is running, there is a current ‘Event’ being handled - this could be something like ‘user has clicked the mouse button,’ or something like ‘the GUI needs to be repainted.’ You can find out what the current event is by checking Event.current.type.Imagine what it might look like if you’re doing a set of buttons in a window somewhere and you had to write separate code to respond to 'user has clicked the mouse button' and 'the GUI needs to be repainted.' At a block level it might look like this:Writing these functions for each separate GUI event is kinda tedious; but you’ll notice that there’s a certain structural similarity between the functions. Each step of the way, we are doing something relating to the same control (button 1, button 2, or button 3). Exactly what we’re doing depends on the event, but the structure is the same. What this means is that we can do this instead:We have a single OnGUI function which calls library functions like GUI.Button, and those library functions do different things depending on which event we’re handling. Simple!There are 5 event types that are used most of the time:EventType.MouseDownSet         when the user has just pressed a mouse button.EventType.MouseUpSet  when the user has just released a mouse button.EventType.KeyDownSet   when the user has just pressed a key.EventType.KeyUpSet             when the user has just released a key.EventType.RepaintSet           when IMGUI needs to redraw the screen.That’s not an exhaustive list - check the EventType documentation for more.How might a standard control, such as GUI.Button, respond to some of these events?EventType.RepaintDraw the button in the provided rectangle.EventType.MouseDownCheck whether the mouse is within the button’s rectangle. If so, flag the button as being down and trigger a repaint so that it gets redrawn as pressed in.EventType.MouseUpUnflag the button as down and trigger a repaint, then check whether the mouse is still within the button’s rectangle: if so, return true, so that the caller can respond to the button being clicked.The reality is more complicated than this - a button also responds to keyboard events, and there is code to ensure that only the button that you initially clicked on can respond to the MouseUp - but this gives you a general idea. As long as you call GUI.Button at the same point in your code for each of these events, with the same position and contents, then the different behaviours will work together to provide all the functionality of a button.To help with tying these different behaviours together under different events, IMGUI has the concept of a ‘control ID.’ The idea of a control ID is to give a consistent way to refer to a given control across every event type. Each distinct part of the UI that has non-trivial interactive behaviour will request a control ID; it’s used to keep track of things like which control currently has keyboard focus, or to store a small amount of information associated with a control. The control IDs are simply awarded to controls in the order that they ask for them, so, again, as long as you’re calling the same GUI functions in the same order under different events, they’ll end up being awarded the same control IDs and the different events will sync up.If you want to create your own custom Editor classes, your own EditorWindow classes, or your own PropertyDrawer classes, the GUI class - as well as the EditorGUI class - provides a library of useful standard controls that you’ll see used throughout Unity.(It’s a common mistake for newbie Editor coders to overlook the GUI class - but the controls in that class can be used when extending the Editor just as freely as the controls in EditorGUI. There’s nothing particularly special about GUI vs EditorGUI - they’re just two libraries of controls for you to use - but the difference is that the controls in EditorGUI cannot be used in game builds, because the code for them is part of the Editor, while GUI is a part of the engine itself).But what if you want to do something that goes beyond what’s available in the standard library?Let’s explore how we might create a custom user interface control. Try clicking and dragging the coloured boxes in this little demo:(NOTE: Original WebGL application embedded here no longer works in browsers)(You’ll need a browser with WebGL support to see the demo, like current versions of Firefox).These custom sliders each drive a separate ‘float’ value between 0 and 1. You might want to use such a thing in the Inspector as another way of displaying, say, hull integrity for different parts of a spaceship object, where 1 represents ‘no damage’ and 0 represents ‘totally destroyed’ - having the bars represent the values as colours may make it easier to tell, at a glance, what state the ship is in. The code for building this as a custom IMGUI control that you can use like any other control is pretty easy, so let’s walk through it.The first step is to decide upon our function signature. In order to cover all the different event types, our control is going to need three things:- a Rect which defines where it should draw itself and where it should respond to mouse clicks.- the current float value that the bar is representing.- a GUIStyle, which contains any necessary information about spacing, fonts, textures, and so on that the control will need. In our case that includes the texture that we’ll use to draw the bar. More on this parameter later.It’s also going to need to return the value that the user has set by dragging the bar. That’s only meaningful on certain events like mouse events, and not on things like repaint events; so by default we’ll return the value that the calling code passed in. The idea is that the calling code can just do “value = MyCustomSlider(... value ...)” without caring about the event that is happening, so if we’re not returning some new value set by the user, we need to preserve the value that currently stands.So the resulting signature looks like this:Now we begin implementing the function. The first step is to retrieve a control ID. We’ll use this for certain things when responding to the mouse events. However, even if the event being handled isn’t one we actually care about, we must still request an ID anyway, to ensure that it isn’t allocated to some other control for this particular event. Remember that IMGUI just dishes out IDs in the order they’re requested, so if you don’t ask for an ID it’ll end up being given to the next control instead, causing that control to end up with different IDs for different events, which is likely to break it. So, when requesting IDs, it’s all-or-none - either you request an ID for every event type, or you never request it for any of them (which might be OK, if you're creating a control that is extremely simple or non-interactive).The FocusType.Passive being passed as a parameter there tells IMGUI what role this control plays in keyboard navigation - whether it’s possible for the control to be the current one reacting to keypresses. My custom slider doesn’t respond to key presses at all, so it specifies Passive, but controls that respond to key presses could specify Native or Keyboard. Check the FocusType docs for more info on them.Next, we do what the majority of custom controls will do at some point in their implementation: we branch depending on the event type, using a switch statement. Instead of just using Event.current.type directly, we’ll use Event.current.GetTypeForControl(), passing it our control ID; this filters the event type, to ensure that, for example, keyboard events are not sent to the wrong control in certain situations. It doesn’t filter everything, though, so we will still need to perform some checks of our own as well.Now we can begin implementing the specific behaviours for the different event types. Let’s start with drawing the control:At this point you could finish up the function and you’d have a functioning ‘read-only’ control for visualising float values between 0 and 1. But let’s continue and make the control interactive.To implement a pleasant mouse behaviour for the control, we have a requirement: once you’ve clicked on the control and started to drag it, you shouldn’t need to keep the mouse over the control. It’s much nicer for the user to be able to just focus on where their cursor is horizontally, and not worry about vertical movement. This means that they might move the mouse over other controls while dragging, and we need those controls to ignore the mouse until the user releases the button again.The solution to this is to make use of GUIUtility.hotControl. It’s just a simple variable which is intended to hold the control ID of the control which has captured the mouse. IMGUI uses this value in GetTypeForControl(); when it’s not 0, then mouse events get filtered out unless the control ID being passed in is the hotControl.So, setting and resetting hotControl is pretty simple:Note that when some other control is the hot control - i.e. GUIUtility.hotControl is something other than 0 and our own control ID - then these cases simply won’t be executed, because GetTypeForControl() will be returning ‘ignore’ instead of mouseUp/mouseDown events.Setting the hotControl is fine, but we still haven’t actually done anything to change the value while the mouse is down. The simplest way to do that is actually to close the switch and then say that any mouse event (clicking, dragging, or releasing) that happens while we’re the hotControl (and therefore are in the middle of click+dragging - though not releasing, because we zeroed out the hotControl in that case above) should result in the value changing:Those last two steps - setting GUI.changed and calling Event.current.Use() - are particularly important, not just to making this control behave correctly, but also to make it play nice with other IMGUI controls and features. In particular, setting GUI.changed to true will allow calling code to use the EditorGUI.BeginChangeCheck() and EditorGUI.EndChangeCheck() functions to detect whether the user actually changed your control’s value or not; but you should also avoid ever setting GUI.changed to false, because that might end up hiding the fact that a previous control had its value changed.Lastly, we need to return a value from the function. You’ll remember that we said we would return the modified float value - or the original value, if nothing has changed, which most of the time will be the case:And we’re done. MyCustomSlider is now a simple functioning IMGUI control, ready to be used in custom Editors, PropertyDrawers, editor windows, and so on. There’s still more we can do to beef it up - like support multi-editing - but we’ll discuss that below.There’s one other particularly important non-obvious thing about IMGUI, and that is its relation to the Scene View. You’ll all be familiar with the helper UI elements that are drawn in the scene view when you go to translate, rotate, and scale objects - the orthogonal arrows, rings, and box-capped lines that you can click and drag to manipulate objects. These UI elements are called ‘Handles.’What’s not obvious is that Handles are powered by IMGUI as well!After all, there’s nothing inherent in what we’ve said about IMGUI so far that is specific to 2D or Editors/EditorWindows. The standard controls you find in the GUI and EditorGUI classes are all 2D, certainly, but the basic concepts like EventType and control IDs don’t depend on 2D at all. So while GUI and EditorGUI provide 2D controls aimed at EditorWindows and Editors for components in the Inspector, the Handles class provides 3D controls intended for use in the Scene View. Just as EditorGUI.IntField will draw a control that lets the user edit a single integer, we have functions like:Vector3 PositionHandle(Vector3 position, Quaternion rotation);that will allow the user to edit a Vector3 value, visually, by providing a set of interactive arrows in the Scene View. And just as before, you can define your own Handle functions to draw custom user interface elements as well; dealing with mouse interaction is a little more complex, as it’s no longer enough to just check whether the mouse is inside a rectangle or not - the HandleUtility class may be of help to you there - but the basic structure and concepts are all the same.If you provide an OnSceneGUI function in your custom editor class, you can use Handle functions there to draw into the scene view, and they’ll be positioned correctly in world space as you’d expect. Though bear in mind that it is possible to use Handles in 2D contexts like custom editors, or to use GUI functions in the scene view - you just may need to do things like setting up GL matrices or calling Handles.BeginGUI() and Handles.EndGUI() to set up the context before you use them.In the case of MyCustomSlider, there were only really two pieces of information we needed to keep track of: the current value of the slider (which was passed in by the user and returned to them) and whether the user was in the process of changing the value (which we effectively used hotControl to keep track of). But what if a control needs to keep hold of more information than that?IMGUI provides a simple storage system for ‘state objects’ that are associated with a control. You define your own class for storing values, and then ask IMGUI to manage an instance of it, associated with your control’s ID. You’re only allowed one state object per control ID, and you don’t instantiate it yourself - IMGUI does that for you, using the state object’s default constructor. State objects also aren’t serialised when reloading editor code - something that happens every time your code is recompiled - so you should only be using them for short-lived stuff. (Note that this is true even if you mark your state objects as [Serializable] - the serializer simply doesn’t visit this particular corner of the heap).Here’s an example. Suppose we want a button which returns true whenever it’s pressed down, but also flashes red if you’ve been holding it down for longer than two seconds. We’ll need to keep track of the time at which the button was originally pressed; we’ll do this by storing it in a state object. So, here’s our state object class:We’ll store the time at which the mouse was pressed in ‘mouseDownAt’ when MouseDownNow() is called, and then use the IsFlashing function to tell us ‘should the button be colored red right now’ - as you can see, it will definitely not be red if it’s not the hotControl or if fewer than 2 seconds have passed since it was clicked, but after that we make it change color every 0.1 seconds.Here’s the code for the actual button control itself:Pretty straightforward - you should recognise the code in the mouseDown/mouseUp cases as being very similar to what we did for capturing the mouse in the custom slider, above. The only differences are the call to state.MouseDownNow() when pressing down the mouse, and changing GUI.color in the repaint event.The eagle-eyed amongst you might have noticed that there’s one other key difference about the repaint event - that call to style.Draw(). What’s up with that?When we were building the custom slider control, we used GUI.DrawTexture to draw the bar itself. That worked OK, but our FlashingButton needs to have a caption on it, in addition to the ‘rounded rectangle’ image that is the button itself. We could try and arrange something with GUI.DrawTexture to draw the button image and then GUI.Label on top of that to draw the caption… but we can do better. We can use the same technique that GUI.Label uses to draw itself, and cut out the middleman.A GUIStyle contains information about the visual properties of a GUI element - both basic things like the font or text color it should use, and more subtle layout properties like how much spacing to give it. All of this information is stored in a GUIStyle alongside functions to work out the width and height of some content using the style, and the functions to actually draw the content to the screen.In fact, GUIStyle doesn’t just take care of one style for a control: it can take care of rendering it in a bunch of situations that a GUI element might find itself in - drawing it differently when it’s being hovered over, when it has keyboard focus, when it’s disabled, and when it’s “active” (for example, when a button is in the middle of being pressed). You can provide the color and background image information for all of these situations, and the GUIStyle will pick the appropriate one at drawing-time based on the control ID.There’s four main ways to get hold of GUIStyles that you can use to draw your controls:- Construct one in code (new GUIStyle()) and set up the values on it.- Use one of the built-in styles from the EditorStyles class. If you want your custom controls to look like the built-in ones - drawing your own toolbars, Inspector-style controls, etc - then this is the place to look.- If you just want to create a small variation on an existing style - say, a regular button but with right-aligned text - then you can clone the styles in the EditorStyles class (new GUIStyle(existingStyle)) and then just change the properties you want to change.- Retrieve them from a GUISkin.A GUISkin is essentially a big bundle of GUIStyle objects; importantly, it can be created as an asset in your project and edited freely through the Inspector. If you create one and take a look, you’ll see slots for all the standard control types - boxes, buttons, labels, toggles, and so on - but as a custom control author, direct your attention to the ‘custom styles’ section near the bottom. Here you can set up any number of custom GUIStyle entries, giving each one a unique name, and then later you can retrieve them using GUISkin.GetStyle(“nameOfCustomStyle”). The only missing piece of the puzzle is figuring out how to get hold of your GUISkin object from code in the first place; if you keep your skin in the ‘Editor Default Resources’ folder, you can use EditorGUIUtility.LoadRequired(); alternatively, you could use a method like AssetDatabase.LoadAssetAtPath() to load from elsewhere in the project. (Just don’t put your editor-only assets somewhere that packs them into asset bundles or the Resources folder by mistake!)Armed with a GUIStyle, you can then draw a GUIContent - a mix of text, icon, and tooltip - using GUIStyle.Draw(), passing it the rectangle you’re drawing into, the GUIContent you want to draw, and the control ID that should be used to figure out whether the content has things like keyboard focus.You’ll have noticed that all of the GUI controls we’ve discussed and written so far include a Rect parameter that determines the control’s position on screen. And, now that we’ve discussed GUIStyle, you might have paused when I said that a GUIStyle includes “layout properties like how much spacing it needs.” You might be thinking: “uh oh. Does this mean we have to do a bunch of work to calculate our Rect values so that the spacing values are respected?”That’s certainly an approach which is available to us; but there’s an easier way. IMGUI includes a ‘layouting’ mechanism which can automatically calculate appropriate Rect values for our controls, taking things like spacing into account. So how does it work?The trick is an extra EventType value for controls to respond to: EventType.Layout. IMGUI sends the event to your GUI code, and the controls you invoke respond by calling IMGUI layout functions - GUILayoutUtility.GetRect(), GUILayout.BeginHorizonal / Vertical, and GUILayout.EndHorizontal / Vertical, amongst others - which IMGUI records, effectively building up a tree of the controls in your layout and the space they require. Once it’s finished and the tree is fully built, IMGUI then does a recursive pass over the tree, calculating the actual widths and heights of elements and where they are in relation to one another, positioning successive controls next to one another and so on.Then, when it’s time to do an EventType.Repaint event - or indeed any other kind of event - controls call the same IMGUI layout functions. Only this time, instead of recording the calls, IMGUI ‘plays back’ the calls it previously recorded on the Layout event, returning the rectangles it computed; having called GUILayoutUtility.GetRect() during the layout event to register that you need a rectangle, you call it again during the repaint event and it actually returns the rectangle you should use.Like with control IDs, this means you need to be consistent about the layout calls you make between Layout events and other events - otherwise you’ll end up retrieving computed rectangles for the wrong controls. It also means that the values returned by GUILayoutUtility.GetRect() during a Layout event are useless, because IMGUI won’t actually know the rectangle it’s supposed to give you until the event has completed and the layout tree has been processed.What does this look like for our custom slider control? We can actually write a Layout-enabled version of our control really easily, as once we’ve got a rectangle back from IMGUI we can just call the code we already wrote:The call to GUILayoutUtility.GetRect will do two things: during a Layout event, it will record that we want to use the given style to draw some empty content - empty because there is no specific text or image that we need to make room for - and during other events, it will retrieve an actual rectangle for us to use. This does mean that during a layout event we’re calling MyCustomSlider with a bogus rectangle, but it doesn’t matter - we still need to do it, in order to make sure that the usual calls are made to GetControlID(), and the rectangle isn't actually used for anything in there during a Layout event.You might be wondering how IMGUI can actually work out the size of the slider, given ‘empty’ content and just a style. It’s not a lot of information to go on - we’re relying on the style having all the necessary information specified, that IMGUI can use to work out the rectangle to assign. But what if we wanted to let the user control that - or, say, to use a fixed height from the style but let the user control the width. How would we do that?The answer is in the GUILayoutOption class. Instances of this class represent directives to the layout system that a particular rectangle should be calculated in a particular way; for example, “should have height 30” or “should expand horizontally to fill the space” or “must be at least 20 pixels wide.” We create them by calling factory functions in the GUILayout class - GUILayout.ExpandWidth(), GUILayout.MinHeight(), and so on - and pass them to GUILayoutUtility.GetRect() as an array. They’re stored into the layout tree and taken into account when the tree is processed at the end of the layout event.To make it easy for the user to provide as few or as many GUILayoutOption instances as they like without having to create and manage their own arrays, we take advantage of the C# ‘params’ keyword, which lets you call a method passing any number of parameters, and have those parameters arrive within the method packed into an array automatically. Here’s our modified slider now:As you can see, we just take whatever the user’s given us and pass it onwards to GetRect.The approach we’ve used here - of wrapping a manually-positioned IMGUI control function in an auto-layouting version - works for pretty much any IMGUI control, including the built-in ones in the GUI class. In fact, the GUILayout class uses exactly this approach to provide auto-layouted versions of the controls in the GUI class (and we offer a corresponding EditorGUILayout class to wrap controls in the EditorGUI class). You might want to follow this twin-class convention when building your own IMGUI controls.It’s also completely viable to mix auto-layouted and manually positioned controls. You can call GetRect to reserve a chunk of space, and then do you own calculations to divide that rectangle up into sub-rectangles that you then use to draw multiple controls; the layout system doesn’t use control IDs in any way, so there’s no problem with having multiple controls per layout rectangle ( or even multiple layout rectangles per control). This can sometimes be much faster than using the layout system fully.Also, note that if you’re writing PropertyDrawers, you should not use the layout system; instead, you should just use the rectangle passed to your PropertyDrawer.OnGUI() override. The reason for this is that under the hood, the Editor class itself does not actually use the layout system, for performance reasons; it just calculates a simple rectangle itself, moving it down for each successive property. So, if you did use the layout system in your PropertyDrawer, it wouldn’t have any knowledge of any of the properties that had been drawn before yours, and would end up positioning you on top of them. Which is not what you want!So far, everything we’ve discussed would equip you to build your own IMGUI control that would work pretty smoothly. There’s just a couple more things to discuss for when you really want to polish what you’ve built to the same level as the Unity built-in controls.The first is the use of SerializedProperty. I don’t want to go into the SerializedProperty system in too much detail in this post - we’ll leave that for another time - but just to summarize quickly: A SerializedProperty ‘wraps’ a single variable handled by Unity’s serialization (load and save) system. Every variable on every script you write that shows up in the Inspector - as well as every variable on every engine object that you see in the Inspector - can be accessed via the SerializedProperty API, at least in the Editor.SerializedProperty is useful because it doesn’t just give you access to the variable’s value, but also information like whether the variable’s value is different to the value on a prefab it came from, or whether a variable with child fields (e.g. a struct) is expanded or collapsed in the Inspector. It also integrates any changes you make to the value into the Undo and scene-dirtying systems. It lets you do this without ever actually creating the managed version of your object, too, which can help performance greatly. So, if we want our IMGUI controls to play nice and easy with a slew of editor functionality - undo, scene dirtying, prefab overrides, etc - we should make sure we support SerializedProperty.If you look through the EditorGUI methods that take a SerializedProperty as an argument, you’ll see the signature is slightly different. Instead of the ‘take a float, return a float’ approach of our previous custom slider, SerializedProperty-enabled IMGUI controls just take a SerializedProperty instance as an argument, and don’t return anything. That’s because any changes they need to make to the value, they just apply directly to the SerializedProperty themselves. So our custom slider from before can now look like this:The ‘value’ parameter we used to have is gone, along with the return value, and instead, the ‘prop’ parameter is there to pass in the SerializedProperty. To retrieve the current value of the property in order to draw the slider bar, we just access prop.floatValue, and when the user changes the slider position we just assign to prop.floatValue.Having the whole SerializedProperty present in the IMGUI control code has other benefits, though. For example, consider the way that modified properties in prefab instances are shown in bold. Just check the prefabOverride property on the SerializedProperty, and if it’s true, do whatever you need to do to display the control differently. Happily, if making text bold really is all you want to do, then IMGUI will take care of that for you automatically as long as you don’t specify a font in your GUIStyle when you draw. (If you do specify a font in your GUIStyle, then you’re going to need to take care of this yourself - having regular and bold versions of your font and selecting between them based on prefabOverride when you want to draw).The other major feature you need is support for multi-object editing - i.e. handling things gracefully when your control needs to display multiple values simultaneously. Test for this by checking the value of EditorGUI.showMixedValue; if it’s true, your control is being used to depict multiple different values simultaneously, so do whatever you need to do to indicate that.Both the bold-on-prefabOverride and showMixedValue mechanisms require that context for the property has been set up using EditorGUI.BeginProperty() and EditorGUI.EndProperty(). The recommended pattern is to say that if your control method takes a SerializedProperty as an argument, then it will make the calls to BeginProperty and EndProperty itself, while if it deals with ‘raw’ values - similar to, say, EditorGUI.IntField, which takes and returns ints directly and doesn’t work with properties - then the calling code is responsible for calling BeginProperty and EndProperty. (It makes sense, really, because if your control is dealing with 'raw' values then it doesn't have a SerializedProperty value it can pass to BeginProperty anyway).I hope this post has shed some light on some of the core parts of IMGUI that you’ll need to understand if you want to really take your editor customisation to the next level. There’s more to cover before you can be an Editor guru - the SerializedObject / SerializedProperty system, the use of CustomEditor versus EditorWindow versus PropertyDrawer, the handling of Undo, etc - but IMGUI plays a large part in unlocking Unity’s immense potential for creating custom tools - both with a view to selling on the Asset Store, and with a view to empowering developers on your own teams.Give me your questions and feedback in the comments!]]></description><link>https://unity.com/blog/engine-platform/imgui-and-editor-customization</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/imgui-and-editor-customization</guid><pubDate>Tue, 22 Dec 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Bedroom demo: Archviz with SSRR]]></title><description><![CDATA[We also wanted to see how an architectural interior would look in Unity and what level of visual quality we could get from our latest technology. Here is a video preview of the result we got:Conveniently, there are some very useful online asset libraries for high quality architectural models and scenes, and they come with very affordable prices, so we just grabbed a scene that seemed suitable for the job and quickly set it up in Unity:Most of the assets are used directly as-is, with some minor adjustments, mainly adding lightmap UV’s and the occasional optimisation of the high-poly meshes.We thought it would be nice to be able to change colour and textures of some objects, so we added a simple interface that allows you to do that. For the additional textures of floors and wallpapers, we used again an online library.Setting up the lighting in Unity is quite simple. We have an environment HDR cubemap for the exterior, directional light for the sun, and a spot light in each lamp.This was rather straightforward, but it also brought up the need for lightprobe cages. We made a temporary solution of our own for this scene, and at the same time elevated the need to our R&D team. The feature is now in development to go properly into Unity.Lightprobe cages allow for transferring lighting information to large dynamic objects, or in cases where baked lightmaps cannot be used. We use them for a number of objects in our scene: blankets on the bed, rug on the floor, etc.In the interface we also included the ability to move the lighting, so that it’s easy to observe the effects of the realtime global illumination in Unity. It makes for a nice, soft, realistic lighting in the scene, which is a good idea when an interior designer or an archviz artist wants to present their work in the best possible way.The reflective surfaces around the scene made for a good study of the behavior of our screen-space reflections.These are the settings we used:We also use a single realtime reflection probe which updates dynamically as lighting and materials change.The Bedroom demo was shown at Unite Boston in September this year, and was available to all visitors to interact with and try for themselves.We are now happy to ship the player publicly. You are welcome to download it for Windows (requires DX11) or OSX (requires OpenGL 4); download size: 337 MB. And here is an alternative download link. You can choose among different quality settings.Note: We are not releasing the project for copyright reasons, as this demo is built entirely with library assets. Here is the original scene from the Evermotion Store.]]></description><link>https://unity.com/blog/engine-platform/bedroom-demo-archviz-with-ssrr</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/bedroom-demo-archviz-with-ssrr</guid><pubDate>Tue, 10 Nov 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Awesome Realtime GI on desktops and consoles]]></title><description><![CDATA[We've teamed up with Alex Lovett again and built The Courtyard, a demo that puts the Precomputed Realtime GI features in Unity 5 to good use. He previously built the Shrine Arch-viz demo. This time, however, the goal was to build a demo aimed at game developers requiring realtime frame rates. Check out this video:Alex built the demo in about 8 weeks using Unity 5.2 off the shelf without any additional packages from the Asset Store - everything was built from scratch.The demo relies on Precomputed Realtime GI and realtime lighting throughout. It has a full time-of-day cycle, emissive geometry, about 100 animated spotlights that come alive at night, as well as a number of floodlights on stands and an optional player flashlight. The time-of-day cycle uses an animated skybox that is synchronized with the sun in order to capture the subtle lighting changes. In the playable demo we are now making available to you (see below), a UI has been added that allows you to control all of these lighting features in-game. Here are a few shots from the scene at different times of day:The scene was created to be especially demanding in terms of lighting. A significant part of it is lit only by bounced light, and when the sun has set it is lit almost entirely by bounced light.The realtime GI system works by precomputing all of the possible paths that light can take between static objects in the scene. This makes it possible to tweak the lighting in realtime, without interruption, because the system already has all the information it needs to quickly calculate the consequences of lighting changes. However, this means that static objects should not be modified, because doing so would require precomputing all the paths again. Given this, it makes sense to author levels in stages: geometry then lighting (and then repeat if necessary). Haphazardly moving static geometry around and adjusting lighting at the same time will require many lighting builds. We are working on more progressive and interactive lighting workflows for Unity 5.x. More details on this will follow in a separate blog post.The demo was built with desktop PCs and consoles in mind, see the blogpost on GI in Unity 5 covering the Transporter demo for Realtime GI use on mobile platforms.The Realtime GI system in Unity 5 is powered by Geomerics Enlighten and is designed for use in games. All the lighting computations are performed asynchronously on CPU worker threads; because games are usually GPU bound, the extra CPU work has very little impact on overall frame rate. Also, only the areas where the lighting has changed are recomputed.The lighting latency in the game is dependent on the resolution chosen for the realtime indirect lightmaps. In this demo Alex set the resolution to be relatively low - in order to be responsive - but such that it still captures the desired lighting fidelity and subtleties in the indirectly lit areas.The indirect lightmap resolution was:One texel every two units (i.e. 0.5 texels per unit) in the central areas.One texel every 10 units in dunes close to the central area.One texel every 32 units in dunes in the outer areas.In order to balance the resolutions, an overall baseline of 0.25 texels per unit was set on the scene. Then, multipliers were added using custom lightmap parameters to give some really nice lighting and a precompute time of just 15 minutes.The following screenshots show a shaded overview of the scene, the Enlighten systems generated, the UV charting view (showing the resolution of the indirect lightmaps), the clusters (responsible for emitting bounce lighting), the bounced lighting, and the lighting directionality (used for lighting off axis geometry and specular)Care was taken to provide good lightmapping UVs. In some cases they were carefully authored to make sure that the models perform well for both lighting builds and the runtime. One specific instance of this is the staircase model.Staircases can be difficult to get right, since at large texel sizes a texel can cover more that a single step. This can cause lighting levels to vary unexpectedly between the steps. On the other hand, using many texels for the steps becomes expensive in terms of performance. The staircase used in this scene also had bevels, which can really throw off the unwrapping and packing for realtime GI and generate many unnecessary charts taking up texel space. The initial staircase design looked like this in realtime GI UV layout:This takes up a 70x72 texel realtime lightmap. There are two problems with this layout. Firstly, it uses too many texels per step (4x4); secondly the bevels are split into separate charts that also take up a minimum of 4x4 texels. Why can each chart not just use 1 texel? Firstly, Enlighten is optimized to use 2x2 texel blocks when processing the textures in the runtime, so every chart must be at least 2x2 texels. Secondly, Enlighten includes a stitching feature where charts can be stitched together to allow smooth results on, for example, spheres and cylinders; this feature requires that a chart have separate directionality information at each edge. Directionality information is only stored on a per-block basis, so a stitchable chart will always need a minimum of 2x2 blocks - becoming a minimum of 4x4 texels. Since no stitching is needed for the staircase, 2x2 texel charts suffice.We have introduced an option for this in the Object properties of the lighting panel:The value can either be 4, which works well for stitching in a setting that uses directionality, or 2 which is more compact. Setting the minimum chart size option to 2 reduces the texel density significantly - now the model fits in a 44x46 texel realtime lightmap:The bevels are still taking up unnecessary chart space. This is somewhat unexpected as bevels and steps have been authored such that the bevel is part of the step in UV space. The image below shows the UV borders overlaid on the model. Notice how the bevels are integrated into the steps:In the 2D view of the lightmapping UVs the bevels do not show up. This is because they have been collapsed into the step charts so they do not have any area in UV space. This is done to avoid that the lighting simulation takes the sloped bevels into account.]]></description><link>https://unity.com/blog/games/awesome-realtime-gi-on-desktops-and-consoles</link><guid isPermaLink="true">https://unity.com/blog/games/awesome-realtime-gi-on-desktops-and-consoles</guid><pubDate>Thu, 05 Nov 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[IL2CPP internals: Testing frameworks]]></title><description><![CDATA[The IL2CPP team has a strong test-first development mentality. Much of the code for IL2CPP is written using the practice of Test Driven Development (TDD), and very few pull requests are merged to the IL2CPP code without significant test coverage.Since IL2CPP has a finite (although rather large) set of inputs - the ECMA 335 spec- the process of developing it fits nicely with TDD concepts. Most of tests are written before production code, and these tests always need to fail in an expected way before the code to make them pass is written.This process helps to drive the design of IL2CPP, but it also provides the development team with a large bank of tests which run rather quickly and exercise nearly all of the existing behavior in IL2CPP. As a development team, this test suite provides two important benefits.1) Confidence: Most changes to refactor code in IL2CPP can be made with high confidence. If the tests pass, it is very unlikely that a regression has been introduced.2) Troubleshooting: Since the code in IL2CPP behaves as we expect it to, bugs are almost always unimplemented sections of the code or cases we have not yet considered. By scoping down the space of possible causes of a given bug this way, we can correct bugs much more quickly.The various types of tests that we run against the IL2CPP code base break down into a few different levels. Here are the number of tests we current have a each level (I’ll discuss what each type of test actually is below).Unit testsC#: 472C++: 44Integration testsC#: 1735IL: 173If all of these tests are green, then we feel confident that we can ship IL2CPP at that moment. We maintain one main development branch for IL2CPP, which always tracks the leading edge branch for development in Unity as a whole. The tests are always green on this main development branch. When they break (which does happen once in a while), someone usually fixes them within a few minutes.Since developers on our team are forking this main branch for personal development often, it needs to be green at all times. The build and test status for both the main development branch and personal branches are maintained on Katana, Unity’s internal build management system.We use NUnit to run all of these tests and the drive NUnit in one of three different waysWindows: ReSharperOSX: Xamarin StudioCommand line on Windows and OSX on our build machines: a custom Perl scriptTypes of testsI mentioned four different types of tests above without much explanation. Each of these types of tests serves a different purpose, and they all work together to help keep IL2CPP development moving forward.The unit tests verify the behavior of a small bit of code, typically a method. They set up a situation, execute the code under test, and finally assert some expected behavior.The integration tests for IL2CPP actually run the il2cpp.exe utility on an assembly, compile the generated C++ code to an executable, then run the executable. Since we have a nice reference for IL2CPP behavior (the existing version of Mono used in Unity), these integration tests also run the same assembly with Mono (and .Net, on Windows). Our test runner then compares the results of the two (or three) runs dumped to standard output and reports any differences. So the IL2CPP integration tests don’t have explicit expected values or assertions listed in the test code like the unit tests do.C# unit testsThese tests are the fastest, and lowest level tests that we write. They are used to verify the behavior of many parts of il2cpp.exe, the AOT compiler utility for IL2CPP. Since il2cpp.exe is written entirely in C#, we can use fast C# unit tests to get good turn-around time for changes. All of the C# unit tests complete in a few seconds on a nice development machine.C++ unit testsThe vast majority of the runtime code for IL2CPP (called libil2cpp) is written in C++. For parts of that code which are not easily accessible from a public API, we use C++ unit tests. We have relatively few of these tests, as most of the behavior of code in libil2cpp can be exercised via our larger integration test suite. These tests to require more time than you might expect for unit tests to run, as they need to run il2cpp.exe itself to set up their fixture data.C# integration testsThe largest and most comprehensive test suite for IL2CPP is the C# integration test suite. These tests a divided into smaller segments, focusing on tests that verify behavior of icalls, code generation, p/invoke, and general behavior. Most of the tests in this suite are rather short, only about 5 - 10 lines long. The entire suite runs in less than one minute on most machines, but we can run it with various IL2CPP options related to things like stripping and code generation.IL integration testsThese tests are similar in toolchain to the C# integration tests. However, instead of writing the test code in C#, we use the ILGenerator class to directly create an assembly. Although these tests can take a bit more time to write than C# tests, they offer increased flexibility. Often we run into problems with IL code that is invalid or not generated by our current Mono C# compiler. In these cases, we can often write a good test case with IL code. The tests are also beneficial for comprehensive testing of opcodes like conv.i (and similar opcodes in its family) which have clear behavior with many slight variations. All of the IL tests complete end to end in less than one minute.We run all of these tests through many variations and options on Katana. From a clean pull of the source code to completed test runs, we see about 20-30 minutes of runtime depending on the load on the build farm.Based on these descriptions, it might seem like our test pyramid for IL2CPP is upside down. And indeed, the end-to-end integration tests (near the top of the pyramid) make up most of our test coverage.Following TDD practice with test times more than a few seconds can be difficult as well. We work to mitigate this by allowing individual segments of the integration test suites to run, and by doing incremental building of the C++ code generated in the test suites (this is how we are proving out some incremental building possibilities for Unity projects with IL2CPP, so stay tuned). Then the turn-around time for an individual test is reasonable (although still not as fast as we would like).This heavy use of integration tests was a conscious decision though. Much of the code in IL2CPP looks different than it used to, even at our initial public releases in January of 2015. We have learned plenty and changed many of the implementation details in the IL2CPP code base since its inception, but we still have many of the original tests written years ago. After trying out tests at a number of different levels (including even validating the content of the generated C++ source code), we decided that these integration tests give us the best runtime to test stability ratio. Seldom, if ever, do we need to modify one of the existing integration tests when something changes in the IL2CPP code. This fact gives us tremendous confidence that a code change which causes a test to fail is really a problem. It also let’s us refactor and improve the IL2CPP code as much as we need to without fear.Outside of IL2CPP itself, the IL2CPP code fits into the much larger Unity testing ecosystem. For each platform we ship supporting IL2CPP, we execute the Unity player runtime tests. These tests build up a single Unity project with more than 1000 scenes, then execute each scene and validate expected behavior via assertions. We usually don’t add new tests to this suite for IL2CPP changes (those tests usually end up being at a lower level). This suite serves as a check against regressions that we might introduce with IL2CPP on a given platform. This suite also allows us to test the code used in integration IL2CPP into the Unity build toolchain, which again varies for each platform. A typical runtime test suite completes on about 60-90 minutes, although we often execute individual tests locally much faster.The largest and slowest tests we use for IL2CPP are Unity editor integration tests. Each of these tests actually runs a different instance of the Unity editor. Most of the IL2CPP editor integration tests focus on building a running a project, usually with various editor build settings. We use these tests to verify things like complex editor integration, error message reporting, and project build size (among many others). Depending on the platform, integration test suites run in a few hours, and usually are executed at least nightly, if not more often.At Unity, one of our guiding principles is “solve hard problems”. I like to think about the difficulty of problems in terms of failure. The more difficult a problem is to solve, the more failures I need accomplish before I can find the solution.Creating a new highly-performant, highly-portable AOT compiler and virtual machine to use as a scripting backend in Unity is a difficult problem. Needless to say, we’ve accomplished thousands of failures along the way. There are more problems to solve, and so more failures to come. But by capturing the useful information from almost all of those failures in a comprehensive and fast test suite, we can iterate very quickly.For the IL2CPP developers, our test suite is not so much a means to verify bug-free code (although it does catch bugs), or to help port IL2CPP to multiple platforms (it does that too), but rather, it is a tool we can use to fail fast and solve hard problems so our users can focus on creating beautiful things.We hope that you have enjoyed the IL2CPP Internals series of posts. We’re happy to share implementation details and provide debugging and performance hints when we can. Let us know if you want to hear more about other topics related to the design and implementation of IL2CPP.]]></description><link>https://unity.com/blog/engine-platform/il2cpp-internals-testing-frameworks</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/il2cpp-internals-testing-frameworks</guid><pubDate>Mon, 20 Jul 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[IL2CPP internals: Garbage collector integration]]></title><description><![CDATA[As with all of the posts in this series, this post deals with implementation details that can and likely will change in the future. In this post we will specifically look at some internal APIs used by the runtime code to communicate with the garbage collector. These APIs are not publicly supported, and you should not attempt to call them from any code in a real project. But, this is a post about internals, so let’s dig in.I won’t discuss general garbage collection techniques in this post, as it is a wide and varied subject, with plenty of existing research and published information. To follow along, just think of a GC as an algorithm that develops a directed graph of object references. If an object Child is used by an object Parent (via a pointer in native code), then the graph looks like this:As the GC scans through the memory for a process, it looks for objects which don’t have parent. If it finds one, then it can reuse the memory for that object on something else.Of course, most object will have a parent of some sort, so the GC really needs to know which objects are the important parents. I like to think of these as the objects that are actually in use by your program. In GC terminology, these are called the “roots”. Here is an example of a parent without a root.In this case, Parent 2 does not have a root, so the GC can reuse the memory from Parent 2 and Child 2. Parent 1 and Child 1, however, do have a root, so the GC cannot reuse their memory. The program is still using them for something.For .NET, there are three kinds of roots:- Local variables on the stack of any thread executing managed code- Static variables- GCHandle objectsWe’ll see how IL2CPP communicates with the garbage collector about all three of these kinds of roots.For this post, I’m using Unity 5.1.0p1 on OSX, and I’m building for the iOS platform. This will allow us to use Xcode to have a look at how IL2CPP interacts with the garbage collector. As with the other posts in this series, I’ll use an example project with a single script:I have enabled the “Development Build” in the Build Settings dialog, and I set the “Run in Xcode as” option to a value of “Debug”. In the generated Xcode project, first search for the string “Start_m”. You should see the generated code for the Start method in the the HelloWorld class named HelloWorld_Start_m3.Add a breakpoint in the HelloWorld_Start_m3 function on the line where Thread_Start_m9 is called. This method will create a new managed thread, so we expect that thread to be added to the GC as a root. We can see where this happens by exploring the libil2cpp header files that ship with Unity. In the Unity installation open the Contents/Frameworks/il2cpp/libil2cpp/gc/gc-internal.h file. This file has a number of methods prefixed with il2cpp_gc_ it serves as part of the API between the libil2cpp runtime and the garbage collector. Note that this is not a public API, so please don’t call these methods from any real project code. They are subject to change or removal without notice.Let’s create a breakpoint in Xcode on the il2cpp_gc_register_thread function, using Debug > Breakpoints > Create Symbolic Breakpoint.If you then run the project in Xcode, you’ll notice that the breakpoint is hit almost immediately. We can’t see the source code here, as it is built in the libil2cpp runtime static library, but we can see from the call stack that this thread is created in the InitializeScriptingBackend method, which executes when the player starts.We will actually see this breakpoint hit a number of times, as the player creates each managed thread used internally. For now, you can disable this breakpoint in Xcode and allow the project to continue. We should hit the breakpoint we set earlier in the HelloWorld_Start_m3 method.Now we are just about to start the managed thread created by our script code, so enable the breakpoint on il2cpp_gc_register_thread again. When we hit that breakpoint, the first thread is waiting to join our created thread, but the call stack for the created thread shows that we are just starting it:When a thread is registered with the garbage collector, the GC treats all objects on the local stack for that thread as roots. Let’s look at the generated code for the method we run on that thread (HelloWorld_AnotherThread_m4) :We can see one local variable, L_0, which the GC must treat as a root. During the (short) lifetime of this thread, this instance of the AnyClass object and any other objects it references cannot be reused by the garbage collector. Variables defined on the stack are the most common kind of GC roots, as most objects in a program start off from a local variable in a method executing on a managed thread.When a thread exits, the il2cpp_gc_unregister_thread function is called to tell the GC to stop treating the objects on the thread stack as roots. The GC can then work on reusing the memory for the AnyClass object represented in native code by L_0.Some variables don’t live on thread call stacks though. These are static variables, and they also need to be handled as roots by the garbage collector.When IL2CPP lays out the native representation of a class, it groups all of the static fields together in a different C++ structure from the instance fields in the class. In Xcode, we can jump to the definition of the HelloWorld_t2 class:Note that IL2CPP does not use the C++ static keyword, as it needs to be in control of the layout and allocation of the static fields to properly communicate with the GC. When a type is first used at runtime, the libil2cpp code will initialize the type. Part of this initialization involves allocating memory for the HelloWorld_t2_StaticFields structure. This memory is allocated with a special call into the GC: il2cpp_gc_alloc_fixed (also in the gc-internal.h file).This call informs the garbage collector to treat the allocated memory as a root, and the GC dutifully does this for the lifetime of the process. It is possible to set a breakpoint on the il2cpp_gc_alloc_fixed function in Xcode, but it is called rather often (even for this simple project), so the breakpoint is not too useful.Suppose that you don’t want to use a static variable, but you still want a bit more control over when the garbage collector is allowed to reuse the memory for an object. This is usually helpful when you need to pass a pointer to a managed object from managed to native code. If the native code will take ownership of that object, we need to tell the garbage collector that the native code is now a root in its object graph. This works by using a special managed object called a GCHandle.The creation of a GCHandle informs the runtime code that a given managed object should be treated as a root in the GC so that it and any objects it references will not be reused. In IL2CPP, we can see the low-level API to accomplish this in the Contents/Frameworks/il2cpp/libil2cpp/gc/GCHandle.h file. Again, this is not a public API, but it is fun to investigate. Let’s put a breakpoint on the GCHandle::New function. If we let the project continue then, we should see this call stack:Notice that the generated code for our Start method is calling GCHandle_Alloc_m11, which eventually creates a GCHandle and informs the garbage collector that we have a new root object.We’ve looked at some internal API methods to see how the IL2CPP runtime interacts with the garbage collector, letting it know which objects are the roots it should preserve. Note that we have not talked at all about which garbage collector IL2CPP uses. It is currently using the Boehm-Demers-Weiser GC, but we have worked hard to isolate the garbage collector behind a clean interface. We currently have plans to research integration of the open-source CoreCLR garbage collector. We don’t have a firm ship date yet for this integration, but watch our public roadmap for updates.As usual, we’ve just scratched the surface of the GC integration in IL2CPP. I encourage you to explore more about how IL2CPP and the GC interact. Please share your insights as well.Next time, we will wrap up the IL2CPP internals series by looking at how we test the IL2CPP code.]]></description><link>https://unity.com/blog/engine-platform/il2cpp-internals-garbage-collector-integration</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/il2cpp-internals-garbage-collector-integration</guid><pubDate>Thu, 09 Jul 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[IL2CPP internals: P/Invoke Wrappers]]></title><description><![CDATA[I’ve written a good bit of managed to native interop code in my days, but getting p/invoke declarations right in C# is still difficult, to say the least. Understanding what the runtime is doing to marshal my objects is even more of a mystery. Since IL2CPP does most of its marshaling in generated C++ code, we can see (and even debug!) its behavior, providing much better insight for troubleshooting and performance analysis.This post does not aim to provide general information about marshaling and native interop. That is a wide topic, too large for one post. The Unity documentation discusses how native plugins interact with Unity. Both Mono and Microsoft provide plenty of excellent information about p/invoke in general.As with all of the posts in this series, we will be exploring code that is subject to change and, in fact, is likely to change in a newer version of Unity. However, the concepts should remain the same. Please take everything discussed in this series as implementation details. We like to expose and discuss details like this when it is possible though!For this post, I’m using Unity 5.0.2p4 on OSX. I’ll build for the iOS platform, using an “Architecture” value of “Universal”. I’ve built my native code for this example in Xcode 6.3.2 as a static library for both ARMv7 and ARM64.The native code looks like this:The scripting code in Unity is again in the HelloWorld.cs file. It looks like this:Each of the method calls in this code are made into the native code shown above. We will look at the managed method declaration for each method as we see it later in the post.Since IL2CPP is already generating C++ code, why do we need marshaling from C# to C++ code at all? Although the generated C++ code is native code, the representation of types in C# differs from C++ in a number of cases, so the IL2CPP runtime must be able to convert back and forth from representations on both sides. The il2cpp.exe utility does this both for types and methods.In managed code, all types can be categorized as either blittable or non-blittable. Blittable types have the same representation in managed and native code (e.g. byte, int, float). Non-blittable types have a different representation in managed and native code (e.g. bool, string, array types). As such, blittable types can be passed to native code directly, but non-blittable types require some conversion before they can be passed to native code. Often this conversion involves new memory allocation.In order to tell the managed code compiler that a given method is implemented in native code, the extern keyword is used in C#. This keyword, along with a DllImport attribute, allows the managed code runtime to find the native method definition and call it. The il2cpp.exe utility generates a wrapper C++ method for each extern method. This wrapper performs a few important tasks:- It defines a typedef for the native method which is used to invoke the method via a function pointer.- It resolves the native method by name, getting a function pointer to that method.- It converts the arguments from their managed representation to their native representation (if necessary).- It calls the native method.- It converts the return value of the method from its native representation to its managed representation (if necessary).- In converts any out or ref arguments from from their native representation to their managed representation (if necessary).We’ll take a look at the generated wrapper methods for some extern method declarations next.The simplest kind of extern wrapper only deals with blittable types.First, note the typedef for the native function signature:Something similar will show up in each of the wrapper functions. This native function accepts a single int32_t and returns an int32_t.Next, the wrapper finds the proper function pointer and stores it in a static variable:Here the Increment function actually comes from an extern statement (in the C++ code):On iOS, native methods are statically linked into a single binary (indicated by the “__Internal” string in the DllImport attribute), so the IL2CPP runtime does nothing to look up the function pointer. Instead, this extern statement informs the linker to find the proper function at link time. On other platforms, the IL2CPP runtime may perform a lookup (if necessary) using a platform-specific API method to obtain this function pointer.Practically, this means that on iOS, an incorrect p/invoke signature in managed code will show up as a linker error in the generated code. The error will not occur at runtime. So all p/invoke signatures need to be correct, even with they are not used at runtime.Finally, the native method is called via the function pointer, and the return value is returned. Notice that the argument is passed to the native function by value, so any changes to its value in the native code will not be available in the managed code, as we would expect.Things get a little more exciting with a non-blittable type, like string. Recall from an earlier post that strings in IL2CPP are represented as an array of two-byte characters encoded via UTF-16, prefixed by a 4-byte length value. This representation does not match either the char* or wchar_t* representations of strings in C on iOS, so we have to do some conversion. If we look at the StringsMatch method (HelloWorld_StringsMatch_m4 in the generated code):We can see that each string argument will be converted to a char* (due to the UnmangedType.LPStr directive).The conversion looks like this (for the first argument):A new char buffer of the proper length is allocated, and the contents of the string are copied into the new buffer. Of course, after the native method is called we need to clean up those allocated buffers:So marshaling a non-blittable type like string can be costly.Simple types like int and string are nice, but what about a more complex, user defined type? Suppose we want to marshal the Vector structure above, which contains three float values. It turns out that a user defined type is blittable if and only if all of its fields are blittable. So we can call ComputeLength (HelloWorld_ComputeLength_m5 in the generated code) without any need to convert the argument:Notice that the argument is passed by value, just as it was for the initial example when the argument type was int. If we want to modify the instance of Vector and see those changes in managed code, we need to pass it by reference, as in the SetX method (HelloWorld_SetX_m6):Here the Vector argument is passed as a pointer to native code. The generated code goes through a bit of a rigmarole, but it is basically creating a local variable of the same type, copying the value of the argument to the local, then calling the native method with a pointer to that local variable. After the native function returns, the value in the local variable is copied back into the argument, and that value is available in the managed code then.A non-blittable user defined type, like the Boss type defined above can also be marshaled, but with a little more work. Each field of this type must be marshaled to its native representation. Also, the generated C++ code needs a representation of the managed type that matches the representation in the native code.Let’s take a look at the IsBossDead extern declaration:The wrapper for this method is named HelloWorld_IsBossDead_m7:The argument is passed to the wrapper function as type Boss_t2, which is the generated type for the Boss struct. Notice that it is passed to the native function with a different type: Boss_t2_marshaled. If we jump to the definition of this type, we can see that it matches the definition of the Boss struct in our C++ static library code:We again used the UnmanagedType.LPStr directive in C# to indicate that the string field should be marshaled as a char*. If you find yourself debugging a problem with a non-blittable user-defined type, it is very helpful to look at this _marshaled struct in the generated code. If the field layout does not match the native side, then a marshaling directive in managed code might be incorrect.The Boss_t2_marshal function is a generated function which marshals each field, and the Boss_t2_marshal_cleanup frees any memory allocated during that marshaling process.Finally, we will explore how arrays of blittable and non-blittable types are marshaled. The SumArrayElements method is passed an array of integers:This array is marshaled, but since the element type of the array (int) is blittable, the cost to marshal it is very small:The il2cpp_codegen_marshal_array function simply returns a pointer to the existing managed array memory, that’s it!However, marshaling an array of non-blittable types is much more expensive. The SumBossHealth method passes an array of Boss instances:It’s wrapper has to allocate a new array, then marshal each element individually:Of course all of these allocations are cleaned up after the native method call is completed as well.The IL2CPP scripting backend supports the same marshalling behaviors as the Mono scripting backend. Because IL2CPP produces generated wrappers for extern methods and types, it is possible to see the cost of managed to native interop calls. For blittable types, this cost is often not too bad, but non-blittable types can quickly make interop very expensive. As usual, we’ve just scratched the surface of marshaling in this post. Please explore the generated code more to see how marshaling is done for return values and out parameters, native function pointers and managed delegates, and user-defined reference types.Next time we will explore how IL2CPP integrates with the garbage collector.]]></description><link>https://unity.com/blog/engine-platform/il2cpp-internals-pinvoke-wrappers</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/il2cpp-internals-pinvoke-wrappers</guid><pubDate>Thu, 02 Jul 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[IL2CPP Internals: Generic sharing implementation]]></title><description><![CDATA[This is the fifth post in the IL2CPP Internals series. In the last post, we looked at how methods are called in the C++ code generated for the IL2CPP scripting backend. In this post, we will explore how they are implemented. Specifically, we will try to better understand one of the most important features of code generated with IL2CPP - generic sharing. Generic sharing allows many generic methods to share one common implementation. This leads to significant decreases in executable size for the IL2CPP scripting backend.Note that generic sharing is not a new idea, both Mono and .Net runtimes use generic sharing as well. Initially, IL2CPP did not perform generic sharing. Recent improvements have made it even more robust and beneficial. Since il2cpp.exe generates C++ code, we can see where the method implementations are shared.We will explore how generic method implementations are shared (or not) for reference types and value types. We will also investigate how generic parameter constraints affect generic sharing.Keep in mind that everything discussed in this series are implementation details. The topics and code discussed here are likely to change in the future. We like to expose and discuss details like this when it is possible though!What is generic sharing?Imagine you are writing the implementation for the List<T> class in C#. Would that implementation depend on the type T is? Could you use the same implementation of the Add method for List<string> and List<object>? How about List<DateTime>?In fact, the power of generics is just that these C# implementations can be shared, and the generic class List<T> will work for any T. But what happens when List is translated from C# to something executable, like assembly code (as Mono does) or C++ code (as IL2CPP does)? Can we still share the implementation of the Add method?Yes, we can share it most of the time. As we’ll discover in this post, the ability to share the implementation of a generic method depends almost entirely on the size of that type T. If T is any reference type (like string or object), then it will always be the size of a pointer. If T is a value type (like int or DateTime), its size may vary, and things get a bit more complex. The more method implementations which can be shared, the smaller the resulting executable code is.Mark Probst, the developer who implemented generic sharing Mono, has an excellent series of posts on how Mono performs generic sharing. We won’t go into that much depth about generic sharing here. Instead, we will see how and when IL2CPP performs generic sharing. Hopefully this information will help you better analyze and understand the executable size of your project.What is shared by IL2CPP?Currently, IL2CPP shares generic method implementations for a generic type SomeGenericType<T> when T is:- Any reference type (e.g. string, object, or any user defined class)- Any integer or enum typeIL2CPP does not share generic method implementations when T is a value type because the size of each value type will differ (based on the size of its fields).Practically, this means that adding a new usage of SomeGenericType<T>, where T is a reference type will have a minimal impact on the executable size. However, if T is a value type, the executable size will be impacted. This behavior is the same for both the Mono and IL2CPP scripting backends. If you want to know more, read on, it’s time to dig into some implementation details!The setupI’ll be using Unity 5.0.2p1 on Windows, and building for the WebGL platform. I’ve enabled the “Development Player” option in the build settings, and the “Enable Exceptions” option is set to a value of “None”. The script code for this post starts with a driver method to create instances of the generic types we will investigate:Next, we define the types used in this method:And all of code is nested in a class named HelloWorld derived from MonoBehaviour.If you view the command line for il2cpp.exe, note that it does not contain the --enable-generic-sharing option, as described in the first post in this series. However, generic sharing is still occurring. It is no longer optional, and happens in all cases now.Generic sharing for reference typesWe’ll start by looking at the most often occurring generic sharing case: reference types. Since all reference types in managed code derive from System.Object, all reference types in the generated C++ code derive from the Object_t type. All reference types can then be represented in C++ code using the type Object_t* as a placeholder. We’ll see why this is important in a moment.Let’s search for the generated version of the DemonstrateGenericSharing method. In my project it is named HelloWorld_DemonstrateGenericSharing_m4. We’re looking for the method definitions for the four methods in the GenericType class. Using Ctags, we can jump to the method declaration for the GenericType<string> constructor, GenericType_1__ctor_m8. Note that this method declaration is actually a #define statement, mapping the method to another method, GenericType_1__ctor_m10447_gshared.Let’s jump back, back and then find the method declarations for the GenericType<AnyClass> type. If we jump to the declaration of the constructor, GenericType_1__ctor_m9, we can see that it is also a #define statement, mapped to the same function, GenericType_1__ctor_m10447_gshared!If we jump to the definition of GenericType_1__ctor_m10447_gshared, we can see from the code comment on the method definition that this method corresponds to the managed method name HelloWorld/GenericType`1<System.Object>::.ctor(). This is the constructor for the GenericType<object> type. This type is called the fully shared type, meaning that given a type GenericType<T>, for any T that is a reference type, the implementation of all methods will use this version, where T is object.Look just below the constructor in the generated code, and you should see the C++ code for the UsesGenericParameter method:In both places where the generic parameter T is used (the return type and the type of the single managed argument), the generated code uses the Object_t* type. Since all reference types can be represented in the generated code by Object_t*, we can call this single method implementation for any T that is a reference type.In the second blog post in this series (about generated code), we mentioned that all method definitions are free functions in C++. The il2cpp.exe utility does not generate overridden methods in C# using C++ inheritance. However, il2cpp.exe does use C++ inheritance for types. If we search the generated code for the string “AnyClass_t” we can find the C++ representation of the C# type AnyClass:Since AnyClass_t1 derives from Object_t, we can pass a pointer to AnyClass_t1 as the argument to the GenericType_1_UsesGenericParameter_m10449_gshared function without problems.What about the return value though? We can’t return a pointer to a base class where a pointer to a derived class is expected, right? Take a look at the declaration of the GenericType<AnyClass>::UsesGenericParameter method:The generated code is actually casting the return value (type Object_t*) to the derived type AnyClass_t1*. So here IL2CPP is lying to the C++ compiler to avoid the C++ type system. Since the C# compiler has already enforced that no code in UsesGenericParameter does anything unreasonable with type T, then IL2CPP is safe to lie to the C++ compiler here.Generic sharing with constraintsSuppose that we want to allow some methods to be called on an object of type T? Won’t the use of Object_t* prevent that, since we don’t have many methods on System.Object? Yes, this is correct. But we first need to express this idea to the C# compiler using generic constraints.Take a look again in the script code for this post at the type named InterfaceConstrainedGenericType. This generic type uses a where clause to require that it type T be derived from a given interface, AnswerFinderInterface. This allows the ComputeAnswer method to be called. Recall from the previous blog post about method invocation that calls on interface methods require a lookup in a vtable structure. Since the FindTheAnswer method will make a direct function call on the constrained instance of type T, then the C++ code can still use the fully shared method implementation, with the type T represented by Object_t*.If we start at the implementation of the HelloWorld_DemonstrateGenericSharing_m4 function, then jump to the definition of the InterfaceConstrainedGenericType_1__ctor_m11 function, we can see that this method is again a #define, mapping to the InterfaceConstrainedGenericType_1__ctor_m10456_gshared function. If we look just below that function for the implementation of the InterfaceConstrainedGenericType_1_FindTheAnswer_m10458_gshared function, we can see that indeed, this is the fully shared version of the function, taking an Object_t* argument. It calls the InterfaceFuncInvoker0::Invoke function to actually make the call to the managed ComputeAnswer method.This all hangs together in the generated C++ code code because IL2CPP treats all managed interfaces like System.Object. This is a useful rule of thumb to help understand the code generated by il2cpp.exe in other cases as well.Constraints with a base classIn addition to interface constraints, C# allows constraints to be a base class. IL2CPP does not treat all base classes like System.Object, so how does generic sharing work for base class constraints?Since base classes are always reference types, IL2CPP uses the fully shared version of the generic methods for these types. Any code which needs to use a field or call a method on the constrained type is performs a cast in C++ to the proper type. Again, here we rely on the C# compiler to correctly enforce the generic constraint, and we lie to the C++ compiler about the type.Generic sharing with value typesLet’s jump back now to the HelloWorld_DemonstrateGenericSharing_m4 function and look at the implementation for GenericType<DateTime>. The DateTime type is a value type, so GenericType<DateTime> is not shared. We can jump to the declaration of constructor for this type, GenericType_1__ctor_m10. There we see a #define, as in the other cases, but the #define maps to the GenericType_1__ctor_m10_gshared function, which is specific to the GenericType<DateTime> class, and is not used by any other class.Thinking about generic sharing conceptuallyThe implementation of generic sharing can be difficult to understand and follow. The problem space itself is fraught with pathological cases (e.g. the curiously recurring template pattern). It can help to think about a few concepts:- Every method implementation on a generic type is shared- Some generic types only share method implementations with themselves (e.g. generic types with a value type generic parameter, GenericType above)- Generic types with a reference type generic parameter are fully shared - they always use the implementation with System.Object for all type parameters.- Generic types with two or more type parameters can be partially shared if at least one of those type parameters is a reference type.The il2cpp.exe utility always generates the fully shared method implementations for any generic type. It generates other method implementations only when they are used.Sharing of generic methodsJust as method implementations on generic types can be shared, so can method implementation for generic methods. In the original script code, notice that the UsesDifferentGenericParameter method uses a different type parameter than the GenericType class. When we looked at the shared method implementations for the GenericType class, we did not see the UsesDifferentGenericParameter method. If I search the generated code for “UsesDifferentGenericParameter” I see that the implementation of this method is in the GenericMethods0.cpp file:Notice that this the fully shared version of the method implementation, accepting the type Object_t*. Although this method is in a generic type, the behavior would be the same for a generic method in a non-generic type as well. Effectively, il2cpp.exe attempts to always generate the least code possible for method implementations involving generic parameters.ConclusionGeneric sharing has been one of the most important improvements to the IL2CPP scripting backend since its initial release. It allows the generated C++ code to be as small as possible, sharing method implementations where they do not differ in behavior. As we look to continue to decrease binary size, we will work to take advantage of more opportunities to share method implementations.In the next post, we will explore how p/invoke wrappers are generated, and how types are marshaled from managed to native code. We will be able to see the cost of marshaling various types, and debug problems with marshaling code.]]></description><link>https://unity.com/blog/engine-platform/il2cpp-internals-generic-sharing-implementation</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/il2cpp-internals-generic-sharing-implementation</guid><pubDate>Tue, 16 Jun 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity and Anime Studio Pro: The Making of Monster Mingle]]></title><description><![CDATA[When Chris O’Shea and the team at Cowly Owl had the idea for their recent game Monster Mingle, they realized that their vision requires really powerful animation tools. The team decided to use Anime Studio Pro on this project, because the new FBX export feature allowed them to bring the animations into Unity using rigged skinned meshes, rather than sprite based frames. Using animated files, Cowly Owl added expressive, fluid movement to the game. Chris shared with us his team’s Anime Studio and Unity workflow.Monster Mingle is Cowly Owl’s digital toy that lets children create their own monster, exploring a magical world full of creatures and surprises. It was created in part by Chris O’Shea with illustration & character design by Nick Stoney, animation by Wip Vernooij and sound by Resonate.First step of Cowly Owl’s workflow was rigging and animating the characters in Anime Studio Pro. Then they imported the FBX files into Unity. After that, they trimmed the animations in the import setting and added scripts to the animation timeline to control events and sounds. Where they could, they used Mesh Baker to convert the multiple meshes per model into one mesh and sprite sheet to cut down draw calls. Chris and Wip also used a double sided unlit shader on the models, so that they could be flipped in the game.Screenshot of a monster in Anime Studio side by side with Unity:For the main character, the type of legs on the monster affects the movement animation of the body. By using Anime Studio, Wip was able to animate all of the leg walk cycles with all of the bodies attached. In the game, you can change legs and bodies, so the character build controller code switches meshes on and off depending on the part chosen. Custom attachment code added further parts and animation to the body bones, attaching eyes, mouths, wings and horns. He also used Mecanim to create a state machine for controlling all of the animations.Both Chris and Wip said that Anime Studio Pro helped them to achieve the look and feel that they were going for with Monster Mingle and that it was an invaluable tool in their game development pipeline. Because of the flexible integration with Unity, they’d recommend it for any game developer’s toolkit.Learn more about how Monster Mingle was made in this ‘making of’ video:Want to try Monster Mingle? Get it here.About Anime Studio ProAnime Studio Pro is a powerful animation tool. Aside from game development, it has been used in animated shorts, TV commercials and full length films. It was recently used in the Oscar nominated animated feature film, Song of the Sea, created by Cartoon Saloon™.]]></description><link>https://unity.com/blog/games/unity-and-anime-studio-pro-the-making-of-monster-mingle</link><guid isPermaLink="true">https://unity.com/blog/games/unity-and-anime-studio-pro-the-making-of-monster-mingle</guid><pubDate>Wed, 10 Jun 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[IL2CPP internals: Method calls]]></title><description><![CDATA[This is the fourth blog post in the IL2CPP Internals series. In this post, we will look at how il2cpp.exe generates C++ code for method calls in managed code. Specifically, we will investigate six different types of method calls:- Direct calls on instance and static methods- Calls via a compile-time delegate- Calls via a virtual method- Calls via an interface method- Calls via a run-time delegate- Calls via reflectionIn each case, we will focus on what the generated C++ code is doing and, specifically, on how much those instructions will cost.As with all of the posts in this series, we will be exploring code that is subject to change and, in fact, is likely to change in a newer version of Unity. However, the concepts should remain the same. Please take everything discussed in this series as implementation details. We like to expose and discuss details like this when it is possible though!SetupI’ll be using Unity version 5.0.1p4. I’ll run the editor on Windows, and build for the WebGL platform. I’m building with the “Development Player” option enabled, and the “Enable Exceptions” option set to a value of “Full”.I’ll build with a single script file, modified from the last post so that we can see the different types of method calls. The script starts with an interface and class definition:Then we have a constant field and a delegate type, both used later in the code:Finally, these are the methods we are interested in exploring (plus the obligatory Start method, which has no content here):With all that defined, let’s get started. Recall that the generated C++ code will be located in the Temp\StagingArea\Data\il2cppOutput directory in the project (as long as the editor remains open). And don’t forget to generate Ctags on the generated code, to help navigate it.Calling a method directlyThe simplest (and fastest, as we will see) way to call a method, is to call it directly. Here is the generated code for the CallDirectly method:The last line is the actual method call. Note that it does nothing special, just calls a free function defined in the C++ code. Recall from the earlier post about generated code, that il2cpp.exe generates all methods as C++ free functions. The IL2CPP scripting backend does not use C++ member functions or virtual functions for any generated code. It follows then that calling a static method directory should be similar. Here is the generated code from the CallStaticMethodDirectly method:We could say there is less overhead calling a static method, since we don’t need to create and initialize an object instance. However, the method call itself is exactly the same, a call to a C++ free function. The only difference here is that the first argument is always passed with a value of NULL.Since the difference between calls to static and instance methods is so minimal, we’ll focus on instance methods only for the rest of this post, but the information applies to static methods as well.Calling a method via a compile-time delegateWhat happens with a slightly more exotic method call, like an indirect call via delegate? We’ll first look at a what I’ll call a compile-time delegate, meaning that we know at compile time which method will be called on which object instance. The code for this type of call is in the CallViaDelegate method. It looks like this in the generated code:I’ve added a few comments to indicate the different parts of the generated code.Note that the actual method called here is not part of the generated code. The method VirtFuncInvoker1<int32_t, String_t*>::Invoke is located in the GeneratedVirtualInvokers.h file. This file is generated by il2cpp.exe, but it doesn’t come from any IL code. Instead, il2cpp.exe creates this file based on the usage of virtual functions that return a value (VirtFuncInvokerN) and those that don’t (VirtActionInvokerN), where N is the number of arguments to the method.The Invoke method here looks like this:The call into libil2cpp GetVirtualInvokeData looks up a virtual method in the vtable struct generated based on the managed code, then it makes a call to that method.Why don’t we used C++11 variadic templates to implement these VirtFuncInvokerN methods? This looks like a situation begging for variadic templates, and indeed it is. However, the C++ code generated by il2cpp.exe has to work with some C++ compilers which don’t yet support all C++ 11 features, including variadic templates. In this case at least, we did not think that forking the generated code for C++11 compilers was worth the additional complexity.But why is this a virtual method call? Aren’t we calling an instance method in the C# code? Recall that we are calling the instance method via a C# delegate. Look again at the generated code above. The actual method we are going to call is passed in via the MethodInfo* (method metadata) argument: ImportantMethodDelegate_Invoke_m5_MethodInfo. If we search for the method named "ImportantMethodDelegate_Invoke_m5" in the generated code, we see that the call is actually to the managed Invoke method on the ImportantMethodDelegate type. This is a virtual method, so we need to make a virtual call. It is this ImportantMethodDelegate_Invoke_m5 function which will actually make the call to the method named Method in the C# code.Wow, that was certainly a mouth-full. By making what looks like a simple change to the C# code, we’ve now gone from a single call to a C++ free function to multiple function calls, plus a table lookup. Calling a method via a delegate is significantly more costly than calling the same method directly.Note that in the process of looking at a delegate method call, we’ve also seen how a call via a virtual method works.Calling a method via an interfaceIt’s also possible to call a method in C# via an interface. This call is implemented by il2cpp.exe similar to a virtual method call:Note the actual method call here is done via the InterfaceFuncInvoker1::Invoke function, which is in the GeneratedInterfaceInvokers.h file. Like the VirtFuncInvoker1 class the InterfaceFuncInvoker1 class does a lookup in a vtable via the il2cpp::vm::Runtime::GetInterfaceInvokeData function in libil2cpp.Why does an interface method call need to use a different API in libil2cpp from a virtual method call? Note that the call to InterfaceFuncInvoker1::Invoke is passing not only the method to call and its arguments, but also the interface to call that method on (L_1 in this case). The vtable for each type is stored so that interface methods are written at a specific offset. Therefore, il2cpp.exe needs to provide the interface in order to determine which method to call.The bottom line here is that calling a virtual method and calling a method via an interface have effectively the same overhead in IL2CPP.Calling a method via a run-time delegateAnother way to use a delegate is to create it at runtime via the Delegate.CreateDelegate method. This approach is similar to a compile-time delegate, except that it be modified at runtime in a few more ways. We pay for that flexibility with an additional function call. Here is the generated code:This delegate requires a good bit of code for creation and initialization. But the method call itself has even more overhead, too. First we need to create an array to hold the method arguments, then call the DynamicInvoke method on the Delegate instance. If we follow that method in the generated code, we can see that it calls the VirtFuncInvoker1::Invoke function, just as the compile-time delegate does. So this delegate requires one more function call then the compile-time delegate does, plus two lookups in a vtable, instead of just one.Calling a method via reflectionThe most costly way to call a method is, not surprisingly, via reflection. Let’s look at the generated code for the CallViaReflection method:As in the case of the runtime delegate, we need to spend some time creating an array for the arguments to the method. Then we make a virtual method call to MethodBase::Invoke (the MethodBase_Invoke_m24 function). This function in turn invokes another virtual function, before we finally get to the actual method call!ConclusionWhile this is no substitute for actual profiling and measurement, we can get some insight about the overhead of any given method invocation by looking at how the generated C++ code is used for different types of method calls. Specifically, it is clear that we want to avoid calls via run-time delegates and reflection, if at all possible. As always, the best advice about making performance improvements is to measure early and often with profiling tools.We’re always looking for ways to optimize the code generated by il2cpp.exe, so it is likely that these method calls will look different in a later version of Unity.Next time we’ll delve deeper in to method implementations and see how we share the implementation of generic methods to minimize generated code and executable size.]]></description><link>https://unity.com/blog/engine-platform/il2cpp-internals-method-calls</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/il2cpp-internals-method-calls</guid><pubDate>Wed, 03 Jun 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Atmospheric Scattering in The Blacksmith]]></title><description><![CDATA[Early in the planning phase of The Blacksmith, we knew we wanted an atmospheric scattering solution that would give us a little bit more detail and control than the built-in fog options. In particular, we wanted to emphasize the aerial perspective effect in some of the more expansive shots in the movie.As we started working towards a scattering solution for the project, we initially implemented and played around with the simulation models presented in several papers from Tomoyuki Nishita[1]. After some experimentation and prototyping of different shots, we eventually decided that we would be better off aiming for a model that allowed extensive artistic control for each of the shots in the short film. We wanted a solution that would allow us to get close to the primary elements of the physical models, but that also allowed us to break any and all rules when required. We also needed the solution to not have a huge impact on the runtime performance of the short film, and set aim to be able to do most of the calculations per-vertex as opposed to per-pixel.We set a goal of trying to emulate the combined effects of Rayleigh and Mie scattering from the physical models. We also added a third element representing various types of low-altitude scattering effects; collectively named height scattering. Another key divergence from the physics based models was that we decided to keep using HDR sky textures, as opposed to procedurally generating the sky and clouds. The obvious downside to this is that setting up something like dynamic time of day (which we didn’t need for The Blacksmith) becomes a bit more complicated, whereas the primary advantage is retaining full artistic control over the sky.Rayleigh Scattering
Rayleigh scattering of sunlight in the atmosphere is the reason for the bright blue hue of the daytime sky, and the reddening of the sun and horizon at sunrise and sunset.In our emulation, we omit the sun itself, and focus just on modelling the colors and extinction produced by the sunlight’s in- and out-scattering. A visual representation of the sun can be added either in the sky texture, as part of Mie scattering, as a sun flare sprite, or any combination of these. At its simplest core, the density of our rayleigh scattering boils down to a glorified exponential function modulated by the Rayleigh phase function. However, we have some additional control over the data that gets put into it, and the data we extract out from it. Since we don’t model light of different wavelengths travelling through the atmosphere, the densities we calculate are scalar values. We use an HDR color ramp to allow for different hues of in-scattered light at horizon and towards zenith, and use a distance aware function for composing the final hue.Mie ScatteringMie scattering of sunlight in the atmosphere contributes to the bright halo around the sun, the grey-white appearance of clouds, and the haze that can be seen over polluted cities. As opposed to Rayleigh, which scatters light in an almost uniform shape, Mie scattering is strongly forward directional.In our emulation, we let Mie scattering primarily represent the haze and halo around the sun. As such, we almost always tint it to compensate for the fact that our Rayleigh emulation ignores the sun. Technically, our Rayleigh and Mie functions are very similar, with the significant difference being the phase function that is applied to the output. Like many other implementations, we use the Henyey-Greenstein scattering function for controlling the anisotropy – or forward directionality – of the Mie scattering.People who have read the research papers might scoff at our choice of names, given that we take certain ‘liberties’ in what we include in each of the emulations. We found early on that people generally used the name Rayleigh when describing ‘sky scattering’ and Mie when describing ‘sun haze’, so we decided to just keep rolling with those names even after the implementation models were simplified from the physical models.Height ScatteringThe height scattering element represents a mish-mash of various low-altitude scattering effects, including radiation fog, ground haze, and low-lying clouds.Our implementation of height scattering is fairly straightforward; height density is calculated from a defined sea level and height falloff. This then scales the distance-based exponential density, and the whole thing is tinted to the desired color.Scatter OcclusionSince our scattering contribution is primarily caused by sunlight scattering towards the observer, away from the observer, or being absorbed by particles on its way to the observer, it makes sense that something should be happening if objects are blocking the sun’s light.To handle such cases, we ray-march through the directional light’s cascaded shadow map and accumulate the amount of occlusion along the ray in a downscaled, off-screen buffer. When applying the scattering to the output pixel, we upsample this occlusion map with an edge-aware filter, and use it in composing the final color for the pixel. This combining stage is where we get into a little bit of trouble; since our solution is single-scattering only, we can’t just go masking out all in-scattered light, as that would leave us with a very dark and unnatural image. We also didn’t want to expand the solution to handle the more complex and expensive multiple-scattering. In the end, the solution for us was to invent an ‘indirect factor’ where you could just explicitly designate a certain percentage of scattering to be treated as it were indirect instead of direct.Putting it all togetherAll that remains now, is to combine the different elements to compose the final image. Adding together the Rayleigh, Mie and Height elements gets us started with a nice composition of the different scattering colors.Next, we need to make sure we put that occlusion buffer to good use. We use different strength parameters for tweaking the amount of occlusion applied to direct, indirect, cloud and sky scattering.Finally, the only thing that remains is to mix the scattering with the rendered image. We darken the transmitted image by the total accumulated extinction, and lighten it by the total accumulated in-scattering. This yields the final composition for our example scenes.We’ve extracted the atmospheric scattering to a separate project which you can get from the Asset Store. In addition to all the code and shaders making up the solution, the project also contains all configuration presets used to generate the images in this post. Don’t forget to check the included readme for details about what the different configuration options mean.References:
[1]: Display of The Earth Taking into account Atmospheric Scattering
https://nishitalab.org/user/nis/cdrom/sig93_nis.pdf[1]: Display Method of the Sky Color Taking into Account Multiple Scattering
https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.75.5595&rep=rep1&type=pdf[1]: Display of Clouds Taking into Account Multiple Anisotropic Scattering and Sky Light
https://www.researchgate.net/publication/220720838_Display_of_Clouds_Taking_into_Account_Multiple_Anisotropic_Scattering_and_Sky_LightThe HDR sky in the package is from NoEmotionHDRs (Peter Sanitra) / CC BY-ND 4.0. Used without modification.]]></description><link>https://unity.com/blog/technology/atmospheric-scattering-in-the-blacksmith</link><guid isPermaLink="true">https://unity.com/blog/technology/atmospheric-scattering-in-the-blacksmith</guid><pubDate>Thu, 28 May 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Wrinkle Maps in The Blacksmith]]></title><description><![CDATA[When planning The Blacksmith short film, we never really prioritized a custom skin shader high enough for it to have any realistic chance of being picked up as a task. However, we still wanted to see if there was something simple we could do to add a little extra life to the Challenger’s expressions. After a quick brainstorming, we decided to have a go at adding blendshape-driven wrinkle maps to the project.To add detail and depth to the expressions, we decided that the Standard shader would give us the best bang for our bucks if we let the wrinkles affect both normals and occlusion. We also wanted a method of restricting the influence of certain expressions to specific parts of the face.Enter Wrinkle Maps DriverWe created a component that allowed the animator to define the wrinkle layers, one layer per blendshape in the mesh. The layer definitions contained texture mappings and strength modifiers, as well as a set of masking weights that would be matched against a face part masking texture. Using the masking weights, specific wrinkle layers could affect one-to-four of the masked face parts, each with a different influence.Since we wanted to be able to blend up to four different expressions at any given time, the blending alone required 11 texture samplers with all bells and whistles enabled (two base textures, eight detail textures and one masking texture). The only realistic option for this was to compose the blended wrinkle maps in an off-screen pre-render pass. We found that the ARGB2101010 render texture format was perfect for us, as it would allow us to pack normals into two of the 10-bit channels, with the remaining one receiving the occlusion. Each frame, the wrinkle map component would find the four most influential blendshapes, and assign layer rendering weights accordingly.Once we had all the wrinkle data composed in screen-space, the only remaining thing to do was to redirect the normal and occlusion data inputs in the Standard shader we were using for face rendering. In practice, this just meant adding a handful of lines to the surface shader main function.Final ResultsComparing the base head to the – exaggerated – angry blendshape at full weight illustrates the additional detail added in by the blended wrinkle maps:We also added various debug output modes that allowed us to easily visualize the fully blended occlusion and normal maps. These were quite useful in figuring out exactly which component contributed to what in the final result.We’ve broken this feature out into an example project which you can get from the Asset Store. It’s basically just the Challenger’s head with a couple of the expressions we used in The Blacksmith, but should serve as a useful starting point for getting this system running in your own projects.]]></description><link>https://unity.com/blog/technology/wrinkle-maps-in-the-blacksmith</link><guid isPermaLink="true">https://unity.com/blog/technology/wrinkle-maps-in-the-blacksmith</guid><pubDate>Thu, 28 May 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[IL2CPP internals: Debugging tips for generated code]]></title><description><![CDATA[This is the third blog post in the IL2CPP Internals series. In this post, we will explore some tips which make debugging C++ code generated by IL2CPP a little bit easier. We will see how to set breakpoints, view the content of strings and user defined types and determine where exceptions occur.As we get into this, consider that we are debugging generated C++ code created from .NET IL code. So debugging it will likely not be the most pleasant experience. However, with a few of these tips, it is possible to gain meaningful insight into how the code for a Unity project executes on the actual target device (we’ll talk a little bit about debugging managed code at the end of the post).Also, be prepared for the generated code in your project to differ from this code. With each new version of Unity, we are looking for ways to make the generated code better, faster and smaller.The setupFor this post, I’m using Unity 5.0.1p3 on OSX. I’ll use the same example project as in the post about generated code, but this time I’ll build for the iOS target using the IL2CPP scripting backend. As I did in the previous post, I’ll build with the “Development Player” option selected, so that il2cpp.exe will generate C++ code with type and method names based on the names in the IL code.After Unity is finished generating the Xcode project, I can open it in Xcode (I have version 6.3.1, but any recent version should work), choose my target device (an iPad Mini 3, but any iOS device should work) and build the project in Xcode.Setting breakpointsBefore running the project, I’ll first set a breakpoint at the top of the Start method in the HelloWorld class. As we saw in the previous post, the name of this method in the generated C++ code is HelloWorld_Start_m3. We can use Cmd+Shift+O and start typing the name of this method to find in in Xcode, then set a breakpoint in it.We can also choose Debug > Breakpoints > Create Symbolic Breakpoint in XCode, and set it to break at this method.Now when I run the Xcode project, I immediately see it break at the start of the method.We can set breakpoints on other methods in the generated code like this if we know the name of the method. We can also set breakpoints in Xcode at a specific line in one of the generated code files. In fact, all of the generated files are part of the Xcode project. You will find them in the Project Navigator in the Classes/Native directory.Viewing stringsThere are two ways to view the representation of an IL2CPP string in Xcode. We can view the memory of a string directly, or we can call one of the string utilities in libil2cpp to convert the string to a std::string, which Xcode can display. Let’s look at the value of the string named _stringLiteral1 (spoiler alert: its contents are "Hello, IL2CPP!").In the generated code with Ctags built (or using Cmd+Ctrl+J in Xcode), we can jump to the definition of _stringLiteral1 and see that its type is Il2CppString_14:In fact, all strings in IL2CPP are represented like this. You can find the definition of Il2CppString in the object-internals.h header file. These strings include the standard header part of any managed type in IL2CPP, Il2CppObject (which is accessed via the Il2CppDataSegmentString typedef), followed by a four byte length, then an array of two bytes characters. Strings defined at compile time, like _stringLiteral1 end up with a fixed-length chars array, whereas strings created at runtime have an allocated array. The characters in the string are encoded as UTF-16.If we add _stringLiteral1 to the watch window in Xcode, we can select the View Memory of “_stringLiteral1” option to see the layout of the string in memory.Then in the memory viewer, we can see this:The header member of the string is 16 bytes, so after we skip past that, we can see that the four bytes for the size have a value of 0x000E (14). The next byte after the length is the first character of the string, 0x0048 (‘H’). Since each character is two bytes wide, but in this string all of the characters fit in only one byte, Xcode displays them on the right with dots in between each character. Still, the content of the string is clearly visible. This method of viewing string does work, but it is a bit difficult for more complex strings.We can also view the content of a string from the lldb prompt in Xcode. The utils/StringUtils.h header gives us the interface for some string utilities in libil2cpp that we can use. Specifically, let’s call the Utf16ToUtf8 method from the lldb prompt. Its interface looks like this:We can pass the chars member of the C++ structure to this method, and it will return a UTF-8 encoded std::string. Then, at the lldb prompt, if we use the p command, we can print the content of the string.
Viewing user defined typesWe can also view the contents of a user defined type. In the simple script code in this project, we have created a C# type named Important with a field named InstanceIdentifier. If I set a breakpoint just after we create the second instance of the Important type in the script, I can see that the generated code has set InstanceIdentifier to a value of 1, as expected.So viewing the contents of user defined types in generated code is done that same way as you normally would in C++ code in Xcode.Breaking on exceptions in generated codeOften I find myself debugging generated code to try to track down the cause of a bug. In many cases these bugs are manifested as managed exceptions. As we discussed in the last post, IL2CPP uses C++ exceptions to implement managed exceptions, so we can break when a managed exception occurs in Xcode in a few ways.The easiest way to break when a managed exception is thrown is to set a breakpoint on the il2cpp_codegen_raise_exception function, which is used by il2cpp.exe any place where a managed exception is explicitly thrown.If I then let the project run, Xcode will break when the code in Start throws an InvalidOperationException exception. This is a place where viewing string content can be very useful. If I dig into the members of the ex argument, I can see that it has a ___message_2 member, which is a string representing the message of the exception.With a little bit of fiddling, we can print the value of this string and see what the problem is:
Note that the string here has the same layout as above, but the names of the generated fields are slightly different. The chars field is named ___start_char_1 and its type is uint16_t, not uint16_t[]. It is still the first character of an array though, so we can pass its address to the conversion function, and we find that the message in this exception is rather comforting.But not all managed exceptions are explicitly thrown by generated code. The libil2cpp runtime code will throw managed exceptions in some cases, and it does not call il2cpp_codegen_raise_exception to do so. How can we catch these exceptions?If we use Debug > Breakpoints > Create Exception Breakpoint in Xcode, then edit the breakpoint, we can choose C++ exceptions and break when an exception of type Il2CppExceptionWrapper is thrown. Since this C++ type is used to wrap all managed exceptions, it will allow us to catch all managed exceptions.Let’s prove this works by adding the following two lines of code to the top of the Start method in our script:The second line here will cause a NullReferenceException to be thrown. If we run this code in Xcode with the exception breakpoint set, we’ll see that Xcode will indeed break when the exception is thrown. However, the breakpoint is in code in libil2cpp, so all we see is assembly code. If we take a look at the call stack, we can see that we need to move up a few frames to the NullCheck method, which is injected by il2cpp.exe into the generated code.From there, we can move back up one more frame, and see that our instance of the Important type does indeed have a value of NULL.ConclusionAfter discussing a few tips for debugging generated code, I hope that you have a better understanding about how to track down possible problems using the C++ code generated by IL2CPP. I encourage you to investigate the layout of other types used by IL2CPP to learn more about how to debug the generated code.Where is the IL2CPP managed code debugger though? Shouldn’t we be able to debug managed code running via the IL2CPP scripting backend on a device? In fact, this is possible. We have an internal, alpha-quality managed code debugger for IL2CPP now. It’s not ready for release yet, but it is on our roadmap, so stay tuned.The next post in this series will investigate the different ways the IL2CPP scripting backend implements various types of method invocations present in managed code. We will look at the runtime cost of each type of method invocation.]]></description><link>https://unity.com/blog/engine-platform/il2cpp-internals-debugging-tips-for-generated-code</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/il2cpp-internals-debugging-tips-for-generated-code</guid><pubDate>Wed, 20 May 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[IL2CPP internals: A tour of generated code]]></title><description><![CDATA[This is the second blog post in the IL2CPP Internals series. In this post, we will investigate the C++ code generated by il2cpp.exe. Along the way, we will see how managed types are represented in native code, take a look at runtime checks used to support the .NET virtual machine, see how loops are generated and more!We will get into some very version-specific code that is certainly going to change in later versions of Unity. Still, the concepts will remain the same.Example projectI’ll use the latest version of Unity available, 5.0.1p1, for this example. As in the first post in this series, I’ll start with an empty project and add one script file. This time, it has the following contents:I’ll build this project for WebGL, running the Unity editor on Windows. I’ve selected the Development Player option in the Build Settings, so that we can get relatively nice names in the generated C++ code. I’ve also set the Enable Exceptions option in the WebGL Player Settings to Full.Overview of the generated codeAfter the WebGL build is complete, the generated C++ code is available in the Temp\StagingArea\Data\il2cppOutput directory in my project directory. Once the editor is closed, this directory will be deleted. As long as the editor is open though, this directory will remain unchanged, so we can inspect it.The il2cpp.exe utility generated a number of files, even for this small project. I see 4625 header files and 89 C++ source code files. To get a handle on all of this code, I like to use a text editor which works with Exuberant CTags. CTags will usually generate a tags file quickly for this code, which makes it easier to navigate.Initially, you can see that many of the generated C++ files are not from the simple script code, but instead are the converted version of the code in the standard libraries, like mscorlib.dll. As mentioned in the first post in this series, the IL2CPP scripting backend uses the same standard library code as the Mono scripting backend. Note that we convert the code in mscorlib.dll and other standard library assemblies each time il2cpp.exe runs. This might seem unnecessary, since that code does not change.However, the IL2CPP scripting backend always uses byte code stripping to decrease the executable size. So even small changes in the script code can cause many different parts of the standard library code to be used or not, depending on the situation. Therefore, we need to convert the mscorlib.dll assembly each time. We are researching better ways to do incremental builds, but we don’t have any good solutions yet.How managed code maps to generated C++ codeFor each type in the managed code, il2cpp.exe will generate one header file for the C++ definition of the type and another header file for the method declarations for the type. For example, let’s look at the contents of the converted UnityEngine.Vector3 type. The header file for the type is named UnityEngine_UnityEngine_Vector3.h. The name is created based on the name of the assembly, UnityEngine.dll followed by the namespace and name of the type. The code looks like this:The il2cpp.exe utility has converted each of the three instance fields, and done a little bit of name mangling to avoid conflicts and reserved words. By using leading underscores, we are using some reserved names in C++, but so far we’ve not seen any conflicts with C++ standard library code.The UnityEngine_UnityEngine_Vector3MethodDeclarations.h file contains the method declarations for all of the methods in Vector3. For example, Vector3 overrides the Object.ToString method:Note the comment, which indicates the managed method this native declaration represents. I often find it useful to search the files in the output for the name of the managed method in this format, especially for methods with common names, like ToString.Notice a few interesting things about all methods converted by il2cpp.exe:- These are not member functions in C++. All methods are free functions, where the first argument is the "this" pointer. For static functions in managed code, IL2CPP always passes a value of NULL for this first argument. By always declaring methods with the "this" pointer as the first argument, we simplify the method generation code in il2cpp.exe and we make invoking methods via other methods (like delegates) simpler for generated code.- Every method has an additional argument of type MethodInfo* which includes the metadata about the method that is used for things like virtual method invocation. The Mono scripting backend uses platform-specific trampolines to pass this metadata. For IL2CPP, we’ve decided to avoid the use of trampolines to aid in portability.- All methods are declared extern “C” so that il2cpp.exe can sometimes lie to the C++ compiler and treat all methods as if they had the same type.- Types are named with a “_t” suffix. Methods are named with a “_m” suffix. Naming conflicts are resolved by appended an unique number to each name. These numbers will change if anything in the user script code changes, so you cannot depend on them from build to build.The first two points imply that every method has at least two parameters, the "this" pointer and the MethodInfo pointer. Do these extra parameters cause unnecessary overhead? While they clearly do add overhead, we haven’t seen anything so far which suggests that those extra arguments cause performance problems. Although it may seem that they would, profiling has shown that the difference in performance is not measurable.We can jump to the definition of this ToString method using Ctags. It is in the Bulk_UnityEngine_0.cpp file. The code in that method definition doesn’t look too much like the C# code in the Vector3::ToString() method. However, if you use a tool like ILSpy to reflect the code for the Vector3::ToString() method, you’ll see that the generated C++ code looks very similar to the IL code.Why doesn’t il2cpp.exe generate a separate C++ file for the method definitions for each type, as it does for the method declarations? This Bulk_UnityEngine_0.cpp file is pretty large, 20,481 lines actually! We found the C++ compilers we were using had trouble with a large number of source files. Compiling four thousand .cpp files took much longer than compiling the same source code in 80 .cpp files. So il2cpp.exe batches the methods definitions for types into groups and generates one C++ file per group.Now jump back to the method declarations header file and notice this line near the top of the file:The il2cpp-codegen.h file contains the interface which generated code uses to access the libil2cpp runtime services. We’ll discuss some ways that the runtime is used by generated code later.Method prologuesLet’s take a look at the definition of the Vector3::ToString() method. Specifically, it has a common prologue that is emitted in all methods by il2cpp.exe.The first line of this prologue creates a local variable of type StackTraceSentry. This variable is used to track the managed call stack, so that IL2CPP can report it in calls like Environment.StackTrace. Code generation of this entry is actually optional, and is enabled in this case by the --enable-stacktrace option passed to il2cpp.exe (since I set Enable Exceptions option in the WebGL Player Settings to Full). For small functions, we found that the overhead of this variable has a negative impact on performance. So for iOS and other platforms where we can use platform-specific stack trace information, we never emit this line into generated code. For WebGL, we don’t have platform-specific stack trace support, so it is necessary to allow managed code exceptions to work properly.The second part of the prologue does lazy initialization of type metadata for any array or generic types used in the method body. So the name ObjectU5BU5D_t4 is the name of the type System.Object[]. This part of the prologue is only executed once and often does nothing if the type was already initialized elsewhere, so we have not seen any adverse performance implications from this generated code.Is this code thread safe though? What if two threads call Vector3::ToString() at the same time? Actually, this code is not problematic, since all of the code in the libil2cpp runtime used for type initialization is safe to call from multiple threads. It is possible (maybe even likely) that il2cpp_codegen_class_from_type function will be called more than once, but the actual work it does will only occur once, on one thread. Method execution won’t continue until that initialization is complete. So this method prologue is thread safe.Runtime checksThe next part of the method creates an object array, stores the value of the x field of Vector3 in a local, then boxes the local and adds it to the array at index zero. Here is the generated C++ code (with some annotations):The three runtime checks are not present in the IL code, but are instead injected by il2cpp.exe.- The NullCheck code will throw a NullReferenceException if the value of the array is null.- The IL2CPP_ARRAY_BOUNDS_CHECK code will throw an IndexOutOfRangeException if the array index is not correct.- The ArrayElementTypeCheck code will thrown an ArrayTypeMismatchException if the type of the element being added to the array is not correct.These three runtime checks are all guarantees provided by the .NET virtual machine. Rather than injecting code, the Mono scripting backend uses platform specific signaling mechanism to handle these same runtime checks. For IL2CPP, we wanted to be more platform agnostic and support platforms like WebGL, where there is no platform-specific signaling mechanism, so il2cpp.exe injects these checks.Do these runtime checks cause performance problems though? In most cases, we’ve not seen any adverse impact on performance and they provide the benefits and safety which are required by the .NET virtual machine. In a few specific cases though, we are seeing these checks lead to degraded performance, especially in tight loops. We’re working on a way now to allow managed code to be annotated to remove these runtime checks when il2cpp.exe generates C++ code. Stay tuned on this one.Static FieldsNow that we’ve seen how instance fields look (in the Vector3 type), let’s see how static fields are converted and accessed. Find the definition of the HelloWorld_Start_m3 method, which is in the Bulk_Assembly-CSharp_0.cpp file in my build. From there, jump to the Important_t1 type (in theAssemblyU2DCSharp_HelloWorld_Important.h file):Notice that il2cpp.exe has generated a separate C++ struct to hold the static field for this type, since the static field is shared between all instances of this type. So at runtime, there will be one instance of the Important_t1_StaticFields type created, and all of the instances of the Important_t1 type will share that instance of the static fields type. In generated code, the static field is accessed like this:The type metadata for Important_t1 holds a pointer to the single instance of the Important_t1_StaticFields type, and that instance is used to obtain the value of the static field.ExceptionsManaged exceptions are converted by il2cpp.exe to C++ exceptions. We have chosen this path to again avoid platform-specific solutions. When il2cpp.exe needs to emit code to raise a managed exception, it calls the il2cpp_codegen_raise_exception function.The code in our HelloWorld_Start_m3 method to throw and catch a managed exception looks like this:All managed exceptions are wrapped in the C++ Il2CppExceptionWrapper type. When the generated code catches an exception of that type, it unpacks the C++ representation of the managed exception (which has type Exception_t8). In this case, we’re looking only for a InvalidOperationException, so if we don’t find an exception of that type, a copy of the C++ exception is thrown again. If we do find the correct type, the code jumps to the implementation of the catch handler, and writes out the exception message.Goto!?!This code brings up an interesting point. What are those labels and goto statements doing in there? These constructs are not necessary in structured programming! However, IL does not have structured programming concepts like loops and if/then statements. Since it is lower-level, il2cpp.exe follows lower-level concepts in generated code.For example, let’s look at the for loop in the HelloWorld_Start_m3 method:Here the V_2 variable is the loop index. Is starts off with a value of 0, then is incremented at the bottom of the loop in this line:The ending condition in the loop is then checked here:As long as V_2 is less than 3, the goto statement jumps to the IL_00af label, which is the top of the loop body. You might be able to guess that il2cpp.exe is currently generating C++ code directly from IL, without using an intermediate abstract syntax tree representation. If you guessed this, you are correct. You may have also noticed in the Runtime checks section above, some of the generated code looks like this:Clearly, the L_2 variable is not necessary here. Most C++ compilers can optimize away this additional assignment, but we would like to avoid emitting it at all. We’re currently researching the possibility of using an AST to better understand the IL code and generate better C++ code for cases involving local variables and for loops, among others.ConclusionWe’ve just scratched the surface of the C++ code generated by the IL2CPP scripting backend for a very simple project. If you haven’t done so already, I encourage you dig into the generated code in your project. As you explore, keep in mind that the generated C++ code will look different in future versions of Unity, as we are constantly working to improve the build and runtime performance of the IL2CPP scripting backend.By converting IL code to C++, we’ve been able to obtain a nice balance between portable and performant code. We can have many of the nice developer-friendly features of managed code, while still getting the benefits of quality machine code that C++ compiler provides for various platforms.In future posts, we’ll explore more generated code, including method calls, sharing of method implementations and wrappers for calls to native libraries. But next time we will debug some of the generated code for an iOS 64-bit build using Xcode.]]></description><link>https://unity.com/blog/engine-platform/il2cpp-internals-a-tour-of-generated-code</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/il2cpp-internals-a-tour-of-generated-code</guid><pubDate>Wed, 13 May 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[An introduction to IL2CPP internals]]></title><description><![CDATA[Almost a year ago now, we started to talk about the future of scripting in Unity. The new IL2CPP scripting backend promised to bring a highly-performant, highly-portable virtual machine to Unity. In January, we shipped our first platform using IL2CPP, iOS 64-bit. The Unity 5 release brought another platform, WebGL. Thanks to the input from our tremendous community of users, we have shipped many patch release updates for IL2CPP, steadily improving its compiler and runtime. We have no plans to stop improving IL2CPP, but we thought it might be a good idea to take a step back and tell you a little bit about how IL2CPP works from the inside out. Over the next few months, we’re planning to write about the following topics (and maybe others) in this IL2CPP Internals series of posts:1.The basics - toolchain and command line arguments (this post) 2. A tour of generated code 3. Debugging tips for generated code 4. Method calls (normal methods, virtual methods, etc.) 5. Generic sharing implementation 6. P/invoke wrappers for types and methods 7. Garbage collector integration 8. Testing frameworks and usageIn order to make this series of posts possible, we’re going to discuss some details about the IL2CPP implementation that will surely change in the future. Hopefully we can still provide some useful and interesting information.The technology that we refer to as IL2CPP has two distinct parts.An ahead-of-time (AOT) compilerA runtime library to support the virtual machineThe AOT compiler translates Intermediate Language (IL), the low-level output from .NET compilers, to C++ source code. The runtime library provides services and abstractions like a garbage collector, platform-independent access to threads and files, and implementations of internal calls (native code which modifies managed data structures directly).The IL2CPP AOT compiler is named il2cpp.exe. On Windows you can find it in the Editor\Data\il2cpp directory. On OSX it is in the Contents/Frameworks/il2cpp/build directory in the Unity installation.The il2cpp.exe utility is a managed executable, written entirely in C#. We compile it with both .NET and Mono compilers during our development of IL2CPP. The il2cpp.exe utility accepts managed assemblies compiled with the Mono compiler that ships with Unity and generates C++ code which we pass on to a platform-specific C++ compiler.You can think about the IL2CPP toolchain like this:The other part of the IL2CPP technology is a runtime library to support the virtual machine. We have implemented this library using almost entirely C++ code (it has a little bit of platform-specific assembly code, but let’s keep that between the two of us). We call the runtime library libil2cpp, and it is shipped as a static library linked into the player executable. One of the key benefits of the IL2CPP technology is this simple and portable runtime library.You can find some clues about how the libil2cpp code is organized by looking at the header files for libil2cpp we ship with Unity (you’ll find them in the Editor\Data\PlaybackEngines\webglsupport\BuildTools\Libraries\libil2cpp\include directory on Windows, or the Contents/Frameworks/il2cpp/libil2cpp directory on OSX). For example, the interface between the C++ code generated by il2cpp.exe and the libil2cpp runtime is located in the codegen/il2cpp-codegen.h header file.One key part of the runtime is the garbage collector. We’re shipping Unity 5 with libgc, the Boehm-Demers-Weiser garbage collector. However, libil2cpp has been designed to allow us to use other garbage collectors. For example, we are researching an integration of the Microsoft GC which was open-sourced as part of the CoreCLR. We’ll have more to say about this in our post about garbage collector integration later in the series.Let’s take a look at an example. I’ll be using Unity 5.0.1 on Windows, and I’ll start with a new, empty project. So that we have at least one user script to convert, I’ll add this simple MonoBehaviour component to the Main Camera game object:When I build for the WebGL platform, I can use Process Explorer to see the command line Unity used to run il2cpp.exe:That command line is pretty long and horrible, so let’s unpack it. First, Unity is running this executable:The next argument on the command line is the il2cpp.exe utility itself.The remaining command line arguments are passed to il2cpp.exe, not mono.exe. Let’s look at them. First, Unity passes five flags to il2cpp.exe:--copy-level=NoneSpecify that il2cpp.exe should not perform an special file copies of the generated C++ code.--enable-generic-sharingThis is a code and binary size reduction feature. IL2CPP will share the implementation of generic methods when it can.--enable-unity-event-supportSpecial support to ensure that code for Unity events, which are accessed via reflection, is correctly generated.--output-format=CompactGenerate C++ code in a format that requires fewer characters for type and method names. This code is difficult to debug, since the names in the IL code are not preserved, but it often compiles faster, since there is less code for the C++ compiler to parse.--extra-types.file="C:\Program Files\Unity\Editor\Data\il2cpp\il2cpp_default_extra_types.txt"Use the default (and empty) extra types file. This file can be added in a Unity project to let il2cpp.exe know which generic or array types will be created at runtime, but are not present in the IL code.It is important to note that these command line arguments can and will be changed in later releases. We’re not at a point yet where we have a stable and supported set of command line arguments for il2cpp.exe. Finally, we have a list of two files and one directory on the command line:"C:\Users\Josh Peterson\Documents\IL2CPP Blog Example\Temp\StagingArea\Data\Managed\Assembly-CSharp.dll""C:\Users\Josh Peterson\Documents\IL2CPP Blog Example\Temp\StagingArea\Data\Managed\UnityEngine.UI.dll""C:\Users\Josh Peterson\Documents\IL2CPP Blog Example\Temp\StagingArea\Data\il2cppOutput"The il2cpp.exe utility accepts a list of all of the IL assemblies it should convert. In this case they are the assembly containing my simple MonoBehaviour, Assembly-CSharp.dll, and the GUI assembly, UnityEngine.UI.dll. Note that there are a few conspicuously missing assembles here. Clearly, my script references UnityEngine.dll, and that references at least mscorlib.dll, and maybe other assemblies. Where are they? Actually, il2cpp.exe resolves those assemblies internally. They can be mentioned on the command line, but they are not necessary. Unity only needs to mention the root assemblies (those which are not referenced by any other assembly) explicitly.The last argument on the il2cpp.exe command line is the directory where the output C++ files should be created. If you are curious, have a look at the generated files in that directory, they will be the subject of the next post in this series. Before you do though, you might want to choose the “Development Player” option in the WebGL build settings. That will remove the --output-format=Compact command line argument and give you better type and method names in the generated C++ code.Try changing various options in the WebGL or iOS Player Settings. You should be able to see different command line options passed to il2cpp.exe to enable different code generation steps. For example, changing the “Enable Exceptions” setting in the WebGL Player Settings to a value of “Full” adds the --emit-null-checks, --enable-stacktrace, and --enable-array-bounds-check arguments to the il2cpp.exe command line.I’d like to point out one of the challenges that we did not take on with IL2CPP, and we could not be happier that we ignored it. We did not attempt to re-write the C# standard library with IL2CPP. When you build a Unity project which uses the IL2CPP scripting backend, all of the C# standard library code in mscorlib.dll, System.dll, etc. is the exact same code used for the Mono scripting backend.We rely on C# standard library code that is already well-known by users and well-tested in Unity projects. So when we investigate a bug related to IL2CPP, we can be fairly confident that the bug is in either the AOT compiler or the runtime library, and nowhere else.Since the initial public release of IL2CPP at version 4.6.1p5 in January, we’ve shipped 6 full releases and 7 patch releases (across versions 4.6 and 5.0 of Unity). We have corrected more than 100 bugs mentioned in the release notes.In order to make this continuous improvement happen, we develop against only one version of the IL2CPP code internally, which sits on the bleeding edge of the trunk branch in Unity used to ship alpha and beta releases. Just before each release, we port the IL2CPP changes to the specific release branch, run our tests, and verify all of the bugs we fixed are corrected in that version. Our QA and Sustained Engineering teams have done incredible work to make delivery at this rate possible. This means that our users are never more than about one week away from the latest fixes for IL2CPP bugs.Our user community has proven invaluable by submitting many high quality bug reports. We appreciate all the feedback from our users to help continually improve IL2CPP, and we look forward to more of it.The development team working on IL2CPP has a strong test-first mentality. We often employee Test Driven Design practices, and seldom merge a pull request without good tests. This strategy works well for a technology like IL2CPP, where we have clear inputs and outputs. It means that the vast majority of the bugs we see are not unexpected behavior, but rather unexpected cases (e.g. it is possible to use an 64-bit IntPtr as a 32-bit array index, causing clang to fail with a C++ compiler error, and real code actually does this!). That difference allows us to fix bugs quickly with a high degree of confidence.With the help of our community, we’re working hard to make IL2CPP as stable and fast as possible. By the way, if any of this excites you, we’re hiring (just sayin’).I fear that I’ve spent too much time here teasing future blog posts. We have a lot to say, and it simply won’t all fit in one post. Next time, we’ll dig into the code generated by il2cpp.exe to see how your project actually looks to the C++ compiler.]]></description><link>https://unity.com/blog/engine-platform/an-introduction-to-ilcpp-internals</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/an-introduction-to-ilcpp-internals</guid><pubDate>Wed, 06 May 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Working with physically based shading: A practical approach]]></title><description><![CDATA[Throughout the development of Unity 5, we’ve used our Viking Village project internally as a testing ground for shading and lighting workflows.If you’re using the Unity 5 beta, you can download the Viking Village package from the Asset Store to get insights into how you can assemble and illuminate a scene in Unity 5. We also present some of our learnings below.In order to ensure that your texturing and shader configuration is behaving appropriately, we recommend that you use a simple scene with a variety of lighting setups. This could mean differing skyboxes, lights etc - anything that contributes to illuminating your model.When you open Unity 5, you’ll notice that any new empty scene has a procedural sky as well as default ambient and reflection settings. This provides a suitable starting point.For our template environment we used:HDR camera renderingA few scattered reflection probes (for localized reflections on objects)A group of light-probesA set of HDR sky-textures and materials, as well as procedural skies. The sky which ships with this project was custom-made for Unity by Bob Groothuis, author of Dutch Skies 360.Off-white directional lights with matched intensity and HDR sky colorAdjusting sky texture panoramasMost sky textures include the sun (along with flares etc.), thus, light from the sun gets reflected by surfaces. This has the potential to cause three issues:1) The Directional light you use to represent the sun must match the exact direction of the sun painted onto the skybox or there will be multiple specular hotspots on the material.2) The reflected sun and the specular hotspot overlap, causing intense specular highlights.3) The baked-in sun reflection is not occluded when the surface is in shadow and it becomes overly shiny in darkness.As a result, the sun highlight, flares, sunrays and HDR values need to be edited out of the sky texture and reapplied using Directional Lights.Authoring physically-based shading materials
To avoid the guesswork involved in emulating real world materials, it is useful to follow a reliable known reference.The Standard Shader supports both a Specular Color and a Metallic workflow. They both define the color of the reflections leaving
the surface. In the Specular workflow, color is specified directly, whilst in the Metallic workflow, the color is derived from a combination of the diffuse color and the metallic value set in the Standard Shader controls.For the Viking Village project, we used the Standard Shader’s Specular Color Workflow. Our calibration scene, which you can download from the Asset Store, includes some handy calibration charts. We referenced the charts regularly when
designing our materials.When approaching materials you can choose between what we call the Specular and the Metallic workflows, each with its own set of values and a reference chart. In the Specular workflow you choose the color of the specularly reflected light directly, in the metallic workflow you choose if the material behaves like a metal when it is illuminated.Choosing between Specular or Metallic workflows is largely a matter of personal preference, you can usually get the same result whichever workflow you choose to use.Aside from charts and values, gathering samples of real world surfaces is highly valuable. It is of great help to find the surface type you are trying to imitate and try to get an understanding of how it reacts to light.Setting up the materialWhen starting out, it’s often useful to create a plain but tweakable representation of the materials using colors, values and sliders derived from the calibration charts. Then, you can apply textures while keeping the original material as a reference to confirm that characteristics are preserved.Textures in the Viking Village have been authored using both manual-traditional methods (photos + tweaking) as well as through scanned Diffuse/albedo, specular-, gloss and normal map images which were provided to us by Quixel.Be careful when adding detail in the texture channels of the material. For example, it usually pays to avoid placing lighting (Ambient Occlusion, shadows etc.) in your textures: remember that the physically based rendering approach provides all the lighting you should need.Naturally, retouching photographs is more demanding than using scanned data, specially when it comes to PBS-friendly values. There are tools that provide assistance to make the process easier, such as Quixel Suite and Allegorithmic Substance Painter.Scanned dataPBS-calibrated scanned textures alleviate the need for editing, since data is already separated into channels and contains values for albedo, specular and smoothness. It is best if the software that provides the PBS-calibrated data contains a Unity profile for export. You can always use the reference charts as a sanity check and as a guide if you need to calibrate the values using Photoshop or a related tool.Material examplesThe Viking Village Scene features a large amount of content while trying to stay within reasonable texture memory consumption. Let's take a look at how we set up a 10-meter-high wooden crane as an example.Notice that many textures, especially specular and diffuse textures, are homogenous and require different resolutions.• Albedo texture: In the specular workflow it represents the color of diffuse light bounced off the surface. It does not necessarily need to be highly detailed as seen in the left image (crane), whereas the right texture (shield) includes significant unique detail.• Specular: Non-metals (insulators) are comparatively dark and in grayscale while metal values are bright and could be colored (remember that rust, oil and dirt on a metal are not metallic). Specular for the wood surface did not benefit extensively from a specular texture, so a value was used instead of inputting a map.• Smoothness is a key element in PBS materials. It contributes variation, imperfections and detail to surfaces and helps represent their state and age. For the crane, smoothness happened to be fairly constant across the surface and was therefore substituted by a value. This delivered a reasonable texture memory gain.• Occlusion indicates how exposed different points of the surface are to the light of the surrounding environment. Ambient Occlusion brings out surface detail and depth by muting ambient and reflection in areas with little indirect light. Keep in mind that there’s also the option of using SSAO (Screen Space Ambient Occlusion) in your scene. Using SSAO and AO could result in double darkening of certain areas, in which case you may want to consider treating the AO map as a cavity map.
An AO map that would emphasize deep cracks and creases may be the best option if the game uses SSAO and/or light-mapped Ambient Occlusion.Secondary Textures and resolution
Secondary Textures can be used to increase the level of detail or provide variation within the material. They can be masked using the Detail Mask property.Due to the low resolution primary diffuse wood texture in the Crane example, the secondary texture set is crucial. It adds the fine detail to the final surface. In this instance, the detail-maps are tiled and at a reasonably low resolution. They are repeated on many other wooden surfaces, thus delivering a major texture memory saving.These workflows certainly helped us when designing the Viking Village project. We hope you also find them useful, and look forward to reading your comments!Acknowledgements
The Viking Village project was launched in partnership with the creative team at Quixel, developer of HDR surface capture technology and the Quixel Megascans library of PBS-ready textures.Big thanks to the very talented Emmanuel “Manu” Tavares and Plamen “Paco” Tamnev for bringing this scene to life.Go and download the project at the Asset Store. Be aware that it's optimised for Unity 5.0.0 RC2.]]></description><link>https://unity.com/blog/engine-platform/practical-approach-to-physically-based-shading</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/practical-approach-to-physically-based-shading</guid><pubDate>Wed, 18 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[A primer on repeatable random numbers]]></title><description><![CDATA[In this article we'll use level/world generation in games as example use cases, but the lessons are applicable to many other things, such as procedural textures, models, music, etc. They are however not meant for applications with very strict requirements, such as cryptography.Why would you want to repeat the same result more than once?Ability to revisit the same level/world. For example a certain level/world can be created from a specific seed. If the same seed is used again, you will get the same level/world again. You can for example do this in Minecraft.Persistent world that's generated on the fly. If you have a world that's generated on the fly as the player moves around in it, you may want locations to remain the same the first and subsequent times the player visit those locations (like in Minecraft, the upcoming game No Man's Sky, and others), rather than being different each time as if driven by dream logic.Same world for everyone. Maybe you want your game world to be the same for everyone who play it, exactly as if it wasn't procedurally generated. This is for example the case in No Man's Sky. This is essentially the same as the ability to revisit the same level/world mentioned above, except that the same seed is always used.We've mentioned the word seed a few times. A seed can be a number, text string, or other data that's used as input in order to get a random output. The defining trait for a seed is that the same seed will always produce the same output, but even the slightest change in the seed can produce a completely different output.In this article we'll look into two different ways to produce random numbers - random number generators and random hash functions - and reasons for using one or the other. The things I know about this are hard earned and don't seem to be readily available elsewhere, so I thought it would be in order to write it down and share it.The most common way to produce random numbers is using a random number generator (or RNG for short). Many programming languages have RNG classes or methods included, and they have the word "random" in their name, so it's the obvious go-to approach to get started with random numbers.A random number generator produces a sequence of random numbers based on an initial seed. In object-oriented languages, a random number generator is typically an object that is initialized with a seed. A method on that object can then be repeatedly called to produce random numbers.The code in C# could look like this:In this case we're getting random integer values between 0 and the maximum possible integer value (2147483647), but it's trivial to convert this to a random integer in a specific range, or a random floating point number between 0 and 1 or similar. Often methods are provided that do this out of the box.Here's an image with the first 65536 numbers generated by the Random class in C# from the seed 0. Each random number is represented as a pixel with a brightness between 0 (black) and 1 (white).It's important to understand here that you cannot get the third random number without first getting the first and second one. This is not just an oversight in the implementation. In its very nature, an RNG generates each random number using the previous random number as part of the calculation. Hence we talk about a random sequence.This means that RNGs are great if you need a bunch of random numbers one after the other, but if you need to be able to get a specific random number (say, the 26th random number from the sequence), then you're out of luck. Well, you could call Next() 26 times and use the last number but this is a very bad idea.If you generate everything at once, you probably don't need specific random numbers from a sequence, or at least I can't think of a reason. However, if you generate things bit by bit on the fly, then you do.For example, say you have three sections in your world: A, B, and C. The player starts in section A, so section A is generated using 100 random numbers. Then the player proceeds to section B which is generated using 100 different numbers. The generated section A is destroyed at the same time to free up memory. The player proceeds to section C which is 100 yet different numbers and section B is destroyed.However, if the player now go back to section B again, it should be generated with the same 100 random numbers as it was the first time in order for the section to look the same.No! This is a very common misconception about RNGs. The fact is that while the different numbers in the same sequence are random in relation to each other, the same indexed numbers from different sequences are not random in relation to each other, even if it may look like it at first glance.So if you have 100 sequences and take the first number from each, those numbers will not be random in relation to each other. And it won't be any better if you take the 10th, 100th, 1000th number from each sequence.At this point some people will be skeptical, and that's fine. You can also look at this Stack Overflow question about RNG for procedural content if that's more trustworthy. But for something a bit more fun and informative, let's do some experiments and look at the results.Let's look at the numbers generated from the same sequence for reference and compare with numbers created by getting the first number in of each of 65536 sequences created from the seeds 0 to 65535.Though the pattern is rather uniformly distributed, it isn't quite random. In fact, I've shown the output of a purely linear function for comparison, and it's apparent that using numbers from subsequent seeds is barely any better than just using a linear function.Still, is it almost random though? Is it good enough?At this point it can be a good idea to introduce better ways to measure randomness since the naked eye is not very reliable. Why not? Isn't it enough that the output looks random enough?Well yes, in the end our goal is simply that things look sufficiently random. But the random number output can look very different depending on how it's used. Your generation algorithms may transform the random values in all kinds of ways that will reveal clear patterns that are hidden when just inspecting the values listed in a simple sequence.An alternative way to inspect the random output is to create 2D coordinates from pairs of the random numbers and plot those coordinates into an image. The more coordinates land on the same pixel, the brighter that pixel gets.Let's take a look at such a coordinate plot for both a random numbers in the same sequence and for random numbers created from individual sequences with different seeds. Oh and let's throw in the linear function too.Perhaps surprisingly, when creating coordinates from random numbers from different seeds, the coordinates are all plotted into thin lines rather than being anything near uniformly distributed. This is again just like for a linear function.Imagine you created coordinates from random numbers in order to plant trees on a terrain. Now all your trees would be planted in a straight line with the remaining terrain being empty!We can conclude that random number generators are only useful if you don't need to access the numbers in a specific order. If you do, then you might want to look into random hash functions.In general a hash function is any function that can be used to map data of arbitrary size to data of fixed size, with slight differences in input data producing very big differences in output data.For procedural generation, typical use cases are to provide one or more integer numbers as input and get a random number as output. For example, for large worlds where only parts are generated at a time, a typical need is to get a random number associated with an input vector (such as a location in the world), and this random number should always be the same given the same input. Unlike random number generators (RNGs) there is no sequence - you can get the random numbers in any order you like.The code in C# could look like this - note that you can get the numbers in any order you like:The hash function may also take multiple inputs, which mean you can get a random number for a given 2D or 3D coordinate:Procedural generation is not the typical use of hash functions, and not all hash functions are well suited for procedural generation, as they may either not have sufficiently random distribution, or be unnecessarily expensive.One use of hash functions is as part of the implementation of data structures such as hash tables and dictionaries. These are often fast but not sufficiently random, since they are not meant for randomness but just for making algorithms perform efficiently. In theory this means they should be random as well, but in practice I haven't found resources that compare the randomness properties of these, and the ones I've tested have turned out to have fairly bad randomness properties (see Appendix C for details).Another use of hash function is for cryptography. These are often very random, but are also slow, since the requirements for cryptographically strong hash functions is much higher than for values that just looks random.Our goal for procedural generation purposes is a random hash function that looks random but is also efficient, meaning that it's not slower than it needs to be. Chances are there's not a suitable one built into your programming language of choice, and that you'll need to find one to include in your project.I've tested a few different hash functions based on recommendations and information from various corners of the Internet. I've selected three of those for comparison here.PcgHash: I got this hash function from Adam Smith in a discussion on Google Groups forum on Procedural Content Generation. Adam proposed that with a little skill, it's not too hard to create your own random hash function and offered his PcgHash code snippet as an example.MD5: This may be one of the most well-known hash functions. It's also of cryptographic strength and more expensive than it needs to be for our purposes. On top of that, we typically just need a 32-bit int as return value, while MD5 returns a much larger hash value, most of which we'd just be throwing away. Nevertheless it's worth including for comparison.xxHash: This is a high-performing modern non-cryptographic hash function that has both very nice random properties and great performance.Apart from generating the noise sequence images and coordinate plots, I've also tested with a randomness testing suite called ENT - A Pseudorandom Number Sequence Test Program. I've included select ENT stats in the images as well as a stat I devised myself with I call the Diagonals Deviation. The latter looks at sums of diagonal lines of pixels from the coordinate plot and measures the standard deviation of these sums.Here's the results from the three hash functions:PcgHash stands out in that while it appears very random in the noise images of sequential random values, the coordinate plot reveals clear patterns, which means it doesn't hold up well to simple transformations. I conclude from this that rolling your own random hash function is hard and should probably be left to the experts.MD5 and xxHash seem to have very comparable random properties, and out of those, xxHash is around 50 times faster.xxHash also has the advantage that although it's not an RNG, it still has the concept of a seed, which is not the case for all hash functions. Being able to specify a seed has clear advantages for procedural generation, since you can use different seeds for different random properties of entities, grid cells, or similar, and then just use the entity index / cell coordinate as input for the hash function as-is. Crucially, with xxHash, the numbers from differently seeded sequences are random in relation to each other (see Appendix 2 for more details).In my investigations of hash functions it has become clear that while it's good to choose a hash function that's high-performing in general-purpose hash benchmarks, it's crucial for performance to optimize it to procedural generation needs rather than just using the hash function as-is.There are two important optimizations:Avoid conversions between integers and bytes. Most general-purpose hash functions take a byte array as input and return an integer or some bytes as the hash value. However, some of the high-performing ones convert the input bytes to integers since they operate on integers internally. Since it's most common for procedural generation to get a hash based on integer input values, the conversion to bytes is completely pointless. Refactoring the reliance on bytes away can triple the performance while leaving the output 100% identical.Implement no-loop methods that take just one or a few inputs. Most general-purpose hash functions take input data of variable length in the form of an array. This is useful for procedural generation too, but the most common uses are probably to get a hash based on just 1, 2 or 3 input integers. Creating optimized methods that take a fixed number of integers rather than an array can eliminate the need for a loop in the hash function, and this can dramatically improve the performance (by around 4x-5x in my tests). I'm not an expert on low level optimization, but the dramatic difference could be caused by either implicit branching in the for loop or by the need to allocate an array.My current recommendation for a hash function is to use an implementation of xxHash that's optimized for procedural generation. See Appendix C for details on why.You can get my implementations of xxHash and other hash functions in C# on BitBucket. This is maintained privately by me in my free time, not by Unity Technologies.Besides the optimizations I also added extra methods to get the output as an integer number in a specified range or as a floating point number in a specified range, which are typical needs in procedural generation.Note: At the time of writing I only added a single integer input optimization to xxHash and MurmurHash3. I'll add optimized overloads for two and three integer inputs too when I get time.Random hash functions and random number generators can also be combined. A sensible approach is to use random number generators with different seeds, but where the seeds have been passed through a random hash function rather than being used directly.Imagine you have a large maze world, possibly nearly infinite. The world has a large scale grid where each grid cell is a maze. As the player moves around in the world, mazes are generated in the grid cells surrounding the player.In this case you'll want each maze to always be generated the same way every time it's visited, so the random numbers needed for that need to be able to be produced independently from previously generated numbers.However, mazes are always generated one whole maze at a time, so there's no need to have control over the order of the individual random numbers used for one maze.The ideal approach here is to use a random hash function to create a seed for a maze based on the coordinate of the grid cell of the maze, and then use this seed for a random number generator sequence of random numbers.The C# code could look like this:If you need control over the order of querying random numbers, use a suitable random hash function (such as xxHash) in an implementation that's optimized for procedural generation.If you just need to get a bunch of random numbers and the order doesn't matter, the simplest way is to use a random number generator such as the System.Random class in C#. In order for all the numbers to be random in relation to each other, either only a single sequence (initialized with one seed) should be used, or if multiple seeds are used they should be passed through a random hash function (such as xxHash) first.The source code for the random numbers testing framework referred to in this article, as well as a variety of RNGs and hash functions, is available on BitBucket. This is maintained privately by me in my free time, not by Unity Technologies.This article originally appeared on the runevision blog which is dedicated to game development and research I do in my free time.For certain things you'll want to be able to query noise values that are continuous, meaning that input values near each other produce output values that are also near each other. Typical uses are for terrains or textures.These requirements are completely different from the ones discussed in this article. For continuous noise, look into Perlin Noise - or better - Simplex Noise.However, be aware that these are only suitable for continuous noise. Querying continuous noise functions just to get random numbers unrelated to other random numbers will produce poor results since it's not what these algorithms are optimized for. For example, I've found that querying a Simplex Noise function at integer positions will return 0 for every third input!Additionally, continuous noise functions usually use floating point numbers in their calculations, which have worse stability and precision the further you get from the origin.I've heard various misconceptions over the years and I'll try to address a few more of them hereNo, I haven't seen anything that indicates that. If you look at the test images throughout this article, there's no difference between the results for low or high seed values.No. Again, if you look at the test images, you can see that the sequences of random values follow the same pattern from start (upper left corner and proceeding one line after the other) to end.In the image below I've tested the 0th number in 65535 sequences as well as the 100th number in those same sequences. As can be seen, there's no apparent significant difference in the (lack of) quality of the randomness.Maybe a tiny bit better, but not nearly enough. Unlike the Random class in C#, the Random class in Java doesn't use the provided seed as-is, but shuffles the bits a bit before storing the seed.The resulting numbers from different sequences may be a tiny bit more random looking, and we can see from the test stats that the Serial Correlation is much better. However, it's clear in the coordinates plot that the numbers still collapse to a single line when used for coordinates.That said, there's no reason why a RNG couldn't apply a high-quality random hash function to the seed before using it. In fact it seems like a very good idea to do so, with no downsides I can think of. It's just that popular RNG implementations that I'm aware of don't do that, so you'll have to do it yourself as described previously.There's no intrinsic reason, but hash functions such as xxHash and MurmurHash3 treat the seed value similar to the inputs, meaning that it essentially applies a high quality random hash function to the seed, so to speak. Because it's implemented that way, it's safe to use the Nth number from differently seeded random hash objects.In the original version of this article I compared PcgHash, MD5, and MurmurHash3 and recommended using MurmurHash3.MurmurHash3 has excellent randomness properties and very decent speed. The author implemented it in parallel with a framework for testing hash functions called SMHasher which has become a widely used framework for that purpose.There is also good information on this Stack Overflow question about good hash functions for uniqueness and speed which compares a lot more hash functions and seems to paint an equally favorable picture of MurmurHash.After publishing the article I got recommendations from Aras Pranckevičius to look into xxHash and from Nathan Reed to look into Wang Hash which he's written about here.xxHash is a hash function which apparently beats MurmurHash on its own turf by scoring as high on quality in the SMHasher testing framework while having significantly better performance. Read more about xxHash on its Google Code page.In my initial implementation of it, after I had removed byte conversions, it was slighter faster than MurmurHash3, though not nearly as much faster as shown in the SMHasher results.I also implemented WangHash. The quality proved to be insufficient since it showed clear patterns in the coordinate plot, but it was over five times faster than xxHash. I tried implementing a "WangDoubleHash" where its result is fed to itself, and that had fine quality in my tests while still being over three times faster than xxHash.However, since WangHash (and WangDoubleHash) takes only a single integer as input, I opted to also implement single input versions of xxHash and MurmurHash3 to see what effect it would have on the performance. And it turned out to improve performance dramatically (around 4-5 times faster). So much in fact that xxHash was now faster than WangDoubleHash.As for quality, my own test framework reveals fairly obvious flaws, but is not nearly as sophisticated as the SMHasher test framework, so a hash function that scores high there can be assumed to be a better seal of quality for randomness properties than just looking fine in my own tests. In general I would say that passing the tests in my test framework may be sufficient for procedural generation purposes, but since xxHash (in its optimized version) is the fastest hash function passing my own tests anyway, it's a no-brainer to just use that.There are extremely many different hash functions out there and it would always be possible to include even more for comparison. However, I've focused primarily on some of the widely recognized best performing ones in terms of both randomness quality and performance, and then optimized them further for procedural generation.I think the results produced with this version of xxHash are fairly close to optimal and further gains by finding and using something even better are likely going to be small. That said, feel free to extend the test framework with more implementations.]]></description><link>https://unity.com/blog/engine-platform/primer-on-repeatable-random-numbers</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/primer-on-repeatable-random-numbers</guid><pubDate>Wed, 07 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[High-performance physics in Unity 5]]></title><description><![CDATA[We’ve been using PhysX 2.8.3 for a while now. We’ve not just used the plain stock PhysX, but extended it with numerous patches made by Unity engineers over the years. It’s been so long, and we say thanks to PhysX 2 for all the fish. As announced at GDC’14, Unity 5.0 features an upgrade to PhysX 3.3. Let’s give it a closer look.PhysX SDK 3 is a radical redesign of the good old PhysX SDK 2.x. Basically, the PhysX team have taken the best ideas and best approaches from 2.x and rewritten the whole SDK from scratch. That means the entire codebase is different, all the interfaces are different and most of the functionality is different.Now let’s give you a taste of how it feels to use Unity 5.0 physics.To start with something simple, we’ve made the adaptive force switchable and off by default. Adaptive force is a special technique in PhysX to compensate for numerical errors when simulating stacks. However, feedback from Unity developers tells us that adaptive force contributes a lot to overall instability in game content. Expect your stack-like things to behave better in future.Moving Static Colliders will be a lot less expensive. A Static Collider is just a gameobject with a collider component on it, but without a Rigidbody component. Previously, since the SDK assumed that Static Colliders aren’t moved, moving a Static Collider would trigger an expensive AABB tree rebuild that affected overall performance badly.In Unity 5, we’ll use the same data structure to handle the movement of both dynamic and static colliders. Unfortunately, we’ll lose the benefit of Static Colliders consuming less memory than dynamic ones. However, right now, the cost associated with moving Static Colliders is one of the top 3 causes of performance issues in Unity games. We wanted to change that.Continuous collision detection has been improved by an order of magnitude. Continuous collision detection is used to prevent fast-moving bodies from going through other bodies without any collisions detected. Imagine a bullet shot at a piece of paper, or a game of pool where some balls will move faster than others.In Unity 5.0, the SDK generates all the data required to handle fast movement. You just enable continuous collision detection and it works. PhysX3 features an algorithm used to detect whether the expensive CCD simulation is actually needed given the current body velocity or a default discreet would do just fine. It’s activated once you enable the CCD.PhysX3 supports more Rigidbodies on the broadphase. In fact, you’ll be able to have several hundred thousand bodies on a single frame on desktop and desktop-like platforms. Previously, there was a fixed 64k limit on bodies. That wasn’t a constant that we could easily increase – it was a consequence of saving a lot on bits all over the SDK. Some console targets, such as PlayStation 3 will still have this limitation. There’s also a limit on physics materials: at the time of writing, you can’t have more than 64k of materials on any platform.In Unity 5.0 we’ve reduced the cost of scaling Mesh Colliders. Previously, when scaling a Mesh Collider, you would have to create a new mesh with scale baked into the vertices, and that required valuable time and memory. With PhysX3 we are able to support non-negative scaling without any baking. It’s basically free.Next, let’s take a look at two subsystems that differ so much from the Unity 4.x version that you can think of them as new: the cloth and vehicles modules.Let’s start with cloth. In Unity 4 cloth simulation is supported via InteractiveCloth and SkinnedCloth components. InteractiveCloth has a cloth-like mesh behaviour i.e. “physical cloth” that interacts with other physics bodies, can apply forces and so on. InteractiveCloth is computationally expensive, so Unity 4 has another one, SkinnedCloth, for character clothing.Since SkinnedCloth is decoupled from the main simulation pipeline, it is able to perform better than InteractiveCloth. The main problem with cloth is that both components were quite unstable and cost a lot. With PhysX3 integration coming, we have decided to drop support for InteractiveCloth and only have one cloth component, called simply Cloth, designed with character clothing in mind.In Unity 5.0, Cloth no longer reacts to all colliders in a scene, nor does it apply forces back to the world. Instead, we have a faster, multithreaded, more stable character clothing solution. When you add it the new Cloth component no longer reacts to any bodies at all.Thus, Cloth and the world do not recognise or see each other until you manually add colliders from the world to the Cloth component. Even after that, the simulation is still one-way: cloth reacts to those bodies but doesn’t apply forces back. Additionally, you can only use three types of colliders with cloth: a sphere, a capsule, and conical capsule colliders, constructed using two sphere colliders. These changes have all been introduced to boost performance.The authoring interface in Unity 5.0 is similar to the SkinnedCloth one, and we are working hard on improving that in 5.x. Expect to see things like integration with Mecanim avatars added during the 5.x cycle.The new Cloth component supports the GPU via CUDA internally, but we’ve decided to release this later in the 5.x cycle for several reasons. Firstly, CUDA only works on Windows on NVIDIA hardware, and we have a big presence on Mac & Linux. Secondly, we really want to focus our bug fixing efforts on core stuff first and move on to integrate fancy things after that.Now, a few words about vehicles. PhysX3 has a shiny new Vehicle SDK which we’ve used to implement our WheelCollider component. The new component delivers much more realistic suspension and tire friction. Plus, it fixes a number of other long-standing issues.In Unity 5.0, the new component can be used out of the box to generate a simple behaviour. I only expect developers to go for vehicle packages on the Asset Store when they want something that is already fine-tuned, realistic or advanced, like Edy’s Vehicle Package.Look at what I’ve been able to set up in a couple of hours using a free mesh downloaded from the web (most of that time was spent in Blender preparing the model):And here is one of the SUVs from Edy’s Vehicle Package:Edy is currently working on the new version of his package which will bring more amazing stuff. Contact him directly for more details.The are a lot of fantastic technical details about vehicles I’d like to share with you, but, for now, let’s just take a look at the new WheelCollider gizmos. This will give you an idea of how suspension is going to work as well.In the above picture the wheel circle and wheel diameter are marked in green, the suspension travel segment in orange and the force application point sphere in green. On the suspension travel segment, there are marks for maximum compression position, maximum droop position and target position.As you’d expect, the wheel can only travel between the max compression and max droop positions. The target position (also referred to as the rest position in technical talks) is located exactly where the sprung weight is balanced by the spring force; i.e. the position where the wheel is located when the vehicle is just standing on a flat surface. It might seem tricky to tune, but, actually, the max compression position is where your wheel is located originally in the mesh.Next, you specify the suspension distance and target position as a fraction of suspension distance. Just two floats to rule them all, not a big deal! Have I told you that the new wheel gizmo now updates the rotation and position from the simulation data out of the box? You don’t even have to add actual wheel geometry and write the wheel positioning code to preview your settings. It’s all just built in.PhysX3 is now prepared to run on multicores as the internal computation model is organised in tasks that can be executed on different cores. The SDK does all the multithreading, taking care of all the dependencies itself and granting optimal job decomposition.From what we’ve seen so far, it’s reasonable to expect a doubling in performance generally just as a result of having a better code base and improved multithreading. In some instances, the improvement is dramatic, with up to tenfold improvements.Performance ninjas interested in more data should visit Pierre Terdiman’s blog. He’s the core developer behind the PhysX SDK.The new functions look and feel Unity-like, but there are still cases where the behaviour is different, parameters mean different things or, in some cases, old behaviours are no longer supported. Thus, Unity 5.0 physics is not 100% compatible with Unity 4.x. Be prepared to retune your old projects and rewrite some of your physics code when migrating from previous Unity releases.There are many more details about physics in Unity 5 than I can share in this post. Please feel free to ask questions in the comments, or if you’re visiting our Unite 2014 developer conference this year, catch my in-depth talk on physics in Unity 5.0 and come say hi and have a chat.More about Unity 5]]></description><link>https://unity.com/blog/technology/high-performance-physics-in-unity-5</link><guid isPermaLink="true">https://unity.com/blog/technology/high-performance-physics-in-unity-5</guid><pubDate>Tue, 08 Jul 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Serialization in Unity]]></title><description><![CDATA[In the spirit of sharing more of the tech behind the scenes, and reasons why some things are the way they are, this post contains an overview of Unity's serialization system. Understanding this system very well can have a big impact on the effectiveness of your development, and the performance of the things you make. Here we go.Serialization of “things” is at the very core of Unity. Many of our features build ontop of the serialization system:Storing data stored in your scripts. This one most people are probably somewhat familiar with.Inspector window. The inspector window doesn’t talk to the C# api to figure out what the values of the properties of whatever it is inspecting is. It asks the object to serialize itself, and then displays the serialized data.Prefabs. Internally, a prefab is the serialized data stream of one (or more) game objects and components. A prefab instance is a list of modifications that should be made on the serialized data for this instance. The concept prefab actually only exists at editor time. The prefab modifications get baked into a normal serialization stream when Unity makes a build, and when that gets instantiated, the instantiated gameobjects have no idea they were a prefab when they lived in the editor.Instantiation. When you call Instantiate() on either a prefab, or a gameobject that lives in the scene, or on anything else for that matter (everything that derives from UnityEngine.Object can be serialized), we serialize the object, then create a new object, and then we “deserialize” the data onto the new object. (We then run the same serialization code again in a different variant, where we use it to report which other UnityEngine.Object’s are being referenced. We then check for all referenced UnityEngine.Object’s if they are part of the data being Instantiated(). If the reference is pointing to something “external” (like a texture) we keep that reference as it is, if it is pointing to something "internal" (like a child gameobject), we patch the reference to the corresponding copy).Saving. If you open a .unity scene file with a text editor, and have set unity to “force text serialization”, we run the serializer with a yaml backend.Loading. Might not seem surprising, but backwards compatible loading is a system that is built on top of serialization as well. In-editor yaml loading uses the serialization system, as well as the runtime loading of scenes and assets. Assetbundles also make use of the serialization system.Hot reloading of editor code. When you change an editor script, we serialize all editor windows (they derive from UnityEngine.Object!), we then destroy all the windows, unload the old c# code, load the new c# code, recreate the windows, and finally deserialize the datastreams of the windows back onto the new windows.Resource.GarbageCollectSharedAssets(). This is our native garbage collector and is different to the C# garbage collector. It is the thing that we run after you load a scene to figure out which things from the previous scene are no longer referenced, so we can unload them. The native garbage collector runs the serializer in a mode where we use it to have objects report all references to external UnityEngine.Objects. This is what makes textures that were used by scene1, get unloaded when you load scene2.The serialization system is written in C++, we use it for all our internal object types (Textures, AnimationClip, Camera, etc). Serialization happens at the UnityEngine.Object level, each UnityEngine.Object is always serialized as a whole. They can contain references to other UnityEngine.Objects and those references get serialized properly.Now you may say that none of this concerns you very much, you’re just happy that it works and want to get on with actually creating some content. However, this will concern you, as we use this same serializer to serialize MonoBehaviour components, which are backed by your scripts. Because of the very high performance requirements that the serializer has, it does not in all cases behave exactly like what a C# developer would expect from a serializer. Here we’ll describe how the serializer works and some best practices on how to make the best use of it.What does a field of my script need to be in order to be serialized?Be public, or have [SerializeField] attributeNot be staticNot be constNot be readonlyThe fieldtype needs to be of a type that we can serialize.Which fieldtypes can we serialize?Custom non abstract classes with [Serializable] attribute.Custom structs with [Serializable] attribute. (new in Unity4.5)References to objects that derive from UntiyEngine.ObjectPrimitive data types (int,float,double,bool,string,etc)Array of a fieldtype we can serializeList<T> of a fieldtype we can serializeSo far so good. So what are these situations where the serializer behaves differently from what I expect?Custom classes behave like structs[Serializable]
class Animal
{
    public string name;
}

class MyScript : MonoBehaviour
{
    public Animal[] animals;
}
If you populate the animals array with three references to a single Animal object, in the serializationstream you will find 3 objects. When it’s deserialized, there are now three different objects. If you need to serialize a complex object graph with references, you cannot rely on Unity’s serializer doing that all automagically for you, and have to do some work to get that object graph serialized yourself. See the example below on how to serialize things Unity doesn't serialize by itself.Note that this is only true for custom classes, as they are serialized “inline” because their data becomes part of the complete serializationdata for the MonoBehaviour they are used in. When you have fields that have a reference to something that is a UnityEngine.Object derived class, like a “public Camera myCamera”, the data from that camera are not serialized inline, and an actual reference to the camera UnityEngine.Object is serialized.No support for null for custom classesPop quiz. How many allocations are made when deserializing a MonoBehaviour that uses this script:class Test : MonoBehaviour
{
    public Trouble t;
}

[Serializable]
class Trouble
{
    public Trouble t1;
    public Trouble t2;
    public Trouble t3;
}
It wouldn’t be strange to expect 1 allocation, that of the Test object. It also wouldn’t be strange to expect 2 allocations, one for the Test object and one for a Trouble object. The correct answer is 729. The serializer does not support null. If it serializes an object and a field is null, we just instantiate a new object of that type and serialize that. Obviously this could lead to infinite cycles, so we have a relatively magical depth limit of 7 levels. At that point we just stop serializing fields that have types of custom classes/structs and lists and arrays. [1]Since so many of our subsystems build on top of the serialization system, this unexpectedly big serializationstream for the Test monobehaviour will cause all these subsystems to perform more slowly than necessary. When we investigate performance problems in customer projects, we almost always find this problem and we added a warning for this situation in Unity 4.5. We actually messed up the warning implementation in such a way that it gives you so many warnings, you have no other option but to fix them right away. We'll soon ship a fix for this in a patch release, the warning is not gone, but you will only get one per "entering playmode", so you don't get spammed crazy. You'd still want to fix your code, but you should be able to do it at a time where it suits you.No support for polymorphismIf you have apublic Animal[] animalsand you put in an instance of a dog, a cat and a giraffe, after serialization, you will have three instances of Animal.One way to deal with this limitation is to realize that it only applies to “custom classes”, which get serialized inline. References to other UnityEngine.Object’s get serialized as actual references and for those, polymorphism does actually work. You’d make a ScriptableObject derived class or another MonoBehaviour derived class, and reference that. The downside of doing this, is that you need to store that monobehaviour or scriptable object somewhere and cannot serialize it inline nicely.The reason for these limitations is that one of the core foundations of the serialization system is that the layout of the datastream for an object is known ahead of time, and depends on the types of the fields of the class, instead of what happens to be stored inside the fields.I want to serialize something that Unity's serializer doesn't support. What do I do?In many cases the best approach is to use serialization callbacks. They allow you to be notified before the serializer reads data from your fields and after it is done writing to them. You can use this to have a different representation of your hard-to-serialize data at runtime than when you actually serialize. You’d use these to transform your data into something Unity understands right before Unity wants to serialize it, you also use it to transform the serialized form back into the form you'd like to have your data in at runtime, right after Unity has written the data to your fields.Let’s say you want to have a tree datastructure. If you let Unity directly serialize the data structure, the “no support for null” limitation would cause your datastream to become very big, leading to performance degradations in many systems:using UnityEngine;
using System.Collections.Generic;
using System;

public class VerySlowBehaviourDoNotDoThis : MonoBehaviour
{
    [Serializable]
    public class Node
    {
        public string interestingValue = "value";

       //The field below is what makes the serialization data become huge because
       //it introduces a 'class cycle'.
       public List<Node> children = new List<Node>();
    }

    //this gets serialized
    public Node root = new Node();

    void OnGUI()
    {
        Display (root);
    }

    void Display(Node node)
    {
        GUILayout.Label ("Value: ");
        node.interestingValue = GUILayout.TextField(node.interestingValue, GUILayout.Width(200));

        GUILayout.BeginHorizontal ();
        GUILayout.Space (20);
        GUILayout.BeginVertical ();

        foreach (var child in node.children)
            Display (child);

        if (GUILayout.Button ("Add child"))
            node.children.Add (new Node ());

        GUILayout.EndVertical ();
        GUILayout.EndHorizontal ();
    }
}
Instead, you tell Unity not to serialize the tree directly, and you make a seperate field to store the tree in a serialized format, suited for Unity’s serializer:using UnityEngine;
using System.Collections.Generic;
using System;

public class BehaviourWithTree : MonoBehaviour, ISerializationCallbackReceiver
{
    //node class that is used at runtime
    public class Node
    {
        public string interestingValue = "value";
        public List<Node> children = new List<Node>();
    }

    //node class that we will use for serialization
    [Serializable]
    public struct SerializableNode
    {
        public string interestingValue;
        public int childCount;
        public int indexOfFirstChild;
    }

    //the root of what we use at runtime. not serialized.
    Node root = new Node();

    //the field we give unity to serialize.
    public List<SerializableNode> serializedNodes;

    public void OnBeforeSerialize()
    {
        //unity is about to read the serializedNodes field's contents. lets make sure
        //we write out the correct data into that field "just in time".
        serializedNodes.Clear();
        AddNodeToSerializedNodes(root);
    }

    void AddNodeToSerializedNodes(Node n)
    {
        var serializedNode = new SerializableNode () {
            interestingValue = n.interestingValue,
            childCount = n.children.Count,
            indexOfFirstChild = serializedNodes.Count+1
        };

        serializedNodes.Add (serializedNode);
        foreach (var child in n.children)
            AddNodeToSerializedNodes (child);
    }

    public void OnAfterDeserialize()
    {
        //Unity has just written new data into the serializedNodes field.
        //let's populate our actual runtime data with those new values.

        if (serializedNodes.Count > 0)
            root = ReadNodeFromSerializedNodes (0);
        else
            root = new Node ();
    }

    Node ReadNodeFromSerializedNodes(int index)
    {
        var serializedNode = serializedNodes [index];
        var children = new List<Node> ();
        for(int i=0; i!= serializedNode.childCount; i++)
            children.Add(ReadNodeFromSerializedNodes(serializedNode.indexOfFirstChild + i));

        return new Node() {
            interestingValue = serializedNode.interestingValue,
            children = children
        };
    }

    void OnGUI()
    {
        Display (root);
    }

    void Display(Node node)
    {
        GUILayout.Label ("Value: ");
        node.interestingValue = GUILayout.TextField(node.interestingValue, GUILayout.Width(200));

        GUILayout.BeginHorizontal ();
        GUILayout.Space (20);
        GUILayout.BeginVertical ();

        foreach (var child in node.children)
            Display (child);

        if (GUILayout.Button ("Add child"))
            node.children.Add (new Node ());

        GUILayout.EndVertical ();
        GUILayout.EndHorizontal ();
    }
}
Beware that the serializer, including these callbacks coming from the serializer, usually do not run on the main thread, so you are very limited in what you can do in terms of invoking Unity API. (Serialization happening as part of loading a scene happens on a loading thread. Serialization happening as part of you invoking Instantiate() from script happens on the main thread). You can however do the necessary data transformations do get your data from a non-unity-serializer-friendly format to a unity-serializer-friendly-format.You made it to the end!Thanks for reading this far, hope you can put some of this information to good use in your projects.Bye, Lucas. (@lucasmeijer)PS: We'll add all this information to the documentation as well.[1] I lied, the correct answer isn't actually 729. This is because in the very very old days before we had this 7 level depth limit, Unity would just endless loop, and then run out of memory if you created a script like the Trouble one I just wrote. Our very first fix for that 5 years ago was to just not serialize fieldtypes that were of the same type as the class itself. Obviously, this was not the most robust fix, as it's easy to create a cycle using Trouble1->Trouble2->Trouble1->Trouble2 class. So shortly afterwards we actually implemented the 7 level depth limit to catch those cases too. For the point I'm trying to make however it doesn't matter, what matters is that you realize that if there is a cycle you are in trouble.]]></description><link>https://unity.com/blog/engine-platform/serialization-in-unity</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/serialization-in-unity</guid><pubDate>Tue, 24 Jun 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unit testing part 2 - Unit testing MonoBehaviours]]></title><description><![CDATA[As promised in my previous blog post Unit testing part 1 – Unit tests by the book, this one is dedicated to designing MonoBehaviours with testability in mind. MonoBehaviour is kind of a special class that is handled by Unity in a special way. Every time you try to instantiate a MonoBehaviour derivative you will get a warning saying that it’s not allowed. Being a good boy-scout and not ignoring the warning (ignoring a warning is bad in the long term!) you might have asked yourself the question, how can I mock MonoBehaviour then? The good news is that you don’t have to! Let me introduce you to...If you've already tried to write tests, you've probably stumbled upon some of the natural enemies of unit testing like UI, legacy code, bad design with no source-code access or areas with a high degree of concurrency. What make these parts hard to test? Achieving isolation: separating what is being tested from the context. There are tools out there that can help for legacy code, but for new code a very simple pattern can be used: The Humble Object Pattern.The idea behind this pattern is very simple. Whenever you want to test a component that has any dependencies that are hard to test, extract all the logic from the component to a separate, decoupled (thus testable) class and then reference it. In other words, the problematic component (with a dependency that makes test authors' lives miserable) becomes a very thin layer of code that has as little logic code as possible with all logic operations delegated to the newly created class.From a state where the test has an indirect dependency to the untestable component......we got to a state where the test is not even aware of the bad (well, just untestable) code:That’s pretty much it. It’s a no-brainer to be honest.What makes games so special in term of code and testability? How is testing games different from testing other software? Personally, I consider games as a pretty sophisticated pieces of software. It would be naive to say games aren't that much different from the software you use every day. In games (with exceptions of course) you will find shiny and polished graphics, background music and other well-engineered sound samples. Games often need to handle realtime input, potentially from a variety of sources, as well as a range of output devices (read resolution). Non-functional requirements can be also more strict for games. Multiplayer games will require you to have a reliable, synchronized network connection while, at the same time, keeping the performance you need to maintain a constant frame rate.This can make for a complex system that touches on many different kinds of media and technologies. For me, games were always masterpieces of software end-product, with some of them aspiring to be recognized as pieces of art (in the classical, visual way as well as the technical, behind-the-scenes side).All this complexity has consequences for the code architecture. To our misfortune, high performance architectures usually work against good code design, a restriction you may also encounter in Unity. One of the core mechanisms that had to be designed in a special way, is the MonoBehaviours mechanism. If you ever wondered why the callbacks in MonoBehaviours aren’t implemented with interfaces or inheritance (as common sense perhaps suggests), it is for performance reasons(See Lucas Meijer's clarification in the comments). Without going into detail, this also works against the testability of MonoBehaviours. The fact that you can't instantiate a MonoBehaviour with the new operator pretty much prohibits you from using any mocking frameworks out there. It probably wouldn't be a good idea anyway with all the things that are going on behind the scene every time a MonoBehaviour is used. Intercepting this behaviour would generate lots of problems.In the end it’s all about you, and how motivated you are to write testable code. Many approaches can solve the same problem but only few will work well for test automation. If you want to write testable code, sometimes you will need to write more code than you would think is necessary. If you are still learning (shouldn't we be learning our whole life, anyway?) or just got on the test automation adventure path, you may find some of the code pieces or design assumptions as an unnecessary overhead. These, however, become a habit so quickly that you will not even notice when you start using the pro-automation designs without even thinking about it.In this blog post, I promised to show you a way to design MonoBehaviour to be able to test them afterwards. It wasn't completely true, because we won't be testing MonoBehaviours themselves. You probably already have an idea of how to implement the Humble Object Pattern to your design to make it more testable but, nevertheless, let me show you the idea implemented in a real project.Let’s create a use-case for the purpose of this example. Imagine a simple player controller that is responsible for steering a spaceship. To simplify the example, let's put it in a 2D worldspace. We want the spaceship to be able to fly around in every direction. It has a gun that can shoot straight with bullets (space-rockets?) but not more frequently than a given firing rate. The number of bullets is also limited by the capacity of the bullet holder so once you shoot all of them you need to reload. To make it more interesting, let’s the make the movement speed dependent on the spaceship's health.A Monobehaviour that will serve as a controller for our spaceship could look like this:In the FixedUpdate callback we read the input and perform the action depending on which buttons were pressed by the user. To move around the spaceship we need translate spaceship’s position with the speed constant according to the direction of the axes. As you can see in the code, the deltaX and deltaY variables are multiplications of: Time.fixedDeltaTime, the value from the input axis and the speed constant which itself is dependant on the health level.On the Fire1 event (e.g. left mouse button click) we want to check if it is possible to shoot the bullet. In the first place, we need to have at least one bullet left in the bullet holder. Secondly, we want to only allow the spaceship to shoot at certain rate (once every half a second in this case). Therefore, we check how much time has passed since the last bullet was fired. If we’re good to go, we spawn the bullet.The Fire2 event will simply reload the bullet holder.To write unit tests for this logic, we need to overcome two problems. The first one, as previously mentioned, is the non-mockable MonoBehaviour class on which we depend on via inheritance. The second problem is more general for real-time software. Our logic is dependent on time (firing rate) which makes it impossible to perform unit tests since we can’t intercept the static Time class from Unity. The good news is that all this can be solved.Let’s refactor our code a bit by applying some simple method extraction refactorization and keeping in mind that the logic methods should not reference the Unity API (Input handling and bullet instantiation in this case). The time dependency in the if statement, should be extracted to a separate method as well. The final result should look more or less like this:As you can see, the FixedUpdate method here does nothing more than passing on the input from the users to the method that does the the logic part. The firing rate check was extracted to CanFire method, that generate the result "true" if a specified amount of time has passed. This extraction is important as it will allows us write unit tests later. If we were able mock the SpaceshipMotor class right now, we would simply intercept the CanFire method and make it return true or false whenever we intended to. It would make the test time-independent. But since we can’t mock SpaceshipMotor because it inherits from Monobehaviour, we need to apply the Humble Object Pattern.How do we do that? We simply need to extract all the logic code that doesn’t use the Unity API to a separate class and introduce a reference to it to the SpaceshipMotor. Let’s look at the class again and see what to extract. The TranformPosition and InstanciateBullet use the Unity API but everything else can be extracted. I know there is also the static Time class but let me get back to that later.The last thing left to explain before we do the actual extraction is how the extracted logic communicates with the Unity API without depending on it. This is the place where the interfaces come in. The class with logic will have a reference to an interface, and I will not care about the actual implementation. To keep things simple, we can implement those interfaces directly in MonoBehaviour itself! Let’s take a look at the following 2 classes:Let’s start with the SpaceshipMotor class. The class implemented some interfaces that are responsible for transforming the position of out spaceship and instantiating the bullet respectively. The class itself got a field that refers to the SpaceshipController which implements all the logic now. The SpaceshipController class knows nothing about the SpaceshipMotor and the only thing it can do is it invoke methods from the interfaces it references.Unity won't serialize references to the interfaces. If you don’t care about serialization, simply pass the interface references while constructing the SpaceshipController class. Otherwise, you can set the references in OnEnable callback that is called every time after the serialization happens. Just for the record, the whole SpaceshipMotor class will be serialized in the usual way, it’s just the interface references that will be lost.You must have noticed the Time class reference in SpaceshipMotor. I know I said there should be no Unity API reference in here but I left it there to demonstrate a different approach for handling time dependant dependencies. Ideally, we could simply pass the Time.time value as an argument to the methods.For UML fans, this is the end result as a (simplified) UML diagram:With the decoupled SpaceshipMotor class there's nothing preventing us from writing some unit tests. Take a look at one of the tests:The test validates that you can’t fire if you have no bullets left. The test itself is structured according to the Arrange-Act-Assert pattern. In the arrange part we create object mocks with GetGunMock and GetControllerMock methods. The GetControllerMock, besides creating a mock, overrides the behaviour of CanFire method to always return true. This removes the time dependency from the controller object. Next, we set the current bullet number to 0. After that, we apply fire to the controller class and we assert if Fire has not been called on the gun controller interface.There are few more tests in the project. You can grab it from here and play with it bit. I used NSubstitute for the mocking object. We also ship a version of it with the Unity Test Tools. All of the three versions of the controller we discussed here are attached in the project.That's it from me today. I hope you enjoyed the read, and happy testing!Tomek]]></description><link>https://unity.com/blog/technology/unit-testing-part-2-unit-testing-monobehaviours</link><guid isPermaLink="true">https://unity.com/blog/technology/unit-testing-part-2-unit-testing-monobehaviours</guid><pubDate>Tue, 03 Jun 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mecanim humanoids]]></title><description><![CDATA[This post explains the technology behind Mecanim Humanoids. How it works, strengths and limitations, why some choices were made and hopefully some hints on how to get the best out of it. Please refer to Unity Documentation for general setup and instructions.Mecanim Humanoid Rig and Muscle Space are an alternative solution to the standard skeleton node hierarchies and geometric transforms to represent humanoid body and animations.The Humanoid Rig is a description on top of a skeleton node hierarchy. It identifies a set of human bones and creates a Muscle Referential for each of those. A Muscle Referential is essentially a pre and post rotation with a range and a sign for each axis.A Muscle is a normalized value [-1,1] that moves a bone for one axis between range [min,max]. Note that the Muscle normalized value can go below or over [-1,1] to overshoot the range. The range is not a hard limit, instead it defines the normal motion span for a Muscle. A specific Humanoid Rig can augment or reduce the range of a Muscle Referential to augment or reduce its motion span.The Muscle Space is the set of all Muscle normalized values for the Humanoid Rig. It is a Normalized Humanoid pose. A range of zero (min= max) for a bone axis means that there is no Muscle for it.For example, the Elbow does not have a muscle for its Y axis, as it only stretches in and out (Z-Axis) and roll in and out (X-Axis). In the end, the Muscle Space is composed of at most 47 Muscle values that completely describe a Humanoid body pose.One beautiful thing about Muscle Space, is that it is completely abstracted from its original or any skeleton rig. It can be directly applied to any Humanoid Rig and it always create a believable pose. Another beautiful thing is how well Muscle Space interpolates. Compare to standard skeleton pose, Muscle Space will always interpolate naturally between animation key frames, during state machine transition or when mixed in a blend tree.Computation-wise it also performs as the Muscle Space can be treated as a vector of a scalar that you can linearly interpolate as opposed to quaternions or Euler angles.An approximation of human body and human motionEvery new skeleton rig built for a humanoid character or any animation captured will be an approximation of the human body and human motion. No matter how many bones or how good your MOCAP hardware is, the result will be an approximation of the real thing.Riggers, game companies, schools or software firms will propose their own version of what they thinks best represent the human body and motion and what will best fit their production needs.The elaboration of Mecanim Humanoid Rig and Muscle Space was confronted to some hard choices. We had to find a compromise between fast runtime and animation quality or openness and standard definition.This is a tough one. Why 2, not 3? or an arbitrary number of spines bones? Lets discard the latest, it is not about biomedical research. (Note that you can always use a Generic Rig if you absolutely need this level of precision). One spine bone is clearly under defined.Adding a second one brings you most of the way. A third or even a forth one will only give a small contribution to the final human pose. Why is this? When looking at how a human spine bends, you will notice that the part of spine that is on the rib cage is almost rigid. What remains, is a main flexion point at the base of the spine and one other at the base of the rib cage. So there are two main flexion points. Looking at a contortionist even in extreme poses clearly show this. Considering all of this we decided to have 2 spine bones for the Humanoid Rig.1 Neck BoneThis one is easier than for spine. Note that many game skeleton rigs don’t even have a neck bone and manage to do the job with only a head bone.Rotation DoFAs with most skeleton rigs (it is even more often the case for games), the Mecanim Humanoid Rig only supports rotation animation. The bones are not allowed to change their local translation relative to their parent. Some 3D packages induce a certain amount of translation on bones to simulate elasticity of articulations or squash and stretch animation. We are currently looking at adding translation DoF as it is a relatively cheap way in term of computation performance to compensate for animation quality on less detailed skeleton rigs. It would also allow users to create retargetable squash and stretch animation.No twist bonesTwist bones are often added to skeleton rigs to prevent skin deformation problems on arms and legs when they are in extreme twist configuration.Twist bones help to distribute the deformation induced by twist from start to end of the limb.In the Muscle Space, the amount of twist is represented by a Muscle and it is always associated with the parent bone of a limb. Ex: The twist on the forearm happens at the elbow and not on the wrist.Humanoid Rigs don’t support twist bones, but Mecanim solver let you specify a percentage of twist to be taken out of the parent and put onto the child of the limb.It is defaulted at 50% and greatly helps to prevent skin deformation problem.Humanoid Root and Center of massNow, what would be the best way to represent the position and orientation of human body in world space?The top most bone in hierarchy (usually hips, pelvis or whatever it is called) is where lies the world space position and orientation curves in a standard skeleton rig. While this works fine for a specific character, it becomes inappropriate when doing retargeting since from one skeleton rig to another the top most bone usually have a different position and rotation relative to the rest of the skeleton.
The Muscle Space uses the humanoid center of mass to represent its position in world space. The center of mass is approximated using a human average body parts mass distribution. We do the assumption that, after scale adjustments, the center of mass for a humanoid pose is the same for any humanoid character. It is a big assumption, but it has shown to work very well for a wide set of animations and humanoid characters.It is true that for standing up or walking animations, the centre of mass lies around hips, but for more dynamic motion like a back flip, you can see how body moves away from the centre of mass and how the centre of mass feels like the most stable point over the animation.Body orientationSimilar to what the centre of mass does for Muscle Space world space position, we use an average body orientation for world space orientation. The average body orientation up vector is computed out of the hips and shoulders middle points. The front vector is then the cross product of the up vector and average left/right hips/shoulders vectors. It is also assumed that this average body orientation for a humanoid pose is the same for all humanoid rigs. As for the centre of mass, an average body orientation tends to be a stable referential as lower and upper body orientation naturally compensates when walking, running, etc.Root MotionA more in depth paper about root motion will follow, but as an introduction, the projection of the centre of mass and average body orientation is used to automatically create root motion. The fact that the centre of mass and average body orientation are stable properties of humanoid animation leads to a stable root motion that can be used for navigation or motion prediction.The scaleOne thing is still missing in Muscle Space to be a completely normalized humanoid pose… the overall size of it. Again we are looking for a way to describe the size of a humanoid that does not rely on a specific point like head bone position since it is not consistent from rig to rig. The center of mass height for a humanoid character in T-Stance is directly used as its scale. The center of mass position of the Muscle Space is divided by this scale to produce the final normalized humanoid pose. Said in another way, the Muscle Space is normalized for a humanoid that has a centre of mass height of 1 when in T-Stance. All the positions in the Muscle Space are said to be in normalized meters.Original hands and feet positionWhen applying a Muscle Space to a Humanoid Rig, hands and feet may end up in different position and orientation from the original animation, due to the difference in proportions of Humanoid Rigs. This may result in feet sliding or hands not reaching properly. This is why Muscle Space optionally contains the original position and orientation of hands and feet. The hands and feet position and orientation are normalized relative to Humanoid Root (center of mass, average body rotation and humanoid scale) in the Muscle Space. Those original positions and orientations can be used to fix the retargeted skeleton pose to match the original world space position using an IK pass.The main goal of IK Solver on arms and legs is to reach the original hands and feet position and orientation optionally found in the Muscle Space. This is what happens under the hood for feet when “Foot IK” toggle is enabled in a Mecanim Controller State.In these cases, the retargeted skeleton pose is never very far from the original IK goals. The IK error to fix is small since it is only induced by difference in proportion of humanoid rigs. The IK solver will only modify the retargeted skeleton pose slightly to produce the final pose that matches original positions and orientations.Since the IK only modifies slightly the retargeted skeleton pose, it will rarely induce animation artefacts like knee or elbow popping. Even then, there is a Squash and Stretch solver, part of IK solver, that is there to prevent popping when arms or legs come close to maximum extension. By default the amount of squash and stretch allowed is limited to 5% of the total length of the arm or leg. An elbow or knee popping is more noticeable (and ugly) than a 5% or less stretch on arm or leg. Note that squash and stretch solve can be turned off by setting it to 0%.A more in depth paper about IK rigs will follow. It will explain how to handle props, use multiple IK passes, interaction with environment or between humanoid characters, etc.Optional BonesThe Humanoid Rig has some bones that are optional. This is the case for Chest, Neck, Left Shoulder, Right Shoulder, Left Toes and Right Toes. Many existing skeleton rigs don’t have some of the optional bones, but we still wanted to created valid humanoids with those.The Humanoid Rig also supports LeftEye and RightEye optional bones. Eye bones have two Muscles each, one that goes up and down and one to move in and out. The Eye bones also work with Humanoid Rig LookAt solver that can distribute look at adjustments on Spine, Chest, Neck, Head and Eyes. There will be more about LookAt solver in the upcoming Humanoid IK rig paper.FingersFinally, the Humanoid Rig supports fingers. Each finger may have 0 to 3 digits. 0 digit simply means that this finger is not defined. The are two Muscles (Stretch and Spread) for the first digit and one Muscle (Stretch) for 2nd and last digit. Note that there is no solver overhead for fingers when no fingers are defined for a hand.Skeleton rig requirementsIn-between bonesIn many case, skeleton rigs will have more bones than the ones defined by the Humanoid Rig. In-between bones are bones that are between humanoid defined bones. For example, a 3rd spine bone in a 3DSMAX Biped will be treated as an in-between bone. Those are supported by Humanoid Rig, but keep in mind that in-between bones won’t get animated. They will stay at their default position and orientation relative to their parent defined in the Humanoid Rig.Standard HierarchyThe skeleton rig must respect a standard hierarchy to be compatible with our Humanoid Rig. The skeleton may have any number of in-between bones between humanoid bones, but it must respect the following pattern:Hips - Upper Leg - Lower Leg - Foot - ToesHips - Spine - Chest - Neck - HeadChest - Shoulder - Arm - Forearm - HandHand - Proximal - Intermediate - DistalThe T-Stance is the most important step of Humanoid Rig creation since muscles setup is based on it. The T-Stance pose was chosen as reference pose since it is easy conceptualize and that there is not that much room for interpretation of what it should be:- Standing straight facing z axis- Head and eyes facing z axis- Feet on the ground parallel to z axis- Arms open parallel to the ground along x axis- Hands flat, palm down parallel to the ground along x axis- Fingers straight parallel to the ground along x axis-Thumbs straight parallel to the ground half way (45 degrees) between x and z axisWhen saying “straight”, it does not mean bones necessarily need to be perfectly aligned. It depends on how skin attaches to skeleton. Some rig may have the skin that looks straight, but underneath skeleton is not. So it is important that the T-Stance be set for final skinned character. In the case you are creating a Humanoid Rig to retarget MOCAP data, it is good practice to capture at least of few frames of a T-Stance done by the actor in the MOCAP suite.Muscle range adjustmentsBy default muscle ranges are set to values that best represent human muscle ranges. Most of the time, they should not be modified. For some more cartoony character you may want to reduce the range to prevent arms entering body or augment it to exaggerate legs motion. If you are creating a Humanoid Rig to retarget MOCAP data you should not modify the ranges since the produced animation clip will not respect default.Retargeting and Animation ClipMecanim retargeting is split into two phases. The first phase consists of converting a standard skeleton transforms animation to a normalized humanoid animation clip (or Muscle Clip). This phase happens in the editor when the animation file is imported. It is internally called “RetargetFrom”. The second phase happens in play mode when Muscle Clip is evaluated and applied to the skeleton bones of a Humanoid Rig.It is internally called “RetargetTo”.There are two big advantages of splitting retargeting into two phases. The first one is solving speed. Half of the retargeting process is done offline, only the other half is done at runtime. The other advantage is scene complexity and memory usage. Since the Muscle Clip is completely abstracted for its original skeleton, the source skeleton does not need to be included in runtime to perform the retargeting.The second phase is straight forward. Once you have a valid Humanoid Rig, you simply apply Muscle Clip to it with RetargetTo solver. This is done automatically under the hood.The first phase, converting a skeleton animation to a Muscle Clip, may be a bit trickier. The skeleton animation clip is sampled at a fixed rate. For each sample, the skeleton pose is converted to a muscle space pose and a key is added to the Muscle Clip. Not all the skeleton rig will fit, there are so many different ways a skeleton rig can be built and animated. Some skeleton rig will produce a valid output, but with possible loss of information. We will now review what is needed to create a lossless normalized humanoid animation… the Muscle Clip.Note: By lossless we mean that retargeting from a skeleton rig to Muscle Clip and then retargeting back to the same skeleton rig will preserve the animation intact. In fact, it will be almost intact. The original twist on arms and legs will be lost and replaced by what the Twist solver computes. As explained earlier in this document, there is no representation of twist repartition in Muscle Space.- The local position of bones must be the same in the humanoid rig and in the animation file. It happens that the skeleton used to create the Humanoid Rig differs from the one in the animation file. Be sure to use exactly the same skeleton. Warnings will be sent to the console at import, if it is not the case.- In-between bones must have no animation. This often happen for a 3DSMAX skeleton where the 3rd spine bone has both translation and rotation animation on it. It also happens when Bip001 is used as Hips and that Pelvis has some animation on it. Warnings will be sent to console at import if it is not the case.- The local orientation of the in-between bone must be the same in the Humanoid Rig and in the animation file. This may happen when using Humanoid Auto Configure that relies on Skin Bind Pose to create T-Stance. Make sure that Skin Bind Pose rotation for in-between bones is the same that one found in the animation file. Warnings will be sent to console at import if it is not the case.- Except for Hips, translation animation is not supported on bones. 3DSMAX Biped sometimes puts translation animation on spine bones. Warnings will be sent to console at imp or if it is not the case.The 3DSMAX Biped is pointed as a problematic rig here. It is probably because of its popularity and the fact that we had to support many cases of it being used with Mecanim. Note that if you are going to create new animations to be used with Mecanim Humanoid Rig, you should follow the rules stated above from the start. If you want to use already existing animation that break some of the rules, it is still possible, the Mecanim retarget solver is robust and will produce valid output, but the lossless conversion can’t be guarantied.Note that if you are going to create new animations to be used with the Mecanim Humanoid Rig, you should follow the rules stated above from the start. If you want to use already existing animation that breaks some of the rules, it is still possible as the Mecanim retarget solver is robust and will produce valid output, but the lossless conversion can’t be guaranteed.]]></description><link>https://unity.com/blog/engine-platform/mecanim-humanoids</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/mecanim-humanoids</guid><pubDate>Mon, 26 May 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Teleporter demo]]></title><description><![CDATA[We'd like to share with you a project that was built during the R&D period of the Physically Based Shader and Reflection probes.This benchmark project is one among several which helped us identify what improvements of functionality were necessary from an artist’s production perspective.We compared offline to realtime rendering methods and output with the aim to achieve both an increase of visual quality, and a better streamlined, smoother production workflow for artists, which will open playful possibilities for graphics to be extended beyond realism to stylism.The demo uses the Standard PBR shader and displays a range of shiny and rough metallic, plastic and ceramic materials, which naturally use the new native cubemap reflections (or HDR reflection probes). The material output in the movie is at a prototype stage and the shader is still evolving.The textures consistently changed throughout the process as the shader evolved. In total, it is composed of 30 texture sets or so, both manually authored and procedurally generated textures. At this point, scanned textures were not used whatsoever. Typically, a texture set consists of albedo, specular, gloss, occlusion and a normal map and the sizes range between 256px to 4k. Background surfaces demanded less surface detail and amount of textures. In some cases, we casually created materials by pushing sliders to adjust color and float values until it matched the references. The secondary (detail-map) slots give a layer of dust, cracks, and crevices on the surfaces, which can be spotted on the close-up camera shots.The heated up revolving core is achieved by simply animating emissive values and combining the results with HDR bloom to give a glowing hot impression.The cave is a large scaled environment and the 100 meter tall machine itself was used intentionally to challenge performance and to serve as a lighting benchmark. This asked for a variety of convoluted HDR reflection probes/cubemaps to be placed along its body that could adapt during the changes of light that gradually diminishes towards the bottom of the cave and when the heated core lights up. Certain elements use real-time reflections while many are kept to static reflections. The application of the HDR reflection probes remains true to Unity’s ideology of keeping workflows simplified and are nearly effortless to apply and use.The background scene uses directional lightmaps, while the machine is composed of partly skinned- and dynamic meshes that are hooked up to light probes and use Image-Based Lighting and a variety of light sources.To be able to see the output of the shader during production, it is crucial to have HDR rendering represented in the sceneview.We are most excited to share this short film with you and are impatient to see what our talented community can produce with the new set of tools which is coming. We are looking forward to seeing artists amaze us with their limitless creativity.]]></description><link>https://unity.com/blog/technology/teleporter-demo</link><guid isPermaLink="true">https://unity.com/blog/technology/teleporter-demo</guid><pubDate>Mon, 19 May 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Custom == operator, should we keep it?]]></title><description><![CDATA[When you do this in Unity:Unity does something special with the == operator. Instead of what most people would expect, we have a special implementation of the == operator.This serves two purposes:1) When a MonoBehaviour has fields, in the editor only[1], we do not set those fields to "real null", but to a "fake null" object. Our custom == operator is able to check if something is one of these fake null objects, and behaves accordingly. While this is an exotic setup, it allows us to store information in the fake null object that gives you more contextual information when you invoke a method on it, or when you ask the object for a property. Without this trick, you would only get a NullReferenceException, a stack trace, but you would have no idea which GameObject had the MonoBehaviour that had the field that was null. With this trick, we can highlight the GameObject in the inspector, and can also give you more direction: "looks like you are accessing a non initialised field in this MonoBehaviour over here, use the inspector to make the field point to something".purpose two is a little bit more complicated.2) When you get a c# object of type "GameObject"[2], it contains almost nothing. this is because Unity is a C/C++ engine. All the actual information about this GameObject (its name, the list of components it has, its HideFlags, etc) lives in the c++ side. The only thing that the c# object has is a pointer to the native object. We call these c# objects "wrapper objects". The lifetime of these c++ objects like GameObject and everything else that derives from UnityEngine.Object is explicitly managed. These objects get destroyed when you load a new scene. Or when you call Object.Destroy(myObject); on them. Lifetime of c# objects gets managed the c# way, with a garbage collector. This means that it's possible to have a c# wrapper object that still exists, that wraps a c++ object that has already been destroyed. If you compare this object to null, our custom == operator will return "true" in this case, even though the actual c# variable is in reality not really null.While these two use cases are pretty reasonable, the custom null check also comes with a bunch of downsides.- It is counterintuitive.- Comparing two UnityEngine.Objects to eachother or to null is slower than you'd expect.- The custom ==operator is not thread safe, so you cannot compare objects off the main thread. (this one we could fix).- It behaves inconsistently with the ?? operator, which also does a null check, but that one does a pure c# null check, and cannot be bypassed to call our custom null check.Going over all these upsides and downsides, if we were building our API from scratch, we would have chosen not to do a custom null check, but instead have a myObject.destroyed property you can use to check if the object is dead or not, and just live with the fact that we can no longer give better error messages in case you do invoke a function on a field that is null.What we're considering is wether or not we should change this. Which is a step in our never ending quest to find the right balance between "fix and cleanup old things" and "do not break old projects". In this case we're wondering what you think. For Unity5 we have been working on the ability for Unity to automatically update your scripts (more on this in a subsequent blogpost). Unfortunately, we would be unable to automatically upgrade your scripts for this case. (because we cannot distinguish between "this is an old script that actually wants the old behaviour", and "this is a new script that actually wants the new behaviour").We're leaning towards "remove the custom == operator", but are hesitant, because it would change the meaning of all the null checks your projects currently do. And for cases where the object is not "really null" but a destroyed object, a nullcheck used to return true, and will if we change this it will return false. If you wanted to check if your variable was pointing to a destroyed object, you'd need to change the code to check "if (myObject.destroyed) {}" instead. We're a bit nervous about that, as if you haven't read this blogpost, and most likely if you have, it's very easy to not realise this changed behaviour, especially since most people do not realise that this custom null check exists at all.[3]If we change it, we should do it for Unity5 though, as the threshold for how much upgrade pain we're willing to have users deal with is even lower for non major releases.What would you prefer us to do? give you a cleaner experience, at the expense of you having to change null checks in your project, or keep things the way they are?Bye, Lucas (@lucasmeijer)[1] We do this in the editor only. This is why when you call GetComponent() to query for a component that doesn't exist, that you see a C# memory allocation happening, because we are generating this custom warning string inside the newly allocated fake null object. This memory allocation does not happen in built games. This is a very good example why if you are profiling your game, you should always profile the actual standalone player or mobile player, and not profile the editor, since we do a lot of extra security / safety / usage checks in the editor to make your life easier, at the expense of some performance. When profiling for performance and memory allocations, never profile the editor, always profile the built game.[2] This is true not only for GameObject, but everything that derives from UnityEngine.Object[3] Fun story: I ran into this while optimising GetComponent<T>() performance, and while implementing some caching for the transform component I wasn't seeing any performance benefits. Then @jonasechterhoff looked at the problem, and came to the same conclusion. The caching code looks like this:Turns out two of our own engineers missed that the null check was more expensive than expected, and was the cause of not seeing any speed benefit from the caching. This led to the "well if even we missed it, how many of our users will miss it?", which results in this blogpost :)]]></description><link>https://unity.com/blog/engine-platform/custom-operator-should-we-keep-it</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/custom-operator-should-we-keep-it</guid><pubDate>Fri, 16 May 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[On Hunting the Uncommon Elephant]]></title><description><![CDATA[Hunting bugs is fun. And every now and then you get away alive with a story to bore your grandkids with ("In my days, we still hunted bugs with sticks and stones" and all).GDC 2014 had another such trophy-worthy hunting safari in store for us. We were five days away from presenting Unity 5 to the world when we "spotted" (well, it was kinda hard to miss) an ugly little elephant of a bug: our shiny new 64-bit editor was randomly crashing on OSX to the point of being completely unusable. There's just nothing like being up on stage to showcase how awesome your bug reporter is every couple minutes.So, Levi, Jonathan and I dropped all the awesome stuff we're working on (more stories we want to bore our grandkids with) and went stalking. All we knew at that point was that it crashed somewhere in the native code that Mono generates at run-time.As every programmer knows, when you're faced with a bug that isn't obvious, you simply start by gathering evidence. Once you've learned enough about the bug's behavioral patterns, you'll eventually get a shot at it. And with the clock ticking, we were ready to shoot at pretty much anything.But we were stumped. For an elephant, the bug turned out to be surprisingly agile and sneaky.It seemed to happen only on OSX 10.9 although Kim saw something that looked markedly similar on Windows with his heavy duty memory debugger branch. And if you enabled Guard Malloc on earlier versions of OSX, you got what looked fairly similar as well. However, as it was crashing in random script code at arbitrary depths in the call hierarchy, it was difficult to say with certainty what was the same crash and what wasn't. And the crash could be consistent for ten consecutive runs only to be totally different for the next five.So while Kim and I waded knee-high through memory and thigh-high through assembly code, Levi ran an extensive trace on all of Mono's secret and not so secret activities to generate a gigabyte log and an editor that ran at the speed of my grandma. This yielded the first interesting insight: apparently we were always compiling the method we crashed in right before things got ugly.But what made it crash? The immediate cause was that we were trying to execute code from an invalid address. How did we get there? A bug in Mono's signal handling where we don't resume properly? A bug in Mono's JIT compiler that won't jump back properly to the compiled code? A different thread corrupting stack memory on the main thread? Fairies and grumkins? (for a bit, the latter seemed the most likely).After two days of hunting, the elephant was still well alive and out and about.So, Saturday night I equipped myself with a notebook, four different colored pens and an ample supply of beer from our trademark Unity fridge (carefully making sure I don't touch the awful canned Christmas beer we still have stuck in its crevices ). Then I spun up Unity instances until I had four different crashes frozen in the debugger, labeled them "Red Crash", "Blue Crash", "Green Crash", and "Black Crash" and went to work with my respectively colored pens to take notes and draw some not-so-pretty diagrams of everything I found.Here's my notes for Blue Crash:And that's when I made my first discovery: in every case, the stack was 16 bytes larger than it should be!That then led to the next discovery: for all crashes, looking at those extra 16 bytes turned up a return address back into the function we crashed in. From a trace it was clear that in all cases we already had executed some calls from the same method, and at first I thought the address was from the last call we had traced. However, closer inspection revealed that it was actually the return address for a call whose method had not been compiled yet!This puzzled me for a moment as in some cases there were several calls in-between the last traced method and this call that hadn't been compiled yet either. Looking closer, however, revealed that we always had jumped around them.So, then I looked at that function we apparently were supposed to return from…And there we have it (highlighted in blue): We were jumping in the wrong direction!What Mono does here is create little "trampoline" functions that contain only a call to the JIT compiler and some data encoded into the instruction stream after the call (used by the JIT compiler to know which method to compile). Once the JIT compiler has done its work, it will delete those trampolines and erase every trace of having hooked into the method call.However, the call instruction you see there is what is called a "near call" which incidentally uses a signed 32-bit offset to jump relative to the next instruction.And since a signed 32-bit number can reach only 2GB up and down and we're running 64-bit here, we suddenly knew why heap memory layout played such a crucial role in reproducing the bug: once Mono's trampolines were further than 2GB away from the JIT compiler, offsets wouldn't fit anymore into 32-bit and would get truncated when emitting the call instruction.At that point, Jonathan quickly pinpointed the right fix and by the time his Sunday was over, we had a stable working build ready in time for GDC.You all know the history from there. We successfully demoed Unity 5 at GDC 2014 to rave reviews and after launch, it quickly became the most beloved piece of software ever. Oh wait, that bit is yet to come…Before that launch, there's a whole lot more black and blue crashes to fix :).]]></description><link>https://unity.com/blog/technology/on-hunting-the-uncommon-elephant</link><guid isPermaLink="true">https://unity.com/blog/technology/on-hunting-the-uncommon-elephant</guid><pubDate>Tue, 22 Apr 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Occlusion culling in Unity 4.3: Troubleshooting]]></title><description><![CDATA[The following blog post was written by Jasin Bushnaief of Umbra Software to explain the updates to occlusion culling in Unity Pro 4.3.This is the last post in a three-post series. In the first one, I described the new occlusion culling system in Unity 4.3 and went through the basic usage and parameters. In the second one, I gave a list of best practices and general recommendations for getting the most out of Umbra. This last post deals with troubleshooting some common issues people tend to encounter when using Umbra.Unity offers a couple of helpers for figuring out what’s going on in occlusion culling. These visualizations may help you figuring out why occlusion culling isn’t behaving quite as you’d expect. The visualizations can be found by enabling the Visualization pane in the Occlusion window and selecting the camera.The individual visualizations can then be enabled and disabled in the Scene view, in the Occlusion Culling dialog.Let’s take a look at what the different visualizations do.The Camera Volumes visualization simply shows you, as a grey box, in which cell the camera is located. For more information on what the cells are, take a look at the first post. This is one way of figuring out how the value of smallest occluder changes the output resolution of the data, for instance. Also, if it looks like the cell bounds don’t make sense, for example when the cell incorrectly extends to the other side of what should be an occluding wall, something may be amiss.The purpose of the Visibility Lines visualization is to show you the line of sight that Umbra sees. The way it works is that Umbra will project its depth buffer back into the scene and draw lines to the furthermost non-occluded points in the camera’s view. This may help you to figure out, for instance, which holes or gaps cause “leaks” in occlusion, ultimately causing some objects to become visible. This may also reveal some dubious situations where some object that clearly should be a good occluder, doesn’t occlude anything because of, say, forgetting to enable the static occluder flag for the object.The Portals visualization will draw all the traversed portals as semi-transparent axis-aligned quads. Not only will this help you get an idea of how many portals Umbra traverses and thus help you deal with occlusion culling performance tweaking, but it also provides another way of looking at what’s in Umbra’s line of sight. So you can see if there are some spots in the scene that don’t really cause occlusion, and how the portals get placed into the scene in general.While occlusion culling should just work in Unity, sometimes things don’t go quite as you’d expect. I’ll go over the most common issues people tend to run into, and how to solve those issues in order to make your game run smoothly.Sometimes people wonder why some objects are reported visible by Umbra when in reality they seem to be occluded. There can be many reasons for this. The most important thing to understand is that Umbra is always conservative. This means that it always opts for objects being visible rather than invisible whenever there’s any uncertainty in the air. This applies to all tie-breaking situations as well.Another thing to note is that the occlusion data represents a simplified version of the scene’s occluders. More specifically, it represents a conservatively simplified version, meaning some of the occlusion erodes and loses detail.The level of detail that gets retained in the data is controlled by smallest occluder. Decreasing the value will produce higher-resolution data that should be less conservative, but at the same time, culling will lose some speed and the data will get larger.Probably the most puzzling problematic scenario is when something gets reported by Umbra as occluded even though it shouldn’t be. After all the promises of always being conservative and never returning false negatives, how can this happen?Well, there can be a couple of things going on. The first and by far the most common case is that you’re looking at something through a hole, gap or crack which gets solidified by Umbra’s voxelization. So typically the first thing you should try is to reduce the value of smallest hole and see if that fixes the issue. You can try temporarily tuning it down even quite a bit just to test if that’s the issue.There are situations where this may not be completely obvious. For instance, if you have a book shelf in your scene where individual books are marked as occluders, too large a smallest hole may cause some of the books to be occluded either by the shelf or by the other books. So again, just decreasing the value of smallest hole is probably the first thing you should try.Another case where objects may disappear is when your backface limit has been set to something less than 100 and your camera is in the vicinity of back-facing triangles. Note that the camera doesn’t have to actually be looking at the triangles nor do the triangles have to be facing away from the camera at that particular spot. It is enough that there is a topologically connected place (i.e. not behind a wall or anything) close to the camera from which some back-facing triangles can be seen.The first thing to do to remedy this is obviously try with a backface limit of 100 and see if that fixes the issue. If it does, it may make sense to modify the geometry either by re-modeling some of the assets so that they’re two-sided or solid, or just removing the static occluder flag from the problematic objects. Or if you don’t care about the occlusion data size or don’t get a huge benefit out of the backface optimization, just disabling the backface test by setting the value at 100 is of course also an option.Culling may behave strangely if your camera goes inside an occluder, or infinitesimally close to one. Typically this may occur in a game with a 3rd person camera. Because Umbra considers occluders as solid objects, culling from inside one will typically mean that most of the stuff in your scene will get culled. On the other hand, if the backface test has been enabled, many of the locations inside occluders will have been removed from the data altogether, yielding undefined results. So you should not let the camera go inside occluders!To be more specific, in general Umbra will be able to guarantee correct culling when the camera is further away from an occluder than the value of smallest hole. In most cases, going even closer will still work, but in some cases, because the limitations the voxel resolution implies on the accuracy of the occlusion data, going super close to an occluder may result in the camera being incorrectly assigned to a location inside an occluder. Hint: use the “camera volume” visualization to see in which cell the camera is located and what it looks like.Generally, when the backface test is enabled (i.e. when backface threshold is something smaller than 100), Umbra will do a better job near occluders, because it is able to detect the insides of occluders, and correspondingly dilate all valid locations slightly towards them, so that you’ll get correct results even if you go arbitrarily close to an occluder. So if you cannot prevent your camera from going very close (or even slightly inside) an occluder, the first thing you may wish to try is to set backface threshold to something smaller than 100. This will help with dilation and may fix the issue.If tweaking backface threshold does not help, or if your camera goes very deep inside an occluder, the only thing left to do is to simply remove the occluder flag from the object.The reason for slow culling is typically very simple. Umbra traverses too many portals, and thus the visibility query takes a long time. The parameter that controls the portal resolution in the occlusion data is smallest occluder. A larger value will produce a lower-resolution portal graph, which is generally faster to traverse, up to a point. There are some situations, however, where this is not the case. Specifically, when having to simplify the occluder data conservatively, sometimes the increased conservativity of a lower-resolution graph may cause the view distances to increase, and the total amount of traversed portals to increase with it as well. But this is not the most typical of situations. In general, a large smallest occluder value will produce data that is faster to process in the runtime, at the cost of reduced accuracy of the occlusion.Another, but obviously a bit more arduous way of making sure that the number of traversed portals doesn’t get out of hand is to modify the geometry of the scene so that the view distances don’t get too long in the problematic areas. Manually inserting occlusion into open areas will of course cause the traverse to terminate sooner, reducing the amount of processed portals and thus making occlusion culling faster.The speed of baking largely depends on one thing: the number of voxels that need to be processed. In turn, the number of processed voxels is defined by two factors: the dimensions of the scene and the voxel size. Assuming you can’t do much about the former, the latter you can easily control with the smallest hole parameter. A larger value will of course speed up baking. So, it may make sense to start with a relatively large value and then tune it down if your objects are incorrectly disappearing because of too aggressive occluder generation. A microscopic smallest hole may cause baking to take forever and/or to consume ridiculous amounts of memory.If baking your scene produces too much occlusion data, there are a couple of things you can try. First, changing the value of backface limit to something smaller than 100, for instance 99, 50 or even 30 may be a good start. If you do this, make sure that culling works correctly in all areas your camera may be in. See the previous post for more information.If changing backface limit is not an option, produces unpredictable results or doesn’t reduce the data size enough, you can try increasing the value of smallest occluder which determines the resolution of the occlusion data and thus has a very significant impact on the size. Note that increasing smallest occluder also increases the conservativity of the results.Finally, it’s worth noting that huge scenes will naturally generate more occlusion data than small ones. The size of the occlusion data is displayed at the bottom of the Occlusion window.In some rare cases, where the scene is vast in size and the smallest occluder parameter has been set to a super small value, Baking may fail with the error “Failure in split phase”. This occurs because the initial step of the bake tries to subdivide the scene into computation tiles. The subdivision is based on the smallest occluder parameter and when the scene is humongous in size (like, dozens of kilometers in each direction) too many computation tiles may be created, resulting in an out of memory error. This, in turn, manifests as “Failure in split phase” to the user. Increasing the value of smallest occluder and/or splitting up the scene into smaller chunks will get rid of this error.This concludes our three-post series of occlusion culling in Unity 4.3. For more information about Umbra, visit www.umbrasoftware.com.]]></description><link>https://unity.com/blog/engine-platform/occlusion-culling-troubleshooting-unity-4-3</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/occlusion-culling-troubleshooting-unity-4-3</guid><pubDate>Thu, 02 Jan 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Occlusion culling in Unity 4.3: Best practices]]></title><description><![CDATA[The following blog post was written by Jasin Bushnaief of Umbra Software to explain the updates to occlusion culling in Unity Pro 4.3.This is the second post in a three-post series. In the previous post, I discussed how the new occlusion culling system works in Unity 4.3. I went over the basic usage and parameters that you need to know in order to get the best out of occlusion culling. In case you missed it, check it out here.This post gives you a list of general recommendations and tips that should help you get the best results out of occlusion culling.It may seem obvious, but of course the first thing to make sure is that your scene actually contains meaningful occlusion. Moreover, the occlusion should preferably consist of good, large occluders if possible, as opposed to fine details that only accumulate as occluders when looking at from a certain angle. Umbra will generally not be able to perform occluder fusion, so even if your lush forest with lots of foliage will occlude something behind it, it will do so only once the individual occluders are “accumulated”. So in this sense, the trees and forests in general will be pretty bad occluders from Umbra’s point of view. On the other hand, a mountain is a good occluder and Umbra will certainly be able to capture it into the occlusion data as expected.There are two main types of objects Umbra cares about: occluders and occludees. The former are just geometry and Umbra treats them basically as a single, solid model. The latter are the ones whose visibility Umbra actually tests using the occlusion data. Occluders consist of pretty much all geometry that have the “Occluder static” flag set, and unsurprisingly, occludees that have the “Occludee static” flag, respectively.As a rule of thumb and by default, you can and should set most if not all your renderers as occludees in order for Umbra to cull them. Also by default, most of your static renderers can be occluders as well. Just make sure that if your renderer is non-opaque, it shouldn’t be an occluder either. (Unity will actually issue a warning if this is the case.) This naturally includes transparent objects and such.But also, if your object contains very small holes (consider e.g. a cheese grater or a bushy plant) that you wish to see through, but reducing the value of smallest hole globally doesn’t make sense (see the previous post as to why), simply removing the occluder flag from the renderer is the correct thing to do.Furthermore, because occluders are considered solid, correct culling can typically be guaranteed if the camera doesn’t intersect an occluder. This means that if e.g. the collision system cannot prevent the camera from flying inside an occluder, you should probably remove the occluder flag in order to get meaningful results.Given the fact that Umbra does object-level occlusion culling, it doesn’t make a whole lot of sense to have objects of several kilometers in size. Such massive objects are very hard to cull, as some part of the object is almost always visible, especially combined with Umbra’s conservative culling. So, splitting up e.g. the terrain into multiple patches is typically a good idea, unless you want the entire terrain to always be visible.In terms of occlusion culling, typically the best object subdivision is a natural one, meaning that naturally distinct objects should probably kept separate in culling as well. So chunking objects too aggressively typically doesn’t help. One should group only objects that are similar in terms of visibility. On the other hand, too fine-grained subdivision may introduce some unnecessary per-object overhead. In reality, this becomes a problem only once there are tens of thousands of occludees in the scene.Maybe it should be emphasized that only the object subdivision of occludees matters. Occluders are considered to be a single big bowl of polygon soup anyway.In the previous post, I briefly described how Umbra first voxelizes the occluding geometry, groups these voxels into cells and then connects the cells with portals. In the process, Umbra is always conservative, meaning that in various cases Umbra considers the occluders slightly smaller than what they are in reality, or conversely, the empty areas slightly larger.This means that if there happens to be an unintentional hole in your occluding geometry, one which rather than getting patched up is retained by voxelization, there’s a good chance it’ll become somewhat magnified in the final output data. This may lead to surprising “leaks” in occlusion. The camera may be looking at a seemingly solid wall, but things behind the wall don’t get occluded because there’s some unnoticeably small crack somewhere.So, while voxelization does patch a lot of unintentional cracks and gaps in the occluding geometry, it’s still highly important to try to model the geometry as water-tightly as possible. In the next post, I’ll describe the Visibility Lines visualization which may help you debug these kinds of issues.Admittedly the hardest part of using Umbra is finding the right parameter values. The default values in Unity do a good job as a starting point, assuming that one Unity unit maps into one meter in your game, and the game’s scale is “human-like” (e.g. not modeled on a molecular level, nor is your typical object a planet or a gigantic killer-mech-robot).A good rule of thumb is to start with relatively large values and work your way down. In case of smallest hole, for instance, the larger value you can use, the swifter is the bake process. Thus, you should tune it down only if/when you start experiencing culling artifacts, i.e. false negatives. Similarly, starting with a relatively large value for smallest occluder typically makes sense.Then you can start adjusting it downward and see how Umbra culls better. Stop when culling starts taking up too much time and/or the occlusion data becomes too large.As for backface threshold, start with 100. If your occlusion data is too large, or if you happen to get weird results when the camera is very, very close or possibly even intersects an occluder, try using 90 or even a smaller value. More on this in the next post.In the next and final post, go over some common issues people tend to run into when using Umbra. In the meantime, go check out www.umbrasoftware.com for more information!]]></description><link>https://unity.com/blog/engine-platform/occlusion-culling-best-practices-unity-4-3</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/occlusion-culling-best-practices-unity-4-3</guid><pubDate>Thu, 26 Dec 2013 00:00:00 GMT</pubDate></item><item><title><![CDATA[Occlusion culling in Unity 4.3: The basics]]></title><description><![CDATA[The following blog post was written by Jasin Bushnaief of Umbra Software to explain the updates to occlusion culling in Unity Pro 4.3.Unity 4.3 includes a plethora of improvements. One of the completely re-implemented subsystems is occlusion culling. Not only has the interface been simplified and the culling runtime itself revamped, a number of new features have also been added.In this series of three posts, I’m going to go over how the new occlusion culling system works in Unity 4.3. This first post goes through the basics of how occlusion culling is done and what the basic usage is like with the user interface. The second post focuses on best practices to get the most out of occlusion culling. The third and final post focuses on some common problem scenarios and how to resolve them.But let’s start with some basics. Occlusion culling refers to eliminating all objects that are hidden behind other objects. This means that resources will not be wasted on hidden stuff, resulting in faster and better-looking games. In Unity, occlusion culling is performed by a middleware component called Umbra, developed by Umbra Software. The UI, from which Umbra is controlled in Unity, can be found in Window -> Occlusion Culling, under the Bake tab.Umbra’s occlusion culling process can be roughly divided into two distinct stages. In the editor, Umbra processes the game scene so that visibility queries can be performed in the game runtime, in the player. So first, Umbra needs to take the game scene as its input and bake it into a lightweight data structure. During the bake, Umbra first voxelizes the scene, then groups the voxels into cells and combines these cells with portals. This data, in addition to a few other important bits is referred to as occlusion data in Unity.In the runtime, Umbra then performs software portal rasterization into a depth buffer, against which object visibility can be tested. In practice, Unity gives Umbra a camera position, and Umbra gives back a list of visible objects. The visibility queries are always conservative, which means that false negatives are never returned. On the other hand, some objects may be deemed visible by Umbra even though in reality they appear not to be.It’s important to realize that, while this system appears similar to what was shipped with previous Unity versions, the entire system has been basically rewritten. A lot has changed for the better, both internally and externally!How to Use Umbra
There are obviously a few considerations in getting the best out of occlusion culling. Ideally, you’d want the least conservative result as fast as possible. There are, however, tradeoffs involved. The more accurate (i.e. the least conservative) results you want, the higher-resolution data you need to generate. However, higher-resolution data is slower to traverse in the runtime, yielding slower occlusion culling. If occlusion culling requires more frame time than it saves by culling, it obviously doesn’t make a whole lot of sense. On the other hand, very quick culling isn’t of much help if only a few objects are culled. So it’s a balancing act.The way Umbra lets you control this balance is by having you define a couple of bake parameters. The parameters determine what type of input the bake process should expect and what type of data is generated. In the runtime, using Umbra is as simple as it gets. If you’ve baked occlusion data and the camera has occlusion culling enabled in the Inspector, Unity will use Umbra automatically.Smallest Hole
The input is controlled using the smallest hole parameter. When voxelizing the occluder geometry, smallest hole maps almost directly to the voxel size. This means that if your geometry contains intentional holes, gaps or cracks that you wish to see through, using a smallest hole smaller than these is a good idea. On the other hand, a lot of the time the geometry contains lots of unintentional cracks that you do not wish to see through. A reasonable voxel resolution will patch these up. It may help to think about smallest hole as the “input resolution” of the bake.Note that setting smallest hole into a ridiculously small value means that baking will be unacceptably slow and/or take up a monumental amount of memory in the editor. In some rare cases, it may even cause the bake to fail due to insufficient memory. Then again, while using a larger value will be faster and more memory-friendly, it may cause Umbra to not see through things like grates or fences. So bigger isn’t always better either. In general, a smallest hole as large as possible without visible errors is desirable. In practice, we’ve found that values between 5 cm to 50 cm work fairly well for most games where the scale is “human-like”. The default value in Unity is 25 cm, and it’s a good starting point.Smallest Occluder
While smallest hole mostly deals with what type of input geometry you have, smallest occluder determines what kind of output data is produced. In essence, you can think about smallest occluder as the output resolution of the data. The larger the value, the faster it is to perform occlusion culling in the runtime, but at the cost of increased conservativity (false positives). The smaller the value, the more accurate results are generated, but at the cost of more CPU time. Obviously higher-resolution data will mean a larger occlusion data size as well.So as the name implies, a small value means that very fine features are captured in the occlusion data. Under the hood, this directly maps to how large cells Umbra creates. Lots of small cells mean lots of small portals between them, and naturally it’s more expensive to rasterize a large amount of small portals than vice versa.
The effects of changing smallest occluder can be seen in the picture below. Note how the depth buffer, which is essentially what Umbra sees, loses detail as smallest occluder increases.In most games, keeping smallest occluder slightly larger than the player, so around a few meters, is a good default. So anywhere between 2 and 6 meters may make sense if your game’s scale isn’t microscopic or galactic. The default value in Unity is 5 meters.Backface threshold
Perhaps the most difficult parameter to grasp is called backface threshold. While in many cases you don’t really need to change it, there are some situations in which it may come in handy to understand how it affects the generated data.First, it’s important to note that the parameter exists only for a single purpose: occlusion data size optimization. This means that if your occlusion data size is OK, you should probably just disregard backface threshold altogether. Second, the value is interpreted as a percentage, so a value of 90 means 90% and so on.OK so what does backface threshold actually do then? Well, imagine a typical scene that consists mostly of solid objects. Furthermore, there may be a terrain mesh whose normal points upwards. Given such a scene, where do you want your camera to be? Well, certainly not underneath the terrain, that’s for sure. Also, you probably don’t want your camera to be inside solid objects either. (Your collision detection normally takes care of that.) These invalid locations are also ones from which you tend to “see” mostly back-facing triangles (although they may of course get backface-culled). So in many cases it’s safe to assume that any location in the scene, from which the camera sees a lot of back-facing triangles, is an “invalid” one, meaning that the in-game camera will never end up in those locations.The backface threshold parameter helps you take advantage of this fact. By defining a limit of how much back-facing geometry can be seen from any valid camera location, Umbra is able to strip away all locations from the data that exceed this threshold. How this works in practice is that Umbra will simply do random-sampling in all cells (see the previous post) by shooting out rays, then see how many of those rays hit back-facing triangles. If the threshold is exceeded, the cell can be dropped from the data. It’s important to note that only occluders contribute to the backface test, and the facing of occludees doesn’t bear any relevance to it. A value of 100 disables the backface test altogether.So, if you define the backface threshold as 70, for instance, to Umbra this means that all locations in the scene, from which over 70% of the visible occluder geometry doesn’t face the camera, can be stripped away from the occlusion data, because the camera will never end up there in reality. There’s naturally no need to be able to perform occlusion culling correctly from underneath the terrain, for instance, as the camera won’t be there anyway. In some cases, this may yield pretty significant savings in data size.It’s important to stress that stripping away these locations from the occlusion data means that occlusion culling is undefined in these locations. “Undefined”, in this context, means that the results may be correct, incorrect (pretty much random) or return an error. In the case of an error, all objects are simply frustum culled.Of course in some cases, there just happens to be some amount of back-facing geometry in valid camera locations too. There may be a one-sided mesh that has been, possibly erroneously, tagged as an occluder. If it’s a large one, it may cause the backface test trigger in nearby areas, resulting in culling artifacts (=errors). This is why the default value of backface threshold in Unity is 100, meaning the feature is disabled by default.Feel free to experiment with the parameter. Try reducing the value to 90, which should drop a lot of data underneath terrains for example. See how it has any noticeable effect on the occlusion data size. You can go even lower if you want. Just remember to do so at your own risk. If you start popping into rendering artifacts, increase the value back to 100 and see if it fixes the problems.To be continued…
In the next post, I’ll go into some best practices and recommendations for how to get optimal results out of occlusion culling. Please visit www.umbrasoftware.com for more information about Umbra.Part II
Part III]]></description><link>https://unity.com/blog/engine-platform/occlusion-culling-basics-unity-4-3</link><guid isPermaLink="true">https://unity.com/blog/engine-platform/occlusion-culling-basics-unity-4-3</guid><pubDate>Mon, 02 Dec 2013 00:00:00 GMT</pubDate></item><item><title><![CDATA[Come Learn with Learn]]></title><description><![CDATA[So you’ve decided to download and check out this newfangled “Unity” thing. You open it up, create a project, and are presented with the Unity editor. At this point you’re probably thinking to yourself, “OK, now what?” That’s where we come in. We are the Unity Learn team and our goal in this crazy, hectic world is to labor tirelessly to bring you the best content to learn from and utilize in your games. Of course, now you are probably thinking to yourself, “That’s an interesting claim, faceless-internet-article-writing-man, but certainly your content can’t help me. I make special games!” Nay, I say to you. Our content can help anyone learn to use Unity to make all kinds of games. Just look at what we have to offer (the Learn portion of Unity’s website can be found at Unity3d.com/Learn).You like tutorials. We get that. That’s why we’ve made a bazillion of them and we keep adding more. We get that you’re too busy to read all sorts of words. That’s why our tutorials are video tutorials in stunning high definition! You never have to guess where an option is or what a button looks like. Just grab a bowl of popcorn and your favorite caffeinated beverage, queue up our videos, and follow along. You’ll be a pro in no time (warning: watching videos actually takes some time due to them not existing inside a black hole)!Come check our newest initiative: Live Training! That’s correct, come hang out with a real person as we teach concepts and answer questions in real time! Right now you’re thinking, “Blargpfpfpf” (that’s the sound of your brain exploding). Not only do we deliver content live, we actually really enjoy it! Come check out what we have scheduled. You can also watch past sessions to see just what you’re getting yourself into. We look forward to seeing you there. I mean you specifically, John (your name is probably not John, but if it is, I just blew your mind).Perhaps you’re the type of person that prefers to drudge through tons of documentation. Never fear, we have that too. Chances are most of your questions and curiosities can be resolved simply by flipping through the posted articles and examples. So feel free to dive right in. There’s nothing wrong with being a lone wolf. We won’t tell anyone.It can be very frustrating when you have a specific question that no resources seem to address directly. Luckily, Unity has a fantastic community. While not directly controlled by the Learn team, it’s still on our page and so it will be mentioned here (and there’s nothing you can do about it). Stop and in say “Hi” to fellow Unity users in the forums. Also, swing by the Unity Answers section to ask specific questions and get an amazing level of help! We’re all in this together!The Unity Learn team is a giant collection of superhuman awesome-sauce. We are here to provide you with content and to lower the barrier to entry into game development. We recognise that you would rather make games than learn to make games, so let us expedite the process for you. Swing by our live sessions or check out our pre-recorded videos to start learning.Got questions, comments, suggestions, snide remarks, or personal anecdotes? Hit us up on twitter:@Unity3D@mikegeig (That’s me!)@willgoldstone (He’s like a British Ryan Gosling)@theantranch (a.k.a Little Angel)@robotduck (He is an actual duck... no kidding)@rodulator (Scottish and angry, best leave him alone)Now go and make games. We expect to see progress!]]></description><link>https://unity.com/blog/community/come-learn-with-learn</link><guid isPermaLink="true">https://unity.com/blog/community/come-learn-with-learn</guid><pubDate>Thu, 21 Nov 2013 00:00:00 GMT</pubDate></item><item><title><![CDATA[From camping in the classroom, to a real game dev studio]]></title><description><![CDATA[Kenneth and I wanted to found a start-up studio with a team of around 10 people. We wanted to make big, ambitious games. Kenneth dedicated himself to becoming a badass programmer; I focused on becoming a design and business guru. I spent months planning a team structure, what kind of people we needed and what they would do. I also wrote a game bible for our game, which was always changing, but it allowed us to have a detailed fundament. Now, we just needed to find the rest of the team.Then we set out to get exactly who we wantedWe were teacher assistants at the time, so we knew who the brightest and best were in our classes. We had to get the right people interested in our idea. We had to motivate them to work hard without an immediate pay-off. We invited some exceptional students to an exclusive meeting. We told them we had chosen them to join our special project, based on their awesome dedication and skill. We shared our vision of making games with them. And we told them that we couldn’t pay them. At the end of that first meeting we already had a team of 9 and it was time to start developing our game.Kenneth and I wanted to found a start-up studio with a team of around 10 people. We wanted to make big, ambitious games. Kenneth dedicated himself to becoming a badass programmer; I focused on becoming a design and business guru. I spent months planning a team structure, what kind of people we needed and what they would do. I also wrote a game bible for our game, which was always changing, but it allowed us to have a detailed fundament. Now, we just needed to find the rest of the team.We were teacher assistants at the time, so we knew who the brightest and best were in our classes. We had to get the right people interested in our idea. We had to motivate them to work hard without an immediate pay-off. We invited some exceptional students to an exclusive meeting. We told them we had chosen them to join our special project, based on their awesome dedication and skill. We shared our vision of making games with them. And we told them that we couldn’t pay them. At the end of that first meeting we already had a team of 9 and it was time to start developing our game.Half a year passed and we realized that being nine noobs on our virgin game journey equalled an extreme challenge. We underestimated the work it would take to establish a proper pipeline to create a beautiful 3D game. And, getting 9 people to work efficiently without bottlenecks was, and is, a challenge.We realized that to get this done we had to focus exclusively on our work.Dedicating ourselves full-time to game development without a salary required us to skip classes. We also started to camp out in an empty classroom during the summer vacation. By some miracle no one discovered our “camp”. So we stayed, for seven months. Some of us actually moved out of our apartment to take up residence at the University. We had a gym, baths and a kitchen in the teacher’s room—everything we needed.Then one morning, a teacher randomly walked in and saw 8 guys brushing their teeth in their underwear. We were kicked out of course, but those seven months of living together had turned us into a team. We proved to each other, and ourselves, how committed we were to making our game.After getting kicked out of the university, we decided that the whole team would move in together and share the rent. We Googled the cheapest place to live in Denmark, and a few weeks later we were living in a massive house with 3 floors, far away from our families and friends.It felt so awesome to finally have our own place without worrying about being kicked out. We lived and worked together in the house for a year. In that time we changed, from a group of friends, to a team of professionals. At one point we were 16 people living together, which resulted in unforeseen problems. Like the massive amounts of garbage (we ate a lot of frozen pizzas that year) to the arguments about cleaning up that we often took in our team meetings. But we managed it pretty well. We all wanted the same thing, to release our game.How did we manage to get so far on so little money? First, we didn’t get paid for our work. We’ve reached the point of (almost) finalizing our game with the help of 30 developers who have received no salary. Second, we had a couple of key breakthroughs with funding. We got a much-needed cash infusion when the Danish Film Institute gave us almost $40,000. We used that money on team transportation, the rent for our house, hardware, software and conferences.We also launched a Kickstarter project in October 2012. With only one week to go we still lacked 35% of the funds. We put out a photo album that told the story I’m telling here. It gave our project the emotional punch we needed to get more backers, and just 8 hours after posting the album we surpassed our funding goal.Currently we are in a new office in Copenhagen. We now have 10 full-time developers and one part-timer. There are new hurdles to jump, such as how to get on Steam. There are also new rewards, like winning for Best Danish Game Developer 2013.In my opinion being an indie studio can be just like being a professional football team; it’s full of financial uncertainty yet requires boundless dedication and a love for what you do. Realize that, and start failing so you can start winning.Video: A chat with Steffen Kabbelgaard at Unite Nordic 2013Our story continues at https://forcedthegame.com/story/]]></description><link>https://unity.com/blog/community/from-camping-in-the-classroom-to-a-real-game-dev-studio</link><guid isPermaLink="true">https://unity.com/blog/community/from-camping-in-the-classroom-to-a-real-game-dev-studio</guid><pubDate>Wed, 03 Jul 2013 00:00:00 GMT</pubDate></item><item><title><![CDATA[Learn Unity update no. 3: Phase 1 and lab testing]]></title><description><![CDATA[Here at Unity, since last August we've been pushing ahead with our plan to create a totally new learning area on the site, and as a larger concept - a new focus on the web for people young and old who are new to game development, and want to get started. Naturally we want to serve our existing users too, and as this new area develops, we hope there will be something for everyone to inspire fresh ideas, and ultimately, awesome games and interactive content.If you've missed the previous updates on this project, I recommend you read up on where we've come from so far in these previous blog posts -https://blog.unity.com/community/learn-unity-coming-soonhttps://blog.unity.com/community/learn-unity-update-1https://blog.unity.com/community/learn-unity-update-2At this stage, we're still on target to launch the first iteration of the project in late March, and you'll see a lot of beginner content arrive around then. We'll also be bringing this content to GDC to chat to anyone who wants to stop by the Unity booth and talk about game development.As stated previously, we don't want to wait until everything is recorded to get you started using this new learning area, so we plan to ship phase one with a lot of the basics of game development in Unity available for beginners to get started. Then over time we'll be adding more content, covering more topics, and making good on our promise of democratizing game development, by giving you as much knowledge on the topic as we possibly can. In the first phase we plan to ship -The Robot Lab environmentBeginner Scripting lessonsBeginner EditorBeginner Physics LessonsBeginner Graphics LessonsBeginner Audio LessonsBeginner Physics Assignments'Stealth' - a larger game level tutorialAt the time of writing, we have our first tutorial environment ready to ship - The Robot Lab, with all manner of crazy props from a giant robot arm, to a sci fi battering ram! This has taken time as we are producing the level to the highest standards of detail, to try and inspire you to experiment, learn and have fun with these assets. We'll be using this environment to deliver the bulk of the learning content that you'll see in phase one, aside from the larger level project 'Stealth'.To make sure this environment is up to your standards, today we're pushing this project to the Asset Store to let you get your hands on it, and let you start experimenting with the props we've created. As a former tutor I know how valuable it can be to have cool assets to inspire your students so I wanted to get this content out to you as soon as we were happy with it.We'd also like feedback on any bugs you find so please write a comment on this post or email me directly on will [at] unity3d dot com during this testing period. We'll be adding more scripts, a few collision meshes and more sound effects but for now our only known bug is a lightmapping issue when opening on mac. So what are you waiting for? grab the project now and have a play with the lab!In terms of video tutorial content, we have our Beginner Editor, Physics and Scripting Lessons produced and on our staging site which is also currently mid-production. The Stealth game is our first larger 'Project' (as opposed to Lesson or Assignment, our smaller pieces of content), and is currently being pieced together by the team, ready to be recorded as video steps in the coming weeks.
The game level is designed to teach you how to put together a game level in Unity, comprising a metal gear solid style 'sneak em up' with security cameras, guards, keycards and a battle bus! This project will help you learn about Character animation for player and enemies, Raycasting, Collision, Game logic and various other tips and tricks! We'll have more to show of this soon, but for now here's a sneaky peek at our main character.We are also continuing to prototype other ways of teaching game development with Unity, and we'll have more news on a piece of new tech we're developing with schools in mind, towards Q2 of this year.For now, if you are a teacher at any level, we'd like to hear from you, and get your feedback on how we can better support you - drop me a line on will [at] unity3d dot com and we'll add you to our database of tutors we're compiling.]]></description><link>https://unity.com/archive/blog/news/learn-unity-update-3-phase-1-and-lab-testing</link><guid isPermaLink="true">https://unity.com/archive/blog/news/learn-unity-update-3-phase-1-and-lab-testing</guid><pubDate>Mon, 11 Feb 2013 00:00:00 GMT</pubDate></item><item><title><![CDATA[Learn Unity update no. 2]]></title><description><![CDATA[Here at Unity we've been working hard on an entirely new area of the website to help you learn game development with Unity. We've posted twice so far about this, and given you an outline of how the system is going to work. Take a look at our first two posts if you're unfamiliar with what we're working on -https://blog.unity.com/community/learn-unity-coming-soonhttps://blog.unity.com/community/learn-unity-update-1So hopefully you know that we're working on a Retro-futuristic sci-fi game world, in which we'll base all of our tutorials. To flesh this out, I wanted to share some of the concepts of the world, to get you excited about the environments and learning content we have planned.The tutorials are set on the island research facility of Unity Labs. This top secret place is where our experts create simulations of game development, so that we can make Unity the best game development tool in the world! Let's take a look at some of what you'll encounter at Unity labs (we don't want to give everything away right now..) -This is where it all begins. This little slice of paradise hides all of Unity Labs' dark secrets!This is where our engineers play with physics experiments and create gameplay! We plan to make this environment available as part of the launch plan.One of our chief scientists, Astrella is one of several characters you'll encounter in the Unity Labs world..Part of our physics assignment experiments, the battering ram & blast doors help us test physics joints at Unity labs.Currently we're creating plenty of content to flesh out the learning area - all based in the world of Unity labs. We plan to launch our first iteration of the system in March. It will feature one large tutorial project, and two to three of our topic areas with many small lessons and assignments to help you learn Unity, or if you are a tutor - to support you teaching your classes.We hope to bring you another update in a few weeks time with a preview of what we've done, but rest assured that this project is something we're taking our time over as we plan to deliver only the best quality content both in terms of visual AAA fidelity, and in video / training content production. We hope you're as excited about it as we are!]]></description><link>https://unity.com/blog/news/learn-unity-update-2</link><guid isPermaLink="true">https://unity.com/blog/news/learn-unity-update-2</guid><pubDate>Thu, 13 Dec 2012 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity Serialization]]></title><description><![CDATA[So you are writing a really cool editor extension in Unity and things seem to be going really well. You get your data structures all sorted out are really happy with how the tool you have written works.Then you enter and exit play mode.Suddenly all the data you had entered is gone and your tool is reset to the default, just initialized state. It’s very frustrating! “Why does this happen?” you ask yourself. The reason has to do with how the managed (mono) layer of Unity works. Once you understand it, then things get much easier :)What happens when an assembly is reloaded?
When you enter / exit play mode or change a script Unity has to reload the mono assemblies, that is the dll's associated with Unity.On the user side this is a 3 step process:Pull all the serializable data out of managed land, creating an internal representation of the data on the C++ side of Unity.Destroy all memory / information associated with the managed side of Unity, and reload the assemblies.Reserialize the data that was saved in C++ back into managed land.What this means is that for your data structures / information to survive an assembly reload you need to ensure that it can get serialized into and out of c++ memory properly. Doing this also means that (with some minor modifications) you can save this data structure to an asset file and reload it at a later date.How do I work with Unity's serialization?
The easiest way to learn about Unity serialization is by working through an example. We are going to start with a simple editor window, it contains a reference to a class which we want to make survive an assembly reload.When you run this and force an assembly reload you will notice that any value in the window you have changed will not survive. This is because when the assembly is reloaded the reference to the ‘m_SerialziedThing’ is gone. It is not marked up to be serialized.There are a few things that need to be done to make this serialization work properly:
In MyWindow.cs:The field ‘m_SerializedThing’ needs to have the attribute [SerializeField] added to it. What this tells Unity is that it should attempt to serialize this field on assembly reload or similar events.In SerializeMe.cs:The class ‘SerializeMe’ needs to have the [Serializable] attribute added to it. This tells Unity that the class is serializable.The struct ‘NestedStruct’ needs to have the [Serializable] attribute added to it.Each (non public) field that you want to be serialized needs to have the [SerializeField] attribute added to it.After adding these flags open the window and modify the fields. You will notice that after an assembly reload that the fields retain their values; that is apart from the field that came from the struct. This brings up the first important point, structs are not very well supported for serialization. Changing ‘NestedStruct’ from a struct to a class fixes this issue.The code now looks like this:Some Serialization RulesAvoid structsClasses you want to be serializable need to be marked with [Serializable]Public fields are serialized (so long as they reference a [Serializable] class)Private fields are serialized under some circumstances (editor).Mark private fields as [SerializeField] if you wish them to be serialized.[NonSerialized] exists for fields that you do not want to serialize.Scriptable Objects
So far we have looked at using normal classes when it comes to serialization. Unfortunately using plain classes has some issues when it comes to serialization in Unity. Lets take a look at an example.This is a contrived example to show a very specific corner case of the Unity serialization system that can catch you if you are not careful. You will notice that we have two fields of type NestedClass. The first time the window is drawn it will show both the fields, and as m_Class1 and m_Class2 point to the same reference, modifying one will modify the other.Now try reloading the assembly by entering and exiting play mode... The references have been decoupled. This is due to how serialization works when you mark a class as simply [Serializable]When you are serializing standard classes Unity walks through the fields of the class and serializes each one individually, even if the reference is shared between multiple fields. This means that you could have the same object serialized multiple times, and on deserialization the system will not know they are really the same object. If you are designing a complex system this is a frustrating limitation because it means that complex interactions between classes can not be captured properly.Enter ScriptableObjects! ScriptableObjects are a type of class that correctly serializes as references, so that they only get serialized once. This allows complex class interactions to be stored in a way that you would expect. Internally in Unity ScriptableObjects and MonoBehaviours are the same; in userland code you can have a ScriptableObject that is not attached to a GameObject; this is different to how MonoBehaviour works. They are great for general data structure serialization.Let’s modify the example to be able to handle serialization properly:The three changes of note here are that:NestedClass is now a ScriptableObject.We create an instance using the CreateInstance<> function instead of calling the constructor.We also set the hide flags... this will be explained laterThese simple changes mean that the instance of the NestedClass will only be serialized once, with each of the references to the class pointing to the same one.ScriptableObject Initialization
So now we know that for complex data structures where external referencing is needed it is a good idea to use ScriptableObjects. But what is the correct way to work with ScriptableObjects from user code? The first thing to examine is HOW scriptable objects are initialized, especially from the Unity serialization system.The constructor is called on the ScriptableObject.Data is serialized into the object from the c++ side of unity (if such data exists).OnEnable() is called on the ScriptableObject.Working with this knowledge there are some things that we can say:Doing initialization in the constructor isn’t a very good idea as data will potentially be overridden by the serialization system.Serialization happens AFTER construction, so we should do our configuration stuff after serialization.OnEnable() seems like the best candidate for initialization.Lets make some changes to the ‘SerializeMe’ class so that it is a ScriptableObject. This will allow us to see the correct initialization pattern for ScriptableObjects.On the surface it seems that we have not really changed this class much, it now inherits from ScriptableObject and instead of using a constructor has an OnEnable(). The important part to take note of is slightly more subtle... OnEnable() is called AFTER serialization; because of this we can see if the [SerializedFields] are null or not. If they are null it indicates that this is the first initialization, and we need to construct the instances. If they are not null then they have been loaded into memory, and do NOT need to be constructed. It is common in OnEnable() to also call a custom Initialization function to configure any private / non serialized fields on the object, much like you would do in a constructor.HideFlags
In the examples using ScriptableObjects you will notice that we are setting the ‘hideFlags’ on the object to HideFlags.HideAndDontSave. This is a special setup that is required when writing custom data structures that have no root in the scene. This is to get around how scene loading works in Unity.When a scene is loaded internally unity calls Resources.UnloadUnusedAssets. If nothing is referencing an asset the garbage collector will find it. The GC uses the scene as ‘the root’ and traverses the hierarchy to see what can get GC’d. Setting the HideAndDontSave flag on a ScriptableObject tells Unity to consider that object as a root object. Because of this it will not just disappear because of an assembly reload. The object can still be destroyed by calling Destroy().Some ScriptableObject RulesScriptableObjects will only be serialized once, allowing you to use references properly.Use OnEnable to initialize ScriptableObjects.Don’t ever call the constructor of a ScriptableObject, use CreatInstance insteadFor nested data structures that are only referenced once don’t use ScriptableObject as they have more overhead.If your scriptable object is not rooted in the scene set the hideFlags to HideAndDontSave.Concrete Array Serialization
Lets have a look at a simple example that serializes a range of concrete classes.This basic example has a list of BaseClasses, by clicking the ‘Add Simple’ button it creates an instance and adds it to the list. Due to the SerializeMe class being configured properly for serialization (as discussed before) it ‘just works’. Unity sees that the List is marked for serialization and serializes each of the List elements.General Array Serialization
Lets modify the example to serialize a list that contains members of a base class and child class:The example has been extended so that there is now a ChildClass, but we are serializing using the BaseClass. If you create a few instance of the ChildClass and the BaseClass they will render properly. Issues arise when they are placed through an assembly reload. After the reload completes every instance will be a BaseClass, with all the ChildClass information stripped. The instances are being sheared by the serialization system.The way to work around this limitation of the serialization system is to once again use ScriptableObjects:After running this, changing some values, and reloading assemblies you will notice that ScriptableObjects are safe to use in arrays even if you are serializing derived types. The reason is that when you serialize a standard [Serializable] class it is serialized ‘in place’, but a ScriptableObject is serialized externally and the reference inserted into the collection. The shearing occurs because the type can not be properly be serialized as the serialization system thinks it is of the base type.Serializing Abstract Classes
So now we have seen that it’s possible to serialize a general list (so long as the members are of type ScriptableObject). Lets see how abstract classes behave:This code much like the previous example works. But it IS dangerous. Lets see why.The function CreateInstance<>() expects a type that inherits from ScriptableObject, the class ‘MyBaseClass’ does in fact inherit from ScriptableObject. This means that it’s possible to add an instance of the abstract class MyBaseClass to the m_Instances array. If you do this and then try and access an abstract method bad things will happen because there is no implementation of that function. In this specific case that would be the OnGUI method.Using abstract classes as the serialized type for lists and fields DOES work, so long as they inherit from ScriptableObject, but it is not a recommended practice. Personally I think it’s better to use concrete classes with empty virtual methods. This ensures that things will not go bad for you.When do ScriptableObjects get persisted into scene / prefab files?
GameObjects and their components are saved into a scene by default. Asset types (Materials / Meshes / AnimationClip / SerializedObject's) that are created from code are saved in the scene so long as a game object or their components in the scene references it.Asset types can also be explicitly marked as assets using AssetDatabase.CreateAsset. In that case they will not be saved in the scene but simply referenced. If an asset type or game object type is marked as HideAndDontSave it also not saved in the scene.Questions?]]></description><link>https://unity.com/blog/technology/unity-serialization</link><guid isPermaLink="true">https://unity.com/blog/technology/unity-serialization</guid><pubDate>Thu, 25 Oct 2012 00:00:00 GMT</pubDate></item><item><title><![CDATA[Learn Unity coming soon.]]></title><description><![CDATA[Well its been a long time coming but we're finally working on a totally new learning section on the official Unity site. Our existing Support section is very out of date, and we made a conscious decision last year to replace it rather than try and update parts of it. With plenty of experience in education within the company, we have a great bed of talent to create learning materials for free so that you can pick up Unity not only as a migration from other systems but also as a way to learn game development from scratch.My past Unity tutorial project - https://unity3dstudent.com was an experiment I created during my time teaching BA Interactive Media Production at Bournemouth University. Since then, many people have learned Unity with that site and I'm happy to say the approach of smaller modules of content that work independently was proved valuable. We now plan to take this approach and expand upon it for the official site. This means that soon you will see a new section to replace the 'Support' area of the website, that contains an all new tutorial area, as well as the documentation and other support material.In interactive industries, many of us spend time teaching ourselves software from online resources. The games industry is no exception, and we see millions of fantastic online resources created by our community to help each other learn unity. This is one of the factors which has meant we could take time to create our own resource, safe in the knowledge that the community would help itself in the meantime - and for that we applaud you.Something that I haven't seen too much application of in interactive software training is the use of non-linear approaches. Simply put - most training materials force you to follow a pre-determined route through your learning material. This echoes the traditional classroom approach of presenting steps for students to follow and is tried and tested. However, the problem inherent in this approach is that as students we are then unable to prioritise what we wish to learn, or get directly to what we need to know, if simply using learning materials as a reference. For example - want to know how to use a trigger zone? you don't want to spend 20 minutes fast-forwarding through a long video to find that part out.For this reason, content you will see in our new learning area will take a modular approach with short videos or articles that you can dive into whenever you need, let's take a look at how this works.The learning area will be split into a hierarchy of -Levels (eg. Beginner, Intermediate, Advanced, Artist, Architect, Level Designer)Topics (eg. Graphics, Physics, Scripting, Audio, Characters, Animation)Lessons, Assignments & ProjectsLevels of content will be presented with complexity levels or Beginner, Intermediate and Advanced, but also show custom arrangements of content for Artists, or Architects for example. Eventually we hope to allow users to create their own custom level of content by picking whatever lessons they wish - this will hopefully benefit tutors teaching Unity who wish to create their own syllabus from our content. Each level will have Projects associated with it.Topics should be considered as playlists or groups of content on a particular topic, containing lessons and assignments on that topic. A single topic at a particular level should be seen as one Module of content - for example Beginner Physics.Lessons will be short videos you can watch to understand a concept - kind of like checking the Script Reference in docs works now. They will not require you to follow steps but simply explain. Assignments will take what you can learn from several modules and combine them to make a small part of a game - a mechanic or piecing together an environment for example. Finally, Projects will be the result of several Assignments, that give you the chance to make a small working demo. As you progress through incrementally complex levels of content, you'll create more detailed examples of gameplay - taking you through a variety of game development scenarios.We're also hoping to integrate this with your Unity developer network sign on - to allow you to track your progress, resume watching content etc. This may not be in the first iteration but is something we know will benefit users and be working to provide. This tracking also allows us to see what you're interested in, and provide targeted new learning content when we create it in the future.For the style of these tutorials, we wanted to develop a fairly unique and interesting style that will inspire you to learn our software. Having looked at many current art styles of games, we took a few of our own creative influences and have come up with a style that blends Retro-future art, Hi-tech, and the concept of a research resort - think Lost meets Portal, Thunderbirds, and well.. Unity! We hope you like what we're coming up with, in the meantime, there's a sneak peek at the art slice Dave has been working on at the top of this post.As you're likely aware, Unity supports C#, Javascript (aka Unityscript) and Boo (a derivative of Python, but rarely used). For this system we will support C# and Javascript - and by support I mean we'll primarily show C# in our video content but provide a Javascript conversion in the code listing beneath the video on the page. We had a take a decision on what to do in this regard, and felt that recording with both languages would slow us down - if we find that we have time to add this once we're in production later, we may change tack to having both languages recorded. Leave your thoughts in the comments!As a fan of action movies, I've always secretly wanted to utter the words 'I'm putting a team together' and fully expected this to be followed by a montage of myself and several others constructing some kind of battle tank, A-Team style. However, in the case of the team creating Unity tutorials, we've kept it a little more low key - and we've put together a small team that will be focused over the next few months on getting a set of Unity tutorial content together to help you learn- let's meet the team -Will Goldstone - Project Manager, PresenterI am Content manager at Unity, so I create the video material you see on our website, and work with our web team in marketing as they add new cool stuff to the site. I'll be presenting and recording the tutorials for this system.David Llewelyn - Technical ArtistDave joins us as artist for the project, from a background in triple-A console titles that include the Lego series of games.James Bouckley - ProgrammerJames has been with us for some time in the support department, helping thousands of users with problems in all areas of Unity development - and he also has a degree in maths and theoretical physics - cool!Emil 'AngryAnt' Johansen - Code OverlordIf you don't know Emil, you haven't used Unity for too long! but never fear, you'll get to know him. Emil is overseeing the quality of the content we produce and knows everything there is to know about Unity dev.Ethan Vosburgh - Artist extraordinaireEthan is another vet of Unity tech, and has been providing art content to demos and other projects we've given you over the past few years, if you've seen it, he's crafted it, and he is joining Emil in overseeing the quality of our content.]]></description><link>https://unity.com/archive/blog/community/learn-unity-coming-soon</link><guid isPermaLink="true">https://unity.com/archive/blog/community/learn-unity-coming-soon</guid><pubDate>Wed, 29 Aug 2012 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unity 2.5 for Mac and Windows now available!]]></title><description><![CDATA[Yes, it's true, we've done it. Yesterday we shipped Unity 2.5 which among other things finally offers support for Unity authoring on Mac OS X and Windows! From the announcement email I sent out (as company front-man):Today we are extremely happy to announce the release of Unity 2.5. For the first time Unity development is now available for use on both Mac OS X and Windows! True cross-platform development with Unity has now been realized. This has been an enormous project that has taken well over a year to complete, it's a release that we're very proud of having accomplished. What's more is that during this effort we've also nearly doubled in size as a company and so there is a lot more on the way, it's going to be an exciting year!While a key feature of this release is in fact the introduction of authoring support on Windows it's worth noting that we put a lot of work into general editor improvements that all content authors can take advantage of. What that means is that this is a significant release for both our existing users and all those potential new users waiting to try Unity for the first time. Here is the high-level overview of what you'll find in Unity 2.5:Windows editor supportAn all new tabbed, and fully customizable authoring interface3DS Max support on Windows (ala our Maya support on Mac OS X)New and improved scene navigation and object placement toolsGoogle Chrome supportand more...I don't want to repeat too much information here as we have a bunch on our site already. Check out the what's new page we have posted:What's New in Unity 2.5Both existing users and those wanting to evaluate Unity can download the latest installer from our trial download page:Trial DownloadOr you can of course just cut to the chase and buy now by visiting our online store:Buy UnityIt goes without saying that these are some exciting times for both Unity Technologies and the awesome community we have around us. And 2009 is just gettin' started!]]></description><link>https://unity.com/blog/technology/unity-25-for-mac-and-windows-now-available</link><guid isPermaLink="true">https://unity.com/blog/technology/unity-25-for-mac-and-windows-now-available</guid><pubDate>Thu, 19 Mar 2009 00:00:00 GMT</pubDate></item></channel></rss>