text:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data.SqlServerCe;
using System.IO;
using System.Linq;
using System.Web.Routing;
using System.Xml;
using Moq;
using NUnit.Framework;
using SQLCE4Umbraco;
using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.Logging;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.ObjectResolution;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Mappers;
using Umbraco.Core.Persistence.SqlSyntax;
using Umbraco.Core.Persistence.UnitOfWork;
using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Publishing;
using Umbraco.Core.Services;
using Umbraco.Web;
using Umbraco.Web.PublishedCache;
using Umbraco.Web.PublishedCache.XmlPublishedCache;
using Umbraco.Web.Routing;
using Umbraco.Web.Security;
using umbraco.BusinessLogic;
using Umbraco.Core.Events;

namespace Umbraco.Tests.TestHelpers
{
    ///
    /// Use this abstract class for tests that requires a Sql Ce database populated with the umbraco db schema.
    /// The PetaPoco Database class should be used through the <see cref="DefaultDatabaseFactory"/>.
    ///
    [TestFixture, RequiresSTA]
    public abstract class BaseDatabaseFactoryTest : BaseUmbracoApplicationTest
    {
        //This is used to indicate that this is the first test to run in the test session, if so, we always
        //ensure a new database file is used.
        private static volatile bool _firstRunInTestSession = true;
        private static readonly object Locker = new object();
        private bool _firstTestInFixture = true;

        //Used to flag if its the first test in the current session
        private bool _isFirstRunInTestSession = false;
        //Used to flag if its the first test in the current fixture
        private bool _isFirstTestInFixture = false;

        private ApplicationContext _appContext;

        private string _dbPath;
        //used to store (globally) the pre-built db with schema and initial data
        private static Byte[] _dbBytes;

        [SetUp]
        public override void Initialize()
        {
            InitializeFirstRunFlags();

            var path = TestHelper.CurrentAssemblyDirectory;
            AppDomain.CurrentDomain.SetData("DataDirectory", path);

            //disable cache
            var cacheHelper = CacheHelper.CreateDisabledCacheHelper();

            var dbFactory = new DefaultDatabaseFactory(
                GetDbConnectionString(),
                GetDbProviderName(),
                Logger);

            var repositoryFactory = new RepositoryFactory(cacheHelper, Logger, SqlSyntax, SettingsForTests.GenerateMockSettings());

            var evtMsgs = new TransientMessagesFactory();
            _appContext = new ApplicationContext(
                //assign the db context
                new DatabaseContext(dbFactory, Logger, SqlSyntax, "System.Data.SqlServerCe.4.0"),
                //assign the service context
                new ServiceContext(repositoryFactory, new PetaPocoUnitOfWorkProvider(dbFactory), new FileUnitOfWorkProvider(), new PublishingStrategy(evtMsgs, Logger), cacheHelper, Logger, evtMsgs),
                cacheHelper,
                ProfilingLogger)
            {
                IsReady = true
            };

            base.Initialize();

            using (ProfilingLogger.TraceDuration<BaseDatabaseFactoryTest>("init"))
            {
                //TODO: Somehow make this faster - takes 5s +

                DatabaseContext.Initialize(dbFactory.ProviderName, dbFactory.ConnectionString);
                CreateSqlCeDatabase();
                InitializeDatabase();

                //ensure the configuration matches the current version for tests
                SettingsForTests.ConfigurationStatus = UmbracoVersion.GetSemanticVersion().ToSemanticString();
            }
        }

        protected virtual ISqlSyntaxProvider SqlSyntax
        {
            get { return new SqlCeSyntaxProvider(); }
        }

        protected override void SetupApplicationContext()
        {
            ApplicationContext.Current = _appContext;
        }

        ///
        /// The database behavior to use for the test/fixture
        ///
        protected DatabaseBehavior DatabaseTestBehavior
        {
            get
            {
                var att = this.GetType().GetCustomAttribute<DatabaseTestBehaviorAttribute>(false);
                return att != null ? att.Behavior : DatabaseBehavior.NoDatabasePerFixture;
            }
        }

