Dart Canvas

I entered the Github GameOff at the start of the month and forgot all about it, The GameOff is a hackathon for the month of November that requires participants to create web based game. Seeing as I would like to learn some of the principles of game design I thought I would proceed anyway in my spare time with my entry. Since I have been experimenting with Dart I decided that it would be a good place to start.

 

GitHub GameOff 2012 – Theres still time !

The Basics 

I have never used canvas in anger and decided this would be my start point for my Game/Application (of which I still have no idea what it will be). There are a lot of tutorials available for canvas and HTML5, however most of them will be in Javascript they can be easily ported to DART. Check out the Mozilla Developer Network for some really good tutorials. I like to write about the work Iv done on my blog especially when its new to me, as I find it helps secure the new concepts by writing about them and also hope to share my experiences.

Getting Started 

canvas.html

Ok. So your ready to start and you have created a new DART project. Open the .html page and add a canvas element to the document (see example)

<canvas id='canvas' width='450' height='450'> </canvas>

You can add a fallback element below incase the browser of the user doesn’t support canvas. However this should be bare minimum to run in chromium.

canvas.dart

Open the DART file. I created a new class for my application called Game. Feel free to name your class whatever you wish

It is important to understand the two main elements we will be working with.

CanvasElement – This is the element in which all the drawing data will be rendered. This correlates to the element you specified in your html.

CanvasRenderingContext2D –  Implementation of CanvasRenderingContext this is the class that will allow you to draw the shapes onto the #canvas surface.

Declare both of these variables at the top of your class like so

CanvasElement canvas;
CanvasRenderingContext2D ctx;
int WIDTH;
int HEIGHT;

Now its time to set these, you can do this in the initialisation of your class, However I put this logic in an init() method

canvas = document.query('#canvas');
ctx = canvas.getContext('2d');
WIDTH = canvas.width;
HEIGHT = canvas.height;
player = new Player(ctx);
requestRedraw();

The observant will notice that the code above calls request redraw this will be vital in maintaining an animation loop later in the tutorial. The only logic in this method for a basic implementation will be

window.requestAnimationFrame(draw);

In this call to requestAnimationFrame you pass in the method that you wish to use to draw your scene. In my example this is called simply draw. For now create an empty method

void draw(num _){
//Logic will be added later
}

You now have the canvas element and drawing context for your app available for use. Lets start drawing.

Drawing on Canvas 

Now you have set up the structure for you application, Lets look at how you can draw basic shapes onto the canvas.

Again place this logic wherever you prefer in your application as long as its execution comes after the above steps. I created a new method called createCanvasBg()

void drawCanvasBg(){

ctx.fillStyle = ‘black’;

ctx.fillRect(0, 0, WIDTH , HEIGHT);

}

Now in the draw method you implemented as part of the set up, add a call to drawCavasBg() in your method body. Run the application making sure you have kicked off the initialisation code in the main execution block. If successful you should see that you now have a black box on your screen. Not very exciting I know !

Create a new method(createSquare) or add logic to your execution block that will create the new square on the screen. Follow the implementation below


ctx.fillStyle = 'red';

// ctx.fillRect(x,y,height,width)
ctx.fillRect(100, 100, 50 , 50);

In order to draw a circle add the following instead of fillRect use the arc function.

context.arc(x, y, radius, 0 , 2 * Math.PI, false);

Run your application again and you should see a nice red square added to the canvas.

What you should have at this point

Conclusion

I hoped to provide a very very basic tutorial of canvas with dart as often drawing and graphics in the browser can intimidate people. This is how I got started and I was able to see what’s possible, I am currently contemplating making a simple platform game with a similar structure. Time allowing I hope to update this tutorial series as I go sharing my new experiences in the area. Next we will look at adding a player to the canvas that we can control using the arrow keys. This will be the hero for our game. I have also started looking at Dart Box2D a popular Javascript physics engine that has been ported to Dart, which I would suggest looking at if you havent already Seth Ladd from Google Dart Team has a good series of tutorials on his blog for this also.

