You Are Here:

Community: Blogs

Widget Workshop's Forum Nokia Blog

Game On (down the widget rabbit hole)

mobileradicals | 25 August, 2007 12:56

Breakout cloneSince announcement of the blog, we have been having conversations on what to develop as our first widget. Our initial thoughts were to develop some form of photo viewer for m3Dcam, feeding in to the latest photos submitted to the site. This represents the functionality of a typical widget (accessing RSS text/image feeds).  However, we’ve decided it would be more interesting (for us at least) to develop a widget that is not represented by those currently available; a side scrolling arcade game. When we last checked, the only other example of a real-time (RT) game was a Breakout clone (screenshot shown right).

There are a few factors that might explain the lack of this type of game:
  • The WidSets framework is compatible with a wide-range of mobile phones (most phones supporting MIDP 2.0/CLDC 1.0+). This includes fairly basic phones that are now a few years old, so they might be lacking in resources that real-time games are so keen to consume, such as processor cycles and memory. WidSets widgets are distributed centrally, and are only made available for download if they are deemed as robust and generally suitable for public use by the WidSets team. A greedy widget could potentially compromise the stability and responsiveness of the Java ME based WidSets framework, so may be rejected on this basis.
  • Creating a real-time game is not a trivial undertaking on any platform and the WidSets framework is tailored more toward applications that make use of internet connectivity rather than (real-time) games.
So whilst most widgets are understandably oriented toward accessing internet information and services, we think there’s a case to be made for more diverse (and trivial) widgets, such as games. So why use the WidSets framework instead of creating a Java ME game? The answer is simple; distribution. Independent developers, like us, can create widgets which are catalogued and available for download (via the library widget) alongside those created by larger, more established companies/organisations and it’s more likely a widget will be downloaded on merit rather than because of a connection to a popular IP, brand, or due to marketing/affiliation etc. Whilst we intend our game to be single-player affair, we could take advantage of some the inherent connectivity of WidSets by perhaps implementing a shared high-score table.

Having decided on creating a game, the next step is our design criteria. Different phones have different performance characteristics. The three main factors which will determine how level our playing field is are; screen resolution (1), input mechanism (2) and framerate (3). So, with this in mind, how are we going to keep the experience consistent across different phone models, which is necessary in order to compare the scores of different users?
  1. In order to cater for different resolutions, we’ll use graphics primitives such as lines, rectangles and triangles. In this way, we can easily scale the graphics in proportion to the display dimension in way that’s not feasible using bitmap graphics. Instead of considering this as a limitation, we’ll try and use this as a feature by recreating a retro vector game look and feel. Drawing graphics primitives is also generally a lot faster than drawing bitmapped graphics.
  2. Different phone models have different keypad layouts, ergonomics, number of keys etc. We’ll accommodate for this by using a single button interface to control the game. Nokia themselves are proponents of single-button games and have produced an interesting article entitled Turn Limitations into Strength: One Button Games.
  3. Anyone who remembers playing an old real-time DOS game with no framerate limiter will appreciate how machine performance can affect a game’s difficulty. To mitigate for this, we’ll base the movement of our game objects on the time difference between frames (delta). Essentially, we’re scaling movement in the same way that we’re scaling our graphics.
One last consideration: as the WidSets framework is currently based on CLDC 1.0, there’s no floating point support in Helium script (i.e. floats or doubles). We’ll make use of fixed-point arithmetic to overcome this.

In the next blog, we will start building up the basic framework for the game, posting source code along the way (Helium script).

Start of the Widget Workshop (or taking the red widget pill)

mobileradicals | 16 August, 2007 19:40

Welcome to our (Paul Coulton and Will Bamford’s) new Start2Finish blog called Widget Workshop. This will be an evolutionary series of blogs revealing our experiences developing a range of widgets from a standing start of no prior experience. In other words, we are 'Widget Virgins'. We say evolutionary, as we don’t really have any firm plans of what we are going to develop and principally want to explore as many of the capabilities as possible and hopefully demonstrate the power of the technology.
Besides the basic intro to the project we thought we would start by clearing up the difference between WidSets widgets and S60 Widgets (Web Run-Time). There are obvious similarities in terms of ease of distribution and likely use, but we also want to explore the differences between these technologies from a developer's perspective, so let’s start with a brief overview of each technology (a more comprehensive discussion/comparison is available here and here).
WidSets Widgets
This is essentially a Java-based platform. Widgets can be developed using the WidSets Studio, a very easy to use online visual editor for developing simple widgets in a matter of minutes. However, these widgets are essentially limited to picking up RSS feeds (for displaying text and photos). To create custom functionality, developers need to delve into Helium script, a ‘Java like’ language for controlling all aspect of a widget’s behaviour. We need to download the WidSets SDK to create Helium-powered widgets.
S60 Widgets
These are lightweight mobile browser applications developed using familiar, standards-based web technologies such as (x)HTML, CSS, JavaScript, and even advanced AJAX. In order to run S60 Widgets, the phone needs the run-time installed (future S60 phones will have this installed as standard).
At the present we will be developing WidSets widgets for the workshop, although we hope to cover both in the future when we get access to a suitable phones for development and/or Nokia’s Web Run-Time SDK is released.
We hope you will help, hinder, make suggestions for widgets (preferably fun ones) or just observe our efforts.
Cheers
 
 

Rate This

 
 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZidentifierQSxhttpE3aE2fE2fblogsE2eforumE2enokiaE2ecomE2fsummaryE2ephpE3fopE3dPostE4cistE26globalArticleCategoryIdE3d1E26pageE3d6X qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZBlogContentQ qdcZtypeQUqfntypeZCommunityContentQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qfnZtypeQUqfntypeZBlogContentQ qfnZtypeQUqfntypeZCommunityContentQ qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZBlogContentQ qrdfZtypeQUqfntypeZCommunityContentQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