Disclaimer: this is an automatic aggregator which pulls feeds and comments from many blogs of contributors that have contributed to the Mono project. The contents of these blog entries do not necessarily reflect Xamarin's position.

July 31

Building Apps for a Connected World

Building apps for a connected world can be tough; users expect their apps to work all the time, even with a slow (or possibly even no) mobile connection. This week on the Xamarin Podcast, Mike and I share some of our secrets for building connected apps, such as how to speed up network requests, create a pleasant offline experience, and handle exceptional scenarios that may occur.

Subscribe or Download Today

Knowing the latest in .NET, C#, and Xamarin is easier than ever with the Xamarin Podcast, available via iTunes, Stitcher, and SoundCloud. Do you have an interesting story, project, or advice for other .NET mobile developers? If so, we’d love to share it with the Xamarin community! Tweet @pierceboggan or @MikeCodesDotNet to share your blog posts, projects, and anything else you think other mobile developers would find interesting. Be sure to download today’s episode on building apps for a connected world, and don’t forget to subscribe!

The post Building Apps for a Connected World appeared first on Xamarin Blog.

July 30

Close Out Summer with Xamarin Events in August!

Celebrate the end of summer with a bang by joining fellow Xamarin developers at an event near you! This month is jam-packed full of exciting conferences, workshops, seminars, and user group meetups from all corners of the globe!

August Blog

Here’s just a taste of events happening this month:

Xamarin Dev Days – Birmingham Flag of the UK

  • Birmingham, UK: August 2nd
  • Discover what this Xamarin buzz is about with your community in Birmingham

São Paulo .NET Coders br

  • São Paulo, Brazil: August 7th
  • Get started with the Xamarin Platform

Xamarin Workshops & Training Germany

  • Hanover, Germany: August 10 – 15th
  • Five days of extensive training in the world of Xamarin!

DC Mobile .NET Developers Group us

  • Washington, DC: August 11th
  • Xamarin.Forms + Azure Mobile Services with Xamarin MVP, Fabian Williams

DFW Mobile .NET us

  • Dallas/Fort Worth, TX: August 12th
  • Mobile Design Patterns with Xamarin.Forms

Xamarin User Group San Diego us

  • San Diego, CA: August 13th
  • Interactive App Building with Xamarin.Forms

Xamarin Dev Days – Philadelphia us

  • Philadelphia, PA: August 15th
  • Come learn Xamarin awesomeness with your community in Philly

Xamarin Dev Days – New York us

  • New York, NY: August 16th
  • See what Xamarin has to offer with your community in New York

Minnesota Mobile Enterprise us

  • Minneapolis, MN: August 20th
  • Apple Watch Development with Xamarin’s Watch Kit

XHackNight powered by IBM Bluemix & Xamarin in

  • Bangalore, India: August 22 – 23rd
  • LEARN.HACK.WIN: a cross-platform mobile hackathon using Bluemix

Xamarin Dev Days – Madison us

  • Madison, WI: August 22nd
  • Learn how to go mobile with Xamarin with your community in Madison

XLSOFT Japan Japan

  • Tokyo, Japan: August 28th
  • Learn how to manage Android application licensing with Xamarin and Sentinel

Be sure to check out the Xamarin Events Forum for even more Xamarin events, meetups, and presentations happening near you!

Interested in getting a developer group started? We’re here to help! Here’s a tips and tricks guide on staring a developer group, an Introduction to Xamarin slide deck, and, of course, our community sponsorship program to get you started. Also, we love to hear from you, so feel free to send us an email or tweet @XamarinEvents to help spread the word and keep an eye out for events in your neck of the woods!

The post Close Out Summer with Xamarin Events in August! appeared first on Xamarin Blog.

July 29

Xamarin At the Top of the Visionary Quadrant in Gartner’s Magic Quadrant

Gartner logoBased on our vision and ability to execute, we’re honored to be recognized as at the top of the Visionary Quadrant in the recently published 2015 Gartner Magic Quadrant Report for Mobile Application Development Platforms.

Acknowledging the role of mobility as a cornerstone for every business development strategy, Gartner assesses the critical for mobile app development platform market by evaluating the “major vendors to enable enterprise IT developers, architects and mobile development leaders.” We’re thrilled to be recognized for the third year in a row as one of only 20 companies chosen for the report.

Gartner noted a few of our strengths in their assessment, including rapid growth, our wide range of support for the mobile development lifecycle, and the bridge to mobility we provide for traditional enterprise developers:

“Xamarin addresses what has been an underserved segment of the mobile development market — namely, C# developers who want to build native mobile apps without having to learn new languages and tools.”

“In 2014, Xamarin enjoyed strong growth in the enterprise, more than doubling its customers. It attracted high-profile partners such as IBM, SAP, and Oracle and has a growing partner ecosystem.”

We are particularly excited to have achieved this recognition as one of the youngest companies in the quadrant, indicating we’re succeeding in our mission to help you transform your customer relationship and business processes through mobile technology. With exciting new features on the way for Xamarin Platform, Xamarin Test Cloud, and Xamarin Insights, your mobile journey with Xamarin will only continue to get even better.

Visit our enterprise page to learn more about why Xamarin is a visionary in mobile app development.

The post Xamarin At the Top of the Visionary Quadrant in Gartner’s Magic Quadrant appeared first on Xamarin Blog.

July 28

Amazon Web Services Mobile SDKs for Xamarin Now Available

Amazon Web Services LogoToday, we’re excited to share the launch of the Amazon Web Services (AWS) Mobile SDKs for Xamarin. With these new SDKs, developers can easily connect their high-performance, native Xamarin apps to Amazon’s powerful array of AWS cloud services.