Dart is a great language I am really enjoying developing with it and hoping to get more involved in the open source development of the language working on a few bugs at the moment. Just trying to find time out with work can be very difficult. I hope  you find this series useful I will continue to update my progress of my Github GameOff submission as it evolves (if it evolves :S)

Dart Touch

For those of you that have been following my blog you will know I have been experimenting with Dart and the DOM. I have made a couple of simple example applications as learning aids such as PicsAPuzzle and more recently the Conundrum word game.

During these experiments I battled with touch interactions on tablet/mobile devices, so I decided to make a library that allows you to easily add User Interactions to any html element on your page.

What is Dart Touch ?

The idea behind dart touch is that it will apply vey basic styling and actions to any html element, thus meaning you have to write less code and be generally more productive when creating interactive content

How to use it ?

dart touch is designed to be very easy to use and very flexible in terms of implementation. Previously to create a touch compatible drag n drop element would require you to map these event handlers and code each of the related methods.

 tile.on.dragStart.add(_onDragStart);
 tile.on.dragEnd.add(_onDragEnd);
 tile.on.dragEnter.add(_onDragEnter);
 tile.on.dragOver.add(_onDragOver);
 tile.on.dragLeave.add(_onDragLeave);
 tile.on.drop.add(_onDrop);
 tile.on.touchStart.add(_onTouchStart);
 tile.on.touchMove.add(_onTouchMove);
 tile.on.touchEnd.add(_onTouchEnd);
 tile.on.touchLeave.add(_onTouchLeave);
void _onDragStart(MouseEvent event) {
 }
void _onDragEnd(MouseEvent event) {
 }
void _onDragEnter(MouseEvent event) {
}
void _onDragOver(MouseEvent event) {
}
void _onDragLeave(MouseEvent event) {
}
void _onTouchStart(TouchEvent event){
 }
void _onTouchEnd(TouchEvent event){
 }
void _onTouchMove(TouchEvent event){
 }
void _onTouchLeave(TouchEvent event){
 }
void _onDrop(MouseEvent event) {
}

This requires 9 methods to be individually coded to do very simple and basic actions to allow elements to be dragged and dropped with other items. With dart touch all you require is to add the css from the base.css file to your own projects css file and set the interaction you require via the setMethod from dart touch. example below

touch.setDragNDropTouch(element);

Passing this element into the set method will set all those interactions we looked at earlier for you, this only provides a basic implementation of all interactions if you want to further customise the Event Handlers you can create you own and add it to the basic implementation. Example

card.on.drop.add(_onDropCheck);

This doesn’t overwrite the functionality of onDrop it simply adds further functionality.

Conundrum 

My latest Dart experiment Conundrum is an extremely difficult word game, simply as there are no hint’s yet. But basically rearrange the letters to spell the 9 letter word. Conundrum is made with dart_touch to show how the interactions can be used and extended. You can view the demo here

Conundrum Example

Conclusion 

Dart Touch is very young at the time of reading exactly one day old !!! It currently only supports drag n drop actions, I plan on adding more in the future when time allows out with my day job. The code is fully open source and I would love people to contribute, fix bugs and help me out.

Source Code – https://github.com/cmac458/dart_touch

If you want to chat about it please get in contact on Google Plus or Twitter @cmac457

Thanks for reading, hope you find dart touch helpful !

 

DART – MergeSort

Since I have started using DART many people have asked why I like it so much. As a Java developer at my roots I appreciate being able to code in an environment I am comfortable in, I believe this also makes us more efficient as programmers. As proof to some colleagues I decided to take one of the main sorting algorithms in a CS Grads tool belt the classic Merge Sort and code it in Dart as an experiment to show how similar it is.

