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.

December 19

Elegant Circle Images in Xamarin.Forms

Circular images in apps are currently a popular trend in mobile, and it is a simple technique that can add a lot of polish to your mobile apps. We made use of them in this year’s Xamarin Evolve mobile apps, and with a little bit of code and a single custom renderer, you too can transform standard images in Xamarin.Forms into these elegant round images.

MonkeyCircleImages

Custom Image

After you create your Xamarin.Forms project, the first thing you need to do is create a custom control that inherits from Image. Let’s call this ImageCircle and then implement the custom renderers on each platform.

public class ImageCircle : Image
{
  //Optional custom properties could go here
}

Custom Renderers

Now you just need to tell Xamarin.Forms how to render this new ImageCircle on each platform by using custom renderers.

For all three projects, you will need to create an ImageCircleRenderer that inherits from ImageRenderer and then implement how to cut out the circle image.

public class ImageCircleRenderer : ImageRenderer
{
  //...Implementation
}

iOS Renderer

For iOS you are able to directly interact with the CALayer of our UIImageView to add a corner radius and set the border color.

private void CreateCircle()
{
  try
  {
    double min = Math.Min(Element.Width, Element.Height);
    Control.Layer.CornerRadius = (float)(min / 2.0);
    Control.Layer.MasksToBounds = false;
    Control.Layer.BorderColor = Color.White.ToCGColor();
    Control.Layer.BorderWidth = 3;
    Control.ClipsToBounds = true;
  }
  catch(Exception ex)
  {
    Debug.WriteLine("Unable to create circle image: " + ex)
  }
}

This method should be called on the initial OnElementChanged or when the Height or Width properties are updated:

protected override void OnElementChanged(ElementChangedEventArgs e)
{
  base.OnElementChanged(e);
  if (e.OldElement != null || Element == null)
    return;
  CreateCircle();
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
  base.OnElementPropertyChanged(sender, e);
  if (e.PropertyName == VisualElement.HeightProperty.PropertyName ||
      e.PropertyName == VisualElement.WidthProperty.PropertyName)
  {
    CreateCircle();
  }
}

And of course you must export the renderer with an assembly export:

[assembly: ExportRenderer(typeof(ImageCircle), typeof(ImageCircleRenderer))]
namespace CircleImage.iOS
{
 //...
}

Android Renderer

Android is a unique platform; you don’t have a physical layer to interact with, however, you are able to modify how Xamarin.Forms draws the child and cut out a path from the canvas. This method is a bit of complex math, but calculates the path to clip and then adds a circular border around the child.

protected override bool DrawChild(Canvas canvas, global::Android.Views.View child, long drawingTime)
{
  try
  {
    var radius = Math.Min(Width, Height) / 2;
    var strokeWidth = 10;
    radius -= strokeWidth / 2;
    //Create path to clip
    var path = new Path();
    path.AddCircle(Width / 2, Height / 2, radius, Path.Direction.Ccw);
    canvas.Save();
    canvas.ClipPath(path);
    var result = base.DrawChild(canvas, child, drawingTime);
    canvas.Restore();
    // Create path for circle border
    path = new Path();
    path.AddCircle(Width / 2, Height / 2, radius, Path.Direction.Ccw);
    var paint = new Paint();
    paint.AntiAlias = true;
    paint.StrokeWidth = 5;
    paint.SetStyle(Paint.Style.Stroke);
    paint.Color = global::Android.Graphics.Color.White;
    canvas.DrawPath(path, paint);
    //Properly dispose
    paint.Dispose();
    path.Dispose();
    return result;
  }
  catch (Exception ex)
  {
    Debug.WriteLine("Unable to create circle image: " + ex);
  }
  return base.DrawChild(canvas, child, drawingTime);
}

One intricate part here is that Android handles the clipping of paths differently depending on the version of Android. Hardware acceleration for this method was introduced in API 18, so you must tell Android to use software rendering on older devices. You can set the layer type flag in the OnElementChanged method:

protected override void OnElementChanged(ElementChangedEventArgs e)
{
  base.OnElementChanged(e);
  if (e.OldElement == null)
  {
    if ((int)Android.OS.Build.VERSION.SdkInt < 18)
      SetLayerType(LayerType.Software, null);
  }
}

And of course you must export the renderer with an assembly export:

[assembly: ExportRenderer(typeof(ImageCircle), typeof(ImageCircleRenderer))]
namespace CircleImage.Droid
{
 //...
}