AWS SDK for Xamarin logoAWS platform services provide several powerful solutions, including: identity management through Amazon Cognito Identity, Amazon Cognito Sync, Amazon Simple Storage Service cloud storage, Amazon DynamoDB’s fully managed database, Amazon Mobile Analytics, and Amazon Simple Notification Service for mobile push notifications.

The AWS Mobile SDKs for Xamarin allow you to use a shared C# codebase to connect your native Xamarin iOS and Android apps to any of these AWS services. For example, you can use Amazon Cognito Cloud Sync to synchronize app states between devices for a seamless, cross-device experience and use Amazon S3’s cloud storage for easy access to critical documents and content.

Integrating the AWS Mobile SDKs for Xamarin into your mobile apps is simple.

Getting Started

This example will show you how to get started with Amazon Cognito Cloud Sync:
AWS Cognito SDK

In your app, you will need to initialize a CognitoSyncManager and open a dataset using the Identity Pool ID and Region Endpoint of the pool you just created:

public Dataset GetDataset ()
{
	// Login and open/create the dataset
	var credentials = new CognitoAWSCredentials ("identity-pool-id", RegionEndpoint.USEast1);
	// Optional: Add credential login to associate data to a user
	// credentials.AddLogin ("graph.facebook.com", "FB_AUTH_TOKEN");
	var syncManager = new CognitoSyncManager (credentials,
new AmazonCognitoSyncConfig { RemoteEndpoint = RegionEndpoint.USEast1 });
	var dataset = syncManager.OpenOrCreateDataset ("TODO_LIST");
	return dataset;
}

If you would like your dataset associated to a particular user, enabling the user to share the same data across devices and platforms, you will need to set up an identity provider. Cognito supports Facebook, Google+, Twitter, Amazon, OpenID, or a custom Developer Authenticated Identity.

If you use Facebook authentication, you can use the Facebook Components to authenticate your users after you’ve configured your App ID in the Cognito portal, and then add the authentication token to your credentials before opening your dataset:

credentials.AddLogin ("graph.facebook.com", "FB_AUTH_TOKEN");

You can store any information you’d like in your dataset by specifying an ID and an arbitrary value (in this case a JSON string). After you call the async Sychronize() method, your data will be pushed to the cloud:

public async Task CreateTodoItem (string title)
{
	var dataset = GetDataset ();
	// Create a new todo list item
	var todoItem = new TodoItem ("Pick up some milk");
	// Serialize the object to JSON and put it in the dataset
	dataset.Put (todoItem.Id, JsonConvert.SerializeObject (todoItem));
	// Synchronize changes to the cloud
	await dataset.SynchronizeAsync ();
}

You can also easily fetch all of the items in your dataset from the cloud on any device:

public async Task<IEnumerable<TodoItem>> GetTodoItems ()
{
	var dataset = GetDataset ();
	// Synchronize any changes
	await dataset.SynchronizeAsync ();
	// Deserialize the records' values from the dataset
	return dataset.Records.Select (r =>
                JsonConvert.DeserializeObject<TodoItem> (r.Value));
}

AWS and Xamarin take the hard work out of adding a complex backend to your apps, giving you a flexible, scalable way to go mobile. Be sure to check out all of the AWS SDK Components in the Component Store today!

The post Amazon Web Services Mobile SDKs for Xamarin Now Available appeared first on Xamarin Blog.

July 27

Join Xamarin at AnDevCon 2015 in Boston

Join Xamarin in Boston, MA from July 30-31 for AnDevCon 2015, the technical conference for software developers and engineers building Android apps. Key members from the Xamarin team will be available to discuss your apps and projects and show you what’s new across our products.

AnDevCon 2015 Boston Banner

We’re excited to give AnDevCon 2015 attendees a close up look at Xamarin Test Cloud, which we recently announced will be getting support for Appium and its multiple language bindings, including Java, JavaScript, Python, and PHP. You’re invited to join our early access program, and we’ll have members from our Xamarin Test Cloud team onsite at the conference to answer any of your questions.

Come visit us at booth #803 and say hello if you’re at the conference — we look forward to seeing you in Boston!

The post Join Xamarin at AnDevCon 2015 in Boston appeared first on Xamarin Blog.

July 25

The end of NRefactory 6

I've been developing for NRefactory several years now after the roslyn release I made a new 6.0 version. For the 6.0 version there are bad and good news.
The bad news is that it's no longer in development.

The good news is that the successor of the refactoring part is (RefactoringEssentials). The rest of the code has been moved to the monodevelop source code and is still available and in active development as open source.

So the 5.0 version will remain - and will be still maintained a bit by Daniel Grundwald and me.

Why was this decision made ?

Mostly because most NRefactory6 code was just wrappers around internal roslyn classes (and making them public). I don't think that it's worth as a stand alone library.
Since #Develop was discontinued the 2nd big NRefactory user is no longer around and it's more time effective to move that code to monodevelop and split the refactorings so they can be used in VS.NET 2015 as well.

So I deleted the NRefactory6 today. Bye NRefactory we had a nice time - and hello RefactoringEssentials :)

July 24

More Awesome Content from Our Community

Xamarin developers not only build amazing iOS and Android apps in C#, but love contributing to the Xamarin community through blog posts, components, plugins, and podcasts. The links below will take you to some of favorites over the past few weeks:

Podcasts

Yet Another Podcast with Jesse Liberty

James Montemagno and Jesse Liberty discuss all things Xamarin.

  • Yet Another Podcast – James Montemagno joins Jesse Liberty discuss all things Xamarin, including My Shoppe, Moments, and Xamarin Dev Days.

Great Blog Posts

Awesome Xamarin.Forms Blog Posts

Adam Wolf’s card UI with a drop shadow using Xamarin.Forms.