class Sorting {

var unsorted ;
List placeholder;

var length;

List sort(List values) {
this.unsorted = values;
length = values.length.toInt();
placeholder = new List(length);
mergeSort(0, length-1);
return unsorted;

}

void mergeSort(low,high){

if(low < high) {
var middle = ((low+high)/2).toInt();
mergeSort(low,middle);
mergeSort((middle+1), high);

merge(low,middle,high);
}
}

void merge(int low, int middle, int high){

for (int i = low; i <= high; i++){
placeholder[i] = unsorted[i];
}
int i = low;
int j = middle+1;
int k = low;

while (i <= middle && j <= high){
if (placeholder[i] <= placeholder[j]){
unsorted[k] = placeholder[i];
i ++;
}else{
unsorted[k] = placeholder[j];
j++;
}
k++;
}

while (i <= middle){
unsorted[k] = placeholder[i];
k++;
i++;
}
}

}

As you can see the above code looks very similar to the Java equivalent. The next step was to create a test package to test the logic of the merge sort. Dart has the very handy unittest.dart package that helps us create JUnit style tests that can be run via the editor or via the command line.

import '../packages/unittest/unittest.dart';
import '/C:/Users/O325882/dart/Sorting/web/Sorting.dart';

void main(){
Sorting sorter = new Sorting();
test('Merge_Worst', () => expect(sorter.sort([5,4,3,2,1]),orderedEquals([1,2,3,4,5])));
test('Merge_Best', () => expect(sorter.sort([1,2,3,4,5]),orderedEquals([1,2,3,4,5])));

}

As everyone can see there are many similarities between DART and more OO focused languages specifically Java. Making it very easier for Java devs to move into doing funky things with the browser and embrace HTML5 technologies.

Touch Events HTML5 – Drag n Drop (DART)

My last post focused on my simple app PicsAPuzzle which can be viewed here (picture below)

PicsAPuzzle

Iteration 1 of PicsAPuzzle

The purpose of the app was a quick learning project for me become more comfortable with Dart. The biggest criticism I had with the project was that I couldn’t play it on my mobile device or iPad. This entered me into find out how to add interactivity via touch events to the html web app.

HTML5 Touch Events 

The HTML5 specification may be huge and still growing but there is a lot of handy features that you may not know exist. Touch Events are one. I wanted to implement Drag and Drop the same way I could with a mouse but using my finger instead. HTML offers onDrag and onDrop event handlers for this. However with touch these do not exist. The three basic touch events are

  • touchStart
  • touchEnd
  • touchMove

There are more such as touchLeave but these 3 are all you need for most tasks. A touch event has 3 list each that contain the number of touches ie fingers on the screen at the time of firing the event.

  • touches
  • targetTouches
  • changedTouches

You set touchEvents the same way as any other kind of event (example in Dart)

tile.on.touchStart.add(_onTouchStart);

Points to consider when using TouchEvents

  1. Zooming – On mobile devices moving multiple fingers about the screen can result in the webpage being zoomed in/out. You may want to prevent this. I recommend doing so for drag n drop operations, You can prevent with following meta tag :
    <meta name="viewport" 
      content="width=device-width, initial-scale=1.0, user-scalable=no">
  2. Scrolling – Especially with Drag n Drop interactions moving your finger around a screen is the default way to scroll a page on mobile devices so using the following code in you handler methods will prevent such interactions with the browser
    event.preventDefault();

Implementing Drag n Drop 

So that covers the basics of touch event’s and how best to prepare your application for mobile devices. We will start looking at implementation of Drag n Drop. Code snippets have been commented to describe the logic without writing addition paragraphs on them.

onTouchStart 

This method works very similarly to the onDragStart/onDragEnter methods. You want to capture the element being dragged and apply some style to the element to indicate to the user that the element is selected and draggable.


void _onTouchStart(TouchEvent event){
//stop scrolling by default
event.preventDefault();
//capture drag target
Element dragTarget = event.target;
//add style to element to indicate its moving
dragTarget.classes.add('moving');
_dragSourceEl = dragTarget;
}

onTouchMove

The event is fired when the finger moves across the screen from its starting co ordinates. Tracking the finger until it stops allows us to simulate the mouse moving across the screen. What I did for this was to capture the co ordinates of the first fingers position and find out which element the finger was over, that way when the finger is removed we know the last place it visited.