        protected virtual string GetDbProviderName()
        {
            return "System.Data.SqlServerCe.4.0";
        }

        ///
        /// Get the db conn string
        ///
        protected virtual string GetDbConnectionString()
        {
            return @"Datasource=|DataDirectory|UmbracoPetaPocoTests.sdf;Flush Interval=1;";
        }

        ///
        /// Creates the SqlCe database if required
        ///
        protected virtual void CreateSqlCeDatabase()
        {
            if (DatabaseTestBehavior == DatabaseBehavior.NoDatabasePerFixture)
                return;

            var path = TestHelper.CurrentAssemblyDirectory;

            //Get the connectionstring settings from config
            var settings = ConfigurationManager.ConnectionStrings[Core.Configuration.GlobalSettings.UmbracoConnectionName];
            ConfigurationManager.AppSettings.Set(
                Core.Configuration.GlobalSettings.UmbracoConnectionName,
                GetDbConnectionString());

            _dbPath = string.Concat(path, "\\UmbracoPetaPocoTests.sdf");

            //create a new database file if
            // - is the first test in the session
            // - the database file doesn't exist
            // - NewDbFileAndSchemaPerTest
            // - _isFirstTestInFixture + DbInitBehavior.NewDbFileAndSchemaPerFixture

            //if this is the first test in the session, always ensure a new db file is created
            if (_isFirstRunInTestSession || File.Exists(_dbPath) == false
                || (DatabaseTestBehavior == DatabaseBehavior.NewDbFileAndSchemaPerTest || DatabaseTestBehavior == DatabaseBehavior.EmptyDbFilePerTest)
                || (_isFirstTestInFixture && DatabaseTestBehavior == DatabaseBehavior.NewDbFileAndSchemaPerFixture))
            {

                using (ProfilingLogger.TraceDuration<BaseDatabaseFactoryTest>("Remove database file"))
                {
                    RemoveDatabaseFile(ex =>
                    {
                        //if this doesn't work we have to make sure everything is reset! otherwise
                        // well run into issues because we've already set some things up
                        TearDown();
                        throw ex;
                    });
                }

                //Create the Sql CE database
                using (ProfilingLogger.TraceDuration<BaseDatabaseFactoryTest>("Create database file"))
                {
                    if (DatabaseTestBehavior != DatabaseBehavior.EmptyDbFilePerTest && _dbBytes != null)
                    {
                        File.WriteAllBytes(_dbPath, _dbBytes);
                    }
                    else
                    {
                        var engine = new SqlCeEngine(settings.ConnectionString);
                        engine.CreateDatabase();
                    }
                }

            }

        }

        ///
        /// sets up resolvers before resolution is frozen
        ///
        protected override void FreezeResolution()
        {
            PropertyEditorResolver.Current = new PropertyEditorResolver(
                new ActivatorServiceProvider(), Logger,
                () => PluginManager.Current.ResolvePropertyEditors(),
                ApplicationContext.ApplicationCache.RuntimeCache);

            DataTypesResolver.Current = new DataTypesResolver(
                new ActivatorServiceProvider(), Logger,
                () => PluginManager.Current.ResolveDataTypes());

            MappingResolver.Current = new MappingResolver(
                new ActivatorServiceProvider(), Logger,
               () => PluginManager.Current.ResolveAssignedMapperTypes());

            if (PropertyValueConvertersResolver.HasCurrent == false)
                PropertyValueConvertersResolver.Current = new PropertyValueConvertersResolver(new ActivatorServiceProvider(), Logger);

            if (PublishedContentModelFactoryResolver.HasCurrent == false)
                PublishedContentModelFactoryResolver.Current = new PublishedContentModelFactoryResolver();

            base.FreezeResolution();
        }