Thanks to these developers for sharing their Xamarin knowledge with the rest of the developer community. If you have an article or blog post related to Xamarin development that you would like to share, please let us know by tweeting @XamarinHQ and it may be featured in an upcoming community content roundup.

The post More Awesome Content from Our Community appeared first on Xamarin Blog.

July 23

Build Your Own Messaging App in XAML

One of the most popular features of Xamarin.Forms is the ability to use your existing XAML experience to build UIs for iOS, Android and Windows Phone. Moments, a Snapchat clone built with Xamarin.Forms and Microsoft Azure, originally made use of the C# API for creating user interfaces. Today, I’m happy to announce that Moments has been expanded to include a XAML implementation as well, so you can build your own Snapchat clone in XAML today!

Moments, a Snapchat clone built with Xamarin.Forms and Azure.

Build Cross Platform UIs in XAML

If you are coming from a Windows background, Xamarin.Forms XAML will feel right at home! If you aren’t, there are still plenty of great reasons to build your user interface using XAML.

Readability

XAML is often more succinct and readable than the equivalent code in C#. This is especially true when building complex view hierarchies with multiple layouts. Additionally, the parent-child hierarchy inherent in XML allows XAML to mimic the hierarchy of user interface objects with greater visual clarity.

Separation of Concerns

Rather than having an entire page represented in one file, XAML allows you to clearly separate views from the accompanying logic associated with the view, thus making your application more modular.

MVVM Data Binding & Commands

The Model-View-ViewModel (MVVM) architectural pattern is very common in mobile development today – and for good reason. Traditionally, MVVM allows you to further enforce separation of concerns by separating the user interface from the data, with a bridge called a view model. Typically, mobile developers can share the model and view model with all target platforms, while writing the view for each individual platform. With Xamarin.Forms, everything can be shared, including the view. XAML makes using the MVVM pattern easy through data binding and commands, which allow your view and view model to communicate with ease.

Build Your Own Snapchat Clone Today

Moments is a great sample app for seeing everything Xamarin.Forms has to offer. If you’ve ever wondered how to use custom controls from XAML, use markup extensions, implement styling, or enforce the MVVM architectural pattern through data binding and commands, Moments is the sample app for you. Moments is completely open-source and freely available under the MIT license, so building your own Snapchat clone based on Moments is easy. Follow the steps listed here, and you’ll be sending selfies to all your buddies in a matter of minutes!

The post Build Your Own Messaging App in XAML appeared first on Xamarin Blog.

Unite Boston update: Early Bird ticket sales end tomorrow. Partial schedule is up!

Unite Boston is just two months away! Early Bird ticket pricing ends tomorrow (Friday, July 24), so be sure to register now to save $70!

As a reminder, the conference will take place at the John B. Hynes Veterans Memorial Convention Center in Boston on September 21-23. All details here: http://unity3d.com/unite/boston

A partial conference schedule is available including sessions to be presented by experts in the Unity community. Scroll down to view the list (note: date/time of sessions still subject to change). Sessions range in topic from postmortems and best practices to tech-intensive and specific workflow presentations.

Details regarding sessions given by Unity reps will be added soon. In the meantime, here is what you can expect:

  • A rich and inspiring keynote – details to come!
  • Deep tech dives with the latest Unity features, including the latest graphics, animation, physics, multiplayer, VR, cross-platform, Analytics, Ads and Cloud Build features
  • The Roadmap talk: it’s standing room only at this session where you can ask anything about the awesome new tech that is coming up in Unity 5 and beyond!
  • Ask the Experts, where Unity engineers will be available to help you with your unique development challenges

In addition to the learning and networking, there’s still a chance to submit your game for the 8th Unity Awards!
Hurry, we close submissions on July 31, 2015. Details here.

Here is the first batch of talks presented by experts in the Unity community. More to come (date/time of sessions still subject to change):

11 Games for 30 Players in 12 Months by Peter Vigeant (ESC) – 09/23/15 01:30 PM

ESC is a new, unique gaming platform where up to 30 players are immersed in a world supported by professional lighting and show effects, surround sound and a 30-foot curved screen that projects all of the action. Our team worked over five years to bring the experience to life and early this Spring, the first two public locations opened in Philadelphia and Riverside, California, with a third on the way. Discover the lessons learned and challenges faced as Kevin Harper, the lead developer, and Pete Vigeant, the lead game designer, present the story behind the 11 launch titles of ESC.

vigeant

5 Must Know Design Strategies for Better VR Games by Nicole Lazzaro (XEODesign) – 09/21/15 04:00 PM

Virtual Reality. From the dawn of time games have always created it. It’s the magic circle where we transport our players for a few minutes, a few hours, a few days even years. With today’s new Virtual Reality Headsets and AR Smart Glasses we finally reach the intersection of movie like immersion and the interaction possibilities of games. On one hand Virtual Reality offers an unprecedented theater for engagement on the other it presents more physiological, psychological, and gameplay challenges than all other platform shifts in game’s history combined. The talk presents the 5 most common mistakes VR/AR developers make discovered in XEODesign’s year of VR research. We then present practical VR design strategies to overcome them. If you want to ship a VR/AR game and not a barfatorium you must see this talk!

lazzaro

A coder’s guide to spline-based procedural geometry by Joachim Holmér (Neat Corporation) – 09/21/15 02:00 PM

Procedural generation is a popular approach for creating content thanks to its flexibility and scalability – but how do you actually do it? This talk will blast you through everything you need to know for creating procedural geometry and manipulating them with splines.

holmer

A Little Math for Your Big Ideas by Ziba Scott (Popcannibal) – 09/22/15 01:30 PM