Windows Phone Renderer

Last, but not least, we come to Windows Phone, which has a Clip property that you can use to create EllipseGeometry to cut out the circle from the image:

protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
  base.OnElementPropertyChanged(sender, e);
  if (Control != null && Control.Clip == null)
  {
    var min = Math.Min(Element.Width, Element.Height) / 2.0f;
    if (min <= 0)
      return;
    Control.Clip = new EllipseGeometry
    {
      Center = new System.Windows.Point(min, min),
      RadiusX = min,
      RadiusY = min
    };
  }
}

And of course you must export the renderer with an assembly export:

[assembly: ExportRenderer(typeof(ImageCircle), typeof(ImageCircleRenderer))]
namespace CircleImage.WinPhone
{
 //...
}

Custom Cell

With all of the custom renders in place, you can simply use your new ImageCircle anywhere you would like, including custom ViewCells for your ListViews. The key here is to ensure that you request the same Width & Height for your image and set the Aspect to AspectFill to ensure a perfect square to cut your circle from.

int photoSize = Device.OnPlatform(50, 50, 80);
var photo = new ImageCircle
{
  WidthRequest = photoSize,
  HeightRequest = photoSize,
  Aspect = Aspect.AspectFill,
  HorizontalOptions = LayoutOptions.Center
};
photo.SetBinding(Image.SourceProperty, s => s.Image);

CircleImages

See the Code in Action

You can grab the entire source code from GitHub. Additionally, I sat down with Xamarin’s own Steven Yi at this year’s Xamarin Evolve to explain how I implemented and used Circle Images in the Xamarin Evolve mobile apps:

December 18

Holiday Contest: Create a Plugin for Xamarin

tts_icon_largeOver the last few weeks, you might have seen a flurry of Plugins for Xamarin launching on NuGet and open sourced on GitHub. We have been working hard to kickstart Plugins and make it extremely easy for anyone to get started creating a Plugin for Xamarin.

What is a Plugin?

device_info_iconA Plugin for Xamarin is a special kind of NuGet that adds cross-platform functionality or abstracts platform specific functionality to a common API. These are both completely cross-platform and extremely small (i.e., they do 1 or 2 things really well with minimal-to-no dependencies). The Plugin API can be accessed on each platform, however, you will most likely only use the common API in a Portable Class Library or Shared Code project.

Contest

Build a Plugin for Xamarin or Xamarin.Forms to add powerful cross-platform functionality with a common API. We have the tools to get you going, including full Visual Studio Project and Item Templates and plenty of source code examples of existing Plugins on GitHub.

How to Enter

  1. Create a new Plugin for Xamarin that provides unique functionality
  2. Open source your Plugin under an app-store friendly OSS license (we like MIT)
  3. Upload your Plugin to NuGet with Documentation
  4. Follow the naming convention of: “FEATURE_NAME Plugin for Xamarin” for your NuGet
  5. Once published post a #PluginForXamarin tweet, like this:
    I just shipped PLUGIN_NAME #PluginForXamarin NUGET_URL!

Prizes

Each developer that completes and publishes a new valid Plugin for Xamarin or Xamarin.Forms will receive an Amazing and Exclusive Xamarin Swag Bag including a Xamarin Power Supply, Charles Petzold’s new Xamarin.Forms Book, a Xamarin Shirt, Embossed Notebook, and more! Our favorite Plugins will also be featured on Xamarin.com.

Today’s Plugins

Take a look at a few Plugins that already exist today to integrate into your project or see how they are structured:

Plugin Ideas

There are endless possibilities for potential Plugins, but here are few ideas to get you started.

  • Camera
  • Compass
  • Contacts
  • Dialogs & Notifications
  • File Transfer
  • Media Playback (audio)
  • Media Capture (audio, images, and video)

Rules & Regulations

All submissions must be made by January 5th, 2015 at 8am EDT. A valid Plugin for Xamarin adds functionality that does not exist in a current Plugin that has been published. All Plugins will go through a review process and considerations will include functionality, code quality, and reliability.

Jump Start Development

Tomorrow, Friday, December 19th at 9AM PST we invite you to join us for a live Google+ Hangout covering all the tools and concepts for creating a Plugin for Xamarin.

Discuss this blog post in the Xamarin Forums

December 17

Webinar Recording: Mobile Enterprise Success with Xamarin and IBM

