The goal of this site is to put relevant and applicable tools and information at the fingertips
With this blog we want to inform you on our latest initiatives.
Enjoy reading and stay tuned!
At Microsoft we have an amazing set of tools to inspire future developers
Here a list of developer tools to help inspire tomorrow developers (Figures in bracket are guidelines for ages that it is appropriate) For FREE additional curricula materials see http://www.microsoft.com/faculty
· Kodu (5-11)
Kodu is a new visual programming language made specifically for creating games. It is designed to be accessible for children and enjoyable for anyone. The programming environment runs on the Xbox, allowing rapid design iteration using only a game controller for input. The core of the Kodu project is the programming user interface. The language is simple and entirely icon-based. Programs are composed of pages, which are broken down into rules, which are further divided into conditions and actions. Conditions are evaluated simultaneously. The Kodu language is designed specifically for game development and provides specialized primitives derived from gaming scenarios. Programs are expressed in physical terms, using concepts like vision, hearing, and time to control character behaviour. While not as general-purpose as classical programming languages, Kodu can express advanced game design concepts in a simple, direct, and intuitive manner. See http://www.kodugamelab.com/about
· The Kodu Cup (7-14)
The Kodu Kup is a game creation competition for UK school-children aged between 7 and 14. The Kodu Kup is open to any child enrolled as attending a UK school and who is aged between seven to fourteen years of age at the date of entry. Children are entered by their appropriate school teacher as a team of three. For more information the flyer can be downloaded from here: http://bit.ly/KoduKupFlyer
· Small Basic (5-11)
Small Basic is a project that is focused at making programming accessible and easy for beginners. The Language draws its inspiration from an early variant of BASIC but is based on the modern .Net Framework Platform. The Environment is simple but rich in features, offering beginners several of the benefits that professional programmers have come to expect of a worthy IDE. A rich set of Libraries help beginners learn by writing compelling and interesting programs. Small Basic is intended for beginners that want to learn programming. In our internal trials we've had success with kids between the ages of 10 and 16. However, it's not limited to just kids; even adults that had an inclination to programming have found Small Basic very helpful in taking that first step. See http://www.smallbasic.com
· .NET Gadgeteer (6-24)
Are you ready to create something awesome? Microsoft .NET Gadgeteer is an open-source toolkit for building small electronic devices using the .NET Micro Framework and Visual Studio/Visual C# Express. Build all manner of electronic gadgets quickly and easily with .NET Gadgeteer! LEARN HOW TO GET STARTED
· TouchDevlop (8-24)
TouchDevelop makes learning programming exciting! You can write code directly on any device and you can directly use sensors and media via high-level APIs. It's easy to create games and apps, publish them or tweak those published by others. You write code in our touch-friendly editor where you compose programs by tapping on your screen, yet concepts you learn transfer to traditional languages such as Java or C#. TouchDevelop embraces the "Bring Your Own Device" revolution by providing a unified programming environment everywhere. http://www.touchdevelop.com
· Project Spark (8-24)
Project Spark is a digital canvas which can be used to make games, movies and other experiences. A player can download other user-generated content, remix that content or create content of their own. A player can use the Xbox controller, keyboard and mouse, touch-devices and Kinect to build experiences. Kinect can be used to animate models and record audio. The created environments can contain mountains, rivers, and towns. http://www.projectspark.com
· Web Application Template (11+)
The Web Application Template is an Open Source Visual Studio 2013 template that lets developers create Windows 8.1 apps based on existing web content. Used in the right way, Web Application Template can facilitate the creation of compelling extensions to your web content for Windows users.
· Windows Phone AppStudio (8-24)
Windows Phone App Studio lets you swiftly build apps for immediate publishing, testing, and sharing with clients, co-workers, and focus groups. Windows Phone App Studio generates your source code - a feature no other app-builder tool provides so you can learn the basic and make enhancements with Visual Studio. http://apps.windowsstore.com/
· Project Siena (8-24)
Microsoft Project Siena (code name) is the beta release of a new technology for those interested in building an app without any programming experience, you can create powerful apps for the device-first and cloud-connected world, with the potential to transform today’s business processes.
Here are some examples of what people have already been building:
Apps for auditing and inspecting a manufacturing facility through photos, videos, and pen and voice notes, all tied to an asset database see http://www.microsoft.com/en-us/projectsiena/default.aspx
· DreamSpark (6+)
DreamSpark is a Microsoft Program that supports technical education by providing access to Microsoft software for learning, teaching and research purposes.
DreamSpark is simple: it's all about giving students Microsoft professional-level developer and designer tools at no cost so that students can chase their dreams and create the next big breakthrough in technology - or just get a head start on their career.
DreamSpark helps educators teach the latest technologies and experiment in research. Microsoft knows that to make learning more motivating, relevant, and engaging for today's students requires a diverse set of resources. DreamSpark gives educators the resources to ensure their classrooms always have the latest technologies to challenges, motivate, and keep students engaged in new ways.
DreamSpark is also a subscription for Academic Institutions: it provides a cost-effective way to put Microsoft developer tools, platforms and servers in labs and classrooms, and on their students’ and faculty’s computers for learning and research purposes. It reduces lab costs and teaching budgets.
How do I get DreamSpark Software?
As a Student: simply create an account, verify your student status and download software through this website at no cost. If your school/university has a subscription, you can also get access to more software titles.
As an Educator: you can get access through your institution’s subscription. Talk to your school administration to get a DreamSpark subscription and order today!
As an Academic Institution: order the subscription type that is right for you. DreamSpark Standard is for all types of institutions from primary to tertiary educations. DreamSpark Premium has a wider software catalog of over 500 products and is for qualifying technical departments only.
· DreamSpark FREE Store Developer Account for Windows 8 and Windows Phone (16+)
Develop applications for Microsoft software that showcase your talent, your skill and your development creativity. If you can imagine it, you can create it, and you may even just change the world with it. https://www.dreamspark.com/Student/App-Development.aspx
· Xbox For Education (6+)
The Xbox for Education offer includes a 3-Year DreamSpark Standard subscription for the institution. To take advantage of this offer from Monday 27th January, schools and colleges should visit: www.Xboxforeducation.co.uk
Xbox for Education and the associated resources available at DreamSpark http://www.dreamspark.com and Microsoft Faculty Connection Resources http://www.microsoft.com/faculty provides teachers with resources from first principles to advanced techniques.
These resources will shows you how to use the C# language to solve problems and how C# is used within the Microsoft XNA Framework to create games. The games that you write using the resources available can run on a Microsoft Windows, an Xbox 360, or a Windows Phone.
Or simply use packages such as Kinect Sports and Adventures, Mind Craft, Kodu and Project Spark in the classroom.
· The Imagine Cup (16+) There are lots of ways to participate in Imagine Cup. Find the competition that's right for you and your team. Fans of gaming? Check out the Games Competition. Want to change the world? Take a look at the World Citizenship Competition. Click on any competition's name to learn more about it, read up on the rules, and learn how to sign your team up. http://www.imaginecup.com
Visual Studio 2015 is a rich, integrated development environment for creating stunning applications for Windows, iOS, and Android, as well as modern web applications and cloud services. To find out more information about the Visual Studio 2015, please visit Visual Studio site or watch Visual Studio videos on Channel 9.
July 20 at 3:30 pm GMT and watch the Visual Studio 2015 final release event online. Follow @visualstudio for updates. https://www.visualstudio.com/en-us/visualstudio-release-event-vs
We invite you to join us online to learn about the new features and technologies coming with this release. You will be able to engage in live, interactive Q&A sessions with the engineering team, before jumping into the technical details covered in over 60 on-demand sessions. You will also have the opportunity to see the Visual Studio developer team creating an end-to-end solution for an open-source project, leveraging the newest tools and technologies. See how they tackle the different problems along the way, and ask them questions directly.
Visual Studio 2015 launches on July 20th with several changes to the product line-up.
As always Visual Studio 2015 will be made available at DreamSpark.com and through DreamSpark Standard and Premium at launch.
DreamSpark will offer all three Visual Studio 2015 SKUs:
Visual Studio 2013 included Premium and Ultimate SKUs for DreamSpark Premium schools. Both of these have been replaced by the single Enterprise SKU for DreamSpark Premium.
Please note that as usual, Visual Studio SKUs in DreamSpark do not include an MSDN subscription
Where can I download Visual Studio
Only Visual Studio Community 2015 will be offered at DreamSpark.com. Visual Studio Professional and Express are being removed.
Because Community and Professional are nearly identical, there should be no impact to student usage.
The DreamSpark Standard ELMS webstore will only offer Visual Studio Community 2015 for students.
The DreamSpark Standard MSDN Benefit Portal will offer product keys for Visual Studio Professional 2015. This is to support lab installations in campus facilities.
VS Community is not suitable for labs because each copy is activated by a single user’s Microsoft Account.
The DreamSpark Premium ELMS webstore will offer Visual Studio Enterprise 2015 for students.
The DreamSpark Premium MSDN Benefit Portal will offer product keys for Visual Studio Enterprise 2015 for lab installations
Getting Visual Studio Versions via DreamSpark
So what is Visual Studio Community.
Visual Studio Community is identical to Visual Studio Professional except for three things:
1)The Community license does not support Enterprise customers.
2)Product activation of Community requires a Microsoft Account instead of a product key.
3)The CodeLens feature is not included.
In all other ways, Visual Studio Community is the same as Visual Studio Professional.
Today is an exciting day for cross platform game developers using Unity3d.com
Unity 5.2 brings you Windows 10 and Universal Windows Platform (UWP) build options.
A UWP app can run on any Windows-based device, including Windows Phones, XboxOne, and Windows 10 PC and Tablet!
see more details on game development on Windows 10 at https://dev.windows.com/en-us/games and if your interested in cross play for your title between Xbox and PC see http://www.xbox.com/id
Unity 5.2 comes with a much tighter Visual Studio integration for a vastly improved coding and debugging experience on Windows machines.
The Unity installer will offer to install Visual Studio Community 2015 and Visual Studio Tools for Unity (formerly known as UnityVS). Everything just works out of the box!
Check out the Unity 5.2 Release Notes to find out what else is new. We’ve added multiscene lightmap baking, support for 3ds Max’s biped rig, Occlusion Culling improvements and more…
Welcome to the public release of Windows 10 IoT Core for the Raspberry Pi 2 and the MinnowBoard Max.
Where do I get the Public Release
Visit the Windows IoT Dev Center to choose your target board, then walk through the steps to provision your board, acquire the tools, and get started Making.
Introduction to Windows 10 IoT Core
Windows 10 IoT Core is a new edition for Windows targeted towards small, embedded devices that may or may not have screens. For devices with screens, Windows 10 IoT Core does not have a Windows shell experience; instead you can write a Universal Windows app that is the interface and “personality” for your device. IoT core designed to have a low barrier to entry and make it easy to build professional grade devices. It’s designed to work with a variety of open source languages and works well with Visual Studio.
Check out what you can build
AirHockey on WIndows IoT Core http://video.ch9.ms/ch9/1469/a6115687-f010-4ad2-b284-b73042151469/WindowsIoTCoreSnippetAirHockey_mid.mp4
Home Automation http://video.ch9.ms/h9/43e4/db7e6abe-2956-439b-9ad6-4a3ea57143e4/WindowsIoTCoreSnippetHomeAutomation_mid.mp4
What’s in the Public Release
The full list of new features and improvements:
Samples and Code
Node.js UWP app that reads from an I2C sensor and serves up a web page with the data here
You can find all the IoT samples on Github, as well as documentation and a growing set of libraries and helper tools. Even our project system and runtime support for Python and Node.js is available open source on Github.
When our samples start turning into full projects, you can find them on Hackster.io.
We’ve also worked with our friends at Arduino to make it very easy to talk to Arduino boards from Windows and even for Arduinos to talk to Windows devices as if they were virtual shields. See this project for more information.
Some Cool IoT demos
Rover Robot Kit – Make and program your own robot using a Raspberry Pi 2 running Windows 10 IoT Core Windows Remote Arduino- using an Arduino from a Windows Phone app to control an LED Home Automation with the RPI2
Cooling off in the Summer: Handheld fan control from an RPI2 Even more robots : GoPiGo
We have more projects in the pipeline, so keep your eyes on our hackster.io hub for more information about our Air Hockey Table, Face Recognition Unlocked Door, and more.
Release Notes : Details about what is covered in this release of Windows 10 IoT Core. Download Now : Click here to start downloading for FREE now. You will need the latest version of Windows 10, Visual Studio 2015 and tools. Community : Share your feedback here and engage with other Makers using our forums.
Show Us What You’ve Got
Tweet @WindowsDev with the hashtag #makeInventDo with pictures so we can have as much fun as you do.
Guest blog by Simon Grey Lecturer in Games Development Studies at the University of Hull
XNA is a great framework for creating games, and we use it as a tool to motivate students to learn how to program whilst creating great games at extra-curricular events such as the three thing game. For us, a tools like XNA is an invaluable intrinsic motivator – inspiring students to want to learn to code, as opposed to being motivated because we said so, or because they will get better grades.
According to the official documentation XNA requires Visual Studio 2010. Now, clearly it’s possible to install both Visual Studio 2010 and Visual Studio 2012 on the same machine, but that would have a big impact on the size of the image.
To get around the limitation of our managed desktop Hard Drive capacity we would d rather not install both if we don’t have to, but if you try to install XNA on a machine that doesn’t include Visual Studio 2010 the installation will fail.
However after some monitoring of the install process here is a nice walkthrough produced by the University of Hull of how to install XNA onto a machine with Visual Studio 2012. The University of Hull we are keen to provide students with as seamless an experience as possible when moving from working at home to working in university, with this in mind I Simon has developed the following blog post, so that students can use XNA at home with Visual Studio 2012 to allow them an easy transition to and from the machines at the University
You’ll need to download this zip file which contains the entire XNA setup and the folders that you’ll need to copy yourself.
Visual Studio Professional 2013 https://www.dreamspark.com/Product/Product.aspx?productid=72
Visual Studio Professional 2012 https://www.dreamspark.com/Product/Product.aspx?productid=44
Visual Studio Professional 2010 https://www.dreamspark.com/Product/Product.aspx?productid=4
MonoGame for taking existing XNA Games and Apps to Windows 8 – http://www.monogame.net
XNA Game Studio - https://www.dreamspark.com/Product/Product.aspx?productid=3
Getting Started creating Xbox Indie XNA Games - http://www.slideshare.net/lee_stott/xbox-indie-account-via-xna-creators-club-for-all-students
We have just released a new Training & Certification Guide app into the Windows 8 store
The app is a great tool for student, educators and professionals for evaluating which technical courses and certifications should be completed to gain Microsoft Professional Certifications.
The Training and Certification Guide features an interactive chart of our technical certifications mapped by courseware and exam. Clicking on the ‘subway map’ takes a user to more information on the different portfolios—details about the training, certifications, etc. Clicking further will then take users to /learning. A breakdown of keyword guidance is also included to map keywords to our certifications.
The app also includes a ‘view as PDF’ option should users need to print pages.
Wishing you a happy professional certification journey.
Xbox One Wireless Controller can work with your PC if you download one of the following driver packages:
Note To use your Xbox One controller with your console after using it with a PC, you must re-sync the controller to the console. You can do this by using the wireless sync button or a USB cable. For details, see Connect a wireless Xbox One controller to your console.
If you want to use an Xbox 360 Controller with your computer, you can use an Xbox 360 Controller for Windows. Or, you can use an Xbox 360 Wireless Controller together with an Xbox 360 Wireless Gaming Receiver for Windows.
Adding controller support to a brand new Unity project.
Start up Unity, and go to File > New Project.
Setting Up the Input Manager
In order to set up Unity so we can easily access controller inputs from scripts, we need to properly set up the Input Manager.
Go to Edit > Project Settings > Input to open the Input Manager.
There are 20 total input buttons and axes on an Xbox controller, but for this demo we will only add the 4 face buttons, A, B, X, and Y, and the two joysticks. This is the most tedious part of the process, so if you’d like to skip it, I’ve provided a completed InputManager.asset file to download and use here:
Add 8 new axes to the Input Manager by changing the size value. The first 4 inputs will represent the 4 face buttons. Open the dropdown menu for the first new Axis, and change the values to the following settings for the A button:
For the next 3 inputs, input the same settings for the other 3 face buttons, except for “Name” and “Positive Button”. The button settings should reflect the values on the Unity3D Xbox Controller wiki:
NOTE: Windows, Mac, and Linux all have different button values for the Xbox controller, as seen on the Wiki page. To make the process of switching between these platforms easy, the InputManager.asset file found in the Project Settings folder in your Unity project folder stores your input settings. If you create a separate InputManager.asset file for each platform, and store them in another folder, you can switch them in and out by replacing the file in your Unity project folder with the one for the desired platform.
The last 4 inputs will represent the 2 axes on the 2 joysticks. For the first one, change the values for the following settings for the X axis on the left joystick:
Input the same values for the next 3 inputs, for the left joystick Y axis, and the right joystick X and Y axes. Again, refer to the Xbox controller page on the Unity3D Wiki to find the correct axis values:
Setting Up a Scene
For this example we will create a simple scene to move a character around in. Add a plane with a collider as a floor, and add a capsule on top of it as a player. If the capsule has a capsule collider on it, remove the capsule collider and instead add a character controller component. Make sure there is a camera in the scene, and it is pointed at the objects in the scene. Finally, add a light into the scene so we can see our objects properly.
Coding the Player Movement
Next we will write a script to control our player. Create a new C# script called PlayerMovement, and open it in your editor of choice. Write the following code:
1: using UnityEngine;
3: using System.Collections;
5: public class PlayerMovement : MonoBehaviour
9: private Vector3 movementVector;
11: private CharacterController characterController;
13: private float movementSpeed = 8;
15: private float jumpPower = 15;
17: private float gravity = 40;
19: void Start()
23: characterController = GetComponent<CharacterController>();
27: void Update()
31: movementVector.x = Input.GetAxis("LeftJoystickX") * movementSpeed;
33: movementVector.z = Input.GetAxis("LeftJoystickY") * movementSpeed;
39: movementVector.y = 0;
45: movementVector.y = jumpPower;
51: movementVector.y -= gravity * Time.deltaTime;
53: characterController.Move(movementVector * Time.deltaTime);
Finally, add this script as a component to your Capsule, and press play to test out your game.
Adding Player Number 2
Adding support for multiple controllers is a great way to include local multiplayer in your game. To add more controller inputs, add more axes to the Input Manager. Repeat the same process as before, except when entering the “Positive Button” values, include the number of the joystick. For example, instead of “joystick button 0”, write “joystick 2 button 0”. Similarly, for the left and right joystick axes, change the “Joy Num” dropdown value to reflect the correct joystick number. Finally, when writing the “Name” value for the buttons and joystick axes, add a suffix which denotes the joystick or player number. For example, instead of “LeftJoystickX”, write “LeftJoystickX_P2”. Remember to change all of these settings for your first set of inputs as well.
After changing all of the input settings, you will have to make some changes to the PlayerMovement script as well. Make the following changes.
19: public int joystickNumber;
21: void Start()
25: characterController = GetComponent<CharacterController>();
29: void Update()
33: string joystickString = joystickNumber.ToString();
35: movementVector.x = Input.GetAxis("LeftJoystickX_P" + joystickString) * movementSpeed;
37: movementVector.z = Input.GetAxis("LeftJoystickY_P" + joystickString) * movementSpeed;
43: movementVector.y = 0;
45: if(Input.GetButtonDown("A_P" + joystickString))
49: movementVector.y = jumpPower;
55: movementVector.y -= gravity * Time.deltaTime;
57: characterController.Move(movementVector * Time.deltaTime);
After changing the script, duplicate your player object, and move it to the side a bit, so it’s not overlapping the first player. Select the first player, and look at your PlayerMovement component in the inspector. Because we made joystickNumber a public integer, we should be able to change it directly in the inspector. Change one player’s joystickNumber to 1 in the inspector, and change the other player’s to 2. This should allow you to control each player separately with 2 controllers.
Last week I had the pleasure of speaking to a few hundred people at Apps World on a session entitled Cross Platform Panel: Exploring Methodologies & Tools.
This is a fascinating area as today’s modern app developers are now ultimately having to become more agile in their abilities and use the best tools available to develop an app for as many platforms as possible within a shortest period of time to maximise the revenue their app or game can achieve.
However having to develop an application or game for a diverse range of mobile platforms iOS, Android, Windows Phone etc.. has a number of constraints which need to be taken into consideration for example each have their own ‘native’ development languages, UI/UX, developer tools and environments.
But for the modern developer there is an ever growing list of cross-platform frameworks that allow you to minimise the cost and effort of developing mobile apps, but which to choose?
Here is a list of some of the most common cross platform frameworks available for today’s mobile app builders.
Enyo is a free and open source (Apache 2.0 license) cross-platform and cross-browser application development framework that enables developers to create HTML5 applications and deploy them to many modern desktop browsers and mobile devices.
Enyo is built around the philosophy of fully-encapsulated components, which allow a developer to reuse component pieces (or even an entire application) in new or existing projects. It is possible to embed full Enyo applications in the DOM elements of existing Web pages.
Enyo has a dependency mechanism (package.js) to enable a basic modular approach to building applications. If you look at most Enyo projects, you will see references to a $lib directory in one or more package.js files, usually to include optional modules such as Layout (lists and responsive components) and Onyx (a widget library).
Intel App Framework is a framework for building cross-platform mobile application using HTML5 technologies. The framework started life as jqMobi, a mobile optimised version of jQuery, which was created by the team behind appMobi. Intel acquired the jqMobi tools and staff in February 2013.
Intel App Framework is free and open sourced under an MIT licence. Intel also offer XDK, which is a a full suite of tools built around the App Framework. XDK adds an IDE, build tools and an emulator.
jQTouch is a Zepto/jQuery plugin which provides a framework for developing iOS and Android applications. It is both open source and free to use.
jQTouch provides a structure on which to base the HTML, the majority of the application styling, page transition animations and touch based event handling; however, it’s not a fully featured application development solution.
iOS version uses the out-of-the-box jQuery Mobile styles
Windows Phone uses the jquery-metro-theme extensions to support the Windows UI style together with Windows Phone specific features such as the app-bar.
Kendo provide a suite of web development frameworks, all of which are built on top of the ‘core’ Kendo UI MVVM framework. The Kendo UI Mobile framework adds a set of UI widgets for the creation of mobile interfaces. The mobile framework has a look and feel that mimics the native Apple, Android and Windows Phone themes.
Lungo is a framework for developing cross-platform applications in HTML5. Lungo applications are run in the browser, similar to other HTML-based frameworks such as jQuery Mobile. Lungo provides 2 main workflows:
Lungo provides a rich set of classes to help decorate basic HTML5 markup. The markup is then given behaviour and interaction based on the structure by Lungo, without any developer code being required. Lungo’s philosophy is that you should be able to create a prototype of your application to show basic interaction and page flow without having to write any JS yourself.
Lungo also provides a JS API to interact and enhance the prototype. The Lungo API is similar to the common functionality you’d see in other mobile frameworks, such as DOM manipulation (through Quo.js), page routing and navigation, storage etc.
mgwt is an open source mobile widget framework build using GWT. mgwt provides a number of UI widgets, CSS styles and a PhoneGap API which make it easier to develop native-like applications using GWT.
PhoneJS is a commercial HTML5 framework for cross platform mobile application development from DevExpress. PhoneJS is free for non-commercial use.
PhoneJS uses the Knockout MVVM framework for structuring the application, with the PhoneJS CSS providing a native-styled UI for the various phone platforms. PhoneJS applications use PhoneGap for packaging.
DevExpress also offers a more integrated solution based on PhoneJS, called DXTREME Mobile, which adds Visual Studio tooling.
Titanium APIs provide an abstraction layer for the Android and iOS UI elements, allowing you to write your view code against the Titanium abstraction. Although, there are some view concepts which have not been abstracted, meaning that developers have to write platform specific view code
Xamarin have two commercial products, Xamarin.iOS for iOS development and Xamarin.Android. The Xamarin frameworks allow you to write applications using C# and the .NET framework. For each platform Xamarin provide bindings to the native platform APIs. As a result Xamarin applications make use of the native UI for each mobile platform. Xamarin do not provide a Windows Phone product because the C# and .NET code used for Android and iOS development is directly portable to Windows Phone.
What resources are available to help evaluate which is the best solution?
To help solve this problem PropertyCross presents a non-trivial application, for searching UK property listings, developed using a range of cross-platform technologies and frameworks. Property Cross has a simple aim is to provide developers with a practical insight into the strengths and weaknesses of each framework so this is a definite resource you should check out if your interested in cross platform development.
I would love to hear your experiences of developing apps and games for cross platform support and which tool you find the most useful?
With the release of Unity 4.2, you can now take your Unity games and quickly port them to Windows Phone 8 and extend your reach to Windows users.
Getting started building a Windows Phone 8 game with Unity
To develop, compile and submit a Unity game to the Windows Phone store, you will need:
• Unity 4.2 . Either the Unity free version or Unity Pro will work. The add-ons to publish to Windows and Windows Store are free, even for Unity Pro users.
• Windows Phone SDK 8.0 The WP8 SDK includes a stand-alone version of Visual Studio Express 2012 - if you already have Visual Studio Premium or Ultimate, the SDK will work as an addin and you can continue to use your version-.
• Windows 8.0 or later. If you do not own a Windows 8 license, you can get a 90-day evaluation version. If you are running Mac OS X or will install on Apple hardware, check different options for installing using Boot Camp, VMWare , or Parallels.
• Windows Phone developer account. This is needed to “unlock” your phone so you can side load your game for developing and testing. It will also be needed to submit your game to the Windows Phone store.
• Windows Phone 8 device. In Unity 4.2, deploying and debugging to the Windows Phone emulator is not supported, so you will need a phone. Once you have a phone and your developer account, follow these instructions to register your phone for development.
Targeting a new platform always requires a few tweaks, such as using a few platform specific APIs (e.g. in-app purchase or application life cycle) and tailoring the game to the device’s hardware capabilities (e.g. a back button).
To create your game, you will still be using the Unity IDE. This will feel very familiar and keep your productivity high. That said, there is a significant difference that you should keep in mind: When running the game within Unity, it will run using the Mono run-time; however, once you build for Windows Phone platform and deploy to the phone, you will be running in the .NET for Windows Phone run-time.
Here are a few tips for dealing with this “dual run-time” environment:
1. If including script files that will run in Unity, use the #if UNITY_WP8 pre-processor directive to refer to code that should not run inside Unity.
2. For plugins, include Unity plugins to be used in the Unity editor in the Assets/Plugins directory and include the run-time plugins for Windows Phone in the Assets/Plugins/WP8 folder.
3. Make sure you test your game thoroughly on a device. If you are referencing a Mono API that is not on Windows Phone, it will work fine in the Unity player, and throw an exception on the phone.
4. Unity uses the Mono compiler to generate phone assemblies, as such you may find that once in a while you will call a Mono API that is not in phone and even the compiler (when you build for phone) will not catch it. These errors will lead to exceptions when running on the phone. A good tool to validate an assembly’s portability to Windows Phone is http://scan.xamarin.com. You should extend this practice of validating your assemblies to compiled plugins. If you purchase a plugin that ships as a binary, validate it to make sure it uses only Windows Phone APIs.
If you find errors or missing Mono APIs that you are using in your game, you should look at the .NET API for Windows Phone reference site to find alternates.
Windows Phone renders their UI using XAML. This infrastructure can be useful if you want to have UI that is not in your Unity game (such as a splash screen or ads). XAML UI and Unity UI can compose seamlessly. The way this composition works is via the DrawingSurfaceBackgroundGrid control. This control uses Direct3D to render what is effectively the background to the whole screen. Unity renders your game against this surface using hardware accelerated Direct3D. For more details on XAML + Direct3D composition, refer to the XAML and Direct3D apps for Windows Phone 8 write-up on MSDN.
The graphics composition with via the Unity engine will all be transparent to you. It is where you mix and match that you will need to remember these four details:
1. Within your app, you can include XAML UI controls and widgets (such as an ad control, buttons, etc.) that compose visually with your game.
2. If you add XAML UI, this will be in front of your game since your game is rendered as the background of the scene.
3. To maximize compatibility across screen sizes, XAML content is scaled. XAML content is 480 wide, and then scaled. [So on devices with 1280x768 resolution, Unity will see this resolution and XAML content will be 480x800, scaled 1.6 times. If you are trying to align a pixel-perfect composite of a scene that uses XAML and Unity content, you will need to scale down your Unity content. You can get the scale from the Appication.Current.Host.Content.ScaleFactor property.
4. XAML UI runs on a different thread than Unity, so you will need to dispatch messages to the right thread in order to access the respective UI components for each technology:
To tweak XAML UI from a Unity callback, use this:
1: Dispatcher.BeginInvoke(() =>
3: //access XAML UI elements here..
To call from within XAML UI thread onto the Unity thread, use:
1: UnityApp.BeginInvoke(() =>
3: //access Unity objets here..
Windows Phone games must declare some of the resources or APIs they will consume.
This is done via declarations in the application manifest (WMAppManifest.xml). If you are making network requests, accessing sensors, using push notifications, etc. you will need to declare these, else your app with get exceptions or failures with access denied.
Everything you need to know about capabilities is in the capabilities documentation page. Review that page and double click on the WMAppManifest.xml document in your Visual Studio project to declare the resources you will need; there is no coding required for any of these.
Process Lifecycle Management
The Windows Phone application model has one foreground app (the one that is visible) that has access to most of the OS resources (memory, CPU, networking); to enable fast app switching, the OS does keep recently used apps that the user has not explicitly closed in memory. All of this app model is explained to great detail in the “App activation and deactivation for Windows Phone” documentation.
For games where you are saving state as early as possible, the default mappings to Unity events should work well. If you want to optimize further, all these events are in App.xaml.cs and the default Unity generated code is subscribing to them, you can add extra logic in the event handlers on the C# side, and use a plugin to communicate with your game code.
Windows Phone 8 has a detailed minimum hardware spec that all devices must meet; you should expect high-degree of consistency across the devices.
Hardware acceleration with programmable GPU. Windows phone uses Direct3D with feature level set to 9_3. MSDN has a great table of the supported features by level. The two biggest take-aways to notice are shader model level 2 and max texture size of 4096.
Windows phone 8 devices come in three resolutions: 480x800(WVGA), 768x1280 (WXGA) and 720x1280(720p). To find the resolution of your device, you can query the Screen.width and Screen.height properties within your Unity scripts; you can then scale appropriately within the game. For static assets outside the game (tiles, splash image, etc.) supplying assets for the WXGA resolution often suffices, Windows Phone will scale these.
Memory comes in multiple configurations: 512 MB of RAM for the WVGA devices, and minimum of 1GB RAM for the 720p devices. The newest phones such as Nokia 1020 are up to 2GB.
The OS limits how much memory a single application can consume; for lower memory phones this is around 150MB for a single app, and it goes up to around 380MB for higher memory phones. There are capabilities you can declare in your manifest to opt into specific memory behaviours and to opt out of running on low-end devices.
The default Unity projects opt into the ID_FUNC_EXTENDED_MEM capability, which says your game will run in a lower memory device, getting up to 180 MB. You can opt out of lower memory devices by using the ID_REQ_MEMORY_300 capability; learn more about the limits and the capabilities from the App Memory Limits documentation.
Accelerometer is available on all phones and directly accessible from Unity APIs.
Magnetometer and gyroscope are optional on the hardware on the phone. Compass APIs are not implemented in 4.2, but they are in the upcoming 4.3 release.
Hardware Back button. All Windows Phones have a dedicated back button and there are specific guidelines on what an app should do when the back button is pressed:
• If you have implemented navigation within your app, pressing the back button should go back to the previous step in your navigation.
• If you are inside a modal dialog (e.g. settings or achievements, etc.) pressing back button should dismiss the dialog.
• If you are not in a dialog and you are at the root of the navigation game (or you do not have navigation in your game), pressing the back button should exit the game.
To handle the back button, use the same mechanism as android: listen for the Escape key.
Note that proper handling of the back button is a certification requirement. If you do not handle it, you will fail certification. The default code exported from Unity does not handle it, they do the work to suppress it, and expect you to handle Escape key. If you do not want to waste cycles on every update listening for the Escape key you have a game with a single screen and no modal dialogs where the back button would always exit the game, you can comment out the e.Cancel assignment from the
1: BackKeyPress event handler in MainPage.xaml.cs
2: private void PhoneApplicationPage_BackKeyPress(object sender,CancelEventArgs e)
4: //e.Cancel = UnityApp.BackButtonPressed();
As any mobile platform, performance is important and you should test for it. Most of the standard Unity guidance on optimizations for mobile devices applies. Most games should not need platform specific optimizations (outside of tweaking visual features to the GPU capabilities on phone). For those looking to get every drop of performance, interop cost on Windows is a bit higher than on Mono. You need to be smart about crossing the boundaries from your script (C# or UnityScript) to the unity engine (which is written in native code).
Unity support for Windows Phone is still growing so not all APIs have been ported, there is only a few missing,
• Compass support is not in Unity 4.2
• Location services is not in Unity 4.2
• Webcam support is not in Unity 4.2
• Microphone support is not in Unity 4.2.
• WWW is implemented but multiplayer networking APIs are missing. You can used .NET APIs or third party libraries (e.g. photon) as an alternative.
• GPU profiling is not available yet.
• Application.OpenURL is not implemented. You can use the Windows Phone WebBrowserTask for this.
Enhancing your game with some of the Windows Phone platform features
The Windows Phone Start screen is a signature and highly praised feature in Windows phone. Tiles are the ‘first impression’ your users will get about your app; when used effectively, tiles can be a differentiator that drives continuous engagement to your game.
Anyone shipping a game for Windows phone should read the introduction to tiles for Windows Phone and the tile design guidelines for Windows Phone.
At a minimum, your game should have beautiful tile that meets the design guidelines on all possible sizes – tiles come in 3 sizes: 159x159 (small), 336x336(medium) and 691x336(wide).
To configure and include the tiles for your app, you must use Visual Studio’s manifest editor and include the images in your VS project.
Once you have a beautiful static tile, consider how to “invite” your users to come and play often. If you have a turn-based game, you can use the tile to notify the user of their turn; if you have a game that can start at any level, let the user create a secondary tile that lets’ them pin their favorite level and start there every time. If you have any server-side features (high scores from peers, special offers, etc.) use Windows phone push notifications to let the user know about your offers or any other relevant data that invites your user to play a game. You can also do local notifications, and scheduled tiles. There is a lot of different options to keep your start screen alive.
Unity does not include APIs for tiles and since Unity uses the Mono compiler, you can’t just include a script in your project to access tiles (the compiler won’t be able to resolve this), you must do a plugin and compile it using Visual Studio. For details on the tile APIs for Windows Phone, refer to the ShellTile class.
A few seconds will pass between a user tapping to launch your game, and the Unity engine rendering it to the screen. Windows Phone allows you to configure an image that the OS will show between the time the user launches your app and when XAML UI is rendered to the screen. This image is a JPG and you can configure different sizes for the different phone resolutions:
Image size in pixels
Filename (you must use)
You can also just include a single image called SphashscreenImage.jpg, this is what the default Unity builds do; if you are shipping a single image, make it the WXGA size, the OS will scale appropriately.
The Unity 4.2 Player Settings dialog does not allow you to override the Splash Image with your own, so you must configure it in Visual Studio. Instructions on where to copy the images to and what resolutions to use are in this How to create a Splash Screen walk-through.
Having a splash screen is a must-do, but it is usually not enough. Windows Phone only shows the splash image while the app is getting started and once it is ready to show XAML UI, it transitions into this XAML UI. For some games, there are still a couple seconds between that and your Unity UI. To get around this, you can just edit your XAML to display your splash image (or any other UI you want to display) until Unity is ready. For details on how to accomplish this, look at the “Extending your splash image” in the common tasks section below.
Windows Phone offers different options for monetizing your game.
Beyond the one-time purchase of your game, Windows Phone offers trials (that you would need to convert to a full purchase), in-app purchase for durables and consumables and advertising.
To access the in-app purchase APIs you will need to write a Unity plugin. MSDN has a great overview of the in-app purchase APIs, most concepts will feel ‘familiar’ for those who have implemented in-app purchase in other platforms. The only ‘quirk’ you will encounter is that Windows Phone does not have a staging environment to test in app purchase. There is a Mock API library that you can use for your development; if you feel that testing the in-app purchase APIs (not just the mock library) is absolutely required before submitting to the store, then do a beta for your game. This would allow you to test inapp purchase using the real APIs before you submit to production.
If you prefer to purchase a plugin instead of writing one, here are vendors that have plugins. RobotoWP for Windows Phone , BitRave and Prime31 have Microsoft Store plugin and lots of other useful Windows Phone and Windows store plugins such as Microsoft ads plugin, and an essential plugins that includes a lot of sharing tasks
Submitting to the store
To submit to the store, you will need your Windows Phone developer account and a licensed version of Unity. The trial version of Unity, will produce a water mark in the build that says “development build” on the bottom right of your game, and this will not pass certification. The Unity addins for Windows Phone are free for Unity basic and even Unity Pro users, so just contact Unity to get your free license.
When you are ready to submit to the store, follow these steps.
1. Check out the App certification requirements for Windows Phone 2. Become familiar with Windows Phone app product submission process.
3. Run your app through the Windows Phone Store Test Kit. The Windows Phone Store test kit is a suite of automated tests and manual tests for your game. The kit will identify and help you fix issues that Microsoft testers will find during certification; by finding them early, you will save a lot of time. The store kit can be executed from within visual studio (under the project tab), this walkthrough gives you step-by step- instructions and details on running the kit.
You will be tempted to just run the automated tests and ignore the manual ones; this is a bad idea; you can learn a lot about the platform and about making your game better from looking at what the Microsoft certification folks are testing for; give the manual tests a try and see how your game fares.
4. We recommend you go through a beta submission. More details at the “Beta testing your app” page , on MSDN
5. Submit your master configuration. Unity will create a debug, release, and master configuration for your visual Studio project. Make sure you submit the master, not the release one.
Other useful references
• Unity’s Windows Phone 8: Getting Started guide is a must read.
• The getting started with Windows Phone will walk you through downloading the tools, registering your phone for development (aka unlocking the phone) and writing a basic app that walks you through Visual studio project structure.
• The Windows Phone SDK samples collection has hundreds of coding samples to accomplish specific tasks.
Unity has instructions on debugging with visual studio.
Unity has instructions on profiling Windows phone apps
The Academic Search beta is a free search engine, developed by Microsoft Research, that helps users quickly find information about academic researchers and their activities. It is also a test-bed for our object-level vertical search research.
With Academic Search, you can easily find top researchers and their papers, conferences, and journals. You can also find relationships between researchers who co-authored papers. Academic Search will be changing its name with the upcoming release of new and improved features. In the meantime, try Academic Search and explore more than 15 million publications.