The Making of the Speccy version of R-Type eBook

It’s been a while, but I can’t really NOT post about this ->

If you’re interested in Retro games, below is a link to the site hosting Bob Pape’s story of making the Speccy (Sinclair ZX Spectrum) version of R-Type. For the record, I got the Time Scanner gig Bob refers to, and probably was involved in preparing the videos of R-Type he also mentions, but I forget the specifics after all the beers, I mean all the years…

http://bizzley.com/

Well worth a look!

Posted in Uncategorized | Leave a comment

Windows 8 Developer Preview, not so shiny?

As everyone is probably aware by now, Microsoft made a Developer Preview of Windows 8 available last week during their Build 2011 event. Microsoft has clearly learnt a lot from Apple and Google about hosting such events, even stretching to a Google style hardware give away for lucky attendees (grrr!). The keynote and workshop presentations are thick with enthusiastic evangelising of the ‘new’ (some previously available) technologies included in the platform, and I admit to being swept along with their enthusiasm.

I think the Metro platform is a good idea for Windows, even more so as a new API is available that sidesteps some of the monolithic Win32 code. Microsoft might have a chance of actually catching up (and even passing) Apple/Google in the ‘slate’ (note not-pad) race, although hardware/software price is likely to be a limiting factor for the initial year after the OS is released. Windows is one of those things you ‘just upgrade’, only occasionally is a release so bad you give it a break, people even upgraded to Vista before discovering it was just a little bit slow (much slower than the prior beta releases).

As a developer I’ve enthusiastically watched the announcements regarding the Windows Store, the Xbox Live integration (which I’m sure was already available on Windows but maybe it was all a dream?), and the accessible Metro platform, but as I’ve watched and researched the example code doubts have started to slip in.

I hope I’m not breaking any license agreement by discussing this and it seems to me other people are being pretty vocal on Microsoft’s feedback pages about topics raised so my current concerns are…

The Store – This is seems to be a closed space, where approval is required. Ok, I guess this is a good idea, because who can find anything useful on an Android device? It’s pretty hard to be seen. But equally, I see the same problem on my Windows 7 phone. The Xbox Live labelled content gets centre stage, promoted heavily by Microsoft and drowning other content. Indie developers even have to resort to including an ‘Xbox Live’ like banner in their app icon, in the hope of getting taken more seriously.

Related to this is the issue of getting apps into the Metro interface. As a ‘Windows’ OS I’d assumed you could install your software, like you’ve been able to do for decades now, and it’d appear on your ‘start menu’, now the Metro interface. It seems this might not be the case, at least if you’ve created a Metro specific app. My understanding is Metro apps will only be available via the store, with developers able to ‘sideload’ their apps.

App Development and Deployment – This brings the worry of a Windows Phone style app limit, where currently only 10 developer apps can be deployed – it’s a real pain. Often I’ll have several experiments on the go, in addition to my active titles in development, and I have to delete unfinished tests to try something else. This’d be too much to take if it was applied for Metro on Windows also. Then there’s App approval, currently Windows Phone Apps (plus Xbox Community Apps) are submitted through a portal at create.msdn.com. It’s not the most stable window on Microsoft and my experience has been prone to technical errors (including issuing 3 rather than 10 app deployments to Windows Phone), delays in responses for support or rapid pruning of forums.

C++What? – Taking a look at some of the Metro sample code, I had to do a double-take to check that I’d actually downloaded the C++ versions of the apps. What I seemed to be looking at was C#!? Given I have limited spare time to keep up to date, I’d assumed that the official specification of C++ had been seriously updated and it was probably time for me to get an up to date book (something less that 10+ years old). But having checked out more of the content on the Build 2011 site, it seems clear from the many upset community posts that Microsoft has been language building again, seemingly creating their own C++# or C## (doesn’t that already exist?). It’s not clear at this point how much of a pain this is going to be to interface ‘plain’ C++ code with, but I’m sure if something’s simple to do, this won’t be… (Yes, I’m a half-empty type of guy).

Xbox Live – I’m sure the Xbox live API has been available on Windows for a while, even with the ability to play against X360 players? Wasn’t there a FPS, which no one bought except me, that let you do this? Still we seem to be being told that this is available for the first time (maybe the first time in Metro?). I thought this ‘first time’ might indicate that it’ll be an open API for the first time, so excitement was high, until I got to the end of the presentation on the topic, when it because clear this was the same story as usual, only certain games will be allowed access to the technology. To get into the club you need to engage Microsoft’s interest, but I’ve already discovered over many years, not being based in the U.S.A. makes your chances very slim. Where apps outside the U.S.A. have been accepted, especially regarding Windows Phone, these seem to have been prior proven apps from other platforms, or apps developed within Microsoft’s group of companies. So there ends this excitement, unless I move to the U.S.A., San Francisco to be specific.

