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!
Techila is a middleware solution for High Performance Computing that enables existing applications to utilize more computing capacity. I believe that the key problem in business and operational computing is the lack of application performance. There are enormous amounts of computing capacity available using Windows Azure cloud service.
Techila allows applications to utilise all available computing capacity. To try demonstrate this a great example of the benefits of Techila and the Windows Azure with Techila integration is a case study, which Techila did with a leading cancer researcher. The researchers in question had a project, which would have taken 15 years. He had developed his research application in MATLAB. He used the Windows Azure with Techila integration to boost the performance of his application with the combined power of 1200 Windows Azure instances. This allowed him to complete the project in 4,5 days! Being able to do something in 4,5 days, which usually takes 15 years gives a real competitive advantage.
Techila develop the solution in close co-operation with end-users and system administrators from the very beginning.
Techila has selected Pharma, Economics/ Financial, and Universities/ Academia as the key markets because of the fact that they are strong on Techila's home market, Finland. But I want to emphasize that unlike many other distributed computing solutions, Techila is a fully horizontal middleware, which can be used in any segment and which can increase the performance of any application: The code can be a MATLAB application, or it can be R (or C/C++, Java, Perl, Python, Fortran,...) They also offer an open API, which can be used to connect any ISV application (3DSMax, SAS, COMSOL, Sungard,...) to the Windows Azure capacity.
Also please find below a demo of run a 2-day long computation in a couple of minutes using 500 Azure instances using MATLAB:
Techila with R language can be found here:
Welcome to the Win2D Github Open Source project.
Win2D is an open source project which as developed a Windows Runtime API to expose the power of hardware accelerated Direct2D graphics to Windows Universal App developers who are targeting Windows 8 and Windows Phone.
Win2D is available to both C# and C++ developers writing Windows 8.1 and Windows Phone 8.1 apps.
Win2D is an easy-to-use Windows Runtime API for immediate mode 2D graphics rendering with GPU acceleration. It is available to C# and C++ developers writing Windows Store apps for Windows 8.1 and Windows Phone 8.1. It utilizes the power of Direct2D, and integrates seamlessly with XAML and ICoreWindow.
Win2D is work in progress and evolving rapidly. The goal of releasing this code in an early, incomplete state is to solicit early developer feedback. The project backlog shows what we plan to add in the future, and the order in which we plan to add it.
Source code and issue tracking are available at http://github.com/Microsoft/Win2D
To get started using Win2D:
To find out more, check out the following links:
blog post: http://blogs.msdn.com/b/win2d
Below is an example of what you can do using Win2D. And it is not a “bitmap”, but a vectorized image.
You need to think about what the cloud can do for you, whether it's something small like sharing save states or something larger like monitoring data and making quick iterations while your product is live. Then you can think about whether your use aligns with your players' perceptions, and whether you need to surface any information about your usage to show that your cloud offering is significant enough to give you an advantage.
The cloud can give you more than technology
If you decide to move to a cloud service, you may find that it offers your more benefits than you might think. An example can be seen in the indie development studio Gateway Interactive, who ditched their server stack in favour of moving to the cloud. While this resulted in faster transaction speeds and other improvements The savings they made from moving off a local server stack to a cloud-based model allowed them to hire an extra team member, increasing productivity and the quality of their upcoming games.
A platform agnostic approach is a powerful approach
One of the greatest benefits of game developers using the cloud is the fact that it's completely platform agnostic. If you were to create an app for the iOS platform using your own engine, you'd then have to make numerous changes and alterations to get it working on Windows and Android.
Pick your Middleware
This is why middleware solutions like Unity have thrived, as they allow for easy porting between different devices. However, these apps are never going to be connected without the use of the cloud. For example, do you want players to be able to move from one device to another and continue where they left off? Do you want players to be able to compete with each other, irrespective of what device they are using?
Agility is essential
Game development has come a long way in the past decade. Internet connectivity on devices has allowed for developers to create additional content and patch out previously undiscovered errors after the initial release, something that was once impossible.
Embrace big data
If you truly want to understand your users and how they play, then big data is the way to go. Not only will you be able to see information such as playing habits and playtime length, but you can also see details that'll help you with your next iteration, such as making improvements to a level if most people are getting stuck. Even if you're not planning to use the full capabilities of the cloud.
Example of Cloud Services
To give you some idea of how we are using cloud please watch the following video from Microsoft Studio Zoo Tycoon Friends. Zoo Tycoon Friends, a free-to-play title for Windows 8 PCs and tablets, plus Windows Phones. It was developed by Doritos Crash Course studio Behaviour Interactive and looks similar to the Xbox 360 and Xbox One versions of Zoo Tycoon that launched in November last year.
Like the Xbox versions of Zoo Tycoon, gameplay revolves around interacting with the animals themselves, as well as building your park. Instead of Kinect controls, you'll now be clicking or tapping on your animals to care for their needs.
See the game trailer below:
Here is a nice technical overview of how the team has implemented Microsoft Azure Cloud Services
New Dev Center Lifetime Registration And Benefits Program
Starting today, Windows Dev Center requires only a one-time registration payment, which grants developers the ability to submit apps to both Windows and Windows Phone stores, with no annual renewal fee. Existing registered developers will no longer have to pay Dev Center renewal fees to maintain their account.
Today we also announced the Dev Center Benefits program, the program has been designed to increase your success on Microsoft platforms by helping develop, improve and market your apps with a variety of offers and tools.
The good new is the Dev Center benefits program will be available to all registered developers worldwide.
So what are you waiting for sign up Now! for the Dev Center and the Dev Center Benefits program.
For more details see http://bit.ly/1soCDeD
The architecture has a logical layout (below). It looks complex, but the blog will hopefully explain it.
When architecting our game your need to consider what the components, described below. Some are apps (the clients), and the rest are cloud services.
The clients are the apps that game players download to their devices. Each app must be developed for the particular device, but they must all have behave the same. The game is the same, just the UI changes.
When building a game today you want it to be played on the most number of devices so, ideally it should be capable of being played on Windows Phone 7 and 8, Windows 8.0 and 8.1, iOS, Android, and Kindle.
To enable maximum platform support communication is enabled using REST APIs. The experience of playing the game should be smooth and seamless. A key factor is to ensure that the client app makes the minimal number of calls (after authentication).
When developing your client its key to ensure that each of the client has a thin hardware abstraction layer (HAL). the HAL must contains the code necessary to display and process the UI controls, along with the code that initiates contact with the Visitor Center and the code that interacts with a Game Room.
The first stop for a player is the Visitor Center. So think of the Visitor Center as the landing page for your game i,e. you’ll find the leaderboard results and a directory of the gamer IDs. You can also find a friend on the system through the leaderboard.
When the player starts the game, the client app authenticates the player with either Facebook or another authentication services (using a username and password). The client app then sends the Visitor Center the identity of the player (via a token). The Visitor center confirms the identity by contacting Facebook or other authentication services to verify the token (and thus the player). Once confirmed, the Visitor Center sends the client app a new URL that goes to the Game Room where the user will be playing.
Note that if the user does not sign I, you may want them to allow them to play as a Guest (guests may be simply unranked or wouldn't be issued persistent stats or friends).
The Game Room consists of 3 APIs that interact with the client.
1) Game: Sends the current puzzle to the client.
2) Post: Receives the user’s individual results from the client.
3) Results: Sends the leader scores and relative ranking of user to the client, along with the next puzzle.
You may want to geo locate each of your games rooms, best practice is to locate each Game Room on the continent with the greatest player base – so European languages are housed in European data centers, for example. The hard cases are English, Spanish, and Portuguese, which have broad, world-wide audiences. English is played from everywhere, but is most concentrated in the US, UK, India, and Australia. Spanish is split between Spain and Latin America. Portuguese is most heavily played from Brazil, but there are still plenty of players from Portugal and other parts of the world.
When a game ends, each client sends the player’s results to the Game Room. The Game Room has an Azure load balancer in front of it that distributes the results to one of its three web roles. Because the results are randomly scattered, they must be gathered into one central spot—the aggregator.
The inner working of the aggregator is an Azure Cache. Caches are used in computing because they take the pressure off a system by holding recently stored data in memory and letting many operations access the data. Because the data is in memory, it can be instantaneously returned to any operation. The cache operates instead of a database engine that would otherwise query for a particular result. Multiply the queries and the database quickly reaches its capacity to respond. Caches are tried and true time savers.
Here’s what happens between the GR and the aggregator.
After a game ends, each Game Room web role receives the individual client results. The web role then sends all of its accumulated results to the aggregator. Note that due to retries, there may be duplicate client results received by the Game Room and received by the aggregator. (Two people sharing the same Gamertag while simultaneously playing using different devices also causes duplicate client results to be received.) Then, the aggregator sends all of the Game Room web role results back to each Game Room web role, as shown in Panel 3 of the diagram above.
Each Game Room web role removes duplicates and sorts the results, and sends the top results and individual results with peer ranking back to the client. After the next round starts, each Game Room writes its buffer of unsorted results to blob storage. Each blob is named in the form <puzzle language id>-<game id>-<instance number>.txt, and consists of Comma Separated Values (CSV) data.
Leader Board Orchestrator (LBO)
The LBO does the heavy lifting for the app. It works in close partnership with the two database stores that conceptually flank it to create the “best of” lists (best of right now, best of the hour, best of the day, best of the week).
When the Game Room and the aggregator have finished the results reporting work, the LOB starts.
It first gets the results of the game from the newly written blob storage. It then processes the data to create in-memory tables that are inserted into an instance of Azure SQL Database. Once the data is inserted into the database, a large number of queries, in the form of stored procedures can be run against the data. To preserve the integrity of the data, stored procedures are the only way used to determine stats. The integrity of the data can also be checked during the process. The LBO can use more than one worker role to process the data. The results can also be compared. If any discrepancies arise, then the worker can be immediately stopped, and a new worker started to retry the processing.
There is another component, although it is more of an infrastructure piece. The “Headquarters” service is used to run tests against the various other parts of the game. For example, it runs the test-bot that makes sure the game rooms (in all languages) are working. It also checks the integrity of the database operations. If a worker role running an operation creates a result that is different from others, the worker is terminated and a new one started. The headquarters handles those administrative and quality assurance duties.
And finally, a server that is on-premises builds and deploys the whole system, every night. The build system is automated, and Azure REST APIs enable deployment. The function is key in protecting the integrity of the system by only allowing only the build scripts to perform the tasks. No one physically should have the permission rights to build and deploy manually.
Azure Blob Storage
How to use the Windows Azure Blob Storage Service in .NET
Azure Cloud Services
Windows Azure PowerShell
Azure table storage
What is a Storage Account?
Azure SQL Database
Visual Studio Online
Batching Techniques for SQL Database Applications in Windows Azure
Follow the developer instruction below to add a line of code to your app. Once you’ve added the code, send over your App Details (App GUID code & AppChallenge GUID code) to firstname.lastname@example.org
Developer Instructions before you can be included you need to do a little bit of development work to ensure inclusion. Please see the below instructions for further details.
1. In your app’s “About” or “Settings” section, add the AppChallenge button included in this email.
The sample below demonstrates how to use the application settings API and settings flyouts to integrate an app's settings UI with the Settings charm.
With the Settings charm app can include app-specified settings commands in the Settings charm and launch the corresponding settings UI from that standard entry point such as volume, brightness etc. http://code.msdn.microsoft.com/windowsapps/App-settings-sample-1f762f49
2. Generate your Private GUID for each of your apps by visiting guidgenerator.com
3. For Windows Phone 8, Windows 8.0 and Windows 8.1 link the button with this:
1: await Launcher.LaunchUriAsync(new Uri("appchallengeuk:appGuid=YOUR PRIVATE GUID", UriKind.Absolute));
4. For Windows Phone 7 (app compiled on WP7 but can run on WP8), link the button with this:
The AppChallenge logo should be displayed only if the user has a WP8 (because AppChallenge is not available on WP7). This is done via the code:
1: if (Environment.OSVersion.Version.Major> = 8)
2: imageAppChallenge.Visibility = Visibility.Visible;
4: imageAppChallenge.Visibility = Visibility.Collapsed;
Then, on the event Tapped of the image, write the following command:
1: WebBrowserTask wbTask = new WebBrowserTask();
2: wbTask.Uri = new
3: Uri("http://theukappchallenge.azurewebsites.net/redirect?app=YOUR PRIVATE GUID",UriKind.RelativeOrAbsolute);
5. Once your app’s on the Windows Store, send a table of correspondence between its GUID and the one you generate for AppChallenge to email@example.com
If you have any questions please email firstname.lastname@example.org.
Thank you very much for your participation and support of The UK App Challenge.
See more details at : http://aka.ms/UKAppChallenge
One of the most popular questions from Unity Porting Camps http://www.unityportinguk.com has been how can I add ads to my app
Well we have a number of supported Advertising SDK which are listed at our partner services portal for Windows 8 and Windows Phone development at http://services.windowsstore.com/.
The Partner portal has links to partners providing the following services for both Windows 8 and Windows Phone.
Here are the available Advertising SDK which support Windows 8 and Windows Phone
Scoreoid is a real-time marketing platform that powers engagement and monetization. Scoreoid enables brands, studios, publishers and app developers to interact and engage with their users in real-time. "We help you touch your users".
AdRotator is a multi-platform Ad Rotating solution that integrates multiple AdProviders in to a single control and can manage rotation of those ads based on the developers configuration. It also features fallback capabilities to always ensure the app/game always has ads to show. We also support remote configuration so the developer can alter their Ad Configuration on the fly without re-deploying their app/game or show their own ad to pass in formation to clients.
Get the New Unity Plug-in!
MediaBrix powers the industry's leading advertising and services platform for social and mobile games.
PreApps.com is the leading platform introducing new mobile apps to user and the marketplace prior to release. Our vision is to build an ecosystem, which connects app developers with app users prior to release to in turn create better quality, more successful apps. Our collaborative process has demonstrated to increase app downloads, enhance app ranking, and overall app quality
Get the PreApps Featured Feedback app for free!
FREE CASH TO ADVERTISE YOUR APP! Click Learn More. LeadBolt is an award winning mobile app discovery, advertising and monetization network focused on delivering innovative solutions for Windows Phone 8, iOS and Android app developers and now for Windows Store apps. Through the largest range of traditional and high-performance ad formats, LeadBolt delivers industry leading results to developers wanting to have their app discovered by users and increase their downloads.
Get a code for extra $! Click here for more info.
InMobi is the largest independent global mobile ad network and monetization platform with a global reach of over 691 million consumers across 165 countries on our network, we can help you reach your mobile audience anywhere in the world. Our highly skilled mobile experts plus local account managers will be on hand to help you book and optimize your campaign.
Microsoft Advertising SDK for Windows Store apps
Whether you're developing in HTML or XAML, the Microsoft Advertising SDK has made it easy to insert ads into your Windows 8 apps. With a few lines of code, you can quickly get ads being served in your app by following the simple steps outlined in our SDK documentation.
AdDuplex is a cross-promotion network for Windows Store and Windows Phone apps empowering developers to advertise their apps for free by helping each other.
Ads Plug-in for Unity3d
At the Unity camps lots of people are interested in Ad services which provided by a dedicated Unity3d plugin.
One of the best I have seen in use is the Unity3D plug-in for AdRotator.
The AdRotator plug-in enables you to use our Windows and Windows Phone AdRotator solution in Unity3D projects for those platforms and configure how AdRotator works directly from the Unity editor.
Using this is simple and goes like this:
Yippee Entertainment are launching a unique competition.
Yippee are offering one person in the UK and one in the US a chance to design a member of Chuck’s Chimpact family and have their design turned into a character in the Windows 8 & Windows Phone 8 versions of the game. Chimpact is available on a variety of platforms but this is an exclusive to the Windows game versions that will have this new character. What’s more the UK winner will get a chance to go to the Yippee Entertainment game studio in Manchester and see their creation turned into a video game character!
You can find details to enter at the website: http://www.chimpact.com/competition/
This competition is open to anyone in the UK or US who wants to draw, paint, crayon, use a software design programme or any art and crafts they fancy to design a new member of Chuck’s family on Windows 8 and Windows Phone 8.
This week I had a really interesting discussion/debate with a University lecturer on teaching user interface design and it took me back just to how things have changed since the mid-nineties.
When I was a student a lot of CS courses which looked at interface design had materials which referenced the following statement “The Evil’s of Rapid Prototyping,” and many slide decks contained reasons why rapid prototyping was a bad idea. Most of the reasoning centred around prototyping tools being so complex back then, they needed to be operated by developers; subsequently, the design process tended to be influenced by all design work needing to be interpreted through the lens of what a prototyper could actually achieve with the software available.
Fast forward to today and there’s been a rethinking on prototyping. Is this good or bad?
I recently blogged about how professional organisations are using tools such as OneNote for UI/UX design. Additionally there a lots of new prototyping tools have appeared over the past few years and they’re rapidly being adopted by interaction designers.
So we concluded that the creators of these tools never attended one of these courses!
So the question I now want to pose is.. how do go about teaching modern user interface design and application workflows on your courses and what tools and resources do you use?
As we know prototypes can be as simple or as complex as necessary for the project on which you are working.
What tools do you use?
Microsoft SketchFlow includes several tools to make your prototype interactive in order to more closely mimic the flow of a production application. For example, with SketchFlow, you can do the following:
Begin a prototype with just a site map and a few notes jotted on the application screens, and then continue to refine your prototype as you go along.
Either draw user interface (UI) elements, or import them from common drawing programs.
Animate your prototype, creating a visual representation of the interaction between the user and the application.
Use the full library of standard UI elements and custom controls.
Create sample data on the fly, easily build data-driven UI, and add styles to your data.
Create interactivity without writing code by using built-in behaviours. Behaviours are extensible, making it easy to add custom behaviours to your prototyping toolbox.
Either write code to create custom elements, or use pre-built elements from your development team
For more details on Sketchflow see http://msdn.microsoft.com/en-us/expression/ee215229.aspx
Tutorials on Sketchflow see www.microsoft.com/.../creating-navigation.aspx
But what about considering Modern design principles..
With Windows 8 and Windows Phone 8 we have the following key principles which need to be adhered
So the key things you need to consider when designing your apps for modern applications are..
Ensure that you weave platform features into your core scenarios and prototype design to leverage the power of the underlying platfom..
So lets think about the platform features available..
To help develop these scenarios here are list of the key resources.
Microsoft Design Guidelines for Windows Phone http://design.windowsphone.com
Microsoft Design Guidelines for Windows 8 http://design.windows.com
Microsoft User Experience Fundamentals and online training http://channel9.msdn.com/Events/Windows-Camp/Windows-8-UX-Fundamentals-Training-Workshop-2012
So where to start?
To help you get started on your app development here are some templates and guidance from http://channel9.msdn.com/Events/Windows-Camp/Windows-8-UX-Fundamentals-Training-Workshop-2012
Example of a completed template for a new app design/concept.
In summary, using any form of prototype technique makes it easy to sketch out a conceptual application and ensure the following are achieved.
So what are you waiting for? You can just create a series of screens and use the templates above and then begin to draw. As your idea progresses, you can add interactive elements that make your prototype as close to the finished product as you need it to be to communicate the design idea you want to convey.
Reviewers can use the tools such as SketchFlow, One Note to view the application flow, and then leave feedback directly in the project as annotations. Once the feedback has been incorporated and the prototype is complete, the prototype project can be handed off to a developer for conversion into a final application,
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?