// transmission.log

Data Feed

> Intercepted signals from across the network — tech, engineering, and dispatches from the void.

1695 transmissions indexed — page 58 of 85

[ 2022 ]

20 entries
1141|blog.unity.com

The what, why, and how of cross promotion

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.

>access_file_
1142|blog.unity.com

Animation Curves, the ultimate design lever

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.

>access_file_
1147|blog.unity.com

Welcome, ironSource!

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.

>access_file_
1148|blog.unity.com

SerializeReference improvements in Unity 2021 LTS

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.

>access_file_
1149|blog.unity.com

Reimagining community with digital twin technology

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.

>access_file_
1150|blog.unity.com

Looking to boost your game’s LTV? Try an on-device advertising campaign

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.

>access_file_
1151|blog.unity.com

The first 30 days of an on-device campaign

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.

>access_file_
1152|blog.unity.com

Mobile performance optimization with Adaptive Performance 4.0

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!

>access_file_
1154|blog.unity.com

The app CMO manifesto: Why unified marketing is the best way forward

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.

>access_file_
1156|blog.unity.com

Making the most of your in-app advertising campaigns: Q&A with Liftoff

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.

>access_file_
1157|blog.unity.com

Detecting performance bottlenecks with Unity Frame Timing Manager

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.

>access_file_