I’ve installed the Windows 8 Preview on three machines, my aging gaming rig, my not so old gaming laptop and my really old and actually dead before last Saturday x32 bit only XPS M1710 laptop (I finally attempted the GPU in the oven trick – and it worked). It ran well on all the platforms, although I had to do some trickery and use a hacked Windows 7 display driver to get GPU acceleration on the M1710. The only problem I encountered, which I would have realised if I’d read everything posted on the preview distribution page, was that you can’t build Metro apps on the x32 version of Windows 8, even if you install the Pro version of Visual Studio, which is a bit of a pain and I hope just a temporary issue due to the current distribution disk images. Still I hope to use this machine as a remote debug target, assuming it’ll be allowed to launch the Metro apps sent from an x64 machine.

So to conclude, I am still very interested and excited about the possibilities, but I’m worried this could still become a U.S.A. only club, as feels the case on Microsoft’s other stores platforms. The development experience could be ruined if they impose silly app deployment limits (an attempt to stop piracy, which probably won’t I expect) and issues of compatibility caused by ‘new’ versions of C++. The store could be swamped with Official Microsoft Approved Apps, drowning others, making developing content pointless.

Let’s hope Microsoft listen to the community, as they currently present themselves as doing, and make a few tweaks before release.

A free Samsung Windows 8 slate would be deeply appreciated, thank you.

Posted in Metro, Windows | Leave a comment

I Am Not A Robot…

I’ve been intending to make this post for a number of weeks now, initially before taking part in the University of Portsmouth’s GameJam 2011. However, I spent the week before the game jam preparing, then the jam itself takes place over a week and finally I’ve needed the best part of the two weeks since to recover from it all!!! My post today relates to my first encounters and notes regarding developing for Android OS going back to April this year.

I’d initially downloaded the Android SDK shortly following it’s initial release, but as it was exclusively Java at the time, I knew performance for games was likely to be an issue (as was a lack of portability of the code to other games platforms), so I decided not to bother investigating further at the time.

Having attended GDC 2011 and given the recent release of the Honeycomb platform, I decided to acquire a Motorola Xoom and take the plunge with Android again.

The first step with working with a new platform is to install the SDK. The developer area on the Android site does a reasonable step-by-step job of guiding the user through the process of installing Android SDK, Ant, the NDK and unfortunately the Eclipse IDE. I’ve never had good experiences with Eclipse in the past, and it seems the same was destined to be true again. As I’m installing on Windows I initially allowed the Android SDK to install into the default ‘Program Files’ folder, but in a later install changed this (and other SDK components) to C:\Android to simplify path names.

Eclipse worked fine with regards to compiling Java code, the problems arose when trying to add the Native (code) Development Kit or NDK. It’s at this point the confusion caused by Google having released so many platform versions and NDK updates, in such a short time, raises its ugly head. Various Google searches, looking for clues as to whether NDK content should compile within Eclipse created an impression that such code didn’t actually compile within the IDE and that you had to drop out to a command line to compile such each time you needed to. Other sources however, seemed to indicate that NDK code could in fact be compiled from within Eclipse. A very confusing situation, not made any clearer by Google’s own build instructions.

I spent about 4 weeks (in my spare time) trying to ensure environment variables were correct, uninstalling and re-installing various packages, Eclipse plugins and even Motorola’s own version of the Eclipse environment which intends to take the pain out of the process by installing everything for you! But still the NDK content wouldn’t compile from within Eclipse. I even tried installing the OSX versions of everything and had no luck there either.

Eventually I attended a Motorola MotoDev event in London, and after hassling a support technician several times, I was able to determine that NDK content should be able to compile from within Eclipse, but as luck would have it, their demonstration machines weren’t configured to support NDK development on the day… So no luck there finding the cause of my problem.

Any novice developer would have probably given up weeks ago, this is a shocking state for an ‘OS SDK’ to be in.

I eventually determined that the issue I was having was due to the most recent updates to the NDK SDK, apparently Google had changed the directory structure for r5 from r4, so a third party plugin enabling compilation of C/C++ code within Eclipse wasn’t working. What didn’t help with the confusion however was that the plugin’s developers were reporting having fixed it to work with r5, so why wasn’t it working for me? At the point of giving up I realised that I was using the newly released (at the time) r5b release! Oh my! Even a subversion change had also broken the C/C++ plugin! All of this chaos was compounded by the odd behavior of Eclipse which would crash, show dialog errors and generally had a difficult time doing its job as an IDE.