Unity has democratized game creation. Developers with wildly varying training and backgrounds are making brilliant games. Don’t let your “non-traditional” background stop you from chasing your best world bending ideas.

Feel a rush of empowerment as we adventure through simple examples of vector math and world/local space transforms to build a multi-threaded buoyancy system.

Topics: vector manipulation (addition, scaling, cross product, normalizing, comparing), World/local space transforms, thread safe operations, reducing garbage collection, buoyancy.

Best Practices for Multiplatform Distribution by Robert Baily (JumpStart) – 09/22/15 11:30 AM

From the creators of School of Dragons, the wildly popular MMORPG based on DreamWorks Animation’s How to Train Your Dragon franchise, comes the best practices in multiplatform distribution. Available via Amazon, Google Play, Windows, the App Store, and Steam – among other platforms – School of Dragons has grown to more than 15 million players worldwide. Its creators will share insight in the areas of art, asset processing, build automation, runtime configuration, and auditing for developing multiplatform games.

baily

Building Smart Toys with Unity by Jean-Philippe Auclair (Frima Studio) – 09/22/15 02:00 PM

Who has not heard of Skylanders, LEGO Dimension, the new talking Barbie or Disney Playmation? In this talk we’ll show you how Unity helped us make some cool connected toy experiences. From debugging the hardware to creating new smart toy interactions, we wanted something flexible enough. Unity was a great fit and we’ll show you how.

auclair

Complex Mecanim Machines by Aaron Horne (RatDog Games) – 09/21/15 05:30 PM

Ever tried to build an actual animation state machine?  Ever wanted to create something more complex and deep than what you might create with an online tutorial?  This talk will guide you into the next level of state machine design and show you the powerful features of Unity’s Mecanim animation system state machine.  We’ll explore the process and implementation of an actual character’s animation state machine, how and why it was set up a particular way for Unity v4.x and how it was enhanced after the Unity v5.x updates.

Continuous Integration with Unity by Jonathan Peppers (Hitcents) – 09/21/15 06:00 PM

Continuous Integration is a concept that has not quite yet surfaced as a standard practice for game development. Learn the steps to set up continuous integration with Unity, including source control, using Unity Cloud Build, using Unity Test Tools for testing, distributing builds to services like HockeyApp or Dropbox, writing command-line build scripts with FAKE, and upgrading to your own CI server with TeamCity for more advanced scenarios.

Taking a few steps towards full continuous integration will benefit any game and save you time: from starting to use source control or just setting up automated builds.

Creating the Galaxy with Unity 5: Disruptor Beam on Star Trek Timelines by Jon Radoff (Disruptor Beam) – 09/23/15 11:30 AM

Disruptor Beam CEO, Jon Radoff, and Senior Technical Designer, Jason Booth, will discuss how they’ve created a massively multiplayer 3D space game that delivers the same level of polish players expect to see in PC and console gaming, but on phones and tablets – all leveraging Unity 5 features.  They will go into detail about how the Disruptor Beam team has used real time reflection probes and physically based rendering, as well as the content streaming and procedural rendering technology that Disruptor Beam built on top of the Unity 5 engine.

radoff

Creating UniMerge: What happens when you fill a feature hole and put it on the Asset Store by Matthew Schoen (Defective Studios) – 09/23/15 02:00 PM

Matt Schoen is a long-time Unity developer and creator of the semi-popular Editor Extension UniMerge: a tool for merging scenes and prefabs within the Unity Editor.  He maintains UniMerge as an ongoing side-project and has a long history of building third-party collaboration tools for Unity.  You’ll be hearing the story behind UniMerge, some of the challenges faced during its development and initial release on the Asset Store, and seeing some Real Numbers on sales and marketing.  The talk will contain a bit of how-to information, for those curious about UniMerge and how to collaborate well while using Unity.  You’ll also be getting the inside scoop on Asset Store publishing from the perspective of a software engineer with a strictly technical editor extension.  Finally, you’ll be seeing what the future might hold for UniMerge, and collaborative Unity development.

schoen

Everything Connects, or How Everyone is a Developer at Dots by Chris Deaner (Dots) – 09/22/15 03:00 PM

Dots and TwoDots were born from individual creators that have the ability to game design, graphic design, and code their visions to life. This model works fine when one person is able to bring all these unique skill sets to the table, but what happens when you try to build a a team around this model? Dot’s Head of Engineering, Chris Deaner will talk about how he believes that everyone that works at dots should consider themselves an engineer, an artist, and a musician and how Unity helps make that effort a reality.

Fallen Utopia – Bringing the World of PAMELA to Life with Unity 5 by Adam Simonar (NVYVE Studios) – 09/22/15 11:30 AM

Game and Level Designers looking for an example of how to design and create great looking game environments, specifically high-end sci-fi. 3D-Artists will also see examples of how to better translate their assets into finished scenes. Lastly, Programmers and Technical Artists may also be interested in broadening their knowledge base by exploring the visual tools in Unity.

simonar

Filming Giant Virtual Vehicles: Procedural Cinematography in Homeworld Shipbreakers by Adam Myhill (Blackbird Interactive) – 09/21/15 04:00 PM

Homeworld: Shipbreakers is a real-time strategy game in which hundreds of massive vehicles battle it out over the surface of a vast desert planet, harvesting resources from crashed spaceships as they struggle for survival in a harsh environment.  This talk discusses the cinematic tools and procedural camera systems used to create beautiful cutscenes of actors with variable performances.

Hand-keying cameras is great when the performers do exactly the same things each time, but what about when the actors are AI driven, or the level changes, or if their speed changes?   Blackbird Interactive has developed a procedural suite of camera tools which allow film-maker type controls and rule-sets to procedurally compose and translate cameras in order to get great shots of the events in-game.   These systems emulate the way a cameraman would compose shots and they adapt to variances with the characters or vehicles or even level design.

