<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dark Genesis &#124; Dark Genesis</title>
	<atom:link href="http://darkgenesis.zenithmoon.com/feed/?Tags=XNA&#038;AndTags=1" rel="self" type="application/rss+xml" />
	<link>http://darkgenesis.zenithmoon.com</link>
	<description>Indie development blog for the new world order</description>
	<lastBuildDate>Fri, 17 May 2013 23:25:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>MonoGame: Content Projects &amp; Custom Model Types</title>
		<link>http://darkgenesis.zenithmoon.com/monogame-content-projects-custom-model-types/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=monogame-content-projects-custom-model-types</link>
		<comments>http://darkgenesis.zenithmoon.com/monogame-content-projects-custom-model-types/#comments</comments>
		<pubDate>Fri, 17 May 2013 15:36:02 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[MonoGame]]></category>
		<category><![CDATA[Tutorials & Resources]]></category>
		<category><![CDATA[XNA 2D Tutorials]]></category>
		<category><![CDATA[XNA 3D Tutorials]]></category>
		<category><![CDATA[XNA Related Stuff]]></category>
		<category><![CDATA[Content Projects]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=3095</guid>
		<description><![CDATA[Are we sitting comfortably, then let us begin In yet another one of my adventures with MonoGame and showing new an interesting ways you can take you old XNA code and move it forward on to the MonoGame platform (and still keep your sanity), I’ll go over one of those &#8230;]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="http://img.photobucket.com/albums/v234/Shootie/Legacy%20Models/Screenshot-329.jpg?t=1250300072" width="460" height="345" /></p>
<p>Are we sitting comfortably, then let us begin <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-style: none;" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/wlEmoticon-openmouthedsmile1.png" /></p>
<p>In yet another one of my adventures with <a href="http://monogame.net/" target="_blank">MonoGame</a> and showing new an interesting ways you can take you old XNA code and move it forward on to the MonoGame platform (and still keep your sanity), I’ll go over one of those fringe / advanced options available to old XNA projects where you can effectively build your own content.</p>
<p>The reasons for doing this are quite simple:</p>
<blockquote><p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    You want to add custom data at build time – e.g. bounding box information, scale, size and weight<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    You would like to have XML config to change how your content is built like the particle pipeline sample (<a title="http://bit.ly/13suolj" href="http://bit.ly/13suolj">http://bit.ly/13suolj</a>)<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    You want to pre-pack your model’s effects at build time (<a href="http://bit.ly/13suwkN" target="_blank">Custom types</a> / <a href="http://bit.ly/13suysR" target="_blank">Skinned model</a> examples)<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    You want your cake and you darn well want to eat it too!</p></blockquote>
<p>There are more but these are the highlights.  Basically anywhere that you want to offload processing of your content from run time to build time (why wouldn’t you?), saving you endless amounts of spin cycles, which on some platforms can mean the difference between your game flying along at 30 – 60 fps and a slideshow.</p>
<hr />
<h1>First off – Content Please</h1>
<p><img alt="" src="http://i4.ytimg.com/vi/ktBCSuEDkmE/mqdefault.jpg" /></p>
<p>Now one of the questions I get asked (or see asked) surround content projects themselves, they are only natively supported in Visual Studio 2010 and later some partial support was added to 2012 for Phone 7 support, this is great if like me you rock out Pro or Ultimate but not everyone has access to these.  Sure you can use MonoGame from most of the express editions but, if you try and launch a Content project it just crashes and dies (usually)</p>
<p>To clear things up here are all the configuration in which content projects are definitely supported:</p>
<blockquote><p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/019.gif" align="middle" />    Visual Studio C# 2010 express*<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/019.gif" align="middle" />    Visual Studio Visual Basic 2010 express*<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/019.gif" align="middle" />    Visual Studio 2010 express for Windows Phone<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/019.gif" align="middle" />    Visual Studio Pro &amp; Ultimate*<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/019.gif" align="middle" />    Visual Studio 2012 Pro &amp; Ultimate**<br />
<strong><img alt="" src="http://www.dotnetscraps.com/samples/bullets/019.gif" align="middle" />    Visual Studio Express 2012 for Windows Phone</strong></p>
<p><span style="font-size: xx-small;">* With XNA GS 4.0 / Windows Phone 7.1 SDK  installed</span></p>
<p><span style="font-size: xx-small;">** With the Windows Phone 8 SDK installed</span></p></blockquote>
<p>And here are the editions where it is not supported:</p>
<blockquote><p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/030.gif" align="middle" />    Visual  Web developer express 2010*<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/030.gif" align="middle" />    Visual Studio 2012 Express for Desktop<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/030.gif" align="middle" />    Visual Studio 2012 Express for Windows 8<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/030.gif" align="middle" />    Visual Studio 2012 Express for Web<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/030.gif" align="middle" />    Xamarin Studio</p>
<p><span style="font-size: xx-small;">* Unconfirmed</span></p></blockquote>
<p>I highlighted one of the supported editions above specifically because everyone asks “How do I build my content on Windows 8” or “How do I build my content with 2012 if I don’t have pro / ultimate”.  The usual answer that people come back with is “You can’t, just use 2010” which as you can see from above is wrong.  Even if you don’t intend to deploy to Windows Phone <strong>you can still use the WP8SDK to install the express edition that comes with it to build your content in 2012</strong>.</p>
<p>One day I’d like MS to stop messing around with this project type support, there are good reasons for doing it but leaving out one or two platforms for no good reason is just daft /Rant.</p>
<hr />
<h1>Getting Started</h1>
<p><img alt="" src="http://cdn.articulate.com/images/blogs/rel/uploads/2007/12/started.gif" /></p>
<p>First off if you haven’t started a MonoGame project before or are just starting a new one, I always recommend to start with the Content Project, get your content right first!</p>
<p>Later you can choose if you want your content project included in your game solution, I’d recommend not (unless it’s a small project) to avoid building it every time.  Granted VS 2012 does a much better job at recognising if a project needs building again so you may choose to include it anyway.</p>
<p>For this example I’ll be using the content from the Microsoft <a href="http://bit.ly/13suwkN" target="_blank">Custom Types sample</a> mentioned above, you can find the source sample for this here on my <a href="http://bit.ly/Z1dYEm" target="_blank">GitHub MonoGame Samples</a> fork.</p>
<blockquote><p>If you are having trouble locating VS2012 Express for Windows Phone, you can find it here after installing the WP8SDK</p>
<p>“C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\VPDExpress” (drop the (x86) if you’re on a 32 bit machine</p></blockquote>
<h3>Prerequisites</h3>
<p>First off make sure you got all the right bits: (you can install these on either Windows 7 or Windows 8)</p>
<blockquote>
<h5>Studio 2010</h5>
<blockquote><p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/011.gif" align="middle" />    Visual Studio 2010 Express and above (from the above list)<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/011.gif" align="middle" />    XNA Game Studio 4.0 (or) – if installed on Windows 8 see <a href="http://stackoverflow.com/questions/12849107/how-to-install-the-xna-game-studio-4-0-in-windows-8" target="_blank">this post</a><br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/011.gif" align="middle" />    Windows Phone SDK 7.1 + 7.1.1<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/011.gif" align="middle" />    MonoGame V3+</p>
<p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/011.gif" align="middle" />    (optional) Zune – needed for VS2010 to deploy to device</p></blockquote>
</blockquote>
<blockquote>
<h5><span style="color: #333333;">Studio 2012</span></h5>
<blockquote><p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    Visual Studio 2012 Pro+ (or)<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    Visual Studio 2012 Express for Windows Phone<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    Windows Phone 8 SDK*<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    MonoGame V3+</p></blockquote>
<p>* If you are running on a machine that doesn’t support Hyper-V (SLAT) the emulator won’t install.  You can still deploy to a device though.</p></blockquote>
<h4><strong>*Note you will also need to download the </strong><a href="http://bit.ly/13suwkN" target="_blank"><strong>Microsoft Content Types sample</strong></a><strong> as we will re-use some of the files from that project in this tutorial.</strong></h4>
<p>Now there is one limitation which is pretty self-explanatory if you are using Visual Studio 2012 for Windows Phone edition to build your content project, in that it only knows how to build phone projects, so a fair few of the other project templates are not available. However it is still able to read the other project types (C# libraries for example) but you cannot create them in it (by default).</p>
<p>I’d recommend while you are following this tutorial and only have access to the express editions, to do your content project in 2012 Express for Windows Phone and build your game in 2012 Express for Windows Desktop or Windows 8.  However a little trickery will be required to get there using this route.</p>
<h3>Create the Content project</h3>
<p>As has been shown a lot of times, even on my blog, once you have the above installed (whichever your flavour), you can start a new Content project using the MonoGame Templates</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image27.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image_thumb26.png" width="650" height="344" border="0" /></a></p>
<p align="center">See told you Express 2012 for Windows Phone works <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-style: none;" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/wlEmoticon-openmouthedsmile1.png" /></p>
<p>And yes if you are using 2012 like I am above you will likely see the following error, just ignore it, damned annoying if nothing else.</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image28.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image_thumb27.png" width="354" height="140" border="0" /></a></p>
<p>Now add your content to the project (I’m using the Tank model from the custom types sample and including the two textures but not referencing them in the solution or you will get duplicate build errors because they are mentioned in the model file) first to ensure everything builds ok before we start messing with the content project, here I’m selecting Windows as the build platform</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image29.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image_thumb28.png" width="654" height="467" border="0" /></a></p>
<h1></h1>
<h3>Add a Platform for test</h3>
<p>With the project built let’s just double check that the content is displaying correctly on its own, just add a MonoGame platform of your choosing to the project and lets display the model (I chose the WindowsGL project because it runs on just about anything*)</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image30.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image_thumb29.png" width="654" height="467" border="0" /></a></p>
<p>*Note, at the time of writing, the WindowsGL template has a slight bug, the reference to the SDL.dll library points to the wrong place, easily corrected, edit the game .csproj file and where it states:</p>
<pre class="brush: xml;">&lt;Content Include="..\..\..\..\Users\&lt;username&gt;\AppData\Program Files %28x86%29\MonoGame\v3.0\Assemblies\WindowsGL\SDL.dll"&gt;</pre>
<p>Just remove the “Users\&lt;username&gt;\AppData\” segment, then save and reload the project in Visual Studio.</p>
<p>With our project ready, build the content and then add a link to the built content files in your game project, ensuring you set the build action to “Content” and the CopyTo setting at “Copy if Newer” or “Copy Always”</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image31.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image_thumb30.png" width="304" height="393" border="0" /></a></p>
<p>Lastly some code to actually display the model as is, as follows: (the entire game class in one shot, basic model drawing stuff)</p>
<pre class="brush: csharp;">#region Using Statements
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;

#endregion

namespace GameName1
{
    /// &lt;summary&gt;
    /// This is the main type for your game
    /// &lt;/summary&gt;
    public class Game1 : Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;

        Model model;

        Matrix world;
        Matrix view;
        Matrix projection;

        public Game1()
            : base()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        /// &lt;summary&gt;
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// &lt;/summary&gt;
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here

            base.Initialize();
        }

        /// &lt;summary&gt;
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// &lt;/summary&gt;
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            model = Content.Load&lt;Model&gt;("tank");

            world = Matrix.Identity;

            // Calculate camera view and projection matrices.
            view = Matrix.CreateLookAt(new Vector3(1000, 500, 0),
                                       new Vector3(0, 150, 0), Vector3.Up);

            projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4,
                                                             GraphicsDevice.Viewport.AspectRatio, 10, 10000);
            foreach (ModelMesh mesh in model.Meshes)
            {
                foreach (BasicEffect effect in mesh.Effects)
                {
                    effect.EnableDefaultLighting();

                    effect.World = world;
                    effect.View = view;
                    effect.Projection = projection;
                }
            }
        }

        /// &lt;summary&gt;
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// &lt;/summary&gt;
        protected override void UnloadContent()
        {
            // TODO: Unload any non ContentManager content here
        }

        /// &lt;summary&gt;
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// &lt;/summary&gt;
        /// &lt;param name="gameTime"&gt;Provides a snapshot of timing values.&lt;/param&gt;
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
                Exit();

            // TODO: Add your update logic here

            base.Update(gameTime);
        }

        /// &lt;summary&gt;
        /// This is called when the game should draw itself.
        /// &lt;/summary&gt;
        /// &lt;param name="gameTime"&gt;Provides a snapshot of timing values.&lt;/param&gt;
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            model.Draw(world, view, projection);

            base.Draw(gameTime);
        }
    }
}</pre>
<p>Now if you run the solution you should get a model being drawn to the screen.</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image32.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image_thumb31.png" width="370" height="242" border="0" /></a></p>
<hr />
<h1>Getting the Custom Types in your Pipeline</h1>
<p><img alt="" src="https://www.sbgenomics.com/static/img/landing/features/features_ico_big_04.jpg" /></p>
<p>Now there are two schools of thought with how to use custom content types in XNA and both will work with MonoGame itself, however only one way will work (as I found) on all platforms.</p>
<p>The two ways are:</p>
<blockquote><p>&nbsp;</p>
<p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    By using the [ContentSerializerRuntimeType] attribute definitions</p>
<p>These are set within your content processor to identify your custom types by their reflection type name, then hosting the class definition for the type in your game project</p>
<p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    By using a common library between the content processor and your game project effectively sharing the class definition between the projects</p></blockquote>
<p>The second option which I’m going to show you here is the one that will work on all platforms, the first is fine for windows platforms but runs into issues with others (in my experience)</p>
<h3>First up the Custom Type project</h3>
<p>So first we need a class library to hold our custom types, so create a new C# class library for the solution, its namespace needs to be unique in your project to ensure its picked up by both the content processor and your game platform.</p>
<blockquote><p><span style="color: #333333;">*Note as stated earlier, if you are using the 2012 Express editions, you’ll need to swap to VS 2012 Express for Windows Desktop / Windows 8 to create the class library and then switch back to the Phone Express to add the existing project to your content solution.  A little tedious but it works (and it’s FREE).  You will see (yet another) silly warning telling you the class library is targeting .NET 4.5 and that it needs to convert it to .NET 4.5 to read it (sheesh), just accept the default to update the project.</span></p>
<p><span style="color: #333333;">Once the Class Library is loaded, right-click and select properties on the Class Library project and in the Application tab change the “Target Framework” to .Net 4.  XNA and MonoGame just work better that way.</span></p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image33.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image_thumb32.png" width="304" height="218" border="0" /></a></p></blockquote>
<p>Once the Class Library project is loaded we can setup our custom type we intend to use, you can copy the class over from the XNA sample or just replace the default Class.cs code with the following:</p>
<pre class="brush: csharp;">#region File Description
//-----------------------------------------------------------------------------
// CustomModel.cs
//
// Microsoft XNA Community Game Platform
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#endregion

#region Using Statements
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
#endregion

namespace CustomContentTypes
{
    /// &lt;summary&gt;
    /// Custom class that can be used as a replacement for the built-in Model type.
    /// This provides functionality roughly similar to Model, but simplified as far
    /// as possible while still being able to correctly render data from arbitrary
    /// X or FBX files. This can be used as a starting point for building up your
    /// own more sophisticated Model replacements.
    /// &lt;/summary&gt;
    public class CustomModel
    {
        #region Fields

        // Disable compiler warning that we never initialize these fields.
        // That's ok, because the XNB deserializer initialises them for us!
        #pragma warning disable 649