We recently announced our collaboration with IBM, allowing businesses to build fully native iOS, Android and Windows Phone applications with shared code – while also leveraging the robust integration, security and connectivity of the IBM MobileFirst platform. With this partnership, enterprises are able to deliver both the UI/UX quality consumers demand and the enterprise-grade backend and reliability that corporations require.

In this webinar, IBM and Xamarin technical executives discuss the IBM and Xamarin partnership, demo the IBM MobileFirst SDK for Xamarin, walk through the IBM MobileFirst platform, and answer audience questions.

View the presentation slides for this webinar here.

Additional Resources

If you’d like to learn more about the IBM MobileFirst SDK for Xamarin, visit the homepage here.

Indie while Expecting: The story of Glyph Quest

Can you charge for a game you made with the free version of Unity? Yes. YES! Making money off games is always hard, of course. But with Unity, you can get your independent project started without breaking the bank. Here’s a story of a couple who used Unity to make a mobile game to the tightest of deadlines. They’re not millionaires, but they made something of their own and earned enough to keep creating.

Both worked in the British game industry when they met. Leanne Bayley was a producer in a studio in Plymouth and Alex Trowers designed games in Brighton. In 2013, she left her job to move in with him. Soon afterwards, Leanne got pregnant and couldn’t find another job. He taught her the basics of Unity, and they started developing a game idea. Then he got fired from his job.

“Instead of doing the sensible thing and getting another job, we went indie. We believed in our game! It was really fun. Plus, there weren’t that many jobs around at that time of year. How hard can it be to finish the game before the baby arrives?” Leanne remembers.

If you’ve ever worked on a software development project, you know that the timeframe you originally estimated for delivering the complete product is often way shorter than the actual length of the project, because unforeseen issues cause delays.

But babies don’t wait. A deadline you cannot move forced the dynamic duo into making design decisions early, keeping their project concise and leaving “nice to have” features out. It didn’t hurt that Leanne has been a project manager before and Alex has been a designer since “back in the days when you had to do a little bit of everything yourself, including sound.” At one of his old jobs, he used Unity to turn himself into a one man prototyping team.

“I’m not a very good coder, it all just used to be a black box to me. But Glyph Quest is an old school sprite-based 2D game. All the fancy Unity Pro optimization features weren’t necessary. And well, I don’t know how to use them anyway,” he says.

Unity Editor Map Screen_edit

Their advice for teams making their first project is clear: “Ambition is your enemy! You might want to make a massive multiplayer thing, but it’s better to start with something small.”

With Leanne drawing sprites and Alex working in the Unity Editor, things were progressing at a steady pace. A week before the baby was due, in January 2014, the game was ready to be submitted to the App Store. After some initial hiccups, it got approved and went out to the world.

Glyph Quest got featured in the British App Store and named Game of the Week by Touch Arcade. About 200,000 people have downloaded it so far. “We’re really proud of our community. It’s not really big, but very loud and positive. After the initial push, it got a bit harder to discover the game, but those who do, love it!”

The game monetizes like good old shareware: you get some levels for free and then you can buy the rest of the game. A full 10% of users did so, which is amazingly high for a mobile game nowadays. This was definitely a good start for the team and allowed them the financial independence to continue their work. But it was still a rather limited budget for producing the sequel they had planned.

Working on the game while having the newest family member around is tough. “Sometimes, you just look at how cute she is and then you wonder where the whole day went,” says Alex. Working on Super Glyph Quest meant crunching hard on the little amount of sleep that new parents can get. “She’s our biggest distraction and biggest motivation at the same time. We have to aim to be financially sustainable.”

Untitled

The game ended up releasing at the end of October, when many publishers plan big updates and new releases before Halloween. It’s also straight up premium and unfortunately hasn’t done so well as the original. It has way more content, building on the original’s match three to cast spells gameplay with a great story and some pretty interesting strategic elements. But that hasn’t been enough to attract players willing to pay up front.

“In the Unity Brighton community, nobody’s really complaining about how hard it is to make games. We just always talk about issues with publishers and how hard it is to monetize games,” says Alex.

We hope that Unity’s new focus on services will help teams like this one with the business part of game development. In the meantime, they’re working on updates, new projects, localization and other adventures. And they don’t plan on buying Unity licenses any time soon.

“We’re big fans of Unity, this whole endeavour wouldn’t be possible without it. It’s awesome that it’s free, since we don’t have any spare money in our monthly budget. Nappies are really expensive! Plus, we just never needed Unity Pro features.”