This talk will show juicy visuals and describe the mechanics behind them.  Cinematic camera emulation from composition to noise and camera transport methods will be deconstructed and shown in action. It should be of interest to anyone involved with gameplay cameras or cinematic presentation.

myhill

How Sago Sago transformed the build process: a Cloud Build Case Study by Luke Lutman (Sago Sago) – 09/22/15 05:30 PM

An in-depth look at how Sago Sago transformed the build process for their award winning children’s apps using Unity Cloud Build. Lead developer Luke Lutman will take attendees through the journey of creating a scaleable and sustainable build process in Unity step-by-step. Using his from-the-trenches experience getting eight different projects up and running in Cloud Build, he will discuss why it has been a big win for Sago and cover all the technical challenges they faced along the way.

lutman

Process, Pipeline, Performance: A Super Blunt Tech Art Direction Crash Course for Indies by Anton Hand (RUST LTD.) – 09/23/15 10:00 AM

So you want to make an Indie game. You’ve got you, Chet, Daria, Emilio, and Emilio’s cat (who insists she’s totally boss at retopo work meow). You’ve got this grand vision, and you’re beginning to map out your game, and then it hits you. How on earth are you going to get all this done?

In this talk, we’ll be covering how an informed pre-production comprising aesthetic direction, modelling style, asset management, lighting approach, and more are the difference between success and careening into a brick wall. We’ll talk to making the most of your human resources, unpack the difference between having specialists and generalists for line-asset production, when and how to use the Unity Asset Store best, and what design/production decisions are critical to lock-in up front. Lastly, we’ll briefly cover some multi-platform strategies, and the sorts of things to be aware of if eventually planning to scale down to mobile, or scale up to VR. Expect a rapid-fire pace, a fair bit of ranting, and the bluntness you might expect from a veteran 3d modeler who’s tired of seeing great projects go off the rails.

Race the Sun Optimization by Aaron San Filippo (Flippfly) – 09/22/15 06:00 PM

Flippfly will go into depth on their efforts to optimize Race The Sun for the Playstation Vita and other mobile platforms. As a high-speed, 3D “endless racer,” Race The Sun had some unique challenges. Flippfly will detail how they overcame these challenges, and will briefly review some of the fundamentals of optimization that apply to all Unity games.

filippo

Super Dungeon Bros and Unity Networking by Ryan Adams (React Games) – 09/22/15 05:30 PM

We will be discussing how we have have used Unity 5 to help us develop a fully networked game on 4 different platforms, including 2 new gen consoles in under 9 months. We will discuss the new features including Networking, Unity Events, and UGUI, what problems we ran into, and how you can effectively use these tools to create amazing games quickly.

adams

The Holodeck is Here – Designing for Room-Scale VR by Alex Schwartz (Owlchemy Labs) – 09/21/15 02:30 PM

The HTC Vive is the first but certainly not the last piece of VR hardware to bring standing, room-scale experiences to the living room or dedicated VR room. As designers, the thought of designing an experience that works in any configuration or size of living room / office is daunting, with the sheer amount of unknowns in the mix. Owlchemy Labs shares their experiences designing room-scale VR experiences, learned through the development of Job Simulator, an official launch title for SteamVR / HTC Vive. Watch as the team discusses tracked input, considerations for real-world ergonomics, skill transference in VR, designing for tethered experiences, locomotion, and more.

Unity for Animated Productions by Etienne Whittom (Hibernum Creations) – 09/22/15 06:00 PM

In early 2014, Montreal-based Hibernum Creations started work on a unified pipeline for game development and animation. Since then, the studio’s R&D team, Hibernum Labs, has been busy experimenting with in-game motion capture previsualization, interactive photorealistic rendering, and automated asset management, as well as developing Unity-based video montage and post-production tools. The result: some very promising new technologies and some very valuable lessons learned. Get the details from Etienne Whittom, head of Hibernum Labs, and Patrick Roussel, systems engineer at the Digital Imagery Research and Development Centre (CDRIN).

whittom

Unity Maximus: Art Optimizations for Maximum Performance in Unity 5 by Elliott Mitchell (Vermont Digital Arts) – 09/21/15 06:00 PM

Many platforms, like VR and mobile, place high demands on developers to meet acceptable framerates or else risk failure. Often, the art assets in a Unity project look fantastic but no matter how optimized the codebase is, the build just doesn’t meet the desired frame rate. Unoptimized art assets, including some art which may be purchased on the Asset Store, can seriously hinder performance on demanding platforms. In this session, we will highlight some red flags to lookout for in a variety of art asset types and identify key optimizations that can be implemented into your art pipeline to significantly increase performance on demanding platforms. Art asset types covered will include: 3D Models, Animations and Rigs, 2D Textures and Sprites, Materials and Shaders.

mitchell

Unity tools for seamless OTA updates for a f2p mobile MMO strategy game by Oleg Pridiuk (Game Insight) – 09/21/15 04:30PM

Frequent content updates is what keeps your players in the game. We developed Unity editor tools and a bit of own technology to deliver new quests and game levels bypassing the store submission process. In this session we’re sharing insights in tools we built for our mobile f2p MMO strategy X-mercs to make seamless OTA possible.

pridiuk

Virtual Reality for Large Multi-User Environments by Roland Haring (Ars Electronica BmgH / Futurelab) – 09/21/15 06:00 PM

In this talk a team from Ars Electronica Futurelab gives a postmortem overview on their latest VR project which was realized for the “Deep Space”, a huge L-Shaped virtual reality environment (wall and floor projection with approx. 16 by 9 meters each) for up to 200 visitors.