        // Internally our custom model is made up from a list of model parts.
        [ContentSerializer]
        public List&lt;ModelPart&gt; modelParts  { get; private set; }

        // Each model part represents a piece of geometry that uses one
        // single effect. Multiple parts are needed for models that use
        // more than one effect.
        public class ModelPart
        {
            public int TriangleCount;
            public int VertexCount;

            public VertexBuffer VertexBuffer;
            public IndexBuffer IndexBuffer;

            [ContentSerializer(SharedResource = true)]
            public Effect Effect;
        }

        #pragma warning restore 649

        #endregion

        /// &lt;summary&gt;
        /// Private constructor, for use by the XNB deserializer.
        /// &lt;/summary&gt;
        private CustomModel()
        {
        }

        /// &lt;summary&gt;
        /// Draws the model using the specified camera matrices.
        /// &lt;/summary&gt;
        public void Draw(Matrix world, Matrix view, Matrix projection)
        {
            foreach (ModelPart modelPart in modelParts)
            {
                // Look up the effect, and set effect parameters on it. This sample
                // assumes the model will only be using BasicEffect, but a more robust
                // implementation would probably want to handle custom effects as well.
                BasicEffect effect = (BasicEffect)modelPart.Effect;

                effect.EnableDefaultLighting();

                effect.World = world;
                effect.View = view;
                effect.Projection = projection;

                // Set the graphics device to use our vertex declaration,
                // vertex buffer, and index buffer.
                GraphicsDevice device = effect.GraphicsDevice;

                device.SetVertexBuffer(modelPart.VertexBuffer);

                device.Indices = modelPart.IndexBuffer;

                // Loop over all the effect passes.
                foreach (EffectPass pass in effect.CurrentTechnique.Passes)
                {
                    pass.Apply();

                    // Draw the geometry.
                    device.DrawIndexedPrimitives(PrimitiveType.TriangleList,
                                                 0, 0, modelPart.VertexCount,
                                                 0, modelPart.TriangleCount);
                }
            }
        }
    }
}</pre>
<p>There’s not too much fancy stuff here, the Custom Model type in the MS example just provides a more raw view for what goes on under the hood for drawing a model, it reads out the raw model data and stores it in it’s respective Index and Vertex buffers plus all the other necessary information for doing primitive drawing.  It also delivers a custom Draw function for sending the Index/Vertex data to the graphics device.  If you wished you could change the colour of random vertices / alter the normal mapping of certain elements or even deform the mesh on build, all stuff that would be very expensive to do at runtime.</p>
<p>If you wish you can also rename “class1.cs” to something more appropriate but it’s just for show (Still a good idea though <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-style: none;" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/wlEmoticon-openmouthedsmile1.png" />)</p>
<h3>The Content Pipeline project</h3>
<p>Now we have our custom type, we need a way to tell the content pipeline to use it when loading our model.  Open up your Content project again (if it’s separate) and add a new project to the solution, this time select the “Content Pipeline Extension Library” template in the “XNA Game Studio 4.0” branch. (there is a way to do the same thing with a class library but this is easier and safer for now)</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image34.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image_thumb33.png" width="354" height="253" border="0" /></a></p>
<p>Once it’s loaded you should get a default “ContentProcessor1.cs” class in the project, just a starter for 10.</p>
<blockquote><p><span style="color: #333333;">*Note again if you are using 2012 Express for Windows Phone to create the content pipeline extension project, you will need to update the target framework to .NET 4.0 else the content project won’t recognise it</span></p></blockquote>
<h5>If you want to learn more about how content pipeline extensions work, check out the <a href="http://msdn.microsoft.com/en-us/library/bb447754.aspx" target="_blank">documentation on the Creators club website here</a>, well worth a read if you want to do more advanced thins with your content before you import it into your game.</h5>
<p>Now for simplicities sake (and to prevent this post from becoming miles longer), just copy over the “CustomModelContent.cs” and “CustomModelProcessor.cs” from the XNA sample into your Content Pipeline Extension project and then update the following to match what we are doing here (I always find it best implement these things yourself to ensure you understand what and why they work), then update the following:</p>
<blockquote><p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    Update the namespaces in the two new files to the new project namespace<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    In the “CustomModelContent.cs” class, update all references of “CustomModelTypes” to the assembly name of your ContentTypes project. e.g.:</p>
<p>Replace:</p>
<pre class="brush: csharp;">[ContentSerializerRuntimeType("CustomModelTypes.CustomModel, CustomModelTypes")]

[ContentSerializerRuntimeType("CustomModelTypes.CustomModel+ModelPart, CustomModelTypes")]</pre>
<p>With:</p>
<pre class="brush: csharp;">[ContentSerializerRuntimeType("CustomContentTypes.CustomModel, CustomContentTypes")]

[ContentSerializerRuntimeType("CustomContentTypes.CustomModel+ModelPart, CustomContentTypes")]</pre>
<p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    Add a reference to the Content Types project from the Pipeline Extension project<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    Add a reference to the Pipeline extension project from the Content project (note the actual content project where the model is stored NOT the content builder project)</p>
<p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/010.gif" align="middle" />    Finally, add a reference to the Content Types project from the game project</p></blockquote>
<p>With that in place you should be able to build the content project and now if you select the “Tank.fbx” you should be able to change the tanks content process from the default “Model &#8211; XNA Framework” to your new processor type “Custom Model” which uses your new content type class for storing the final built model in.</p>
<blockquote><p><span style="color: #333333;">*Note if the new Processor type doesn’t show up, check you have built and referenced it correctly and that BOTH the Content Types project and the pipeline extension project are targeting .NET 4.0</span></p></blockquote>
<p>If you’re really curious, just read through the content processor and content classes, the content class just describes the custom type and the processor does all the heavy lifting to populate the new custom model type with the information stored in the “Tank.fbx” model file.</p>
<p>There is an alternate way, the <a href="http://bit.ly/13suysR" target="_blank">Skinned Model sample</a> doesn’t even use the CustomModelContent definition, in some ways it’s a lot cleaner. Having the CustomModelContent class does mean you don’t have to reference the custom type from the content project but I prefer completeness.  The final choice is down to you really.</p>
<hr />
<h1>Getting back in with the game</h1>
<p><img alt="" src="http://1.bp.blogspot.com/-HF2DT6oj6Ik/TZw1jzJzAaI/AAAAAAAAACU/OK5eBaSKgnE/s1600/im_back1.jpg" width="277" height="277" /></p>
<p>Now that we are finally hitting the home stretch to see what our labours have delivered, let’s just replace the game code one last time.  So open up your game project and break out the Game class and replace it with the following:</p>
<pre class="brush: csharp;">#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
using Microsoft.Xna.Framework.GamerServices;
using CustomContentTypes;
#endregion

namespace GameName1
{
    /// &lt;summary&gt;
    /// This is the main type for your game
    /// &lt;/summary&gt;
    public class Game1 : Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;

        CustomModel model;

        Matrix world;
        Matrix view;
        Matrix projection;

        public Game1()
            : base()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        /// &lt;summary&gt;
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// &lt;/summary&gt;
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here