Anyone can publish a game with the free version of Unity, our only restriction is that you need to buy Unity Pro after you’ve reached $100,000 in revenue.

Super Glyph Quest is out on the App Store. It’s seriously a good game, ideal for killing time during the holidays. So go buy it.

December 16

How to Update NuGet Packages for 64-bit

Apple is requiring all apps submitted after February 1st, 2015 to include a 64-bit binary. As a library creator, your developers will need to have access to 64-bit versions of your libraries before this deadline so that they can update their apps.

The new Unified API that we introduced for both Mac and iOS not only allows you to improve code sharing between the two platforms, but it also enables you to create 64-bit compatible libraries for your developers.

We introduced two new target frameworks for Unified API projects: Xamarin.iOS and Xamarin.Mac. Support for these new frameworks has been added to NuGet 2.8.3 which was released last month.

Xamarin iOS, Mac and NuGet

With these new Unified frameworks now being recognized by NuGet, you can create a NuGet package that targets the Unified iOS and Unified Mac frameworks. We have also created a set of Portable Class Library (PCL) profiles for the Unified frameworks which allow you to add NuGet packages that have compatible Portable Class Libraries, such as Json.NET, into your Unified projects.

Now, let’s take a look at what software you need to be able to add NuGet packages to Unified projects and how to create a NuGet package that supports Unified project.

Getting Ready to Use NuGet Packages with Unified Projects

In order to fully support adding NuGet packages to Unified projects, you will need to use NuGet 2.8.3 or above and have the Xamarin Portable Profiles for Unified installed. Additionally, you will need the latest Beta releases with the finalized Unified API when creating 64-bit libraries.

Software needed on Windows

The simplest way to upgrade NuGet inside Visual Studio is to use the extension manager:

  • Select Extensions and Updates from the Tools menu.
  • In the Extensions and Updates dialog, select the Updates tab and then select Visual Studio Gallery.
  • If NuGet Package Manager for Visual Studio is listed as an update, then select it and click the Update button.

Extensions and Updates Dialog NuGet Update

Software needed on Mac

  • Xamarin Studio 5.7 or above.
  • Mono 3.12 or above.
  • Xamarin.iOS 8.6

Creating a NuGet Package for Unified Projects

A NuGet package can be installed into different project types that target different frameworks if it contains files for those frameworks. The NuGet package indicates it supports a particular target framework by containing directories named after that framework. In each of these directories, the NuGet package will contain your files that are specific for that target framework.

To have your NuGet package explicitly target Xamarin.iOS and Xamarin.Mac your .nuspec file should contain a section similar to the one shown below below:

<files>
    <file src="iOS\bin\Release\*.dll" target="lib\Xamarin.iOS10" />
    <file src="Mac\bin\Release\*.dll" target="lib\Xamarin.Mac20" />
</files>

The target directory is the important part and should be specified as shown above. The src attribute points to the assemblies that should be used with that particular target framework. The created NuGet package should have a directory structure that looks like the following:

NuGet Unified Lib Directories

When you install the above NuGet package into a Unified iOS project the assembly from the lib\Xamarin.iOS10 directory will be added as a reference. For a Unified Mac project, the assembly from the lib\Xamarin.Mac20 directory will be referenced.

For NuGet packages that contain Portable Class Libraries, the recommended approach is to not include Xamarin.iOS nor Xamarin.Mac in the lib directory name. This can happen if you are using NuGet.exe pack passing the project file as a command line argument on a machine that has the Xamarin Unified profiles installed.

The following PCL lib directory follows the recommendation:

lib\portable-net45+win+wpa81+wp80

Whilst the following PCL lib directory should be avoided:

lib\portable-net45+win+wpa81+wp80+Xamarin.iOS10

The reason for this is to ensure your NuGet package can be installed into projects on machines that do not have the Xamarin Unified PCL profiles installed or do not have a version of the NuGet Package Manager installed that has support for the Unified frameworks.

Here are a few example NuGet packages that include assemblies that explicitly target Xamarin Unified projects:

  • ModernHttpClient – Write your app using System.Net.Http, but drop this library in and it will go drastically faster.
  • Splat – A library to make things cross-platform that should be.
  • Xamarin.Forms – Build native UIs for iOS, Android, and Windows Phone from a single, shared C# codebase.

Learn More

If you would like to learn more about the Unified API and NuGet here are some resources:

Unity at the EuroSTAR Software Testing Conference

