Monday 3 September 2012

Intel Ultimate Coder Challenge - Part Four


The Week That Was

If you recall, last week I promised you more progress on the Love Hearts® app itself, new artwork and lots of new DirectX and sensor features for the new AGK WinRT engine. I am pleased to report that I can deliver on all of the above. Let me first apologise for the technical onslaught from Week 3, an unfortunate by-product of getting too close to a coder at boiling-point. As a cure, here is a video intro which involves a little less reading.


And for those who like to read, here is another huge blog, with lots of juicy details and lots more videos.

The Week That Is

This week I would like to show you rather than tell you what I’ve been up to on the project, and have decided to use copious amounts of video to do this. I decided to record a typical morning, preparing for Ultrabook development, before playing it back 64 times faster.


During the afternoon, we see the current state of the Love Hearts® app, complete with some final artwork and more content.


Before you recoil from shock, let me qualify the video by saying it was running in Windows 8 Native Desktop mode using the legacy AGK engine. I just wanted to show you what it’s going to look like running on the Ultrabook when it’s finally running under the new WinRT engine.

The new Windows 8 engine made some huge strides this week, coupling up more OpenGL functions and matching them to the DirectX 11 API. I created an intermediate layer between OpenGL and DirectX which converted regular C++ data into C++/CX references, and stored some internal values which OpenGL relies on to perform it’s chain of instructions. Unlike DirectX, OpenGL sets states which later OpenGL calls rely on, so this had to be mimicked using the new intermediate layer. Bottom line is that we now have our DFNAM engine rendering the exact same pixels as the native OpenGL engine. I also took the opportunity to code the Accelerometer, Multi-touch and half the NFC sensor commands as well.


NFC Ultrabook and Nexus 7 Trick: To get your devices talking to each other, place the Nexus 7 tablet with its back touching the touchpad of the Ultrabook, aligned so that the top of the Nexus 7 is on line with the top of the touchpad.

I can’t describe the buzz I got when I first got the NFC connection working; it was one of those defining moments which slowly shape the technological landscape. I must admit it took me a while to find the aerial for the Ultrabook and the Nexus 7, but after a few Google videos and lots of device foreplay, I found the perfect spot as you can see in the above video.

When the time comes to integrate these cool toys into the main app, one of the overriding factors in making a successful Ultrabook app is the user experience. All the features in the world won’t make a killer app, but a single feature done well can transform a regular app into a leading app.

We must not confuse the Ultrabook with a laptop, a tablet or a small desktop. Users who buy an Ultrabook want the keyboard, the hands-free touch capabilities, the performance and the gadgets, and they want apps that respect their choice of hardware. I was inspired by a fellow contestant’s feature list and decided to make my own to see how each feature lends itself to the Love Hearts® usage scenario of the ideal Ultrabook user.


Completed Tasks

  • Multiple Resolutions: App adjusts layout to fit any landscape resolution
  • Mouse, Track-pad & Touch-screen: Accept all three input styles
  • Single & Multi-Touch: Two finger moving & resizing of message art
  • Rich Graphics: Use high resolution artwork for HD rendering
  • 3D Graphics Performance: Engine uses GPU rendering for 2D & 3D
  • Enhanced Performance: Engine uses PPL for parallel multi-core coding
  • DFNAM: 100% WinRT engine (native code is old code)
  • NFC Kiss: Touch Love Heart apps together to get extra credits for both
  • Accelerometer: - Control a mini-game using forward tilt only


Pending Features
  • iSCT (Always On): Retrieve love messages in background (if connected)
  • Push Notification: Display notification on tile page (if connected)
  • Power Management: Screen rendering freezes after 30 seconds idle
  • iRST (Rapid Start): Cache resources on suspend so can resume quickly
  • Geo-location: All messages stamped with the City they were created
  • Compass: Controls on-screen compass and position of sun
  • Orientation Sensor: Shift clouds so horizon always horizontal
  • Gyro: Spin packet when detect sufficient angular velocity
  • Light Sensor: When in dark room, lower rendering brightness
  • Inclinometer: A mini-game controls first-person flying love catcher

The Last Mile

As you can see from the list above, there appears to be a lot of red but having tackled the big learning curves of WinRT and C++\CX, the last six items can be done in just a few days thanks to a greatly improved Windows API. The middle four; IRST, POWER, PUSH and ISCT are virgin lands to me right now, and promise much agony and elation in equal measure in the weeks to come.

A Cry for Freedom

I have not mentioned my work role before, but at The Game Creators (www.thegamecreators.com) I am best described as the Lead Developer, which means I have a finger in most of the pies spinning at any one time. The lead developer does not have the luxury of working on just one project, and right now I am working on two. The Ultimate Coder Challenge is one of them, and the other project is Freedom Engine.


Simply put, we take our cross-platform technology App Game Kit and make it work entirely in the cloud. We add a browser based IDE and compiler, create an HTML5 WebGL engine to run the apps online and we keep backwards compatibility with AGK so the same app can run on iOS, Android, Windows, Mac, Playbook & Bada. With the Ultrabook work, we’re adding Windows 8 to the supported platforms not to mention an eclectic cacophony of new commands.

For the video, best you visit the official launch site
www.freedom-engine.com

Ten years ago, The Game Creators owned a considerable chunk of the ‘hobby developer’ market with the likes of DarkBASIC, FPS Creator and 3D Gamemaker but the competition today is strong and mature. Instead of competing head to head, we decided to make a paradigm shift in thinking and come up with a whole new way for developers to create and distribute apps. 

A solution that fits with the way we prefer to work, and targets all devices in the compute continuum. With Freedom Engine, your Ultrabook turns into a fully featured cross-platform development studio that offers instant access to every sensor and feature available through Windows 8.

Think of Freedom Engine as the GMAIL of app development, your code accessible from anywhere, apps than run on everything, free to use, fast and powerful. The best way to understand it is to try it, and we’ll be launching the public beta of this service on the 12th September during IDF. For updates on where I’ll be during IDF, follow my twitter feeds @leebambertgc

The Week That Will Be

The next few days will be something special in the calendar of your typical coder, stretching five days into ten days by way of a magical enchantment we like to call ‘a deadline’. I fly from jolly old England on the 10th September to arrive for cocktails, giggles and guffores at the annual Intel Developer Forum event in San Francisco. Before then, I have to finish a version of Love Hearts® to demo during the event, and also finish the Freedom Engine beta for public release on the 12th. I also have to prepare presentation materials and of course, pack my suitcase.


It’s been arranged that all bloggers can have a week off while IDF is in session and so all posts are moved to the following Monday. Even so, in true Harry Potter style, I will be blogging Week 4 and Three-Quarters throughout the IDF event so please do check back next Monday and I’ll find some time to blog something amusing.

More Information

For more information about the Ultimate Challenge, check out the official website at:http://software.intel.com/sites/campaigns/ultimatecoder/

Blog Bambermentry

For everyone who likes 40 hours of video, I decided to make a ‘week in the life’ time lapse video showing a week’s worth of coding. Shot entirely on the Ultrabook for over 40 hours of coding slog, I was a little concerned that I would melt the device, and have nothing to complete the last two weeks with.


Despite my fears, the Ultrabook was a capable work horse and had no problems keeping up with me during the marathon. Let’s hope it survives another long week of coding, a round trip to the states and curious developers poking at it.


No comments:

Post a Comment