        ///
        /// Creates the tables and data for the database
        ///
        protected virtual void InitializeDatabase()
        {
            if (DatabaseTestBehavior == DatabaseBehavior.NoDatabasePerFixture || DatabaseTestBehavior == DatabaseBehavior.EmptyDbFilePerTest)
                return;

            //create the schema and load default data if:
            // - is the first test in the session
            // - NewDbFileAndSchemaPerTest
            // - _isFirstTestInFixture + DbInitBehavior.NewDbFileAndSchemaPerFixture

            if (_dbBytes == null &&
                (_isFirstRunInTestSession
                || DatabaseTestBehavior == DatabaseBehavior.NewDbFileAndSchemaPerTest
                || (_isFirstTestInFixture && DatabaseTestBehavior == DatabaseBehavior.NewDbFileAndSchemaPerFixture)))
            {

                var schemaHelper = new DatabaseSchemaHelper(DatabaseContext.Database, Logger, SqlSyntax);
                //Create the umbraco database and its base data
                schemaHelper.CreateDatabaseSchema(false, ApplicationContext);

                //close the connections, we're gonna read this baby in as a byte array so we don't have to re-initialize the
                // damn db for each test
                CloseDbConnections();

                _dbBytes = File.ReadAllBytes(_dbPath);
            }
        }

        [TestFixtureTearDown]
        public void FixtureTearDown()
        {
            RemoveDatabaseFile();
        }

        [TearDown]
        public override void TearDown()
        {
            using (ProfilingLogger.TraceDuration<BaseDatabaseFactoryTest>("teardown"))
            {
                _isFirstTestInFixture = false; //ensure this is false before anything!

                if (DatabaseTestBehavior == DatabaseBehavior.NewDbFileAndSchemaPerTest)
                {
                    RemoveDatabaseFile();
                }

                AppDomain.CurrentDomain.SetData("DataDirectory", null);

                SqlSyntaxContext.SqlSyntaxProvider = null;
            }

            base.TearDown();
        }

        private void CloseDbConnections()
        {
            //Ensure that any database connections from a previous test is disposed.
            //This is really just double safety as its also done in the TearDown.
            if (ApplicationContext != null && DatabaseContext != null && DatabaseContext.Database != null)
                DatabaseContext.Database.Dispose();
            SqlCeContextGuardian.CloseBackgroundConnection();
        }

        private void InitializeFirstRunFlags()
        {
            //this needs to be thread-safe
            _isFirstRunInTestSession = false;
            if (_firstRunInTestSession)
            {
                lock (Locker)
                {
                    if (_firstRunInTestSession)
                    {
                        _isFirstRunInTestSession = true; //set the flag
                        _firstRunInTestSession = false;
                    }
                }
            }
            if (_firstTestInFixture)
            {
                lock (Locker)
                {
                    if (_firstTestInFixture)
                    {
                        _isFirstTestInFixture = true; //set the flag
                        _firstTestInFixture = false;
                    }
                }
            }
        }

        private void RemoveDatabaseFile(Action<Exception> onFail = null)
        {
            CloseDbConnections();
            string path = TestHelper.CurrentAssemblyDirectory;
            try
            {
                string filePath = string.Concat(path, "\\UmbracoPetaPocoTests.sdf");
                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error<BaseDatabaseFactoryTest>("Could not remove the old database file", ex);

                //We will swallow this exception! That's because a sub class might require further teardown logic.
                if (onFail != null)
                {
                    onFail(ex);
                }
            }
        }

        protected ServiceContext ServiceContext
        {
            get { return ApplicationContext.Services; }
        }

        protected DatabaseContext DatabaseContext
        {
            get { return ApplicationContext.DatabaseContext; }
        }

        protected UmbracoContext GetUmbracoContext(string url, int templateId, RouteData routeData = null, bool setSingleton = false)
        {
            var cache = new PublishedContentCache();

            cache.GetXmlDelegate = (context, preview) =>
                {
                    var doc = new XmlDocument();
                    doc.LoadXml(GetXmlContent(templateId));
                    return doc;
                };

            PublishedContentCache.UnitTesting = true;

            var httpContext = GetHttpContextFactory(url, routeData).HttpContext;
            var ctx = new UmbracoContext(
                httpContext,
                ApplicationContext,
                new PublishedCaches(cache, new PublishedMediaCache(ApplicationContext)),
                new WebSecurity(httpContext, ApplicationContext));

            if (setSingleton)
            {
                UmbracoContext.Current = ctx;
            }

            return ctx;
        }