In the last week of November the Unity QA team attended the EuroSTAR Software Testing Conference in Dublin, Ireland. I attended to talk about the Toolsmiths, while Elena and Elvis attended as delegates. The conference was hosted in the beautiful Convention Centre Dublin, which has one of the nicest views of the city.

The main theme of the conference was “Diversity, Innovation, Leadership”. Testing professionals came to speak, discuss, participate in  workshops, and engage in social activities—all related to software testing and quality. The first 1.5 days were dedicated to workshops, while the rest of the conference was comprised of 2.5 days of keynotes and talks.

eurostar-01

The Convention Centre Dublin which hosted EuroSTAR 2014.

The EXPO area hosted one of the most popular attractions: The Test Lab. Here, everyone could try solving different kinds of games and puzzles to win swag. Back to back with the Test Lab was the Community Hub where people would meet and discuss anything related to testing. The Hub included a soap box area where industry veterans were giving short talks. This was taking place all through the conference.

eurostar-03

The Test Lab in the EXPO area.

EuroSTAR is an awesome conference for anyone interested in testing. People from many different industries attend, and if you engage in the social activities you can really get some perspective and feedback on your own work. The atmosphere is friendly and everyone is excited to share and help others improve and succeed.

eurostar-02

EuroSTAR delegates networking between talks.

As I mentioned initially, I was attending EuroSTAR to give a talk about The Toolsmiths, one of our QA teams. Unity QA has changed a bit since Thomas wrote about our organization 2.5 years ago (part 1, part 2). At Unity, automation is not a goal, it’s a tool. We aim to automate checks that should be performed by computers, and have humans do actual testing. Developers, SDETs, and Toolsmiths focus on the former, while STEs and student workers focus on the latter.

eurostar-04

Kasper on stage talking about Unity’s Toolsmiths.

The Toolsmiths team is a branch from the SDET team that happened back in 2012, and we cover the middle ground between development and testing. Where SDETs focus on product automation, Toolsmiths focus on tools, frameworks, infrastructure, examples, documentation, and evangelization (teaching developers and testers how to use tools and automation to become more productive).

Some of the things we’ve been working on lately include:

See you out there!

It was awesome to attend EuroSTAR 2014 and talk to the testing community about who we are, what we do, and how we do it. Unity QA will definitely be attending other conferences, including Eurostar 2015 in Maastricth, and hopefully speaking again soon.

December 15

Xamarin Android Player Update Brings New Features & Devices

Released just two months ago during the Xamarin Evolve 2014 keynote, the Xamarin Android Player has helped ease a major pain point in Android development, the emulator. Xamarin Android Player Nexus 7Our Android Player is a high-speed hardware accelerated emulator, available on both Mac and PC, that integrates directly into Xamarin Studio and Visual Studio. Now, we’re exited to release a brand new update for the Android Player with several fixes and new features that will make developing Android apps even more enjoyable.

Get the Update

If you haven’t installed the Xamarin Android Player, head over to its download page and get started. If you already have the current preview installed, all you have to do is open up the Android Player, select the Update tab, and click Update.
New Update

New Device Images

Once you have the latest version of the Xamarin Android Player installed, the first thing you will notice is some new Android devices available to download. We’ve added new screen resolutions and form factors, including the Nexus S and Nexus 7 devices, enabling you to test your app’s appearance on phone and tablet.

Xamarin Android Player New Devices

We are continuously adding new system images, so be sure to check back because they will automatically appear in the list.

Naming & Duplicating

A major feature of this release is the ability to rename your emulators. When you download an emulator image for the first time, you will automatically be prompted to give it a name so you can recognize it immediately. This is very important, as you are now able to create full duplicates of any emulator image that you have from a brand new context menu. You can get device information, rename, reset, delete, or duplicate with a single click.

Duplicate Device Android Player

Learn More

To learn more about the Xamarin Android Player, be sure to read the full documentation on how to get started.

Sharing and learning with the Toronto Unity User Group

When Adam Proctor of Uken Games started the Toronto Unity User Group in August 2013, fifty people arrived for the first meetup. Just sixteen months later, the group has 620+ members drawn from across Toronto’s vibrant game development scene.

“There are lots of small game studios, and freelance developers in Toronto and, of course, a lot of them use Unity. About half the people working at Uken Games use Unity too,” says Adam.