            base.Initialize();
        }

        /// &lt;summary&gt;
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// &lt;/summary&gt;
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            model = Content.Load&lt;CustomModel&gt;("tank");

            // Calculate camera view and projection matrices.
            view = Matrix.CreateLookAt(new Vector3(1000, 500, 0),
                                       new Vector3(0, 150, 0), Vector3.Up);

            projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4,
                                                             GraphicsDevice.Viewport.AspectRatio, 10, 10000);

        }

        /// &lt;summary&gt;
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// &lt;/summary&gt;
        protected override void UnloadContent()
        {
            // TODO: Unload any non ContentManager content here
        }

        /// &lt;summary&gt;
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// &lt;/summary&gt;
        /// &lt;param name="gameTime"&gt;Provides a snapshot of timing values.&lt;/param&gt;
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
                Exit();

            // TODO: Add your update logic here
            HandleInput();

            // Update the world transform to make the model rotate.
            float time = (float)gameTime.TotalGameTime.TotalSeconds;

            world = Matrix.CreateRotationY(time * 0.1f);

            base.Update(gameTime);
        }

        /// &lt;summary&gt;
        /// This is called when the game should draw itself.
        /// &lt;/summary&gt;
        /// &lt;param name="gameTime"&gt;Provides a snapshot of timing values.&lt;/param&gt;
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

            model.Draw(world, view, projection);

            base.Draw(gameTime);
        }

        #region Handle Input

        /// &lt;summary&gt;
        /// Handles input for quitting the game.
        /// &lt;/summary&gt;
        private void HandleInput()
        {
            KeyboardState currentKeyboardState = Keyboard.GetState();
            GamePadState currentGamePadState = GamePad.GetState(PlayerIndex.One);

            // Check for exit.
            if (currentKeyboardState.IsKeyDown(Keys.Escape) ||
                currentGamePadState.Buttons.Back == ButtonState.Pressed)
            {
                Exit();
            }
        }

        #endregion
    }
}</pre>
<blockquote><p><span style="color: #333333;">*Note, just remember to update any different using statements (different namespaces and all)</span></p></blockquote>
<p>Walking through the code above all we have done is remove any model setup code because it’s all done in our custom content class, all we need to do is tell it where it is in the world (The world / view and projection matrices) and tell it to draw.  For added effect the model now spins as well <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-style: none;" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/wlEmoticon-openmouthedsmile1.png" /></p>
<p>Now I could go a lot further and tinker with both the content processor and the custom content type but I’ll let you play.</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image35.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/image_thumb34.png" width="454" height="291" border="0" /></a></p>
<hr />
<h1>So what was all this about?</h1>
<p><img alt="" src="http://www.dontwasteyourtime.co.uk/wp-content/uploads/2012/03/so_long_fish.jpg" /></p>
<p>Well the main purpose of this article was to go over all the requirements of using custom types in your MonoGame projects and some pointers as to where you should look to improve your asset pipeline to try and do as much with your content up front at build time.  This becomes crucial with platforms like iOS where every cycle counts (Don’t get me started on Android)</p>
<p>oh and to show you that it is possible to build a game using JUST the 2012 express editions, no longer are you chained to the 2010 versions (granted still nothing wrong with using 2010 <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-style: none;" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/05/wlEmoticon-openmouthedsmile1.png" />)</p>
<p>This was a very technical article so if you have any comments / questions or queries please let me know below.</p>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/monogame-content-projects-custom-model-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MonoGame: Using libraries with Windows Phone projects</title>
		<link>http://darkgenesis.zenithmoon.com/monogame-using-libraries-with-windows-phone-projects/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=monogame-using-libraries-with-windows-phone-projects</link>
		<comments>http://darkgenesis.zenithmoon.com/monogame-using-libraries-with-windows-phone-projects/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 13:17:06 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[MonoGame]]></category>
		<category><![CDATA[Tutorials & Resources]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=3007</guid>
		<description><![CDATA[A challenge faced by the MonoGame team when they created Windows Phone 8 support was that XNA is actually included with the platform, this created a unique challenge because it was a direct contradiction to the XNA support being provided by MonoGame itself, this caused no end of problems until &#8230;]]></description>
				<content:encoded><![CDATA[<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image19.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb18.png" width="650" height="247"></a></p>
<p>A challenge faced by the <a href="http://monogame.net/" target="_blank">MonoGame</a> team when they created Windows Phone 8 support was that XNA is actually included with the platform, this created a unique challenge because it was </p>
<p>a direct contradiction to the XNA support being provided by MonoGame itself, this caused no end of problems until a solution was found.&nbsp; </p>
<p>The answer was simple, ignore the XNA libs native to Windows Phone at build time.</p>
<p>&nbsp;</p>
<p>
<hr />
<h1>The Problem</h1>
<p>If you manually reference the MonoGame framework from any project and try to use XNA components you will likely run in to the following error:</p>
<blockquote><p>Error 1:<br />&nbsp;&nbsp;&nbsp; The type &#8216;Microsoft.Xna.Framework.Vector3&#8242; exists in both <br />&nbsp;&nbsp;&nbsp; &#8216;c:\Program Files (x86)\MonoGame\v3.0\Assemblies\WindowsPhone\x86\MonoGame.Framework.dll&#8217; and <br />&nbsp;&nbsp;&nbsp; &#8216;c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\WindowsPhone\v8.0\Microsoft.Xna.Framework.dll&#8217;&nbsp;&nbsp;&nbsp; </p>
</blockquote>
<p>&nbsp;</p>
<p>The compiler is basically stating there are two versions of the class used (in this case the Vector3 struct) and it cannot decide which one to use.&nbsp; Using an alias wouldn’t help because they have the same name, same namespace and so on.</p>
<p>&nbsp;</p>
<p>
<hr />
<h1>Solving this</h1>
<p>If you use the MonoGame Windows Phone 8 project template, the fix is automatically applied for you but if you create your own projects and / or create libraries / components to your project that require the “MonoGame.Framework” referenced assembly then you will need to apply the fix manually, read on.</p>
<p>1: Open the “.csproj” of the project you are adding the MonoGame reference to.</p>
<p>2: Add the following block after the &lt;Imports&gt; section</p>
<pre class="brush: xml;" style="height: 268px; width: 831px">  &lt;Target Name="MonoGame_RemoveXnaAssemblies" AfterTargets="ImplicitlyExpandTargetFramework"&gt;
    &lt;Message Text="MonoGame - Removing XNA Assembly references!" Importance="normal" /&gt;
    &lt;ItemGroup&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.dll'" /&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.GamerServices.dll'" /&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.GamerServicesExtensions.dll'" /&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.Input.Touch.dll'" /&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.MediaLibraryExtensions.dll'" /&gt;
    &lt;/ItemGroup&gt;
  &lt;/Target&gt;
</pre>
<p>All this does (as explained above) is tell the MSBuild task to ignore the Microsoft XNA reference libraries during the build so that only the MonoGame versions exist.</p>
<p>Ensure you do this for any project in your solution that references the MonoGame framework, not needed if the project isn’t.</p>
<p>&nbsp;</p>
<hr />
<h1>One other thing</h1>
<p>Another thing to note if you build your game project manually instead of using the MonoGame Windows Phone 8 template (some people just like it that way) is that there is some other additional configuration included you should be aware of, this revolves round the target platform used for builds.</p>
<blockquote>
<p>If you are targeting the emulator, then the “x86” versions of the assemblies are used to build the project.</p>
</blockquote>
<p><em><font color="#444444"></font></em>&nbsp;</p>
<blockquote>
<p>If you are targeting a device (or publishing to the store) then the “ARM” versions of the framework are used.</p>
</blockquote>
<p>&nbsp;</p>
<p>Be aware of this if you decide to go solo (see example below)</p>
<p>&nbsp;</p>
<hr />
<h1>Final Example</h1>
<p>Just to finish this post off and as a sanity check to ensure you got it right, here’s an example project file with the above section included:</p>
<pre class="brush: xml;">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&gt;
  &lt;PropertyGroup&gt;
    &lt;Configuration Condition=" '$(Configuration)' == '' "&gt;Debug&lt;/Configuration&gt;
    &lt;Platform Condition=" '$(Platform)' == '' "&gt;ARM&lt;/Platform&gt;
    &lt;ProductVersion&gt;10.0.20506&lt;/ProductVersion&gt;
    &lt;SchemaVersion&gt;2.0&lt;/SchemaVersion&gt;
    &lt;ProjectGuid&gt;{00F8D6E2-D182-451B-86A0-1905FD4F920F}&lt;/ProjectGuid&gt;
    &lt;ProjectTypeGuids&gt;{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}&lt;/ProjectTypeGuids&gt;
    &lt;OutputType&gt;Library&lt;/OutputType&gt;
    &lt;AppDesignerFolder&gt;Properties&lt;/AppDesignerFolder&gt;
    &lt;RootNamespace&gt;GameName4&lt;/RootNamespace&gt;
    &lt;AssemblyName&gt;GameName4&lt;/AssemblyName&gt;
    &lt;TargetFrameworkIdentifier&gt;WindowsPhone&lt;/TargetFrameworkIdentifier&gt;
    &lt;TargetFrameworkVersion&gt;v8.0&lt;/TargetFrameworkVersion&gt;
    &lt;SilverlightVersion&gt;$(TargetFrameworkVersion)&lt;/SilverlightVersion&gt;
    &lt;SilverlightApplication&gt;true&lt;/SilverlightApplication&gt;
    &lt;SupportedCultures&gt;
    &lt;/SupportedCultures&gt;
    &lt;XapOutputs&gt;true&lt;/XapOutputs&gt;
    &lt;GenerateSilverlightManifest&gt;true&lt;/GenerateSilverlightManifest&gt;
    &lt;XapFilename&gt;GameName4_$(Configuration)_$(Platform).xap&lt;/XapFilename&gt;
    &lt;SilverlightManifestTemplate&gt;Properties\AppManifest.xml&lt;/SilverlightManifestTemplate&gt;
    &lt;SilverlightAppEntry&gt;GameName4.App&lt;/SilverlightAppEntry&gt;
    &lt;ValidateXaml&gt;true&lt;/ValidateXaml&gt;
    &lt;MinimumVisualStudioVersion&gt;11.0&lt;/MinimumVisualStudioVersion&gt;
    &lt;ThrowErrorsInValidation&gt;true&lt;/ThrowErrorsInValidation&gt;
  &lt;/PropertyGroup&gt;
  &lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "&gt;
    &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt;
    &lt;DebugType&gt;full&lt;/DebugType&gt;
    &lt;Optimize&gt;false&lt;/Optimize&gt;
    &lt;OutputPath&gt;bin\WindowsPhone\x86\Debug&lt;/OutputPath&gt;
    &lt;DefineConstants&gt;DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE&lt;/DefineConstants&gt;
    &lt;NoStdLib&gt;true&lt;/NoStdLib&gt;
    &lt;NoConfig&gt;true&lt;/NoConfig&gt;
    &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
    &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
  &lt;/PropertyGroup&gt;
  &lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "&gt;
    &lt;DebugType&gt;pdbonly&lt;/DebugType&gt;
    &lt;Optimize&gt;true&lt;/Optimize&gt;
    &lt;OutputPath&gt;bin\WindowsPhone\x86\Release&lt;/OutputPath&gt;
    &lt;DefineConstants&gt;TRACE;SILVERLIGHT;WINDOWS_PHONE&lt;/DefineConstants&gt;
    &lt;NoStdLib&gt;true&lt;/NoStdLib&gt;
    &lt;NoConfig&gt;true&lt;/NoConfig&gt;
    &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
    &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
  &lt;/PropertyGroup&gt;
  &lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' "&gt;
    &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt;
    &lt;DebugType&gt;full&lt;/DebugType&gt;
    &lt;Optimize&gt;false&lt;/Optimize&gt;
    &lt;OutputPath&gt;bin\WindowsPhone\ARM\Debug&lt;/OutputPath&gt;
    &lt;DefineConstants&gt;DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE&lt;/DefineConstants&gt;
    &lt;NoStdLib&gt;true&lt;/NoStdLib&gt;
    &lt;NoConfig&gt;true&lt;/NoConfig&gt;
    &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
    &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
  &lt;/PropertyGroup&gt;
  &lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' "&gt;
    &lt;DebugType&gt;pdbonly&lt;/DebugType&gt;
    &lt;Optimize&gt;true&lt;/Optimize&gt;
    &lt;OutputPath&gt;bin\WindowsPhone\ARM\Release&lt;/OutputPath&gt;
    &lt;DefineConstants&gt;TRACE;SILVERLIGHT;WINDOWS_PHONE&lt;/DefineConstants&gt;
    &lt;NoStdLib&gt;true&lt;/NoStdLib&gt;
    &lt;NoConfig&gt;true&lt;/NoConfig&gt;
    &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
    &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
  &lt;/PropertyGroup&gt;
  &lt;ItemGroup&gt;
    &lt;Compile Include="App.xaml.cs"&gt;
      &lt;DependentUpon&gt;App.xaml&lt;/DependentUpon&gt;
    &lt;/Compile&gt;
    &lt;Compile Include="LocalizedStrings.cs" /&gt;
    &lt;Compile Include="GamePage.xaml.cs"&gt;
      &lt;DependentUpon&gt;GamePage.xaml&lt;/DependentUpon&gt;
    &lt;/Compile&gt;
    &lt;Compile Include="Game1.cs" /&gt;
    &lt;Compile Include="Properties\AssemblyInfo.cs" /&gt;
    &lt;Compile Include="Resources\AppResources.Designer.cs"&gt;
      &lt;AutoGen&gt;True&lt;/AutoGen&gt;
      &lt;DesignTime&gt;True&lt;/DesignTime&gt;
      &lt;DependentUpon&gt;AppResources.resx&lt;/DependentUpon&gt;
    &lt;/Compile&gt;
  &lt;/ItemGroup&gt;
  &lt;ItemGroup&gt;
    &lt;ApplicationDefinition Include="App.xaml"&gt;
      &lt;SubType&gt;Designer&lt;/SubType&gt;
      &lt;Generator&gt;MSBuild:Compile&lt;/Generator&gt;
    &lt;/ApplicationDefinition&gt;
    &lt;Page Include="GamePage.xaml"&gt;
      &lt;SubType&gt;Designer&lt;/SubType&gt;
      &lt;Generator&gt;MSBuild:Compile&lt;/Generator&gt;
    &lt;/Page&gt;
  &lt;/ItemGroup&gt;
  &lt;ItemGroup&gt;
    &lt;None Include="Properties\AppManifest.xml" /&gt;
    &lt;None Include="Properties\WMAppManifest.xml"&gt;
      &lt;SubType&gt;Designer&lt;/SubType&gt;
    &lt;/None&gt;
  &lt;/ItemGroup&gt;
  &lt;ItemGroup&gt;
    &lt;Content Include="Assets\AlignmentGrid.png" /&gt;
    &lt;Content Include="Assets\ApplicationIcon.png"&gt;
      &lt;CopyToOutputDirectory&gt;PreserveNewest&lt;/CopyToOutputDirectory&gt;
    &lt;/Content&gt;
    &lt;Content Include="Assets\Tiles\FlipCycleTileLarge.png"&gt;
      &lt;CopyToOutputDirectory&gt;PreserveNewest&lt;/CopyToOutputDirectory&gt;
    &lt;/Content&gt;
    &lt;Content Include="Assets\Tiles\FlipCycleTileMedium.png"&gt;
      &lt;CopyToOutputDirectory&gt;PreserveNewest&lt;/CopyToOutputDirectory&gt;
    &lt;/Content&gt;
    &lt;Content Include="Assets\Tiles\FlipCycleTileSmall.png"&gt;
      &lt;CopyToOutputDirectory&gt;PreserveNewest&lt;/CopyToOutputDirectory&gt;
    &lt;/Content&gt;
    &lt;Content Include="Assets\Tiles\IconicTileMediumLarge.png"&gt;
      &lt;CopyToOutputDirectory&gt;PreserveNewest&lt;/CopyToOutputDirectory&gt;
    &lt;/Content&gt;
    &lt;Content Include="Assets\Tiles\IconicTileSmall.png"&gt;
      &lt;CopyToOutputDirectory&gt;PreserveNewest&lt;/CopyToOutputDirectory&gt;
    &lt;/Content&gt;
  &lt;/ItemGroup&gt;
  &lt;ItemGroup&gt;
    &lt;EmbeddedResource Include="Resources\AppResources.resx"&gt;
      &lt;Generator&gt;PublicResXFileCodeGenerator&lt;/Generator&gt;
      &lt;LastGenOutput&gt;AppResources.Designer.cs&lt;/LastGenOutput&gt;
    &lt;/EmbeddedResource&gt;
  &lt;/ItemGroup&gt;
  &lt;ItemGroup&gt;
    &lt;!-- A reference to the entire .Net Framework and Windows SDK are automatically included --&gt;
    &lt;Reference Include="MonoGame.Framework" Condition=" '$(Platform)' == 'ARM' "&gt;
      &lt;HintPath&gt;$(MSBuildExtensionsPath)\..\MonoGame\v3.0\Assemblies\WindowsPhone\ARM\MonoGame.Framework.dll&lt;/HintPath&gt;
    &lt;/Reference&gt;
    &lt;Reference Include="MonoGame.Framework" Condition=" '$(Platform)' == 'x86' "&gt;
      &lt;HintPath&gt;$(MSBuildExtensionsPath)\..\MonoGame\v3.0\Assemblies\WindowsPhone\x86\MonoGame.Framework.dll&lt;/HintPath&gt;
    &lt;/Reference&gt;
  &lt;/ItemGroup&gt;
  &lt;ItemGroup&gt;
    &lt;ProjectReference Include="..\PhoneClassLibrary1\PhoneClassLibrary1.csproj"&gt;
      &lt;Project&gt;{924D5D26-7744-4FA3-A3F7-E5396CB4B7AF}&lt;/Project&gt;
      &lt;Name&gt;PhoneClassLibrary1&lt;/Name&gt;
    &lt;/ProjectReference&gt;
  &lt;/ItemGroup&gt;
  &lt;Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" /&gt;
  &lt;Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" /&gt;
  &lt;Target Name="MonoGame_RemoveXnaAssemblies" AfterTargets="ImplicitlyExpandTargetFramework"&gt;
    &lt;Message Text="MonoGame - Removing XNA Assembly references!" Importance="normal" /&gt;
    &lt;ItemGroup&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.dll'" /&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.GamerServices.dll'" /&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.GamerServicesExtensions.dll'" /&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.Input.Touch.dll'" /&gt;
      &lt;ReferencePath Remove="@(ReferencePath)" Condition="'%(Filename)%(Extension)'=='Microsoft.Xna.Framework.MediaLibraryExtensions.dll'" /&gt;
    &lt;/ItemGroup&gt;
  &lt;/Target&gt;
  &lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it.
       Other similar extension points exist, see Microsoft.Common.targets.
  &lt;Target Name="BeforeBuild"&gt;
  &lt;/Target&gt;
  &lt;Target Name="AfterBuild"&gt;
  &lt;/Target&gt;
  --&gt;
  &lt;ProjectExtensions /&gt;
&lt;/Project&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/monogame-using-libraries-with-windows-phone-projects/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Server 2012 roundup&#8211;the return!&#8211;Part 1</title>
		<link>http://darkgenesis.zenithmoon.com/windows-server-2012-roundupthe-returnpart-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=windows-server-2012-roundupthe-returnpart-1</link>
		<comments>http://darkgenesis.zenithmoon.com/windows-server-2012-roundupthe-returnpart-1/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 11:49:59 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[TechEd]]></category>
		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=2969</guid>
		<description><![CDATA[On the back of the #TechEdChallenge I downloaded all three of the evaluation products for review and decided to give them a whirl, the first up was Windows Server 2012. As a bit of history I did spend a great deal of my tech career building / installing and maintaining &#8230;]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="http://betanews.com/wp-content/uploads/2012/04/rack-room-servers-IT.jpg" width="428" height="285" /></p>
<p>On the back of the <a href="https://twitter.com/search?q=%23techedchallenge&amp;src=hash" target="_blank">#TechEdChallenge</a> I downloaded all three of the evaluation products for review and decided to give them a whirl, the first up was Windows Server 2012.</p>
<p>As a bit of history I did spend a great deal of my tech career building / installing and maintaining at a very low level a lot of Microsoft servers and products running on them, it was always an interesting time and some of the best fun I’ve ever had involved unboxing a new piece of kit (several 10’s of boxes usually), putting it all together and getting the system up and running and integrated with our server environment (mind you this was before cloud and cloud based systems).</p>
<p>Since then I’ve been out of touch with server OS’s, mainly due to work commitments (even my old test lab was decommissioned, when our second child came along) but other stuff as well, server was no longer my focus, I had moved to the client and app world.</p>
<p><strong>*Update,</strong> due to time restrictions I’m going to post about this in parts as I experience the full breadth of each product to get their full worth as I explore them to the full.  Will post links to each update in all articles.</p>
<p>So it’s time to go back and see just what has changed with new eyes.  This post is going to be written as I’m experiencing it, so instead of playing with everything first and then trying to remember I’m going to show you what I see when I see it.</p>
<hr />
<h1>Installation</h1>
<p>Well first impressions are the ones that usually stick, heading into Hyper-V installs for the first time was a big eye opener (don’t have a spare box at the mo) but after a few wrong turns (and downloading the server iso image a couple of times) I got the Windows Server 2012 install going and…. it was a nice surprise.</p>
<h2>Zero UI install option</h2>
<p>The first thing I really noticed is that Microsoft has finally relented to the backwash of Unix based server installs and provides an install with no UI, it’s completely managed through a console screen and powershell scripts, very interesting.  This was probably introduced with the DataCenter edition in the last release (unconfirmed) but is now available in Windows Server 2012 installs.</p>
<h2>It’s FAST</h2>
<p>The whole install even on a low spec VM on my machine took minutes, seriously, I must have blinked a few times and didn’t notice it was sat there waiting for me and I hadn’t even noticed.  Was not expecting that.</p>
<h2>Charmed Unsure</h2>
<p>Well there’s always one curious one in the pot and this certainly falls into this category.  Once the install was complete and the box was up and running I was greeted with the Windows 8 style experience, NOT the metro / modern look mind, but the charms bar and other features are fully enabled.  Not sure if this really fits in the server world and I can understand Microsoft&#8217;s attempts to unify its user experience but the Admin community favour use over UX any day.</p>
<h2>Did I say it was fast?</h2>
<p>Granted there isn’t anything running on my VM yet but damn this thing is quick.  It starts from cold in minutes and I can get back to trying stuff with almost no delay.  This is a fantastic improvement from the old days where I was waiting minutes (if not longer) for the server to start, even on some really powerful kit.  Microsoft has always aimed (especially since server 2008) to get the box up and running before starting components / services and “get you in quick” but in 2012 they really mean it.  If you slapped an SSD in as the boot drive I’m sure this would even be an instant on system from cold.  (for reference I timed it and it was <strong>3 seconds</strong> to logon screen, <strong>2 additional seconds</strong> to desktop and <strong>5 seconds more</strong> to the welcome screen, <strong>up in less than 10 seconds</strong>)</p>
<p><strong>**Even the shut down is fast</strong></p>
<p>Engineers I salute you.</p>
<hr />
<h1>Into the quagmire</h1>
<p>So my box is up and running, now what?</p>
<p>With the box started up from a fresh install you are greeted with a nice “Welcome to your server” screen</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image1.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb.png" width="600" height="449" border="0" /></a></p>
<p>From here as you would expect you start adding services, components and other such bits to get your server up and running.  From first glance, gone are the old search for which components you need to run things and everything is plain and right in front of you.  It has brought along the server 2008 roles and features look and feel (a big bonus even back then) and even gives you a limited management option to include more servers in your little management group, gone are the days of requiring a dashboard or having to remote in to every server just to check it’s health, it’s all right in front of you. (In fact I think the “it’s right in front of you” is going the factor a lot in my view).</p>
<p>The help shows you straight away just how important Microsoft feel about managing your “Environment” instead of a collection of servers.</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image2.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb1.png" width="400" height="156" border="0" /></a></p>
<p align="center">Add features remotely, I like the sound of that!!</p>
<p>Even the education tab leads (potentially even drawing you to) additional areas you should look to become a better server manager</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image3.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb2.png" width="400" height="148" border="0" /></a></p>
<p>Excited to see just how far this goes with this latest offering.</p>
<p>Switching to look at our starting point, Microsoft certainly have given you a very detailed overview of what each server is doing and what it has running on it:</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image4.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb3.png" width="450" height="997" border="0" /></a></p>
<p>My only complaint here is that the dashboard is fixed, I would have liked to have been able to arrange the dashboard to my liking and order and possibly even hide/add more views to it to meet my needs, a fairly simple thing I would have thought.  Overall however this is light-years ahead from what I have experienced before, having such a performant global status screen for the server in one place (not like the old clunky Computer Management MMC view), it delights me that this one screen alone runs smoothly without affecting the performance of the server.</p>
<p>I also really like those hyperlinks all over the place, taking you straight to the configuration options without having to wade through pages of property screens <img class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-openmouthedsmile2.png" /></p>
<hr />
<h1>So what can it do?</h1>
<p>“Lets stop talking about is and actually get on with it, show of hands!”</p>
<p><strong>(*Click on images to view them full screen</strong>, !thanks <a href="http://wordpress.org/extend/plugins/jetpack/" target="_blank">Jetpack</a>!)</p>
<div align="center">
<table width="500" border="1" cellspacing="2" cellpadding="2" align="center">
<tbody>
<tr>
<td valign="top" width="166">
<h3>Adding your first role(s)</h3>
</td>
<td valign="top" width="166">
<h3>Selecting your destination type</h3>
</td>
<td valign="top" width="166">
<h3>Where to put it</h3>
</td>
</tr>
<tr>
<td valign="top" width="166">As you would expect when doing any new task with Microsoft these days, you are greeted with a nice “So what would you like to do and here’s what this does” wizard start page, no exception with the “New Role” wizard.</td>
</tr>
</tbody>
</table>
</div>
<p>Nice and helpful here.Next up you need to decide how you want to deploy these new features, either as a separate virtual instance or on the server itself.</p>
<p>Running this already in a VM with no domain so only local works here for me.This screen did take me by surprise, obviously for supporting environments with SAN storage and multiple deployment options, you not only get to choose where to install features but also select if you want it encapsulated in a VHD!<a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image5.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb4.png" width="244" height="175" border="0" /></a><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image6.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb5.png" width="244" height="176" border="0" /></a><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image7.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb6.png" width="244" height="175" border="0" /></a></p>
<table width="500" border="1" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="166">
<h3>Selecting the bits</h3>
</td>
<td valign="top" width="166">
<h3>Dependencies</h3>
</td>
<td valign="top" width="166">
<h3>Different roles, different dependencies</h3>
</td>
</tr>
<tr>
<td valign="top" width="166">Once you figured out where it goes, the next obvious step to to add Roles for what you want the server to do.  Nice clearly defined boundaries</td>
<td valign="top" width="166">If your selection has dependencies then they are added automatically for you, no more dropping out the install to find yet another “feature” you need to have preinstalled first.</td>
<td valign="top" width="166">Pretty obvious but worth pointing out that the system intelligently only installs those bits needed for each role, even if features are needed for multiple roles</td>
</tr>
<tr>
<td valign="top" width="166"><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image8.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb7.png" width="244" height="174" border="0" /></a></td>
<td valign="top" width="166"><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image9.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb8.png" width="244" height="174" border="0" /></a></td>
<td valign="top" width="166"><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image10.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb9.png" width="244" height="175" border="0" /></a></td>
</tr>
</tbody>
</table>
<table width="500" border="1" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="166">
<h3>Extra features</h3>
</td>
<td valign="top" width="166">
<h3>Ooops <img class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-openmouthedsmile2.png" /></h3>
</td>
<td valign="top" width="166">
<h3>Configuring roles</h3>
</td>
</tr>
<tr>
<td valign="top" width="166">Once you’ve decided what you want the server to do, you can then also select any additional features you want enabled by default.  Very useful if you intend to install “other” software.</td>
<td valign="top" width="166">Try to add a role or feature that your current environment cannot support (say trying to install Hyper-V in a Hyper-V image) and the install will just warn you. (As in not crap out the whole install)</td>
<td valign="top" width="166">With everything set you then get to customise the roles you have selected and customise how each role with operate</td>
</tr>
<tr>
<td valign="top" width="166"><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image11.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb10.png" width="244" height="175" border="0" /></a></td>
<td valign="top" width="166"><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image12.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb11.png" width="244" height="176" border="0" /></a></td>
<td valign="top" width="166"><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image13.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb12.png" width="244" height="175" border="0" /></a></td>
</tr>
</tbody>
</table>
<table width="500" border="1" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="166">
<h3>Would you like fries with that?</h3>
</td>
<td valign="top" width="166">
<h3>Everything set?</h3>
</td>
<td valign="top" width="166">
<h3>Off it goes</h3>
</td>
</tr>
<tr>
<td valign="top" width="166">Configure it how you want when you want.  Would you like Com+ with your app server sir/madam?</td>
<td valign="top" width="166">Review what you selected.<br />
What’s nice here is that there is even an option to automatically restart the server when needed during install, however many times that may be.<br />
Obviously not advised on a Live system <img class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-openmouthedsmile2.png" /></td>
<td valign="top" width="166">What is nice about the progress screen is that unlike other server installs, it can be closed.  You can check on its status from the Notification pin in the Dashboard at any time.<br />
Acts more like Windows Update than an MSI install.</td>
</tr>
<tr>
<td valign="top" width="166"><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image14.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb13.png" width="244" height="174" border="0" /></a></td>
<td valign="top" width="166"><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image15.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb14.png" width="244" height="173" border="0" /></a></td>
<td valign="top" width="166"><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image16.png"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb15.png" width="244" height="175" border="0" /></a></td>
</tr>
</tbody>
</table>
<p>After all this it does give a refreshing view that Microsoft are serious about making administrators and engineers lives easier plus making maintenance a doddle.</p>
<p>There are a few things I could nit-pick at the process, like if an installation fails for whatever reason you are notified it and can review the error summary, however there is no way to re-submit or alter that installation to set it off going again, especially with lengthy configuration choices it forces you to start again.  On the other hand such a system would force you to do smaller installs and in fact you can configure several simultaneously and each will kick off after the other has finished, so maybe smaller is better!</p>
<p>Overall it feels very smooth and well thought out, not having to keep jumping in and out to install this and that just to get the install moving is a real bonus (something I’ve don’t far too many times), plus it installs everything in one go at the end and in the correct order, saves you so much time, just click and go.</p>
<hr />
<h1>The Finish Line</h1>
<p>After you’ve got the server up and running and installed your roles and features, as expected the dashboard is updated and new options become available to drill down to each feature of a role on its own rather than the big view dashboard look:</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image17.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb16.png" width="600" height="479" border="0" /></a></p>
<p>You can jump in and check out the events, service status and such for each role and server you wish without having to jump through hoops.  Another +10 for Microsoft.</p>
<hr />
<h1>Time for a rest</h1>
<p>Time as always eludes me so I must off, will put up part 2 when I get another free moment, for now I leave you with one parting gift:</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image18.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image_thumb17.png" width="600" height="479" border="0" /></a></p>
<p align="center">Yes the Modern desktop interface does make an appearance in Server 2012 but it seems the “Boot to Desktop” feature has already shown it’s face <img class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-openmouthedsmile2.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/windows-server-2012-roundupthe-returnpart-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The #TechEdChallenge challenge&#8211;win a trip to TechEd and More</title>
		<link>http://darkgenesis.zenithmoon.com/the-techedchallenge-challengewin-a-trip-to-teched-and-more/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-techedchallenge-challengewin-a-trip-to-teched-and-more</link>
		<comments>http://darkgenesis.zenithmoon.com/the-techedchallenge-challengewin-a-trip-to-teched-and-more/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 14:00:02 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[System Center]]></category>
		<category><![CDATA[TechEd]]></category>
		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=2952</guid>
		<description><![CDATA[It happens every so often, you open up your mail or twitter feed and there is a very welcome surprise waiting for you, the biggest one of late was the announcement of the TechEd Challenge (#TechEdChallenge) The aim is simple, get more dev’s interested and excited for (and if possible &#8230;]]></description>
				<content:encoded><![CDATA[<p>It happens every so often, you open up your mail or twitter feed and there is a very welcome surprise waiting for you, the biggest one of late was the announcement of the TechEd Challenge (<a href="https://twitter.com/search?q=%23TechEdChallenge" target="_blank">#TechEdChallenge</a>)</p>
<p><img alt="" src="http://www.microsoft.com/uk/techedchallenge/images/banner.jpg" /></p>
<p>The aim is simple, get more dev’s interested and excited for (and if possible working on / buying) Microsoft’s latest and greatest server and backend offerings, just what do you have to do to enter this challenge?  simple, download and try out either <a href="http://www.microsoft.com/en-us/server-cloud/windows-server/" target="_blank">Windows Server 2012</a>, <a href="http://www.microsoft.com/en-us/server-cloud/system-center/default.aspx" target="_blank">System Center 2012 SP1</a> or grab a <a href="http://www.windowsazure.com/en-us/pricing/free-trial/" target="_blank">FREE 90 day trial of Windows Azure</a> and give them your honest opinion about it.  That and / or just keep tweeting / re-tweeting about <a href="https://twitter.com/search?q=%23TechEdChallenge" target="_blank">#TechEdChallenge</a>.</p>
<p>The full details are here: <a href="http://www.microsoft.com/uk/techedchallenge">http://www.microsoft.com/uk/techedchallenge</a> but in brief, here&#8217;s the run down.</p>
<p>Download one (or more ) of the three following products:</p>
<p><a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200201556&amp;CR_EAC=300089844"><img alt="Windows Server 2012" src="http://www.microsoft.com/uk/techedchallenge/images/server2012.jpg" /></a> <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200201556&amp;CR_EAC=300089846"><img alt="System Center 2012" src="http://www.microsoft.com/uk/techedchallenge/images/syscenter.jpg" /></a> <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200201556&amp;CR_EAC=300089851"><img alt="Windows Azure" src="http://www.microsoft.com/uk/techedchallenge/images/azure.jpg" /></a></p>
<p>&nbsp;</p>
<p>Write a review of your experience with your downloaded product(s) and either <a href="mailto:ukitpro@microsoft.com?subject=TechEd" target="_blank">email them to Microsoft</a> or use the submission site below:</p>
<p>&nbsp;</p>
<p><a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200201556&amp;CR_EAC=300089847" target="_blank"><img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/image.png" width="240" height="49" border="0" /></a></p>
<p>&nbsp;</p>
<p>if you download and review all three, you will have tripled your chances of winning.</p>
<p>Each first place prize includes your ticket to <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200201556&amp;CR_EAC=300089843">TechEd Europe</a>, flights, hotel and meals. Winners will also be part of the TechNet team at the hub of Microsoft&#8217;s European community.</p>
<p>On top of that while the competition is running you can keep tweeting / ReTweeting about <a href="https://twitter.com/search?q=%23TechEdChallenge" target="_blank">#TechEdChallenge</a> to be in with a chance to win some free goodies, from mugs to tee shirts and notebooks (of which kind of notebook, I’ll update the article when mine arrives <img class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-openmouthedsmile1.png" /> but I suspect of the writing kind)</p>
<h1>Well what are you waiting for?</h1>
<p>I’ve had experience with most of them before but I’m still downloading all three and doing my own write up on them, so as a break from my normal schedule expect a few review articles coming very soon.  In one way this has gotten me off the bench about Azure as I’ve been wanting to dig in to it for a while now and have a few projects that make a lot of use of their services but I’ve been preoccupied with other tasks, now I’ve got my trial and will get coding against it (may even blog about that experience as well on the side plus make use of Xamarin’s new Azure Mobile Services component plug-in for Xamarin solutions <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-smile.png" />)</p>
<p>Laters <img class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-openmouthedsmile1.png" /></p>
<div class="wlWriterHeaderFooter" style="margin: 0px; padding: 0px 0px 0px 0px;"><a href="http://www.dotnetkicks.com/kick/?url=http://darkgenesis.zenithmoon.com/the-techedchallenge-challengewin-a-trip-to-teched-and-more/"><img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://darkgenesis.zenithmoon.com/the-techedchallenge-challengewin-a-trip-to-teched-and-more/&amp;bgcolor=6600FF" border="0" /></a> <a href="http://dotnetshoutout.com/Submit?url=http://darkgenesis.zenithmoon.com/the-techedchallenge-challengewin-a-trip-to-teched-and-more/" rev="vote-for"><img style="border: 0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://darkgenesis.zenithmoon.com/the-techedchallenge-challengewin-a-trip-to-teched-and-more/" /></a><script type="text/javascript">// <![CDATA[
var dzone_url = 'http://darkgenesis.zenithmoon.com/the-techedchallenge-challengewin-a-trip-to-teched-and-more/';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_title = 'The #TechEdChallenge challenge–win a trip to TechEd and More';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_blurb = 'The #TechEdChallenge challenge–win a trip to TechEd and More';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_style = '2';
// ]]&gt;</script><br />
<script type="text/javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js" language="javascript"></script><script type="text/javascript">// <![CDATA[
var addthis_pub="runxc1";
// ]]&gt;</script><a onclick="return addthis_sendto()" onmouseover="return addthis_open(this, '', '[URL]', '[TITLE]')" onmouseout="addthis_close()" href="http://www.addthis.com/bookmark.php?v=20"><img style="border: 0;" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" /></a>  <script type="text/javascript" src="http://s7.addthis.com/js/200/addthis_widget.js"></script><a style="display: none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=9502591" rel="tag">CodeProject</a></div>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/the-techedchallenge-challengewin-a-trip-to-teched-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AdRotator V2 progress report</title>
		<link>http://darkgenesis.zenithmoon.com/adrotator-v2-progress-report/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adrotator-v2-progress-report</link>
		<comments>http://darkgenesis.zenithmoon.com/adrotator-v2-progress-report/#comments</comments>
		<pubDate>Sun, 07 Apr 2013 13:22:32 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[AdRotator]]></category>
		<category><![CDATA[AdRotator V2]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=2943</guid>
		<description><![CDATA[Quite a few people have asked me of the last few weeks about what is happening with the AdRotator project, is it dead, are we on a permanent holiday (Vacation for our American chums) or did we just get board with the whole thing as we have been fairly quiet &#8230;]]></description>
				<content:encoded><![CDATA[<p>Quite a few people have asked me of the last few weeks about what is happening with the AdRotator project, is it dead, are we on a permanent holiday (Vacation for our American chums) or did we just get board with the whole thing as we have been fairly quiet of late.</p>
<p>Let me put one ting to bed,</p>
<h1><span style="color: #00ff40;"><span style="background-color: #00ff00; color: #ffffff;"><a href="https://getadrotator.codeplex.com/wikipage?title=AdRotator%20V2%20progress%20report" target="_blank">ADROTATOR IS NOT DEAD</a></span> </span></h1>
<p>(just resting <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-style: none;" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-openmouthedsmile.png" />)</p>
<p>Both Gergely and I had our work / family schedules ramp up quite a bit for the last few months ( by a few I really mean a lot) but this doesn’t mean we have lost interest in AdRotator, far from it our goals with the next version keep getting more and more ambitious and we have already done a fair bit of ground work already, such as:</p>
<h2>The new XML configuration</h2>
<p>One of the biggest pains in V1 was the XML config, it was either not configurable enough or was limiting in very annoying ways, you could just push ads but that was about it and you had no control over how they functioned.  We added house ads to give you a bit more control and potentially sell ad space in your apps but again this was quite limiting as you could only have 1.</p>
<p>The new config XSD has been stable for a while now and had these goals:</p>
<blockquote>
<ul>
<li>Each config line is separate Ad space supporting any of the enabled Ad Providers (break the one line per provider in V1) &#8211; Allow multiple Ad Units to be used per provider</li>
<li>Add AdRotator features to XML config such as Sliding Ad, Refresh Rate, etc (per config / per provider?)</li>
<li>Compress XML config &#8211; (SHOULD)</li>
<li>Size of ad space &#8211; (MUST) &#8211; Will especially be important on Win8</li>
<li>Ad Order &#8211; Ability to specify an order of Ads, rotate in order</li>
<li>Ad Groups &#8211; With the addition of multiple ads per provider, should we also have the capability to group settings?</li>
</ul>
</blockquote>
<p><em><span style="color: #444444;">The new XSD looks like this (for you XML freaks out there <img class="wlEmoticon wlEmoticon-smilewithtongueout" style="border-style: none;" alt="Smile with tongue out" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-smilewithtongueout1.png" />) – granted we’ve not actually gone to the level of having an actual XSD before but thought it pertinent for V2</span></em></p>
<p><em></em></p>
<pre class="brush: xml;">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;xs:schema id="AdSettings" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"&gt;
    &lt;xs:complexType name="AdSettings"&gt;
        &lt;xs:sequence&gt;
            &lt;xs:element name="CultureDescriptors" type="AdCultureDescriptor" minOccurs="0" maxOccurs="unbounded"/&gt;
        &lt;/xs:sequence&gt;
    &lt;/xs:complexType&gt;

    &lt;xs:complexType name="AdCultureDescriptor"&gt;
       &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
           &lt;xs:element name="Pubcenter" type="AdProviderPubCenter" /&gt;
           &lt;xs:element name="AdMob" type="AdProviderAdMob" /&gt;
           &lt;xs:element name="AdDuplex" type="AdProviderAdDuplex" /&gt;
           &lt;xs:element name="InnerActive" type="AdProviderInnerActive" /&gt;
           &lt;xs:element name="MobFox" type="AdProviderMobFox" /&gt;
           &lt;xs:element name="Smaato" type="AdProviderSmaato" /&gt;
           &lt;xs:element name="DefaultHouseAd" type="AdProviderDefaultHouseAd" /&gt;
           &lt;xs:element name="None" type="AdProviderNone" /&gt;
           &lt;xs:element name="AdGroup" type="AdGroup" /&gt;
        &lt;/xs:choice&gt;
        &lt;xs:attribute name="CultureName" type="xs:string" /&gt;
        &lt;xs:attribute name="DefaultAdType" type="AdType" /&gt;
        &lt;xs:attribute name="Width" type="xs:double" /&gt;
        &lt;xs:attribute name="Height" type="xs:double" /&gt;
        &lt;xs:attribute name="Probability" type="xs:int" /&gt;
        &lt;xs:attribute name="AdSlideDirection" type="SlideDirection" /&gt;
        &lt;xs:attribute name="AdRefreshSeconds" type="xs:double" /&gt;
        &lt;xs:attribute name="AdSlideDisplaySeconds" type="xs:double" /&gt;
        &lt;xs:attribute name="AdSlideHiddenSeconds" type="xs:double" /&gt;
        &lt;xs:attribute name="EnabledInTrialOnly" type="xs:boolean" /&gt;
    &lt;/xs:complexType&gt;

    &lt;xs:complexType name="AdProviderPubCenter"&gt;
        &lt;xs:complexContent&gt;
                &lt;xs:extension base="AdProvider"/&gt;
        &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
    &lt;xs:complexType name="AdProviderAdMob"&gt;
        &lt;xs:complexContent&gt;
                &lt;xs:extension base="AdProvider"/&gt;
        &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
   &lt;xs:complexType name="AdProviderAdDuplex"&gt;
        &lt;xs:complexContent&gt;
                &lt;xs:extension base="AdProvider"/&gt;
        &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
   &lt;xs:complexType name="AdProviderInnerActive"&gt;
        &lt;xs:complexContent&gt;
                &lt;xs:extension base="AdProvider"/&gt;
        &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
   &lt;xs:complexType name="AdProviderMobFox"&gt;
        &lt;xs:complexContent&gt;
                &lt;xs:extension base="AdProvider"/&gt;
        &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
   &lt;xs:complexType name="AdProviderSmaato"&gt;
        &lt;xs:complexContent&gt;
                &lt;xs:extension base="AdProvider"/&gt;
        &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
   &lt;xs:complexType name="AdProviderDefaultHouseAd"&gt;
        &lt;xs:complexContent&gt;
                &lt;xs:extension base="AdProvider"/&gt;
        &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
   &lt;xs:complexType name="AdProviderNone"&gt;
        &lt;xs:complexContent&gt;
                &lt;xs:extension base="AdProvider"/&gt;
        &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;

    &lt;xs:complexType name="AdGroup" &gt;
        &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
           &lt;xs:element name="Pubcenter" type="AdProviderPubCenter" /&gt;
           &lt;xs:element name="AdMob" type="AdProviderAdMob" /&gt;
           &lt;xs:element name="AdDuplex" type="AdProviderAdDuplex" /&gt;
           &lt;xs:element name="InnerActive" type="AdProviderInnerActive" /&gt;
           &lt;xs:element name="MobFox" type="AdProviderMobFox" /&gt;
           &lt;xs:element name="Smaato" type="AdProviderSmaato" /&gt;
           &lt;xs:element name="DefaultHouseAd" type="AdProviderDefaultHouseAd" /&gt;
           &lt;xs:element name="None" type="AdProviderNone" /&gt;
        &lt;/xs:choice&gt;
        &lt;xs:attribute name="Width" type="xs:double" /&gt;
        &lt;xs:attribute name="Height" type="xs:double" /&gt;
        &lt;xs:attribute name="Probability" type="xs:int" /&gt;
        &lt;xs:attribute name="AdSlideDirection" type="SlideDirection" /&gt;
        &lt;xs:attribute name="AdRefreshSeconds" type="xs:double" /&gt;
        &lt;xs:attribute name="AdSlideDisplaySeconds" type="xs:double" /&gt;
        &lt;xs:attribute name="AdSlideHiddenSeconds" type="xs:double" /&gt;
        &lt;xs:attribute name="EnabledInTrialOnly" type="xs:boolean" /&gt;
        &lt;xs:attribute name="AdOrder" type="xs:int" /&gt;
    &lt;/xs:complexType&gt;    

    &lt;xs:complexType name="AdProvider" abstract="true"&gt;
        &lt;xs:attribute name="AppId" type="xs:string" /&gt;
        &lt;xs:attribute name="SecondaryID" type="xs:string" /&gt;
        &lt;xs:attribute name="Width" type="xs:double" /&gt;
        &lt;xs:attribute name="Height" type="xs:double" /&gt;
        &lt;xs:attribute name="Probability" type="xs:int" /&gt;
        &lt;xs:attribute name="AdSlideDirection" type="SlideDirection" /&gt;
        &lt;xs:attribute name="AdRefreshSeconds" type="xs:double" /&gt;
        &lt;xs:attribute name="AdSlideDisplaySeconds" type="xs:double" /&gt;
        &lt;xs:attribute name="AdSlideHiddenSeconds" type="xs:double" /&gt;
        &lt;xs:attribute name="IsTest" type="xs:boolean" /&gt;
        &lt;xs:attribute name="AdOrder" type="xs:int" /&gt;
    &lt;/xs:complexType&gt;

    &lt;xs:simpleType name="AdType"&gt;
        &lt;xs:restriction base="xs:string" &gt;
            &lt;xs:enumeration value="PubCenter"/&gt;
            &lt;xs:enumeration value="AdMob"/&gt;
            &lt;xs:enumeration value="AdDuplex"/&gt;
            &lt;xs:enumeration value="InnerActive"/&gt;
            &lt;xs:enumeration value="MobFox"/&gt;
            &lt;xs:enumeration value="Smaato"/&gt;
            &lt;xs:enumeration value="DefaultHouseAd"/&gt;
            &lt;xs:enumeration value="None"/&gt;
        &lt;/xs:restriction&gt;
    &lt;/xs:simpleType&gt;
        &lt;xs:simpleType name="SlideDirection"&gt;
        &lt;xs:restriction base="xs:string" &gt;
            &lt;xs:enumeration value="Top"/&gt;
            &lt;xs:enumeration value="Bottom"/&gt;
            &lt;xs:enumeration value="Left"/&gt;
            &lt;xs:enumeration value="Right"/&gt;
            &lt;xs:enumeration value="None"/&gt;
        &lt;/xs:restriction&gt;
    &lt;/xs:simpleType&gt;
&lt;xs:element name="AdSettings" type="AdSettings"/&gt;
&lt;/xs:schema&gt;</pre>
<p><em><span style="color: #444444;">Now this is just the initial cut and I expect this to evolve over time but with the flexibility included this shouldn’t break compatibility </span></em></p>
<p><em></em></p>
<h2><em><span style="color: #444444;">More reflection support</span></em></h2>
<p><em><span style="color: #444444;">In V1 we use reflection a little bit, mainly for the house Ads but big pains expressed regularly were:</span></em></p>
<blockquote><p><img alt="" src="http://www.dotnetscraps.com/samples/bullets/033.gif" align="middle" />    Why can I only have one of each provider (to support flip flop configuration between backend provider settings)<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/033.gif" align="middle" />    Why do I have to have all provider DLL’s registered in my app, even if I don’t use some<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/033.gif" align="middle" />    Why don’t you support provider x<br />
<img alt="" src="http://www.dotnetscraps.com/samples/bullets/033.gif" align="middle" />    Where is my coffee, why doesn’t it make me coffee?</p></blockquote>
<p><em></em></p>
<p><em><span style="color: #444444;">Ok the last was a reach but you get the point, the first also created a pain for House Ads, since you had to do careful trickery to get round the configuration limitation 9if at all you even did)</span></em></p>
<p><em></em></p>
<p><em><span style="color: #444444;">Adding new provider has always been a pain just because of the various ways each work, the network calls they have and the platform support they have, some even have WebAPI support for non-traditional platforms and why didn’t we support that (well in the XNA version we do to a level but it never got out of that box)</span></em></p>
<p><em></em></p>
<p><em><span style="color: #444444;">So in V2 we are breaking that mold and have already made strides on how to implement this, it’s far from ready but we have a god idea, in fact it was #1 on our bucket list but Gergely is our reflection expect (I’m still a noob there) and his time as been even more limited than mine.  However we have made some progress towards that goal</span></em></p>
<p><em></em></p>
<h2><em><span style="color: #444444;">PCL Support</span></em></h2>
<p><em><span style="color: #444444;">If you have been following my blog I have become a bit of a PCL nut these days and shoving PCL projects into whichever situation is was most effective (PCL is not a 1 solution cures all , it has it’s uses like any other technology).  With AdRotator this was no different.  All code that we can put into a PCL we are doing so and abstracting where platform dependencies are to limit the level of rework necessary for additional client platforms.  Even my recent experience with the <a href="http://monogame.net/" target="_blank">MonoGame</a> team has helped shape some of this vision.</span></em></p>
<p><em></em></p>
<p><em><span style="color: #444444;">With the WebAPI version we may even release a completely PCL version but we will have to see how easily that pans out with the ever increasing support for functions in PCL projects.  Thanks to recent development we’ll be able to have the compression support in our core PCL project thanks to some recent developments, yay.</span></em></p>
<p><em></em></p>
<h1><em><span style="color: #444444;">The Future</span></em></h1>
<p><em><span style="color: #444444;">We are working as hard and as fast as we can with V2, support or V1 is limited at the moment but we still help out where we can but apart from emergency fixes it’s unlikely we’ll be releasing an updated version of that soon (apart from the current Alpha release which is awaiting community testing and any other patches required), our focus is on V2 with the limited time we have.</span></em></p>
<p><em></em></p>
<p><em><span style="color: #444444;">If you want to get involved then you can, the V2 site is a GIT site and you can fork away, make changes and send us a pull request.  Keep changes small  if you can to ease merging back into the main branch ( a lesson hard learnt on the MonoGame project ).</span></em></p>
<p><em></em></p>
<h3><a href="https://getadrotator.codeplex.com/">https://getadrotator.codeplex.com/</a></h3>
<p><em></em></p>
<p><em><span style="color: #444444;">Another way to get involved is to vote on our AdRotator V2  backlog request voting page which you can find here: (any suggestions welcome but only those with the highest votes – or that we personally really like will get in)</span></em></p>
<p><em></em></p>
<h3><a href="https://www.voteit.com/v/HiHC8jq1MV8wxEW">https://www.voteit.com/v/HiHC8jq1MV8wxEW</a></h3>
<p>Grindstone here I come</p>
<div class="wlWriterHeaderFooter" style="margin: 0px; padding: 0px 0px 0px 0px;"><a href="http://www.dotnetkicks.com/kick/?url=http://darkgenesis.zenithmoon.com/adrotator-v2-progress-report/"><img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://darkgenesis.zenithmoon.com/adrotator-v2-progress-report/&amp;bgcolor=6600FF" border="0" /></a> <a href="http://dotnetshoutout.com/Submit?url=http://darkgenesis.zenithmoon.com/adrotator-v2-progress-report/" rev="vote-for"><img style="border: 0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://darkgenesis.zenithmoon.com/adrotator-v2-progress-report/" /></a><script type="text/javascript">// <![CDATA[
var dzone_url = 'http://darkgenesis.zenithmoon.com/adrotator-v2-progress-report/';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_title = 'AdRotator V2 progress report';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_blurb = 'AdRotator V2 progress report';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_style = '2';
// ]]&gt;</script><br />
<script type="text/javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js" language="javascript"></script><script type="text/javascript">// <![CDATA[
var addthis_pub="runxc1";
// ]]&gt;</script><a onclick="return addthis_sendto()" onmouseover="return addthis_open(this, '', '[URL]', '[TITLE]')" onmouseout="addthis_close()" href="http://www.addthis.com/bookmark.php?v=20"><img style="border: 0;" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" /></a>  <script type="text/javascript" src="http://s7.addthis.com/js/200/addthis_widget.js"></script><a style="display: none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=9502591" rel="tag">CodeProject</a></div>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/adrotator-v2-progress-report/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kinect for Windows SDK Programming Guide&#8211;a review</title>
		<link>http://darkgenesis.zenithmoon.com/kinect-for-windows-sdk-programming-guidea-review/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=kinect-for-windows-sdk-programming-guidea-review</link>
		<comments>http://darkgenesis.zenithmoon.com/kinect-for-windows-sdk-programming-guidea-review/#comments</comments>
		<pubDate>Sat, 06 Apr 2013 23:02:06 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[Kinect]]></category>
		<category><![CDATA[WinForms]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=2934</guid>
		<description><![CDATA[As I do from time to time, I get sent over a book or two to look over and give a review on which I’m more than happy to do especially if it’s along the lines of game development, x-platform or in this case new and exciting technology.&#160; I’m fair &#8230;]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.packtpub.com/sites/default/files/2380OT.jpg"><img title="Kinect for Windows SDK Programming Guide" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; padding-right: 0px; border-top-width: 0px" border="0" alt="Kinect for Windows SDK Programming Guide" src="http://1.2.3.12/bmi/dgdsbygo8mp3h.cloudfront.net/sites/default/files/imagecache/productview_larger/2380OT.jpg" width="311" height="379"></a></p>
<p>As I do from time to time, I get sent over a book or two to look over and give a review on which I’m more than happy to do especially if it’s along the lines of game development, x-platform or in this case new and exciting technology.&nbsp; I’m fair and upfront and don’t bow to publisher pressures, if it’s good I’ll say so but just as much if I don’t like it be prepared.</p>
<p>So far I’ve yet to review a stinker and in the case of Abhijit Jana’s book on the new Kinect SDK I was not disappointed.</p>
<p>&nbsp;</p>
<p>You can find the book <a href="http://bit.ly/LUYcyD" target="_blank">here on PacktPub</a> and <a href="http://www.amazon.com/Kinect-Windows-SDK-Programming-Guide/product-reviews/1849692386/ref=dp_top_cm_cr_acr_txt?ie=UTF8&amp;showViewpoints=1" target="_blank">here on Amazon</a></p>
<hr />
<h1>What&#8217;s in store </h1>
<p><img src="http://media-cache-ec4.pinterest.com/avatars/kitimatthrift-1344739734_600.jpg"></p>
<p>&nbsp;</p>
<p>The contents look like this:</p>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_1">Chapter 1: Understanding the Kinect Device</a></h5>
<blockquote><p>A through breakdown of what it took to make the Kinect device and how it works</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_2">Chapter 2: Getting Started </a></h5>
<blockquote><p>A simple run through the Kinect SDK and how to connect a device to your development machine, plus a few extra helpers to get you started.</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_3">Chapter 3: Starting to Build Kinect Applications</a></h5>
<blockquote><p>Goes through the Kinect SDK API and starts you off with your first app to wire up a sensor and monitor data.</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_4">Chapter 4: Getting the Most out of Kinect Camera</a></h5>
<blockquote><p>A nice leisurely introduction to the camera sensor, it’s capabilities and shows you how to build a simple yet effective video effects app (the techniques also stand well for understanding how cameras in general function, an added bonus)</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_5">Chapter 5: The Depth Data – Making Things Happen</a></h5>
<blockquote><p>This chapter happily woke up my 3D side of my brain and went deep in to the implementation surrounding the depth sensor (ban pun I know), it really shows you how the Kinect understands 3D data and how it recognises different players / characters.&nbsp; it reminded me of a demo that was shown where 3D depth data from a Kinect was used to create 3D printer models and their eventual printed result.</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_6">Chapter 6: Human Skeleton Tracking</a></h5>
<blockquote><p>If you have ever had any experience with animations and bones in 3D applications or games then this chapter will be right up your alley, if not then prepare for a basic anatomy lesson.&nbsp; Here Abhijit shows you all the magic that goes under the hood in the Kinect SDK and just how much power is leveled with the API to handle the complex nature of not just recognising poses in the environment the Kinect sees but also face recognition and for those fans of security, he walks through the creation of a intrusion detection app to warn you of unwanted guests need your favorite things, like your computer (waning also contains pictures of the author <img class="wlEmoticon wlEmoticon-smilewithtongueout" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile with tongue out" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/04/wlEmoticon-smilewithtongueout.png">)</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_7">Chapter 7: Using Kinect&#8217;s Microphone Array</a></h5>
<blockquote><p>Here we are led through one of the Kinect less known features, the microphone sensor and API, it’s practically a whole audio studio crammed into that little Kinect box and very sophisticated (well at least to me and all audio uneducated people).&nbsp; With features like echo cancellation and noise suppression it shows Microsoft really wanted to get as much data out of the environment wit the Kinect as possible.</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_8">Chapter 8: Speech Recognition</a></h5>
<blockquote><p>Microsoft didn’t just stop with good input audio but also included a very powerful speech recognition system into the device and API, in this chapter we are show how to make the best use out of this and even extend it’s capabilities with our own vocabularies and grammar recognition through the extensibility built in to the Kinect API.</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_9">Chapter 9: Building Gesture-controlled Applications</a></h5>
<blockquote><p>For those of you already used to Microsoft’s two latest device offerings like Windows Phone and Windows 8, they will be familiar with gesture recognition.&nbsp; Here we are shown how this is implemented on a programmatic level through the Kinect, how to recognise the base gestures and how to implement our own.&nbsp; What I did find interesting is the way we can even do gesture blending / chaining to build new types of gestures to recognise, fun stuff.</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_10">Chapter 10: Developing Applications Using Multiple Kinects</a></h5>
<blockquote><p>Here we go through the requirements of setting up multiple Kinects and what to expect from doing so, for just those occasions where just one Kinect may not be enough, fair warning may need additional cash investment beyond the second Kinect device for optimum performance.</p>
</blockquote>
<p>&nbsp;</p>
<h5><a href="http://www.packtpub.com/kinect-for-windows-software-development-kit-programming-guide/book#chapter_11">Chapter 11: Putting Things Together</a></h5>
<blockquote><p>The one chapter that really shocked me, just when you thought it was safe to come out of the cupboard, Abhijit unleashes the dogs of war with an onslaught of additional material including great additional frameworks to help you on your journey to AR, face tracking and even using XNA avatars with the Knect controller.&nbsp; be prepared, be very prepared.</p>
</blockquote>
<p>&nbsp;</p>
<p>
<hr />
<h1>Thoughts</h1>
<p><img src="http://www.examiner.com/images/blog/wysiwyg/image/thoughts-squiggles-2.gif"></p>
<p>&nbsp;</p>
<p>My thoughts are varied on this book but still heavily weighted on the very good side, here’s a simple breakdown of my thoughts:</p>
<p>&nbsp;</p>
<h3>The Good</h3>
<p><img src="http://2.bp.blogspot.com/_7UHICy8Etfo/TGxxTXxKbNI/AAAAAAAAK7k/01GcNSi6jJo/s1600/GoodBlondie1.jpg" width="550" height="231"></p>
<blockquote><p><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/022.gif">&nbsp;&nbsp;&nbsp; Each chapter is very well through out and steps you through each component of the device / API&nbsp; including very detailed examples.<br /><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/022.gif">&nbsp;&nbsp;&nbsp; the attention to in depth and detailed technical detail is very easy to understand, Abhijit&nbsp; has done a very good job of explaining technical subjects to even a basic programmer.<br /><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/022.gif">&nbsp;&nbsp;&nbsp; Full working sample projects that are only a stones throw away from being something submittable to a marketplace<br /><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/022.gif">&nbsp;&nbsp;&nbsp; Covers 3D application for the Kinect, not just theory<br /><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/022.gif">&nbsp;&nbsp;&nbsp; The final chapter is a work of art and almost an entire book on it’s own.&nbsp; Showing how to use Azure with the Kinect is a stroke of genius</p></blockquote>
<p>&nbsp;</p>
<h3>The Bad</h3>
<p><img src="http://redgrim.com/wp-content/uploads/2012/03/the-bad.jpg" width="550" height="344"></p>
<blockquote><p><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/024.gif">&nbsp;&nbsp;&nbsp; The highlights do become annoying switching from a good thought process to explaining things to a child.&nbsp; A bit OTT in areas but easily skipable if you don’t need it.<br /><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/024.gif">&nbsp;&nbsp;&nbsp; Highlights some of the tricky areas for using the device / API but no real solutions, could have given some extensions with the code API instead of a fixed example.<br /><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/024.gif">&nbsp;&nbsp;&nbsp; Some of the math concept seem forced in and don’t get explained enough or don’t really&nbsp; fit in with the area.</p></blockquote>
<p>&nbsp;</p>
<p>
<hr />
<h1>Conclusion</h1>
<p><img src="http://sd.keepcalm-o-matic.co.uk/i/keep-calm-it-s-the-final-countdown.png"></p>
<p>&nbsp;</p>
<p>Overall I really enjoyed this book and it makes me want to pick up a device and actually start running with it, the samples / examples provide a really good base from where you can expand and put your own mark on the map.&nbsp; I struggled to come up with bad points about this book as it is well formed so they are really just nick picking at best (mild annoyances)&nbsp; as it was such a good read.</p>
<p>&nbsp;</p>
<p>If you want to learn the Kinect and how to make the most of it then this book is a really good start and one worth having on the shelf.</p>
<p>&nbsp;</p>
<p>You can find the book <a href="http://bit.ly/LUYcyD" target="_blank">here on PacktPub</a> and <a href="http://www.amazon.com/Kinect-Windows-SDK-Programming-Guide/product-reviews/1849692386/ref=dp_top_cm_cr_acr_txt?ie=UTF8&amp;showViewpoints=1" target="_blank">here on Amazon</a></p>
<div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"><a href="http://www.dotnetkicks.com/kick/?url=http://darkgenesis.zenithmoon.com/kinect-for-windows-sdk-programming-guidea-review/"><img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://darkgenesis.zenithmoon.com/kinect-for-windows-sdk-programming-guidea-review/&amp;bgcolor=6600FF" /></a> <a rev="vote-for" href="http://dotnetshoutout.com/Submit?url=http://darkgenesis.zenithmoon.com/kinect-for-windows-sdk-programming-guidea-review/"><img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://darkgenesis.zenithmoon.com/kinect-for-windows-sdk-programming-guidea-review/" style="border:0px" /></a> <script type="text/javascript">var dzone_url = 'http://darkgenesis.zenithmoon.com/kinect-for-windows-sdk-programming-guidea-review/';</script><br />
<script type="text/javascript">var dzone_title = 'Kinect for Windows SDK Programming Guide–a review';</script><br />
<script type="text/javascript">var dzone_blurb = 'Kinect for Windows SDK Programming Guide–a review';</script><br />
<script type="text/javascript">var dzone_style = '2';</script><br />
<script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"></script><script type="text/javascript">var addthis_pub="runxc1";</script><a href="http://www.addthis.com/bookmark.php?v=20" onmouseover="return addthis_open(this, '', '[URL]', '[TITLE]')" onmouseout="addthis_close()" onclick="return addthis_sendto()"><img src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0" /></a> &nbsp; <script type="text/javascript" src="http://s7.addthis.com/js/200/addthis_widget.js"></script> <a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=9502591" rel="tag" style="display:none">CodeProject</a> </div>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/kinect-for-windows-sdk-programming-guidea-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PCL targets for Mono / MonoGame projects</title>
		<link>http://darkgenesis.zenithmoon.com/pcl-targets-for-mono-monogame-projects/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pcl-targets-for-mono-monogame-projects</link>
		<comments>http://darkgenesis.zenithmoon.com/pcl-targets-for-mono-monogame-projects/#comments</comments>
		<pubDate>Sat, 30 Mar 2013 21:48:09 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[MonoGame]]></category>
		<category><![CDATA[Tutorials & Resources]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Xamarin Studio]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=2930</guid>
		<description><![CDATA[I’ll be blogging over the next few weeks about my involvement with the MonoGame project in the dark dark backgrounds, all around the area of PCL support within the project. I’ve been focusing on two aspects: &#160; Spiting up the MonoGame code base into two parts, the first part containing &#8230;]]></description>
				<content:encoded><![CDATA[<p>I’ll be blogging over the next few weeks about my involvement with the <a href="http://monogame.net/" target="_blank">MonoGame</a> project in the dark dark backgrounds, all around the area of PCL support within the project.</p>
<p>I’ve been focusing on two aspects:</p>
<p>&nbsp;</p>
<ul>
<li>Spiting up the MonoGame code base into two parts, the first part containing all code that will work on any platform without modification and the second part containing platform specific code that today is managed with #if statements to target each platform
<li>Creating a full PCL MonoGame Project which can be used to build games against that will work on any platform without worrying about platform specifics.&nbsp; (my previous post about portable MonoGame gave an overview on this)</li>
</ul>
<p>Now in order to use PCL projects in development you must enable your development environment to be able to target Mono platforms.&nbsp; For Windows based solutions, Visual Studio already enables you to target .NET / Silverlight environments, with the Phone SDK you can also include Windows Phone and with Win8 / VS2012 you get Store app support out of the box.</p>
<p>For Mono platforms such as iOS and Android however you need to enable these manually (at least until Xamarin studio comes out with official support)</p>
<p>&nbsp;</p>
<p>*Note, yes you will need to install either <a href="http://www.mono-project.com" target="_blank">Mono</a> or <a title="Xamarin Studio by Xamarin" href="http://xamarin.com/download" target="_blank">Xamarin Studio</a> to enable Mono platform targeting support</p>
<p>&nbsp;</p>
<p>Worry not young padawan, this process is very easy!</p>
<p>
<hr />
<h1>The PCL target files</h1>
<p>The first easy part is to create the PCL target files, one for each Mono platform, just open up notepad and create the following files:</p>
<p>&nbsp;</p>
<h4>MonoAndroid,Version=v1.6+.xml</h4>
<pre class="brush: xml;">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;Framework DisplayName="Mono for Android"
  Identifier="MonoAndroid"
  Profile="*"
  MinimumVersion="1.6"
  MaximumVersion="*" /&gt;
</pre>
<p>&nbsp;</p>
<h4>MonoTouch,Version=v1.0+ .xml</h4>
<pre class="brush: xml;">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;Framework DisplayName="Mono for iOS"
  Identifier="MonoTouch"
  Profile="*"
  MinimumVersion="1.0"
  MaximumVersion="*" /&gt;
</pre>
<p>&nbsp;</p>
<p>Alternatively you can download the files from here &#8211; <a href="https://github.com/DDReaper/MonoGame/tree/developcore/PCL%20Targets">https://github.com/DDReaper/MonoGame/tree/developcore/PCL%20Targets</a></p>
<p>&nbsp;</p>
<hr />
<h1>Installation</h1>
<p>&nbsp;</p>
<p>Now for the really tricky part, installation, this really challenging and hard to master process needs to be attempted many times before you can become proficient at it.</p>
<p>&nbsp;</p>
<p>You need to COPY the files into a folder!, try not to be too daunted by this task <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/03/wlEmoticon-openmouthedsmile1.png"></p>
<p>&nbsp;</p>
<p>Take the above files you have created and copy them to the following folder</p>
<p>&nbsp;</p>
<h3>x64 development machine</h3>
<pre>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile2\SupportedFrameworks

</pre>
<p>&nbsp;</p>
<h3>x32 development machine</h3>
<pre>C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile2\SupportedFrameworks

</pre>
<p>&nbsp;</p>
<p>Now on some machines / environments you might also need to put the files into an additional / alternative folder.&nbsp; The reason being the profile that is used by PCL projects on your development machine, I’m sure there is a perfectly good reason for this yet the answer eludes me, so if the above doesn’t work then you need to copy the files into the folder for profile 104 instead of 2, as follows:</p>
<p>&nbsp;</p>
<h3>x64 development machine</h3>
<pre>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile104\SupportedFrameworks

</pre>
<p>&nbsp;</p>
<h3>x32 development machine</h3>
<pre>C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile104\SupportedFrameworks

</pre>
<p>Done</p>
<hr />
<h1>You’re ready</h1>
<p>&nbsp;</p>
<p>Now your development environment is setup to work with PCL support for all of Mono / MonoGame’s supported platforms.</p>
<p>&nbsp;</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/03/image.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/03/image_thumb.png" width="329" height="321"></a></p>
<p>&nbsp;</p>
<h4>*Note</h4>
<p>If you select XBOX360 as an additional framework to support due to it’s very restricted nature, you will now be able to enable Mono platforms.&nbsp; Also it renders the scope of what you can have in a PCL project to next to nothing.&nbsp; Best advise, keep XBOX projects separate and use “Copy” projects to support that platform.</p>
<p>&nbsp;</p>
<hr />
<h1>Coming up next</h1>
<p>I’ve taken my leave of work for the next few weeks (nice Easter break from work) and plan to re-up my blogging efforts with my activities of late with MonoGame and other projects, this includes:</p>
<p>&nbsp;</p>
<blockquote><p><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/027.gif">&nbsp;&nbsp;&nbsp; The splitting up of MonoGame<br /><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/027.gif">&nbsp;&nbsp;&nbsp; How-to : Use MonoGame PCL to build games<br /><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/027.gif">&nbsp;&nbsp;&nbsp; A book review of the excellent “Kinect for Windows SDK Programming Guide” by&nbsp; Abhijit Jana <br /><img align="middle" src="http://www.dotnetscraps.com/samples/bullets/027.gif">&nbsp;&nbsp;&nbsp; The AdRotator V2 roadmap&nbsp; &amp; progress</p></blockquote>
<p>&nbsp;</p>
<p>All that as well as have a play around with the new Unity3D SDK’s for Windows Phone and Windows 8 plus many other personal projects, should be a fun holiday (provided I get permission from the Wife <img class="wlEmoticon wlEmoticon-smilewithtongueout" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile with tongue out" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/03/wlEmoticon-smilewithtongueout.png">)</p>
<div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"><a href="http://www.dotnetkicks.com/kick/?url=http://darkgenesis.zenithmoon.com/pcl-targets-for-mono-monogame-projects/"><img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://darkgenesis.zenithmoon.com/pcl-targets-for-mono-monogame-projects/&amp;bgcolor=6600FF" /></a> <a rev="vote-for" href="http://dotnetshoutout.com/Submit?url=http://darkgenesis.zenithmoon.com/pcl-targets-for-mono-monogame-projects/"><img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://darkgenesis.zenithmoon.com/pcl-targets-for-mono-monogame-projects/" style="border:0px" /></a> <script type="text/javascript">var dzone_url = 'http://darkgenesis.zenithmoon.com/pcl-targets-for-mono-monogame-projects/';</script><br />
<script type="text/javascript">var dzone_title = 'PCL targets for Mono / MonoGame projects';</script><br />
<script type="text/javascript">var dzone_blurb = 'PCL targets for Mono / MonoGame projects';</script><br />
<script type="text/javascript">var dzone_style = '2';</script><br />
<script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"></script><script type="text/javascript">var addthis_pub="runxc1";</script><a href="http://www.addthis.com/bookmark.php?v=20" onmouseover="return addthis_open(this, '', '[URL]', '[TITLE]')" onmouseout="addthis_close()" onclick="return addthis_sendto()"><img src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0" /></a> &nbsp; <script type="text/javascript" src="http://s7.addthis.com/js/200/addthis_widget.js"></script> <a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=9502591" rel="tag" style="display:none">CodeProject</a> </div>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/pcl-targets-for-mono-monogame-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oculus Rift 3D stereoscopic rendering support in SunBurn is here!</title>
		<link>http://darkgenesis.zenithmoon.com/oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here</link>
		<comments>http://darkgenesis.zenithmoon.com/oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 12:00:48 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Steroscopic]]></category>
		<category><![CDATA[SunBurn]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=2536</guid>
		<description><![CDATA[A fantastic announcement over on the SunBurn community blogs has just surfaced which is just amazing.  HolPhone3D ad already built an amazing plug-in for SunBurn to allow easy stereoscopic rendering with just a few lines of code, todays announcement goes above and beyond hat, read the except from the blog &#8230;]]></description>
				<content:encoded><![CDATA[<p>A fantastic announcement over on the <a href="http://www.synapsegaming.com/blogs/community_blogs/archive/2013/03/18/oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here.aspx" target="_blank">SunBurn community blogs</a> has just surfaced which is just amazing.  HolPhone3D ad already built an amazing plug-in for SunBurn to allow easy stereoscopic rendering with just a few lines of code, todays announcement goes above and beyond hat, read the except from the blog below:</p>
<hr />
<blockquote><p><strong>Get ready for Oculus Rift ready titles powered by SunBurn</strong></p>
<p>The wait is nearly over and dev kits are shipping <em>this</em> week! Lot&#8217;s of excitement is all over the web as people want to develop and experience new 3D games within the Oculus Rift. I&#8217;ll be getting mine as part of the first wave, so I&#8217;ve updated my Stereoscopic Renderer for Oculus Rift rendering support. Check out the video for what it looks like and how to use it. If you need a refresher on how easy it is to get Stereoscopic support in SunBurn check out my blog post here: <a href="http://www.synapsegaming.com/blogs/community_blogs/archive/2012/05/10/all-new-3d-stereoscopicrenderer-plugin-take-your-sunburn-games-into-the-next-dimension-with-full-stereoscopic-3d-support-in-less-than-5-lines-of-code.aspx">Stereo3D in SunBurn</a></p>
<p><strong>Start coding now:</strong> <a href="http://www.synapsegaming.com/downloads/resource.aspx?guid=46f57a92-57b3-4e34-80e0-418d5cf737f3">3D StereoscopicRenderer Plugin</a></p>
<div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:df81c65b-2bbe-4e5f-a4d0-e15b973afab3" style="float: none; margin: 0px; display: inline; padding: 0px;">
<div><object width="448" height="252" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/HtGSyxf0huY?hl=en&amp;hd=1" /><embed width="448" height="252" type="application/x-shockwave-flash" src="http://www.youtube.com/v/HtGSyxf0huY?hl=en&amp;hd=1" /></object></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Adding OculusRift support to your game is still under 5 lines of code!</strong></p>
<p>If you have a shipping title and you&#8217;re interested in adding support, it should be easy. All the samples in SunBurn are super simple to add support just by following the instructions in the plugin. If you run into a snag, just post or even better &#8211; crack open the source and fix it!</p>
<p>How can you help? Managed to Native driver interop anyone&#8230;</p>
<p>This plugin will handle all the heavy lifting for rendering to the Oculus Rift, but the first set of drivers for the sensor data from the SDK will be all native. Meaning, we won&#8217;t get out the box head tracking support until this is completed. I don&#8217;t have any practical experience doing interop to drivers from C# and I won&#8217;t know exactly what format the data is coming back in to update the orientation until the SDK is released. Any volunteers here would be greatly appreciated, please reply back here to let me know if you&#8217;re interested.</p>
<p>And last but certainly not least Stereoscopic OculusRift support is incoming on SunBurn 2.1!</p>
<p>That&#8217;s right folks, C# Win8 Modern RT apps running in stereo mode with Oculus Rift support is right around the corner with the upcoming public 2.1 Early Adopter release. I&#8217;ll be releasing the plugin updates for the 2.1 EA program starting soon. Below is a pic of the stereo renderer running on my SurfaceRT. And for those of you wondering, there were almost no changes to my sources to make this happen, 2.1 really is that close to 2.0! <img src='http://darkgenesis.zenithmoon.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.synapsegaming.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/community_5F00_blogs/WP_5F00_20130318_5F00_001.jpg"><img alt="" src="http://www.synapsegaming.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/community_5F00_blogs/WP_5F00_20130318_5F00_001.jpg" border="0" /></a></p>
<p><em>Go forth and embrace the future of all things stereoscopic (and Oculus Rift) in SunBurn!</em></p>
<p>-Holophone3D</p></blockquote>
<p><em></em></p>
<hr />
<p>What&#8217;s even more mazing is that HoloPhoe3D ha already announced that his system is fully compatible with the upcoming SunBurn Platform API and enhanced engine so from day one I will have his great plugin available.</p>
<p>Top That!!! <img class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/03/wlEmoticon-openmouthedsmile.png" /></p>
<div class="wlWriterHeaderFooter" style="margin: 0px; padding: 0px 0px 0px 0px;"><a href="http://www.dotnetkicks.com/kick/?url=http://darkgenesis.zenithmoon.com/oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here/"><img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://darkgenesis.zenithmoon.com/oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here/&amp;bgcolor=6600FF" border="0" /></a> <a href="http://dotnetshoutout.com/Submit?url=http://darkgenesis.zenithmoon.com/oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here/" rev="vote-for"><img style="border: 0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://darkgenesis.zenithmoon.com/oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here/" /></a><script type="text/javascript">// <![CDATA[
var dzone_url = 'http://darkgenesis.zenithmoon.com/oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here/';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_title = 'Oculus Rift 3D stereoscopic rendering support in SunBurn is here!';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_blurb = 'Oculus Rift 3D stereoscopic rendering support in SunBurn is here!';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_style = '2';
// ]]&gt;</script><br />
<script type="text/javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js" language="javascript"></script><script type="text/javascript">// <![CDATA[
var addthis_pub="runxc1";
// ]]&gt;</script><a onclick="return addthis_sendto()" onmouseover="return addthis_open(this, '', '[URL]', '[TITLE]')" onmouseout="addthis_close()" href="http://www.addthis.com/bookmark.php?v=20"><img style="border: 0;" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" /></a>  <script type="text/javascript" src="http://s7.addthis.com/js/200/addthis_widget.js"></script><a style="display: none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=9502591" rel="tag">CodeProject</a></div>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/oculus-rift-3d-stereoscopic-rendering-support-in-sunburn-is-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MonoGame goes Portable</title>
		<link>http://darkgenesis.zenithmoon.com/monogame-goes-portable/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=monogame-goes-portable</link>
		<comments>http://darkgenesis.zenithmoon.com/monogame-goes-portable/#comments</comments>
		<pubDate>Sat, 16 Feb 2013 00:24:39 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[MonoGame]]></category>
		<category><![CDATA[Tutorials & Resources]]></category>
		<category><![CDATA[XNA Related Stuff]]></category>
		<category><![CDATA[Portable Class Libraries]]></category>
		<category><![CDATA[X-Platform]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=2084</guid>
		<description><![CDATA[While I was putting together the MonoGame solution for shocking effect you did seem to get the feeling you were building your game for several platforms, there’s a fair bit of too’ing and fro’ing, pulling parts of the project together and one of my least favorite porting practices, the COPY &#8230;]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="http://cdn.pocket-lint.com/images/Jcca/best-portable-audio-2012-contenders-0.jpg?20121101-155704" width="600" height="387" /></p>
<p>While I was putting together the <a href="http://monogame.net/" target="_blank">MonoGame</a> solution for shocking effect you did seem to get the feeling you were building your game for several platforms, there’s a fair bit of too’ing and fro’ing, pulling parts of the project together and one of my least favorite porting practices, the COPY project.</p>
<p>Yes, having the exact same code files re-used on several projects sounds great until one of those projects needs a different using, or requires you to use the same parameter in a different way or god forbid, require additional parameters for certain functions.</p>
<p>Portable libraries are one of the saviors from this practice by constructing a project that can be consumed by several different project types or platforms with a single codebase, main difference is that it is one code base used in a single way, the portable framework does not let you exceed these boundaries and keeps you in check.  Got something that is platform specific then keep it on that platform and not clutter up the central core of your app or game.</p>
<p>Main problem here with MonoGame as it wasn&#8217;t possible to do this, until now…</p>
<h3><strong>*update &#8211; Access the GitHub repo of <a title="MonoGame.Portable on GitHub" href="https://github.com/DDReaper/MonoGame/tree/develop.portable" target="_blank">MonoGame.Portable here</a></strong></h3>
<hr />
<h1>First a Warning!!</h1>
<p><img alt="" src="http://www.13abcarchive.com/FirstWarning_280x200.jpg" width="400" height="286" /></p>
<p>Please note that this is my own work and while based on the original MonoGame development branch and (as far as I can tell) is still completely compatible with the core of MonoGame, you should only use this as a Proof of concept in Live projects until such time as this or another approved solution by the MonoGame team comes along.</p>
<p>It’s not my ideal portable solution as MonoGame hasn’t been written to be portable at present, its core focus is to keep a familiar flexible code base, based on the aging XNA framework to allow to re-use your projects across multiple platforms (note I say re-use as effort is still required).</p>
<p>MonoGame is a fantastic achievement and if like me, you are passionate about such things (and can code as this will help) then get involved and see how you can benefit the platform!!.</p>
<hr />
<h1>Why be portable?</h1>
<p><img alt="" src="http://lifeasahuman.com/files/2012/11/why-characters-must-be-brave.jpg" width="400" height="288" /></p>
<h4>As the old saying goes, if it ain’t broke, why try to fix it?</h4>
<p>Well, at present the MonoGame code base (and most likely any solution you build using MonoGame) is very singular for almost all platforms, they are very intertwined and components are swapped out, changed or just extended to try to provide flexibility to accommodate an ever changing directory of needs.</p>
<p>There’ nothing particularly wrong with this practice but, over time your code becomes very complex, trying to fix issues with one platform can severely impact another without knowing it (unless you test all builds on all platforms after every commit), basically having so many flavors of pie in one pan soon becomes very hard to differentiate which pie is which.</p>
<p>Portable libraries help with this by having the “core” of you’re project in one place that works one way and keep platform extensions with each platform and if your sensible about it, then the core never even knows this is going on.</p>
<p>Granted you could potentially create the same thing with multiple smaller projects and just keep swapping things out, except that if you add something another platform doesn’t like, you won’t know until you test on that platform. Portable libraries prevent this as then only allow functions that will work on ALL configured platforms, hence protecting you from yourself.</p>
<p>Want to know more then try out some of these resources:</p>
<blockquote>
<h4><a href="http://blogs.msdn.com/b/dsplaisted/archive/2012/08/27/how-to-make-portable-class-libraries-work-for-you.aspx" target="_blank">How to Make Portable Class Libraries Work for You</a></h4>
<h4><a href="http://blogs.msdn.com/b/dotnet/archive/2012/08/28/evolving-the-reflection-api.aspx" target="_blank">Evolving the Reflection API</a></h4>
<h4><a href="http://mobile.dzone.com/articles/using-portable-class-libraries" target="_blank">Using Portable Class Libraries with Windows 8 / Windows Phone 8 MVVM</a></h4>
<h4><a href="http://channel9.msdn.com/Events/Build/2012/3-004" target="_blank">Create Cross-platform Apps using Portable Class Libraries</a></h4>
<h4><a href="http://channel9.msdn.com/Events/Build/2012/3-039" target="_blank">Developing Mobile Solutions with Windows Azure Part II</a> (also FYI check out <a href="http://channel9.msdn.com/Events/Build/2012/3-057" target="_blank">Pt1!!</a>)</h4>
<h4><a href="https://github.com/slodge/MvvmCross-Presentations">The Collection of MvvmCross Presentations</a>  (fantastic Cross platform stuff using Mono/Xamarin)</h4>
</blockquote>
<p>Be aware though, a portable library enables you to develop a very simple and central shared project, you won’t however be able to actually run your project without at least one platform to run it on, the portable features just make enabling the project on other platforms a snap.</p>
<p>What we are aiming for with the use of a Portable Class Library is something like this:</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image9.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image_thumb9.png" width="600" height="342" border="0" /></a></p>
<hr />
<h1>Back to the show</h1>
<p>So what difference does this really make, well let’s spell out the two main differences it makes with MonoGame projects</p>
<h2>1. Project Make-up</h2>
<p>The first main impact is how you layout or manage your multi-project solution (The MVVM cross presentations above do a much better job of explaining this, but here goes)</p>
<h4>The Project Portfolio</h4>
<p>With current practices you will most likely have something like this:</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image10.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image_thumb10.png" width="600" height="318" border="0" /></a></p>
<p>Depending on whether you Link the core files for your project or just copy them, you have several solutions for each platform with more code to manage / integrate when you are considering each platform. in its worst case scenario (Just copy projects), a single bug fix to core code has to be replicated across all platforms and if there are platform specific differences in that chain it becomes increasingly difficult.</p>
<p>Portable libraries ease this somewhat with their central nature.</p>
<h4>The Portable Portfolio</h4>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image11.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image_thumb11.png" width="600" height="330" border="0" /></a></p>
<p>The portable allows a single project to be associated to many others so long as you have the project targets loaded in the portable libraries (for more info on that read up on portable libraries!!)</p>
<h2>2. The single source of truth</h2>
<p>Portable libraries address one of the biggest headaches in multi-platform solutions because of the one simple truth, they are all different.  Each platform has its own way of doing things that are generally incompatible with the next.</p>
<p>Now I will be completely honest, portable libraries alone will not save you here but what they can do is make the job a lot easier and how you exactly what is compatible between ALL of your supported platforms and more importantly what is NOT.  Try and put in something or reference a library that isn&#8217;t compatible with all platforms and you will just get compilation errors.</p>
<p>This ensures you put platform specific code in with a platform and central stuff in one place.</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image12.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image_thumb12.png" width="354" height="345" border="0" /></a></p>
<p>There is a buyer beware sign if you read up on Portable class libraries, the more platforms you add generally reduces the scope of what is truly portable, so take care.</p>
<p>Like I also said it won’t solve ALL you problems, so watch a few of the videos above and read up on abstraction and lay the framework or a scalable solution. Centralise where you can but keep it SIMPLE!</p>
<hr />
<h1>Lightning pure and simple</h1>
<p>So after cleaning everything up and now using a portable library for the core of the code from the previous demo’s I’m left with the following:</p>
<p><a href="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image13.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" alt="image" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/image_thumb13.png" width="600" height="348" border="0" /></a></p>
<p>At present I’ve left the original drawing code as my initial portable experiments were only meant to enable basic features but I seem to have managed in a fairly short period of time to enable most features of the framework in a portable library, so at this point I could move just about all the demo code in to the portable library, therefore I only need a shim in each platform project to run it (plus an additional platform features I want to take advantage of like sharing / NFC / etc)</p>
<h3>Source for the series can be found <a href="http://lightningdemo.codeplex.com/">here on codeplex</a> as well as the code drop for <a href="http://lightningdemo.codeplex.com/releases/view/101998">this stage here</a></h3>
<h3><strong>*update &#8211; Access the GitHub repo of <a title="MonoGame.Portable on GitHub" href="https://github.com/DDReaper/MonoGame/tree/develop.portable" target="_blank">MonoGame.Portable here</a></strong></h3>
<hr />
<h1>Breaking the mold</h1>
<p>Right, I’m taking a little break from MonoGame for a little while now and returning to SunBurn.  Why you may ask, to which the obvious answer should be:</p>
<h3>“There is something VERY interesting to see over there”</h3>
<p>Will report back later and show you just how electrifying SunBurn can be (Sheesh that sounds like a bad episode of MisFits <img class="wlEmoticon wlEmoticon-confusedsmile" style="border-style: none;" alt="Confused smile" src="http://darkgenesis.zenithmoon.com/wp-content/uploads/2013/02/wlEmoticon-confusedsmile.png" />)</p>
<p>P.S. I’m knackered after spending a week Portablising MonoGame, lol</p>
<div class="wlWriterHeaderFooter" style="margin: 0px; padding: 0px 0px 0px 0px;"><a href="http://www.dotnetkicks.com/kick/?url=http://darkgenesis.zenithmoon.com/?p=2084"><img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://darkgenesis.zenithmoon.com/?p=2084&amp;bgcolor=6600FF" border="0" /></a> <a href="http://dotnetshoutout.com/Submit?url=http://darkgenesis.zenithmoon.com/?p=2084" rev="vote-for"><img style="border: 0px;" alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://darkgenesis.zenithmoon.com/?p=2084" /></a><script type="text/javascript">// <![CDATA[
var dzone_url = 'http://darkgenesis.zenithmoon.com/?p=2084';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_title = 'MonoGame goes Portable';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_blurb = 'MonoGame goes Portable';
// ]]&gt;</script><br />
<script type="text/javascript">// <![CDATA[
var dzone_style = '2';
// ]]&gt;</script><br />
<script type="text/javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js" language="javascript"></script><script type="text/javascript">// <![CDATA[
var addthis_pub="runxc1";
// ]]&gt;</script><a onclick="return addthis_sendto()" onmouseover="return addthis_open(this, '', '[URL]', '[TITLE]')" onmouseout="addthis_close()" href="http://www.addthis.com/bookmark.php?v=20"><img style="border: 0;" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" /></a>  <script type="text/javascript" src="http://s7.addthis.com/js/200/addthis_widget.js"></script><a style="display: none;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=9502591" rel="tag">CodeProject</a></div>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/monogame-goes-portable/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android 4: New features for Application Development&#8211;PacktPub Book Review</title>
		<link>http://darkgenesis.zenithmoon.com/android-4-new-features-for-application-developmentpacktpub-book-review/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=android-4-new-features-for-application-developmentpacktpub-book-review</link>
		<comments>http://darkgenesis.zenithmoon.com/android-4-new-features-for-application-developmentpacktpub-book-review/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 18:26:09 +0000</pubDate>
		<dc:creator>Simon (darkside) Jackson</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[PacktPub]]></category>

		<guid isPermaLink="false">http://darkgenesis.zenithmoon.com/?p=2021</guid>
		<description><![CDATA[As a break from my normal programming schedule I was passed a new Android book for review, I ‘m always interested how the other side lives (before I come running back to C# and Windows), in many cases we can see similarity with platforms which seems to grow closer with &#8230;]]></description>
				<content:encoded><![CDATA[<p>As a break from my normal programming schedule I was passed a new Android book for review, I ‘m always interested how the other side lives (before I come running back to C# and Windows), in many cases we can see similarity with platforms which seems to grow closer with each release as each learns from new developments in the other and tried to improve on them.</p>
<h5><a title="http://www.packtpub.com/android-4-new-features-for-application-development/book" href="http://www.packtpub.com/android-4-new-features-for-application-development/book">http://www.packtpub.com/android-4-new-features-for-application-development/book</a></h5>
<p>&nbsp;</p>
<p><a href="http://www.packtpub.com/android-4-new-features-for-application-development/book" target="_blank"><img src="http://www.packtpub.com/sites/default/files/9526OS_cov.jpg"></a></p>
<p>&nbsp;</p>
<p>So let’s see what we got.</p>
<p>
<hr />
<h1><img alt="" src="http://1.bp.blogspot.com/_Un0JJ6ChsQE/TDMGeB1LpyI/AAAAAAAAABU/VORQN7I2LVg/s1600/27.jpg"></h1>
<p>This book is a practical and hands-on guide for developing Android applications using new features of Android Ice Cream Sandwich (Android 4.0), with a step-by-step approach and clearly explained sample codes. You will learn the new APIs in Android 4.0 with these sample codes.</p>
<p>It’s probably best that you have a good understanding of Android programming as this is not for the beginner, it contains a lot of easy to read code examples and layout code for building pages (and in some cases apps) but without the basics you would struggle.</p>
<p>You don’t need knowledge of older Android versions, just a beginners intro on how to build Android apps is sufficient, at least know what an Activity is and the basic layout language used by Android development.</p>
<p>
<hr />
<h1><img alt="" src="http://1.bp.blogspot.com/-ura1_XT2-2g/Twob02iku-I/AAAAAAAAAKo/U4Uhirf68K0/s1600/HiRes.jpg" width="400" height="333"></h1>
<p>Here&#8217;s a brief run through what all the chapters are and what to expect from them.&nbsp;&nbsp; The book is laid out like a cookbook of sorts focusing on each of the new areas covered with firm examples of each.</p>
<h3><strong>Chapter 1 “Action Bar for All”</strong></h3>
<p>Introduces the action bar and shows you how to use and configure it.&nbsp; Think menu bar.</p>
<h3>Chapter 2 “A New Layout – GridLayout”</h3>
<p>Introduces the GridLayout and shows you how to use and configure that. GridLayout is a new layout introduced with Android Ice Cream Sandwich which is an optimized layout and could be used instead of LinearLayout or RelativeLayout.</p>
<h3>Chapter 3 “Social APIs”</h3>
<p>Covers the Social APIs that were introduced with Android Ice Cream Sandwich. This API makes it easy to integrate social networks, furthermore, high resolution photos can now be used as a contact&#8217;s photo.</p>
<p>This chapter also shows Social API usage with examples.</p>
<h3>Chapter 4 “Calendar APIs”</h3>
<p>Covers the Calendar APIs which were introduced with Android Ice Cream Sandwich for managing calendars.&nbsp; Event, attendee, alert, and reminder databases can also be managed with these APIs, they also allow you to easily integrate calendars with Android applications.</p>
<p>This chapter also shows how to use Calendar APIs with examples.</p>
<h3>Chapter 5 “Fragments”</h3>
<p>Introduces the basics of fragments and how to use them.</p>
<p>They are basically the same as user components on Windows platforms.</p>
<h3>Chapter 6 “Supporting Different Screen Sizes”</h3>
<p>Introduces the best ways of designing user interfaces that support different screen sizes.</p>
<p>Knowing the increasing fragmentation of the Android platform this section goes a ways to suggest tips and tricks on how to plan for the multiple resolutions available.</p>
<h3>Chapter 7 “Android Compatibility Package”</h3>
<p>Introduces the Android Compatibility Package and shows you how to use it.</p>
<p>The Android Compatibility Package allows the porting of the new APIs for the older versions of the Android platform.</p>
<h3>Chapter 8 “New Connectivity APIs&#8221; – Android Beam and Wi-Fi Direct”</h3>
<p>Introduces us to Android Beam, which uses the NFC hardware of the device and Wi-Fi Direct which allows devices to connect to each other without using wireless access points. This chapter will teach us the usage of Android Beam and Wi-Fi Direct.</p>
<h3>Chapter 9 “Multiple APK Support”</h3>
<p>Introduces us to Multiple APK Support which is a new option in Google Play (Android Market) by which multiple versions of APKs could be uploaded for a single application.</p>
<h3>Chapter 10 “APIs with Android Jelly Bean”</h3>
<p>Covers Android Jelly Bean and the new APIs within it.</p>
<p>
<hr />
<h1><img alt="" src="http://1.bp.blogspot.com/-YJZ1X0X20x8/T6MOhBQk54I/AAAAAAAAB-8/WgJn-q4Ohaw/s1600/My+Thoughts.png" width="450" height="139"></h1>
<p>If you were looking for a cookbook to show you techniques for how to use some of the new features of Android V4 (Ice Cream Sandwich / Jelly Bean) then you will have an excellent reference for your shelf here, complete with prime examples for how to implement them.</p>
<p>It’s not a tutorial book or a beginners book so keep that in mind, as stated earlier there is an expectation that you have at least tried Android development before.</p>
<h4>Pros:</h4>
<ul>
<li>Very Detailed Samples
<li>The sections on Different Screen sizes and Compatibility packages were very enlightening
<li>Full featured examples end to end (both UI and Backend code) </li>
</ul>
<h4>Cons:</h4>
<ul>
<li>Each section is isolated and doesn’t mesh (not exactly a bid thing) but there is no re-use between sections
<li>Not much detail on the feature itself however does detail its implementation very well.&nbsp; Likely to need additional reading to understand the feature </li>
</ul>
<p>
<hr />
<p><img alt="" src="http://www.magicalmaths.org/wp-content/uploads/2012/11/conclusion-introduction-starter-plenary.jpg"></p>
<p>There&#8217;s a lot say about this book, as a prime technical reference for the experienced Android developer it has a lot to offer, certainly if you have an existing app (or are planning what features to put in a new one) this book will give you a keen insight to where you could expand your capabilities.</p>
<p>The new backwards compatible ways for putting new features in old apps is certainly one I haven’t come across before.</p>
<p>However if you are new to Android development sadly this isn’t going to help you due to the expectation of knowledge on your part, saying that however if you just want to test and try features then the sample included are fully working and will show you what&#8217;s what, just don’t expect a fully fledged app by the end of it.</p>
<p>So if your after another reference for your shelf this is certainly one to pick up.</p>
<div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"><a href="http://www.dotnetkicks.com/kick/?url=http://darkgenesis.zenithmoon.com/android-4-new-features-for-application-developmentpacktpub-book-review/"><img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://darkgenesis.zenithmoon.com/android-4-new-features-for-application-developmentpacktpub-book-review/&amp;bgcolor=6600FF" /></a> <a rev="vote-for" href="http://dotnetshoutout.com/Submit?url=http://darkgenesis.zenithmoon.com/android-4-new-features-for-application-developmentpacktpub-book-review/"><img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://darkgenesis.zenithmoon.com/android-4-new-features-for-application-developmentpacktpub-book-review/" style="border:0px" /></a> <script type="text/javascript">var dzone_url = 'http://darkgenesis.zenithmoon.com/android-4-new-features-for-application-developmentpacktpub-book-review/';</script><br />
<script type="text/javascript">var dzone_title = 'Android 4: New features for Application Development–PacktPub Book Review';</script><br />
<script type="text/javascript">var dzone_blurb = 'Android 4: New features for Application Development–PacktPub Book Review';</script><br />
<script type="text/javascript">var dzone_style = '2';</script><br />
<script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"></script><script type="text/javascript">var addthis_pub="runxc1";</script><a href="http://www.addthis.com/bookmark.php?v=20" onmouseover="return addthis_open(this, '', '[URL]', '[TITLE]')" onmouseout="addthis_close()" onclick="return addthis_sendto()"><img src="http://s7.addthis.com/static/btn/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0" /></a> &nbsp; <script type="text/javascript" src="http://s7.addthis.com/js/200/addthis_widget.js"></script> <a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=9502591" rel="tag" style="display:none">CodeProject</a> </div>
]]></content:encoded>
			<wfw:commentRss>http://darkgenesis.zenithmoon.com/android-4-new-features-for-application-developmentpacktpub-book-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