        protected FakeHttpContextFactory GetHttpContextFactory(string url, RouteData routeData = null)
        {
            var factory = routeData != null
                            ? new FakeHttpContextFactory(url, routeData)
                            : new FakeHttpContextFactory(url);

            //set the state helper
            StateHelper.HttpContext = factory.HttpContext;

            return factory;
        }

        protected virtual string GetXmlContent(int templateId)
        {
            return @"<?xml version=""1.0"" encoding=""utf-8""?>
<!DOCTYPE root[
<!ELEMENT Home ANY>
<!ATTLIST Home id ID #REQUIRED>
<!ELEMENT CustomDocument ANY>
<!ATTLIST CustomDocument id ID #REQUIRED>
]>
<root id=""-1"">
	<Home id=""1046"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""1"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""home"" writerName=""admin"" creatorName=""admin"" path=""-1,1046"" isDoc="""">
		<content><![CDATA[]]></content>
		<umbracoUrlAlias><![CDATA[this/is/my/alias, anotheralias]]></umbracoUrlAlias>
		<umbracoNaviHide>1</umbracoNaviHide>
		<Home id=""1173"" parentID=""1046"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""sub1"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1173"" isDoc="""">
			<content><![CDATA[
This is some content
]]></content>
			<umbracoUrlAlias><![CDATA[page2/alias, 2ndpagealias]]></umbracoUrlAlias>
			<Home id=""1174"" parentID=""1173"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""sub2"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1173,1174"" isDoc="""">
				<content><![CDATA[]]></content>
				<umbracoUrlAlias><![CDATA[only/one/alias]]></umbracoUrlAlias>
				<creatorName><![CDATA[Custom data with same property name as the member name]]></creatorName>
			</Home>
			<Home id=""1176"" parentID=""1173"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""3"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""sub-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1173,1176"" isDoc="""">
				<content><![CDATA[]]></content>
			</Home>
			<CustomDocument id=""1177"" parentID=""1173"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1234"" template=""" + templateId + @""" sortOrder=""4"" createDate=""2012-07-16T15:26:59"" updateDate=""2012-07-18T14:23:35"" nodeName=""custom sub 1"" urlName=""custom-sub-1"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1173,1177"" isDoc="""" />
			<CustomDocument id=""1178"" parentID=""1173"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1234"" template=""" + templateId + @""" sortOrder=""4"" createDate=""2012-07-16T15:26:59"" updateDate=""2012-07-16T14:23:35"" nodeName=""custom sub 2"" urlName=""custom-sub-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1173,1178"" isDoc="""" />
		</Home>
		<Home id=""1175"" parentID=""1046"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + templateId + @""" sortOrder=""3"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""sub-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1175"" isDoc=""""><content><![CDATA[]]></content>
		</Home>
	</Home>
	<CustomDocument id=""1172"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1234"" template=""" + templateId + @""" sortOrder=""2"" createDate=""2012-07-16T15:26:59"" updateDate=""2012-07-18T14:23:35"" nodeName=""Test"" urlName=""test-page"" writerName=""admin"" creatorName=""admin"" path=""-1,1172"" isDoc="""" />
</root>";
        }
    }
}

redpajama_set_name: RedPajamaGithub


