Wednesday, January 1, 2014

Retrospective V

Last year, I conducted a simple retrospective for 2012. Therefore, here is a retrospective for 2013.

2013 Achievements
Note: emphasis on Sega Machine Code, Z80 Assembly and Console programming!

2014 Objectives
  • Continued focus on native C++ large scale development and general best practices
  • Target mobile development long-term with focus on native C++ for cross platform

In late January 2013, an email was sent to DirectX/XNA MVPs which explained that Microsoft would no longer be maintaining the XNA toolset: XNA would be fully retired effective April 1, 2014 as a result.

While this news was disappointing to independent game developers, the announcement was hardly a shock: there had been no XNA update since late 2011 and many developers at Microsoft had moved.

In November 2013 saw the launch of eighth generation video game consoles which included the Nintendo Wii U, the PlayStation 4 and the Xbox One. These launches also brought much speculation over the future of independent game development and ability to self-publish.

For example: Microsoft announced the ability to run your own code on the Xbox One but without an official program like XNA, it would seem only logical to create a new programming environment and leverage existing investment in WinRT; similar to Metro-style applications on Windows 8.

Consequently, Microsoft now promotes C++ over C# for high performance DirectX graphics and games programming: the only "real" support for DirectX using C# long-term seems constrained to SharpDX.

The focus on C++ here is nothing new: C++ has been the dominant language for commercial game studios for years and is one-of-the-most cost-effective solutions for porting game code cross platform.

This will be an interesting development, so too will be the ever-growing future target platform: Mobile.

A new report suggests that mobile revenues are forecast to grow from $39 billion in 2013 to an estimated $79 billion in 2017. The report bases these findings on improvements in monetization strategies combined with more app-based devices like smart watches, which seem fundamental to growth.

Engaging this new online battleground, the biggest challenge may actually be which technology to choose:

An initial choice for creating mobile games but because each browser supports the technology differently, efforts are required to adapt code to each supported browser. The same may hold true for PhoneGap too.

Adobe AIR
The future of Adobe AIR seems uncertain like Adobe Flash, it may be doomed as a long-term technology.

Unity 3D
A popular choice for game development, vendors in the gambling sector are also exploring this technology although there is concern on load times for mobile devices which have far less memory and slower CPUs.

The de-facto choice for many XNA developers however there is concern in the on-going development and long-term future of the open-source project. The same may apply for Xamarin; the Mono-based project.

Similar to console game development, C++ may become increasingly popular for cross platform mobile development for apps/games on devices that demand high performance and a smaller memory footprint.

C++ can be leveraged for building native apps on Apple iOS, Google Android, Microsoft Windows Phone 8. It seems best suited for apps that require sophisticated UIs and high performance client-side calculations:

Objective-C remains Apple's language of choice however the Xcode compiler (LLVM) fully supports C++.

The Android NDK enables parts of an app built using native C++ for self-contained CPU-intensive code.

Windows Phone 8 has full support for C++ and also supports WinRT application development.

It will be interesting to see if C++ gains popularity as a choice for cross platform mobile development; C++ is currently considered a niche language for mobile development compared to other alternatives.

However, it is always exciting to revisit existing technologies; similar to Sega Retro Gaming last year!