Learn what happens when latest VR hardware (8 Christie 4k projectors with 30 ANSI lumen each, render workstations running 4 Quadro M6000 each) meets Unity Engine with enhanced VR support in a classic stereoscopic distributed rendered VR environment.

Unity will be the new reference engine for this environment. The first big application developed is “The Human Body: A Cosmos Within” which is a travel into the human physiology and takes you on an interactive journey to discover the wonders of your human body.

haring

Writing Shaders: YOU can do it! by Yilmaz Kiymaz (Nordeus) – 09/22/15 03:00 PM

We all love to pick and choose from the list of shaders that come with Unity or from the ones available on the Asset Store. Sometimes though, you have something so specific in mind that you have to write one yourself. Be not afraid! Though it may seem daunting at first, writing shaders just isn’t that hard, especially if you’re used to coding in C# or UnityScript already. Custom shaders that you write yourself will help you achieve a unique look for your game and having an understanding of shaders can even let you squeeze out extra performance on mobile devices.

In this session, we’ll go over the basics of shaders, how they work, how they’re written, what Unity already takes care of for you, and when  you have to fend for yourself. We’ll start with some very basic shaders and then work our way up to warping entire worlds in the vertex shader and pushing some really stunning pixels in the fragment shader. We’ll also briefly touch on some of the more advanced shader techniques as a starter for those looking to push the envelope.

July 22

Xamarin Dev Days Recap and Expansion

When we announced Xamarin Dev Days, free weekend community events filled with intense and hands-on mobile C# learning, we knew that it would be popular – but we didn’t expect every location to sell out so quickly! Each Dev Days event has been packed full of awesome Xamarin content and fun hacking, and the feedback has been absolutely outstanding.

Head Logo

Dev Days Expansion!

Since we’ve seen such an incredible response to user groups requesting Dev Days in their city, we are excited to announce the next round of Xamarin Dev Days locations. We are not only rolling out more dates and locations in the United States, but we’re also hosting our first official Dev Days event in Europe, and have many more locations in the works!

Make sure to keep an eye on the official Xamarin Dev Days website for future announcements!

Totes2

Here is a sneak peak into what a Dev Days event looks like:

Amazing Presentations

Every Dev Days start off with several presentations introducing every developer to the entire world of the Xamarin Platform, including Xamarin.Forms, Xamarin Test Cloud, and Xamarin Insights. However, it doesn’t stop there as each Dev Days event has special guest speakers from the community present on the topic they’re most passionate about. We’ve see some fantastic presentations covering all aspects of mobile development, including Wearables, MVVM, Azure Mobile Services, and Amazon Web Services, as well as plenty of Xamarin.Forms deep dives.

Sessions Green

Hands-on Learning

After lunch we hold an “Ask the Experts” session where attendees are free to ask anything and everything to get their questions answered from industry experts, and then the Xamarin Team ensures that everyone has their machines fully configured for mobile development. Next, it is on to our interactive labs, code help, and File->New App!, where attendees go through line by line to build their very own Xamarin.Forms mobile application completely from scratch with Xamarin experts guiding them along the way.

Sessions Monkey

Community, Community, Community

Xamarin Dev Days are much more than just an amazing day of hands-on mobile development learning. It’s also the perfect opportunity to connect with other developers in your local community doing amazing things. We have worked closely with local user group leaders to organize Dev Days with us, and they are there to act as your local expert not only during the Dev Days event, but long after it is over.

Amazing Sponsors

Xamarin Dev Days wouldn’t be made possible without our amazing sponsors who not only provide breakfast, lunch, and venues, but also enable Dev Days attendees with the best tools and controls in the industry.

Food Sponsor + James Sponsor3

Don’t see your city on the list yet? Don’t worry as we have plans for even more Dev Days events in the future, so be sure to head to the official Xamarin Dev Days website and request your city!

The post Xamarin Dev Days Recap and Expansion appeared first on Xamarin Blog.

VR is a wild place. Time to plant your flag.

As Unity engineer Lucas Meijer said during the Unite Europe keynote, the kinds of VR experiences and interaction models that will set standards in the near future have yet to be invented. Which makes now a perfect time for fearless and visionary artists and developers to jump in and help define this emerging genre.

Brenden Gibbons is a Narrative Designer and student at NHTV, Breda. He jumped into VR filmmaking without a life vest when he made Dyskinetic, a VR live action short film for the Oculus Rift that screened at the international film festival GoShort 2014 in Nijnmegen. He came out of the experience with more problems than solutions, which is why he gave a talk about it at Unite Europe: in the hope that others in the audience would be inspired to solve some of the challenges he encountered.

The current paradigms don’t work

“There are so many things left to do that I can’t do, and it was such a fractured experience to make a VR film. I probably used about seven different types of software to pull my film together, including separate ‘housekeeping’ software to rename files in bulk, or to convert the footage into OGG files for Unity. The workflow I used to turn the footage into frames was especially clunky; we need better solutions.”
“VR is still a future piece of technology, at least regarding entertainment content. The ability to put something on your head and feel like you are somewhere else? That sounds like we’re in the future! But we’re using current paradigms to design for this future. We keep asking questions like ‘how do we port an FPS to VR?’ Or the problem of presence. Today we still find it difficult to design an app or make a film that just uses this concept of presence in VR. The real challenge is in figu
ring out how to make pure, VR only content.”

Brenden's workflow to get his film footage into Unity

Brenden’s workflow to get his film footage into Unity

“Presence is the difference between knowing and feeling”

Paul Hannah comes from a different background then Brenden, but just like him he’s trying out ways to develop VR content that feels real. He’s a Lead 3D simulation engineer at Airbus DS Newport in the UK. He spoke at Unite Europe about creating Heliskape, a VR helicopter simulator that allows the user to experience flying over London within the cockpit of an Airbus EC135 helicopter.