Planning a wedding should be a magical time, a chance to live out all of your childhood dreams of what your big day should be.
The reality is that organising your wedding is likely to be one of the most stressful times of your life, right up there with moving to a new house and, forgive the example, divorce! But what if we told you that you could plan every aspect of your wedding in the comfort of the world's first, and only upscale wedding department store?
This October (2017), the Wedding Gallery, based in central London, will be throwing open its doors for the first time and welcoming aspirational brides and grooms-to-be, providing a haven to explore trends, ideas and creativity for the wedding industry.
The venue really will be a one-stop shop for all wedding needs as a whole host of exclusive and household name brands have signed up to feature in the 20,000 sq ft space located beneath London's iconic, one Marylebone. Trying to decide on your wedding dress? Take your pick from Elie Saab, Temperley London, Amanda Wakeley and many more. Lingerie? How about La Perla, Damaris/Mimi Holliday and Hanky Panky? You can choose from Annoushka, Ruth Tomlinson, Shaun Leane and Kiki McDonough for your jewellery and for shoes, take your pick from Gina, Spence London, Emmy London, Sophia Webster and Charlotte Olympia.
The groom won't be left out too. Casely-Hayford will be providing a bespoke tailoring service with a combination of ready to wear and bespoke tailoring from Gieves & Hawkes, Turnbull & Asser, Emma Willis and Thom Sweeney.
The most select venues will also be available, including Banqueting House, Tower of London, Kensington Palace, Hillsborough Palace, Hampton Court Palace, Kew Palace, The Savoy, The Mandarin Oriental Hyde Park, to name a few.
The honeymoon won't be left out either as The Wedding Gallery has partnered with Turquoise Holidays, Hayes & Jarvis, Belmond, Audley Travel and Bellini Travel to bring couples endless options for their dream honeymoon.
I don't know about you guys, but if money was no object, I'd be tempted to get married all over again!
For more information, visit The Wedding Gallery website.


The Department of Defense POW/MIA Accounting Agency (DPAA) announced today that the remains of a serviceman, missing from the Vietnam War, have been identified and will be returned to his family for burial with full military honors.
In the identification of Holt, scientists from the DPAA and the Armed Forces DNA Identification Laboratory (AFDIL) used circumstantial evidence, from the 1989 unilateral turnover, and forensic identification tools, including two forms of DNA analysis; mitochondrial DNA, which matched his sister and brothers, and Y-chromosome Short Tandem Repeat (Y-STR) DNA, which matched his brothers.
For additional information on the Defense Department's mission to account for missing Americans, who went missing while serving our country, visit the DPAA website at www.dpaa.mil or call (703) 699-1169.


We are the leading Manufacturer and Exporter of Garment Fabrics and All Over Fancy Fabric and Dress Material. . We also producing and trading in supreme quality range of Women Wear Sarees, Designer and Party Wear Suit.


text:
Sneak King is a stealth video game by Burger King for the Xbox and Xbox 360 video game consoles, released in 2006. Burger King sold the game with the purchase of value meals. Players take control of Burger King's mascot The King, in a stealth food-delivery themed game that spans four levels based on Burger King's commercial advertisements. Sneak King is one of three titles released by Burger King under the name King Games and developed by Blitz Games as part of five week promotional campaign between November 19 and December 24, 2006. Blitz Games was chosen to develop the games, originally for the online Xbox Live Arcade, but this was later changed to a single disc that would run the game on both the Xbox and Xbox 360 consoles.

Development of the project was closely tied to the other two games, and Sneak Kings development was directly led by the Burger King. The game started as a tile-based puzzle video game, but became a Spy vs Spy-style caper until Burger King made design choices that removed conventional hazards and competition elements in favor of a stealth game with no human opponents. Sneak King received mixed reviews,  but the project was a financial success and resulted in millions of units being sold. Critics noted its unusual design elements. Collectively, the games ranked amongst the top 10 best selling games of 2006. Burger King's Russell Klein would attribute the three-game project as being the driving force behind the company's 40% quarterly sales increase.

Gameplay
The player takes control of The King, the mascot for Burger King, who is tasked with sneaking around while delivering 4 different types of Burger King meals to hungry people.  Sneak Kings gameplay consists of four levels to explore: the Saw Mill, Cul-De-Sac, Construction Zone, and Downtown. Each level features a unique map with 20 challenges to be completed. There are two game modes, free-play mode and challenge mode. Free-play mode occurs whenever the player is not currently undertaking a challenge or after the player changes levels. In this mode, the player can freely explore the area without noise or sight detection and use the minimap to see unlocked challenges and non-player characters (NPCs).