Google don’t seem to provide links to previous versions of the NDK on their site, but I was able to download other versions by guessing and manually editing the URL for the current SDK version to access the others.

At this point I gave up with Eclipse, it seemed unstable, and I’d already spent over 4 weeks (admittedly not full time) trying to get a tool that should increase productivity to work and I just had to get on with something productive or call it a day for Android. I’d have to go back… Back to the Command line!!! (cue BTTF soundtrack).

I should have done this in the first place. While feeling very retro 1990s, a similar ‘hacked’ environment to home brew Nintendo Gameboy development kits (where only minimum tools and no useful debugger were available), I was finally able to actually get on with some actual development!!! I’m now in a situation where I can compile and run code for Android, then take the app specific code/assets and rebuild them to run on iOS, which is pretty cool and lets my aging MacBook Pro take a rest during the grunt work.

Following are the notes I made for myself, regarding the fundamentals of command line compiling for Android, some of you might find them useful:

Android Command Line Building

The cygwin command line won’t see the ‘android’ command even though it’s in the path, needed to explicitly include the .bat extension.

To begin use cygwin to init a project for first time use with ->

android.bat update project -p .   (note the trailing . is the project path param)

Then use the cygwin prompt to do building (from within jni project folder) ->

ndk-build

The above compiles the C/C++ code into a .so library file.

Then need to compile the Java components and create the .apk (zip) file for installing on a device with this ->

ant debug

To deploy the resulting apk to a device use this ->

adb install -r bin/xxxxx.apk (where xxxxx is name of resulting package name, see the output from the ant stage, remember to include -debug part of filename)

I’ve not tested but the following may launch the package, I tend to launch the app directly on the device itself ->

adb shell am start -n com.example.yyyyy/.ActivityName (where yyyyy and ActivityName match same in app)

When I need to uninstall an app, possibly due to a certificate error (due to changing dev machine) use -

adb uninstall com.example.yyyyy (which is the Java path for the app).

Apart from adding the Ant and the Android tools folders to the PATH environment variable, the only other env variable I had to create was -

ANDROID_NDK_ROOT which was set to c:\android\ndk in my case.

To avoid the certificate error when developing on several machines it is possible to copy a ‘debug key’ from one machine to another.

The key should be in a store, debug.keystore which might be located in ~/.android/ directory (This is within the User folder on Windows).

I hope something from the above notes might save someone a few hours searching the Internet!

Posted in Android | Leave a comment

Softography

Just a note to flag up that I’ve finally managed to get my Softography (games I’ve made list) up to date, see the ‘Softography’ link above for the details.

Posted in Uncategorized | Leave a comment

Windows 8 Announcement

So Windows 8 is now official, and includes support for both ARM and x86 code. Engadget have some excellent coverage of the announcement event, including an initial video of the OS in action.

http://www.engadget.com/2011/06/01/microsoft-reveals-arm-powered-windows-8-prototypes/

First impressions are good, the Metro interface has evolved since Win Phone 7, with some clever tricks such as pulling in from the border of the screen to bring background tasks to the fore. However I can see this causing chaos for some game controls that stray too near the border of the screen. The large tile area per app allows for widget-like behaviour and information to be presented which I liked.

‘Classic’ (traditional windows) mode and the Metro interface switch near instantly, allowing the user to run their existing Win32 apps, but I don’t get the impression that a single app can be made to run on both (Metro & classic), at least from what’s been shown so far. However apps are built to run on ARM and x86 platforms using the (new?) SDK.

So is the Metro interface a layer running on top of windows, or is it more closely integrated into the OS as a whole? Is DirectX available for Metro apps? Will we be forced to use a silly language (C#) to implement Metro Apps, using managed languages as done on WP7? I’d really hope not, I’d like to port my C++ Game Engine tech over to the Metro interface.

There’s a Build event scheduled for September, so maybe more will become clear by then.

Posted in Metro, Windows | Leave a comment

Hello world!

Hi There!

I’m new to WordPress, so give me a few updates to get used to this!

My intention is to keep a Games Development Blog, with a focus on my Indie games development projects.

In general I don’t follow blogs myself, but I have found them really useful when doing an Internet search for tips and tricks for the various problems I’ve had with my projects. My intention is to give a little back, updating on my discoveries so others might find them from a similar search.

Also I hope to make the public aware of my varoius projects. It’d be nice if someone was aware of a games release before it hits an app store and maybe I can get a little feedback before release too.

With luck I’ll try to post a few updates per month.

Gavin

Posted in Uncategorized | Leave a comment