void _onTouchMove(TouchEvent event){
//indicate to user element is in motion
_dragSourceEl.classes.add('moving');
//prevent all default behaviour ie Scrolling
event.preventDefault();
//Get the current x,y position of the first finger and find the element it is over
_dropTarget = document.elementFromPoint(event.touches[0].pageX,event.touches[0].pageY);
// If the finger is over an element indicate that in the UI
if(_dropTarget != null){
_dropTarget.classes.add('over');
}
}

 

onTouchEnd

The implementation of the onTouchEnd method will be identical to the onDrop method in the last tutorial I wrote – Getting Started : Dart. You are completing the same logic think of lifting your finger off the screen as depressing the mouse button. If you are unsure of the implementation you can look back at the last post here

 

Conclusion 

I still have some work to do in regards to the css styling as we dont have as many transition states with touch events I have to streamline the css to provide a smoother dragging effect. However this should get most people started with implementing their own Drag n Drop HTML5 web app. If you have any questions do post them I will try my best to answer. Im likely to be very busy im working on a new utility library to make creating cross platform interactions much easier, so will post progress on that or anyone interested in helping out can contact me here too.

[Update PicsAPuzzle responsive template is broken at time of writing so please be patient with it]

Thank for reading, Dont forget to check out PicsAPuzzle on Github I aim to create a few more small apps to experiment with different interactions. All constructive feedback is welcome.

Chris

Getting Started : Dart

Recently  I have been experimenting with Google Dart and HTML. After doing some web development with HTML5/JS I found the javascript files very quickly became huge and complicated pieces of javascript. I tried Dart in the hope that it could solve all my javascript woes and make development a little more familiar to Java. The following is a quick tutorial on how to create a small app with Dart.

View App

Getting Started

You can download the IDE and SDK from  – http://www.dartlang.org/

On the dartlang website you may want to look at some of the code samples one of which I used to construct this small application.

Opening the Dart IDE you should see its very similar to Eclipse.

  • Create a new Application File -> New Application or First Icon in Toolbar
  • Name the application
  • Select Generate content for basic web app content

Dart Editor will generate 3 files of interest <app_name>.css/html/dart

Pressing the Run Button (Play Icon) – you should see this

Dart generated sample code

Do as the App says and experience a nice transformation

Creating my First Application

I decided I wanted to create something fun and that could be incredibly simple and that I could gradually make more complex. I came up with a Picture Puzzle with the base goal of creating a small image split into tiles that can be re ordered to recreate the image.
I started with the Drag n Drop code sample supplied on the Dartlang code samples. Lets start with the HTML for the basic version of the app. I wanted a 3*3 grid of tiles for ane asy to complete grid. As an initial design we will hard code the tiles later as we get more comfortable we can dynamically add these.


<div id="container" class="board">

<div id=”tiles”>
<div id=”tile1″ draggable=”true”></div>
<div id=”tile2″ draggable=”true”></div>
<div id=”tile3″ draggable=”true”></div>
<div id=”tile4″ draggable=”true”></div>
<div id=”tile5″ draggable=”true”></div>
<div id=”tile6″ draggable=”true”></div>
<div id=”tile7″ draggable=”true”></div>
<div id=”tile8″ draggable=”true”></div>
<div id=”tile9″ draggable=”true”></div>
</div>

</div>

Hopefully this is self explanatory, each div tag will represent a tile and each tile has to have the draggable attribute set to true so that we can move them. Easy !!

The Dart code now, this is the new exciting stuff. You have your tiles parent element that contains all the pieces of the puzzle. View the full dart code here I will only explain main snippets below to save this being an enormous post!

Adding Drag n Drop functionality

There are a few Element event handlers that have to be set to make our tiles drag n drop nicely.

  1. on.dragStart
  2. on.dragEnd
  3. on.dragEnter
  4. on.dragOver
  5. on.dragLeave
  6. on.drop