In Challenge mode, the player must sneak around and deliver food to hungry NPCs. Hunger is indicated above thought bubbles which float above the heads of the NPCs. An NPC with a burger icon over their head is able to be given food, but they will lose their appetite if they spot the player. NPCs move around the map in a set pattern and have a narrow cone of vision to detect player. Erik Brudvig of IGN described this narrow cone of vision as being similar to those of Metal Gear Solid. NPCs can also detect the player by excessive noise, the amount of sound a player is making is indicated by a noise meter. Challenges can be failed if a player alerts NPCs to their presence. Successful delivery of an item requires sneaking up behind an NPC or surprising them from a hiding place. Points are awarded based on how hungry a character is, the player's stealth and proximity to the NPC and style points on delivery. When presenting food, a Flourish meter appears which quickly fills and empties, requiring a timed button press. The higher the flourish meter, the more style points. Each level has 20 associated challenges and fulfilling half the challenges on a level opens the way to the next level. Once all 80 challenges are completed, an alternative costume is unlocked. Gamerscore is rewarded for achieving certain goals or style on the Xbox 360 version.

Development
The origin of three Burger King-themed Xbox games, including Sneak King, began when senior executives from Microsoft and Burger King met at Cannes to accept awards for their I Love Bees and Subservient Chicken advertising campaigns. Microsoft and Burger King's executives decided to produce Xbox games that would take place in Burger King-themed context that would not be reduced to blatant advertisements. Blitz Games Studios would become involved in the project after Blitz Games Studios' co-founder, Philip Oliver, discussed an interest in producing Xbox Live games with Microsoft's Xbox Live Arcade portfolio manager, Ross Erickson. Oliver's interest was hampered by a lack of funding, but Erickson agreed to notify Oliver of any leads on advertisers looking for product placement. A week or two after that, Oliver received a call from Erickson about Burger King's interest in creating three games. In the fall of 2005, Blitz Games entered into talks with Burger King and the development began in February 2006.

The development originally began as downloadable Xbox Live games, but Burger King soon announced that they wanted the games to also be playable on the Xbox. This would require distribution of the games in boxes instead of digitally because the original Xbox console platform was not able to access Xbox Live Arcade. With physical distribution in mind, Burger King wanted both the Xbox and Xbox 360 versions of the game to be available on the same disc. For the project, Blitz Games assigned two project managers for the games, Chris Swan and John Jarvis. Swan and Jarvis held daily conference calls with Burger King and Microsoft's Xbox division throughout the development period. In order to better work together, Blitz Games showed Burger King the development process for a previous game, from "first the black and white sketches, then the color concepts, environment blockouts, texturing and lighting, and finally the results on screen." By showing an example of their workflow process, Blitz Games hoped to bridge the presentation gap between the companies that could potentially "cripple the project."

Originally Blitz Games had a staff of fifteen working on the original project, but this grew to nearly 80 people after Burger King increased the contract and budget for the games. The task of producing two different versions of the games were made easier by Blitz Games' production toolchain, which had built-in compatibility for Xbox. Blitz Studios' developers were able to adjust the game with appropriate hardware coding that had already been previously developed by the company. Blitz Games extended their development cycle by two months: one month due to challenges in production, and the other because Microsoft agreed to "fast track" the games through the Quality Assurance process. The development period concluded after three months, with the completion of all three games and the production of two million units of each game.

Burger King and Blitz Studios split the creative process up for the three games. Sneak King is the game that Burger King had creative control over, and which was envisioned based on the King commercials. Oliver stated, "Sneak King is derived by them, purely from their commercials. It was basically 'here's our commercials, we have to have a video game around them.' They threw in all their ideas, and we made it work." Originally, Sneak King was designed as a tile-based puzzle game, but it soon evolved into a Spy vs Spy caper with multiple Kings who are "trying to out-deliver one another while laying traps for their enemies".