Between 80 and 120 people are in attendance at a typical meetup which normally lasts about three hours. “At about 21:30 I try to start kicking people out,” laughs Adam. “When you’re working on your own at something, it’s really good to have an excuse to get together with other people in the same situation. You just need someone to talk to,” he continues.

There’s plenty of time for everyone to show off what they’re working on and to get feedback,  comments and help. Each meetup also includes a presentation, sometimes someone will be invited to showcase their work, or, perhaps, there’ll be a visit from a Unity developer or evangelist.

Unity’s grown to be a company with 650+ employees now, and they’re scattered all over the globe. As luck would have it, the team developing the new Unity UI were based in Toronto at the time, and they dropped by to show off the new features and workflows. Unity’s Americas Evangelist Carl Callewaert, who seems to more or less live in a plane, has also presented for them.

Uken Games’ growth story is, if anything, even more incredible than Unity’s. In 2009 the company numbered just three people; now there are over 70, and they’re still recruiting.

“It’s hard to quantify just how many people have found work through the User Group,” says Adam, “but, as a company we definitely feel that hosting it and providing refreshments is an expense that we can justify. It’s really important for us to be part of the local Unity community.”

At any rate, lots of people have found full time work through the group, and not just at Uken. Of course, it’s also a great place for small local teams to find collaborators. Indeed Adam’s looking at ways to formalize things and make it even easier for people to connect.

A developer by trade, Adam’s role at Uken Games is as a Project Lead, guiding games to completion. The company like their titles to be cross-platform and global. Family fun title Bingo Pop is available in 12 languages across Android, iOS and Facebook, while upcoming realtime battler Loot Quest is scheduled for release in early 2015.

There are Unity user groups in many of the major game development hubs globally. To find one near you, check out the Unity User Group Page, or search Meetup and Facebook.

If there isn’t a Unity User Group near you, why not start one? You can read Unity Evangelist Joe Robins’ top tips for starting a Unity user group here. If you want your Unity user group listed, or are interested in a visit from Unity, reach out to Unity Lead Evangelist Carl Callewaert via carl[at]unity3d.com.

A few pictures from recent Toronto Unity User Group meetings:

600_406615942 highres_406615772 highres_406615782 highres_406615882 highres_406615922 highres_411246402 highres_413365572 highres_413365792

December 12

Inspiring girls to make their own games: Game Girl Workshop at ISEA 2014, Dubai

The lack of female game developers has been getting a lot of press lately. As co-founder of Game Girl Workshop I’ve been working since 2010 to tear down the barriers that still keep girls from making their own games.

Our workshops provide a game development crash course to inspire girls to have fun with technology. The girls get introduced to the fundamentals of game design, audio, graphic and coding programs. Then, they build their own computer game based on their own imagination and experiences.

Ultimately, the ambition of Game Girl Workshop is for more women to be included and advance within the games and technology industry, thus helping to achieve a balance in the workforce and to create a multitude of game narratives!

Game Girl Workshop at the 20th International Symposium on Electronic Art in Dubai

This year, Game Girl Workshop was selected by a panel of internationally renowned artists and curators, to run a game development workshop as part of the prestigious 10-day-long ISEA 2014 conference in Dubai.

Nine girls between the ages of 11 and 14 participated. They produced their games in two teams with each member of the team taking on the role of graphic artist, audio designer or “coder”.

The girls got an overview of the graphic/audio asset pipeline and tools and the techniques used to create art/audio assets. All the art and audio assets, were created from scratch and implemented using Unity and Playmaker.

They also got hands-on with Unity after first receiving a thorough walkthrough of the Unity user interface, terminology, game objects, materials, geometry and physics. Plus, they got taught how to “code” their game through super fun physical play!

Game Girl Workshop isn’t only about the tools though, it’s also very much about creating a space where the girls can come up with their own ideas before transforming them into game mechanics, art and audio.

IMG_1088

All in all, it was an extremely positive experience, and all the girls were very engaged and focused. It’s so much more fun to work on a game you’ve come up with yourself, and do what you like doing whether it’s graphics, audio or creating state machines!

Considering that they only had three days to work on their games, and they had no prior knowledge, the workshop results are really impressive. Below is a link to one of the games and a brief explanation of the game story.

Team Aluma Luna

The world is dark and gray and the player has to fight the Evil Grandmother to get all the colours back into the world! Time to play the wonderful “Twilight” game!

Instructions to play:

  • If you are running a Chrome browser, right-click and select “Run This Plug-in”
  • On the start screen, click on “Play”

  • Use the LEFT/RIGHT arrows to navigate on the level