It is possible to code drag n drop much simpler with basic start/end/drop functions but this way we can make it perform much smoother. The code here is very similar to the drag n drop HTML5 sample so take a look at that for a good base implementation.

onDragStart Event


void _onDragStart(MouseEvent event) {
//Get the tile being dragged by user from the MouseEvent
Element dragTarget = event.target;
//add css to show the tile is in motion
dragTarget.classes.add('moving');
_dragSourceEl = dragTarget;
event.dataTransfer.effectAllowed = 'move';
//let the browser know which element is moving
event.dataTransfer.setData('text/html', dragTarget.innerHTML);
}

The above method initiates the dragging telling the browser we are moving dragTarget and assigns a custom css to show the user that the item is in motion.

onDrop Event

void _onDrop(MouseEvent event) {
// Stop the browser from redirecting.
event.stopPropagation();
// Don't do anything if dropping onto the same column we're dragging.
Element dropTarget = event.target;
if (_dragSourceEl != dropTarget) {
// get the image of tile we are dragging.
var bg_image_old = dropTarget.style.backgroundImage;
//Swap the images
dropTarget.style.backgroundImage = _dragSourceEl.style.backgroundImage;
_dragSourceEl.style.backgroundImage = bg_image_old;

To see more of the methods and CSS behind the drag n drop please check out github
This simple example covers the main aspects of dragging and dropping elements using DART and shows some of the syntax you can expect to use in DART. The next problem was assigning images to each DIV in a random order.

Dart has a Maths package you can import straight into your project, those familiar with java will definitely recognize these functions. To use the Math package add the following to the top of your .dart file.

#import('dart:math');

I stored all my tiles using key value pairs in a Map


tiles = new Map();
tiles[1] = "url(img/pgriffin_tiles_01.png)";

This will allow me to quickly access each image and map the images to individual tiles.Next I needed a way to assign a pictures to tiles randomly, this is done effortlessly with using a random number generator, See code below:


var rand = new Random();
var num = rand.nextInt(10);
var imgUrl = tiles[num];

This generates my numbers 0-9 and I keep track of what has been generated to assign all the images in the map to a tile div.

Those familiar with object orientated languages java,C# will recognize this syntax and function. Which is what I think makes Dart such an appealing language everything is familiar,easy and accessible.

this covers the most interesting parts of the code in this very simple demo app designed to help beginners get to grips with Dart. I will post link to main application running soon. Here is a picture for now

After stage 1 approx 1 – 2 hours work. With a few Bootstrap/Css bells and whistles

Conclusion
So far I am really enjoying developing with DART, It really does take some of the pain out of javascript and has a good IDE and plenty of samples and tools to help you get started. I will continue to post progress of my application as I grow more comfortable with the language. Hope this has been helpful or atleast a good preview of what DART offers.

This Week – Nexus 7, Apps and new ADK

This week has been a busy week, I decided to start some Android Development again and I finally got my Nexus 7 tablet.  Let’s start with the Nexus.

Google’s Nexus 7 Tablet

I own an iPad that I won but other than that I have always owned Android devices and favored them over Apple’s due to the fact I can easily customize and develop applications for them but had to admit the iPad was probably the best tablet on the market albeit overpriced.

The Nexus 7 changes this, starting at £159.00 this tablet is perfect for EVERYONE and that really is the key. The new Android 4.1 Jellybean OS is quick and smooth, the UI is simpler and getting more and more intuitive to use to the extent that I now prefer it over Apples equivalent.  The display is bright and crisp, movies look stunning and apps look better than ever too.  So far I am very happy with my purchase the 7″ isnt too small as I had previously feared when I moved from the iPad, If anything the 7″ feels much more natural when traveling.

The Nexus 7 : Sleek

Apps for Nexus 7

I needed some new apps for my tablet so this forced me into the bowels of the play store where I found a few games that you may not have came across but are definitely worth a download. But first one app that came with the Nexus was Google Now and its really impressing me.

….
Google Now
I launched it and it told me the weather based on my current location, as you may expect this wasn’t a big deal but then I went to work and when I arrived Google now had taken the trouble to work out when the trains where coming to take me home,  how long my journey would take driving, traffic density you name it. It comes with the Nexus if you haven’t played with it please do its a great application.

Major Mayhem 

Adult Swim Games created this side scrolling shoot em up which is one of the best games I have played on the Android platform to date really very addictive give it a try. There are plenty of levels and even replayability with new guns and armor to be unlocked and old scores to be broken. I really like this game one of my favorites on the Android platform.

Dead Trigger 

Zombie Survival game come FPS, great graphics and looks great on the Nexus worth a try. Havent played too much of it yet, All I can say is that the graphics are really smooth and console quality and controls take some getting used to but really nice.

Appspiration – Backwards Compatible ICS Apps

Since my last post I have been trying to come up with a new idea for an app, something that isn’t just going to get a few downloads and fade away. This is one of the hardest things to do outwith a day job, there are few processes left in life now that can still be improved and ways to make things easier often make things harder.

Seeing as I am completely dry of idea’s I decided to have a play around with the ICS design guidelines and try out some UI designs. When I realized that features such as ActionBar and ViewPager arent compatible before Android 3.0. It was during this time that I found a few widgets that help achieve similar effects with earlier versions of Android and would encourage anyone to use them.

This mans GIT should provide all – https://github.com/JakeWharton

Look for ActionBarSherlock and ViewPagerIndicator both of which can transform any UI.

 

Since finding both of these I have yet to find my next idea but I am still  looking or if anyone has any requests let me know I can see if I can help.

 

 

And the Winner is ………?

Been a while since  I posted anything been very busy and had to put some of the Android Project to the side for now, my test app still on the Android market but it has served its purpose and its days are very much numbered.

More recently I have been looking into the prospect of try to create a rich web application with the look and feel of a desktop style app but is cross platform compatible. I have been mixing an matching many different libraries and after settling on HTML5 and JS as my technology stack I have opened up a Pandora’s Box of possibilities. While HTML5 is excellent and ticks the cross platform box their are so many libraries out their its hard to choose what to use, So I put together a little guide of my experiences.

Choosing UI Framework

Contenders :

  • JQuery Mobile – It is very possible to build a web app for the browser using JQuery Mobile, as shown by their documentation. It is very simple and easy to pick up however I wanted a more sophisticated dashboard style UI and I didnt think JQMobile would offer me this straight out the box. However if I was looking to build a mobile client I would probably use JQMobile as it was extremely straight forward to pick up and use and would reccomend using for a Mobile version of a web app you might want to create.
  • GWT – I have been developing with GWT for a few years now and loved its simplicity however during this time I have found its core components fairly basic and using SmartGWT helps to upgrade your application. All the apps I have created with GWT just don’t have that cutting edge that many modern web apps today can offer and so GWT was my least likely contender.
  • JQuery UI – I liked the components they offer and how I could easily style them using theme roller JQuery’s own tool for creating nice looking themes for web apps. Again the implementation was standard and easy to pick up nothing nasty. Good framework for a web application with plenty of documentation and as with any JQuery Library a huge community following.
  • Twitter bootstrap – I had not came across this until someone pointed me in the right direction and instantly I loved it, quickly and effortlessly I was able to modify the template from initializr and get a Rich UI up and running fully HTML5 and fully beautiful. The core components look great the set of components offered isn’t huge but has most that you require, it’s easy to add custom components and style the way you like. Documentation on the site is great and provide a excellent start point.

Winner = Twitter Bootstrap

The important thing when choosing what framework you will use is to have a play around and see what you are comfortable with, for me coming fresh to HTML5 and especially JS development of UI’s. Something that I could pick up and play with was key and both JQuery UI/Mobile and Bootstrap offered this. Bootstrap fitted my need as the template provided me the basis I had imagined for my application and was super quick to create using the initializr template, which I recommend using.

 

These are my experiences with the above technology stacks and please post if you have faced anything different. Next post I will be choosing my MVC framework which I can tell you hasn’t been as straightforward as you may expect.

Android Market – Work In Progress

Since my foray into Android development and taking a much more keen interest in the various app markets that exist and how they function and perform from a developers perspective. This post aims to vent my frustration’s and hopefully incite some conversation into the future of the “app store”.

Paid vs Free apps

Free apps on the Android Market seem to be the way to go with the vast majority of Android users unwilling to pay for an app, there have been many studies recently stating the huge increase in price of apps on Android compared with iTunes which the top 100 apps will cost you 2.5x more than the top 100 on iOs. The increase in price seen may well be because developers hike the prices up on paid apps to make up for the drop in downloads they will receive so they effectively try to level the playing field but in the long run this is damaging the market. Another Study recently stated that Android developers will make more money from the Amazon Store than the Android Market, this is no reflection on Android users as I believe most will pay for quality apps the same way iOs users do but the fact is it’s just not as easy as proven by Amazon Market success, having a credit card associated with your account lowers the barrier of entry significantly making it much more attractive for users to click and go. On the other hand most Android users never have a need to associate a credit card with their Android account so they effort required to enter card details for a $1 purchase seems like too much work. This has to change Ad Revenue is low for a developer users will slate apps with many ad’s or intrusive ad’s rightly so but developers have little choice and what keeps top developers in a Market when there’s another one that’s making developers more money (apart for Objective c of course)

Next Steps – In my opinion 

Card Details – When you buy an Android phone it requires you to create a gmail account so why when creating this account can the user not be prompted to supply credit card details it doesn’t have to be forced it can be optional but state that it will improve user experience and that way improve Market revenue and developer revenue in one fell swoop which I believe it would.This may become a reality once Google Wallet takes off and they fix the issues, I haven’t bought a Android device since the Galaxy S so don’t know if this has already been implemented  but would love to hear peoples thoughts on this.

Other Options

Donations – From talking to a lot of developers I know that most only charge for their software to make a living if they couldn’t they wouldn’t but after spending a lot of time on a project it’s nice to be rewarded for that. I know that you can implement donations within your app but I believe they aren’t viewed in a good light may be due to security of payment I don’t know but if only Google could provide a section similar to free or paid but where developers could post their apps for a donation. Just an idea that could maybe work would love to get some developers views and user’s views on this.

XXX – Many have probably noticed that many apps on the market are Adult/Sex related and that they soon shoot to the top of pages quickly leaving many useful apps in the shadows as clearly sex does sell now all I ask is for some kind of filter that will section these apps in there own section. As  a Market we are still a bit behind iTunes who faced a similar issue with Fart apps and they had to do something about this so I believe Android would gain from doing something similar.

 

In conclusion the Android Market is still young and got a lot of maturing to do, but there are still a few things that could be better. We really have to keep the focus on keeping developers happy on the Android platform and securing their backing as its the software that will drive the future of the platform.

Migration from AdMob to Leadbolt !

Thought I’d give an update on how the swap of ad providers has gone so far after a few days.

I have almost migrated all my Ad’s onto Leadbolt app banner from Admob and I have seen interesting results so far, app banner advertises an App most of the time and you don’t get paid for clicks but conversions and the EPC seems to be substantially higher than Admob. At the moment I still have some users on the Admob Ad’s perhaps they haven’t yet updated the app.

 

Here’s a quick snap shot of current proceedings

Admob – I seen a rise back to the highs of $0.03 cents woohoo 

Only showing the last 4 days as that’s when changes went in

 

 

 

 

LeadBolt – Note following figures are from last 2 d

ays, with $0.18 cents, and $0.0.7 cents from the two coversions

 

 

 

 

So overall first few days have been pretty good considering the rates that Admob has offered,I will keep everyone posted on whether this continues. In the meantime I would recommend signing up and trying Leadbolt for yourself you can do this via this refferal link – Leadbolt Ad’s

 

Good Luck – I have started work on latest project so will be tied up with that for some time will post as soon as time frees up with an update on the Leadbolt platform.