Burger King's creative control over the game impacted its development defined as a set of rules. The first rule was that there was only one King character. In response, the developers had the idea of the Xbox avatars playing the game and finding the crown to become the King. This idea was rejected by Burger King who said players could not become the King. The developers' next idea was to have one person be the King and the other players lay traps to interfere with his deliveries, but this idea was again rejected by Burger King because the King could not be exposed to any danger. With the usual hazards and competition elements of the video games removed, the developers decided upon a stealth format with no human opponents. In order to better capture the accuracy and authenticity of the King's movements, the King was flown to Britain for motion capture for the game's production. Blitz Games' Edward Linley described Sneak King as the riskiest game concept of the project because it "is the appearance and antics of the King himself that give the game its humor and life; without him, the game simply wouldn't work. Until we had the finished King model and motion capture in the game, we couldn't be certain the concept would gel. Fortunately, the moment he went in, we knew we had created something truly unique." Sneak Kings programming code consists of 60,000 active lines with another 43,000 developer comment lines.

Release
Sneak King is one of three promotional Burger King-themed games, released in North America. The other two games are PocketBike Racer and Big Bumpin'. The Burger King marketing run was from November 19 through December 24, 2006. The games were available for $3.99 with any purchase of any Burger King value meal. In January 2007, the marketing firm Crispin Porter + Bogusky stated that more than 2.7 million games were sold in the promotion. It was reported that more than 3.2 million copies were sold, although Sneak King distinct sales were not given, in Game Developers April 2007 issue.

Reception and impact

GameSpots Jeff Gerstmann gave it a 5.8 out of 10 and although describing it as weird and poorly made, he concluded that "Sneak King is a one-trick pony that is an interesting curiosity with a subversive sense of humor." IGN's Erik Brudvig noted that the game's  price point made it the cheapest Xbox Live game. Although noting the presence of game-breaking bugs, he said the budget game was worth purchasing because of its food delivery dances. Brudvig also noted that the graphics were impressive for the cost of the game, but the interactive maps were found to be quite limited and environmentally sparse. X-Play rated the game as one out of five, but noted that "[t]his is the game that really got the buzz going about BK's whole foray into gaming, thanks mostly to screenshots of the Burger King hiding in a garbage can, lying in wait for what appeared to be a college-age woman walking toward him. Stalking in the name of great taste." Kate Macarthur of Advertising Age noted that, "Burger King's Sneak King video game for Xbox may not have won rave reviews, but gamers still bought more than 2 million copies."

The immediate impact of Sneak King on Blitz Games was a financial boost. This allowed the company to improve its technology, and partially funded the company's Blitz Arcade. Collectively, sales sufficed to be ranked amongst the top 10 best selling games of 2006. Story wrote, "Using Xbox data on game use, the Burger King game equates in time spent to more than 1.4 billion 30-second commercials[.]" Including Sneak King, the success of the project was noted as a key part of Burger King's 40% increase in sales during the quarter. It was affirmed by Russell Klein that Burger King attributed the majority of that success to the game project.

See also
PocketBike Racer
Big Bumpin'

References

External links
Sneak King on IGN

Burger King advertising
2006 video games
Advergames
Works based on advertisements
Stealth video games
Xbox games
Xbox 360 games
Burger King
Video games about food and drink
Video games developed in the United Kingdom
North America-exclusive video games
Blitz Games Studios games
Single-player video games

redpajama_set_name: RedPajamaWikipedia


BENGALURU: The Bangalore International Airport Limited (BIAL), operator of the Kempegowda International Airport, on Wednesday inaugurated its rooftop solar power project.
The solar plant will generate 3.4MW of power for the airport. It's installed on eight rooftops within the airport premises at Menzies Bobba, Air India SATS, Coolport and several BIAL office buildings. It is expected to generate around 47 lakh units of electricity every year and will reduce 3,800 tonnes of CO2 emissions annually.
The five key areas of BIAL's sustainability initiatives include water management to achieve water positivity by 2020, energy management to achieve energy neutral by 2020 and carbon neutrality through use of renewable, green and clean energy, environment management to protect the environment and reduce carbon footprint, waste management to achieve increased recyclables, energy recovery and achieve zero landfills by 2021 and ecological management to maintain a perfect balance between the imperatives of business and the environment.