IMG_1114

Tools used in the workshop

More Game Girl Workshop adventures coming soon!

Game Girl Workshop is a team of female games industry professionals from the Danish games industry. As well as Dubai, we’ve held a number of game development workshops in Denmark and the West Bank, Palestinian Territories. You can follow us on our adventures on Twitter and Facebook and at gamegirlworkshop.org.

IMG_1088 IMG_1114 IMG_1027 IMG_1026 IMG_1084 IMG_1079 Skye_trees IMG_1116 MissFrittata IMG_1085 IMG_1081 IMG_1078 IMG_1047 IMG_1065 IMG_1089

December 11

Apple’s February 1st Deadline and Xamarin 64-bit Support

In October, Apple announced that starting in February, submissions to the App Store must be built against the iOS 8 SDK and must include 64-bit support. While there has not been a definitive statement about whether this deadline applies only to new app submissions, or if it includes updates to existing apps, it is our recommendation that developers submitting new app submissions OR app updates adhere to the 64-bit requirement by the February 1st deadline.

We have made significant progress on our Unified API that brings improved code-sharing for our Mac and iOS products as well as 64-bit support to those platforms. We expect the Stable release of our Unified API to be released on January 5th. Therefore, please mark your calendar for early January to migrate your iOS apps to the Unified API. The migration should not take more than a day for most apps.

What you need to know:

  • Today: The latest Unified API build is available on our Alpha channel, and we strongly encourage all library developers to update any NuGet, Components, or other published libraries they maintain for iOS to use the Unified API. If you are publishing an iOS Component in the Xamarin Component Store, please use this alpha release to update and submit your updated Component this month. The Unified API template previews currently in Stable are deprecated and should not be used.
  • January 5th: Unified API will be published on our Stable channel in Xamarin Studio and Visual Studio, and all Xamarin published Components in our Component Store will be upgraded to support the Unified API. This is when we recommend you start porting your iOS apps to 64-bit. This release contains a migration assistant for Xamarin Studio and Visual Studio that will upgrade your Classic 32-bit projects to dual 32/64 with Unified APIs.
  • February 1st: All new apps and app updates published to the Apple App Store must be built with 64-bit support.

ios and osx logos

What To Do Today:

If you are a developer with NuGets, Components, or Plugins that target iOS, you should get started right away porting your library to 64-bit with the Unified API release currently in the Alpha channel so that your library is ready to be consumed in 64-bit applications. The below resources can help you.

If you are an app developer, you should prepare now, and then migrate your app in early January when the current version of the Unified API is released to the Stable channel. The below resources can help you prepare.

We have a full guide on our documentation site to help you plan what you need to do. Here are a few important topics to read through before you start your migration.

We have provided simple manual migration steps to upgrade, or you can use our migration assistant to handle most of the heavy lifting for you.

Installation

Additionally, Windows users with Visual Studio should:

To learn more, be sure to read our full Xamarin.iOS 8.6 release notes and documentation.

Building a User Group in your area

User groups are a great way to meet local developers in your area, share tips and techniques, demo your projects and possibly find work at local studios. Since moving back to the UK and helping to form the Manchester Unity User Group I have discovered quite a bit about the trials and tribulations of running an effective user group. Here’s some advice:

User groups are a great way to meet local developers in your area, share tips and techniques, demo your projects and possibly find work at local studios.

If you have been to our Unity User Groups page and discovered that there is no local user group, all is not lost! This might be a great opportunity to establish a Unity User Group of your own.

There are a number of things to take into account when looking at establishing a user group. This is what you can do to get the ball rolling:

Measure interest
The first step is finding out how many folks in your area will be interested in a user group! This will have a strong bearing on the flavour and scale of your events, so it’s important to have an idea of what to expect. A good way to do this is to find other pre-existing game development groups in the area and join them. This can be in the form of local your IGDA chapter, game jam events or if you are at college/university, perhaps there are relevant classes that may have an interest.

Find a venue
Getting the venue right is crucial. If you anticipate a handful of interested developers, simply meeting up in a bar/coffee shop can be a nice relaxed way to start things off. However, if you expect a group that is a bit larger, you will need to consider a more dedicated space that can better cater to your needs. This is especially true if you’d like to give people a chance to present through a projector. Good places to start the search include the IGDA, local universities and hackerspaces.