“We thought to ourselves, how can we create a sense of wonder? The input mechanism plays a key role in that, in creating presence. For Heliskape, we looked at designing the right physical controls that move with your hands just as they would in real life if you were flying a helicopter. For example, a physical control to move the throttle forward can get you much closer to presence in the virtual world.

He recounts how a student who tried out Heliskape experienced the sensation of vertigo even though she was sitting in a chair. “She felt as though she were flying high up in the sky; she was blown away by the experience, it was just brilliant.”

“I don’t think we are far off from being able to more widely develop true VR experiences. VR has moved faster than any other new input medium. The spatially aware controllers that Oculus and Valve are working on could be a big breakthrough.”

Innovating with Unity

As part of the Unite Europe keynote Lucas Meijer talked about the new features in Unity 5.1, including the out-of-the-box support for Oculus Rift and Gear VR. He said the way forward with VR is “to try many different ideas and see what sticks. Unity is the best development environment to experiment with VR, to fail fast and just try hundreds and hundreds of things on this search to find the experiences and interaction models that will work.”

At Airbus Paul and his team use Unity mainly to prototype. “It helps us to innovate quickly, to try out the ideas in our head, to see how it could work on multiple devices.” He says Unity 5 has greatly streamlined the artists’ workflow, especially with the Standard Shader and Real-time Global Illumination.

Brenden says that bringing his VR film together in Unity was “super simple. I used the footage as a texture feature in Unity 5 and just dragged the prefab in and it worked.”

footage as texture

Setting up Dyskinetic in Unity

Cross-industry exchange of knowledge is key to shaping a successful future for VR

Paul says in serious games “we have to embrace the real-world, whereas game developers often create their own fantastical world. Our approaches are different but we can and should learn from each other because VR is going to change games, films, how people buy real-estate and choose holidays; it’s going to change everything.”

“VR film is a real mixed-bag of disciplines,” says Brenden. “You can learn from interactive theatre about how to position your actors; learn from film about how to frame your shots; learn from game development for level design, for example, how to place your lights, how to use color, how to animate elements in the film all so you can force the viewer to look where you want them to look in your film. Be inspired by everything! It’s unexplored territory; we’re creating all-new styles of storytelling.”

For more info on VR development in Unity, watch these the talks from the popular VR track at Unite Europe:






July 21

Xamarin’s Newest MVPs!

Xamarin MVPAs the Xamarin developer community continues to expand, it consistently provides stand out members that we are excited to include in the Xamarin MVP program. These individuals have made significant contributions by sharing their passion and expertise in mobile app development with Xamarin’s growing global community. We honor these individuals with the Xamarin MVP title for these contributions, which include:

  • Writing great articles, books, and blog posts
  • Speaking in public and online
  • Sharing and building amazing libraries
  • Helping developers online in our forums, on Twitter, Stack Overflow, and other communities
  • Shipping awesome apps

Today, we’re thrilled to recognize our latest round of Xamarin MVPs in 2015 for their remarkable contributions to the community!

chaseflorell Chase Florell Roy Cornelissen roy
mikeB Mike Bluestein Dave Evans dave
les Les Brown Adam Kemp adam
tom Tom Walker Fabian G. Williams fabian
dan Dan Hermes

A big thank you for all of your time, effort, and hard work you have dedicated to the growth of mobile development! If you know an outstanding developer who would make a great Xamarin MVP, please nominate him or her here.

The post Xamarin’s Newest MVPs! appeared first on Xamarin Blog.

Roslyn and Mono

Hello Internet! I wanted to share some updates of Roslyn and Mono.

We have been working towards using Roslyn in two scenarios. As the compiler you get when you use Mono, and as the engine that powers code completion and refactoring in the IDE.

This post is a status update on the work that we have been doing here.

Roslyn on MonoDevelop/XamarinStudio

For the past year, we have been working on replacing the IDE's engine that gives us code completion, refactoring capabilities and formatting capabilities with one powered by Roslyn.

The current engine is powered by a combination of NRefactory and the Mono C# compiler. It is not as powerful, comprehensive or reliable as Roslyn.

Feature-wise, we completed the effort, and we now have a Roslyn-powered branch that uses Roslyn for code completion, refactoring, suggestions and code formatting.

In addition, we ported most of the refactoring capabilities from NRefactory to work on top of Roslyn. These were quite significant. Visual Studio users can try them out by installing the Refactoring Essentials for Visual Studio extension.

While our Roslyn branch is working great and is a pleasure to use, it also consumes more memory and by extension, runs a little slower. This is not Roslyn's fault, but the side effects of leaks and limitations in our code.

Our original plan was to release this for our September release (what we internally call "Cycle 6"), but we decided to pull the feature out from the release to give us time to fix the leaks that affected the Roslyn engine and tune the performance of Roslyn running on Mono.

Our revisited plan is to ship an update to our tooling in Cycle 6 (the regular feature update) but without Roslyn. In parallel, we will ship a Roslyn-enabled preview of MonoDevelop/XamarinStudio. This will give us time to collect your feedback on performance and memory usage regressions, and time to fix the issues before we make Roslyn the default.

Roslyn as a Compiler in Mono