Plan your first event
Depending on how structured you want things to be, it’s a good idea to have a specific plan. With smaller scale groups, grabbing a drink in a pub/coffee shop and hanging out in a corner works fine. Once you reach a point where the entire group is unable to huddle around a laptop or two, you’ll probably want to scale up the venue a touch and prepare a program. At the Manchester group we usually have one or two main presentations. Then, during the second hour, we open it up to the group, so that anybody can showcase what they are working on.

Online presence
Making your group easy to discover online is important. We found that many more folks than expected turned up to our first meeting just from some because we promoted the group on Twitter.

Choosing a platform to co-ordinate the group is also something that you need to consider, as the Manchester Unity User Group has evolved we have tried out a number of different systems. Initially we used Eventbrite, we are now using a Facebook group and are considering setting up a Meetup page, which proves to be a popular choice with Unity user groups in general.

Be sure to register your new user group on the Unity website.

In addition to that we also have a Google form that feeds into a spreadsheet for talk submissions, if somebody wants to talk at a meeting, we ask that they fill in the details on the form so that they are saved for ease of planning. Google forms and spreadsheets are generally pretty good way to get organized.

Beyond the first event
So, you’ve had a super awesome first event and are looking ahead to the next one. The first thing to consider is when you should hold the next meeting. The trap that we fell into in Manchester was effectively “too much too soon”. We reached a point where we were running low on news and projects to share. Me and Dan, the two main organizers, were also incredibly busy and didn’t have the capacity to give the group the time it deserved. As a result, we switched to alternating between a normal meeting and just a casual social meet up. We are now considering an ad-hoc approach where when we have a primary speaker who wants to share their projects, we arrange a meet-up around that headline session.

So, that about does it. If you happen to have experience of running a User Group, please chime in with your nuggets of wisdom in the comments below! Ultimately, there isn’t really a wrong or right way of doing things, so feel free to experiment with different formats and structures.

A few pictures from the latest Manchester Unity User Group Meet Up:

IMG_0605 IMG_0602 IMG_0603 IMG_0604

December 10

Sketches in Xamarin Studio Alpha

A new version of Sketches just landed in the latest Xamarin Studio alpha. Let’s take a look at a couple new things that have been added.

In the previous version, images could be loaded in a sketch given the path on disk. Now, you can add a .Resources folder next to the sketch file, with the naming convention of sketchname.sketchcs.Resources.

For example, with a sketch named Sample.sketchcs, I created a folder named Sample.sketchcs.Resources at the same location as the sketch file, and added a file named hockey.png in the folder. WIth this I can write code like the following in the sketch:

using AppKit;

var image = NSImage.ImageNamed ("hockey");

Then I can visualize the image in the sketch:

sketch resources

Speaking of visualizers, they have been greatly enhanced in the latest version. For example, one of the many visualizers that has been added is for a CIImage. Therefore you can quickly iterate and test the results of different Core Image filters without needing to deploy an app!

For example, here’s some code to apply a noir effect to the above photo:

var noir = new CIPhotoEffectNoir {
    Image = new CIImage(image.CGImage)
};
		
var output = noir.OutputImage;

This result is immediately available to view as shown below:

CIImage visualizer

There are 41 filters in total now, including NSAttributedString, NSBezierPath and CGPath to name a few.

See the Xamarin Studio release notes for the complete list, as well as all the other features that have been added.


December 9

CBPeripheralManager for iBeacons in iOS 8

I recently ran into an interesting issue with the code for the FindTheMonkey iBeacon app. Previously I had the code for the app to act as an iBeacon using a CBPeripheralManager, which I created in the ViewDidLoad method. This previously worked fine but someone ran into an issue where ranging for the beacon never discovered it. To resolve this involved a couple small changes:

  1. Move the creation of the CBPeriheralManager into the constructor.
  2. peripheralDelegate = new BTPeripheralDelegate ();
    
    peripheralMgr = new CBPeripheralManager (
      peripheralDelegate, 
      DispatchQueue.DefaultGlobalQueue);
    
  3. Call the StartAdvertising method in ViewDidAppear.
  4. public override void ViewDidAppear (bool animated)
    {
      base.ViewDidAppear (animated);
    
      var power = new NSNumber (-59);
      peripheralData = beaconRegion.GetPeripheralData (power);
      peripheralMgr.StartAdvertising (peripheralData);
    } 
    

With these changes in place, ranging for the beacon discovers it as it had before:

iBeacon FindTheMonkey


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