One of the major roadblocks for the adoption of Roslyn in Mono was the requirement to generate debugging information that Mono could consume on Unix (the other one is that our C# batch compiler is still faster than Roslyn).

The initial Roslyn release only had support for generating debug information through a proprietary/native library on Windows, which meant that while Roslyn could be used to compile code on Unix, the result would not contain any debug information - this prevented Roslyn from being useful for most compilation uses.

Recently, Roslyn got support for Portable Program Database (PPDB) files. This is a fully documented, open, compact and efficient format for storing debug information.

Mono's master release contains now support for using PPDB files as its debug information. This means that Roslyn can produce debug information that Mono can consume.

That said, we still need more work in the Mono ecosystem to fully support PPDB files. The Cecil library is used extensively to manipulate IL images as well as their associated debug information. Our Reflection.Emit implementation will need to get a backend to generate PPDBs (for third party compilers, dynamic code generators) and support in IKVM to produce PPDB files (this is used by Mono's C# compiler and other third party compilers).

Additionally, many features in Roslyn surfaced bloat and bugs in Mono's class libraries. We have been fixing those bugs (and in many cases, the bugs have gone away by replacing Mono's implementation with implementations from Microsoft's Reference Source).

GameAnalytics Unity SDK, bolstered with new features!

GameAnalytics is a an Asset Store Service Partner.

A staple on the Unity Asset Store in terms of free analytics for the past 3 years, the GameAnalytics SDK for Unity has been upgraded for both iOS and Android, as the platform is now augmented with several new features.

Richer and more reliable player behaviour data

Key new features in the updated GameAnalytics SDKs include dedicated player progression, designed to facilitate level balancing by offering insight into the way players consume and move through game content. The progression event type has a 3 hierarchy structure, to give the much needed granularity in tracking players’ paths. For example, your game’s progression hierarchical system could look something like: World, Level, Phase. Based on how you define these events, they’ll also automatically populate the progression filters, so you can add a lot of granularity to your analysis.

Just as important, the SDKs now have enriched in-game economy analysis, both for real money transactions (now with purchase validation) and for in-game resources (such as hard and soft currencies, XP, etc). Real money transactions will be defined as business events, to which you can include the specific type of in-app item purchased, and where in the game the purchase was made. This will help with tweaking your monetisation and figuring out if there’s place for that higher price bucket, after all. The hard and soft currency balance, or any other resources you may have in your game can be tracked with resource events. Based on the resulting analyses you will be able to conclude whether or not you’re giving away too much gold in your game, or if players are running dry too often.

Other new features in the SDKs include custom dimensions, which let you tag players with any piece of information aiding your analysis, and a brand new dashboard: Benchmarks, which helps you compare your game’s performance to that of the whole GameAnalytics network, giving the context you need to make informed decisions that can improve your game.

“It’s our belief that the use of analytics can help make even the best games better, but analytics tools are only as good as the quality of data they serve up, which is why we’re constantly working on expanding the range and type of information GameAnalytics is able to pool from games and players.” said Morten Wulff, GameAnalytics Co-founder.

Here’s a list of the features GameAnalytics now offers:

  • Player Progression;
  • Business events (real money transactions by item type and item id) with purchase validation;
  • In-game resources;
  • Error events;
  • Custom dimensions;
  • Design events (for tracking any custom event you can think of);
  • Cohorts and Funnels tools;
  • Explore tool – that lets you visualise any of the events and metrics against each other to be able to spot any relevant trends or correlations;
  • Raw data export;
  • Benchmarks (against the whole GameAnalytics 5400+ games network, but also against games in particular genres);
  • and more.

July 20

Same Day Xamarin Support for Visual Studio 2015

Today, Microsoft is unveiling the final release of Visual Studio 2015 in a global webcast, and we are joining the celebration! Visual Studio Logo Now Released to Market (RTM) for full use in production, Visual Studio 2015 includes many new features and improvements that make it easier to build apps quickly, including diagnostics, new C# 6 language features, and tighter integrations with TFS for streamlined DevOps.

We’re excited to announce same-day Xamarin support for Visual Studio 2015, including Visual Studio 2015 Community Edition, MSFT’s free IDE for non-enterprise apps. Xamarin and Visual Studio help you go mobile quickly, whether you’re building small projects, amazing consumer games, or employee-facing productivity apps. This combination of Xamarin and Visual Studio 2015 is our most integrated release ever – featuring a Visual Studio 2015 installation process that allows you to choose to install Xamarin with a single click, giving you everything you need to start building native cross-platform apps, all in C#.

Watch Storyboard in Visual Studio 2015

Be sure to check out the Visual Studio 2015 launch webcast today at 8:30am PDT, where MSFT product management teams will demonstrate Visual Studio 2015 product enhancements, including the latest from Xamarin.

It’s never been easier to start building iOS and Android apps — all from VS, all in C#. To learn more about developing native iOS and Android apps with Visual Studio and Xamarin, visit xamarin.com/visual-studio.

The post Same Day Xamarin Support for Visual Studio 2015 appeared first on Xamarin Blog.

IL2CPP Internals: Testing frameworks

This is the eighth and final post in the IL2CPP Internals series. In this post I’ll deviate a bit from the content of previous posts, and not discuss some aspect of how IL2CPP works at compile time or run time. Instead, we’ll take a look at a brief overview of how we develop and test IL2CPP.

Test-first development

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.

Testing statistics

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 tests
    • C#: 472
    • C++: 44
  • Integration tests
    • C#: 1735
    • IL: 173

If 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 ways

  • Windows: ReSharper
  • OSX: Xamarin Studio
  • Command line on Windows and OSX on our build machines: a custom Perl script

Types of tests

I 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 tests

These 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 tests

The 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 tests

The 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 tests

These 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.

Why so many integration tests?

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.

Even larger tests

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.

What is the impact of these tests?

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.

Conclusion

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.

Monologue

Monologue is a window into the world, work, and lives of the community members and developers that make up the Mono Project, which is a free cross-platform development environment used primarily on Linux.

If you would rather follow Monologue using a newsreader, we provide the following feed:

RSS 2.0 Feed

Monologue is powered by Mono and the Monologue software.

Bloggers