Monday, August 31, 2009
One of our rare political posts on here. Both Olli and myself try and avoid them as we don't speak for each other when it comes to things like politics and religion, and this is meant to be a blog about Flash and our tinkering with it. But sometimes things need to be vented.

The whole ethos of the political system in Britain, and most Western countries, is that you vote for someone to represent your views in Parliament / equivalent. At a maximum every 5 years ( There is no fixed term government in the UK, it's up to the Prime Ministers disgression ) we have a general election where every "seat" in the House of Commons is voted for. The only other time a seat can be contested is during a by-election, which usually comes about due to the current MP ( Member of Parliament ) being taken ill and unable to carry out their duties.

In Britain we don't have the power to "recall" a MP. Recall is basically a vote of no confidence in a MP where through voter power they can lose their seat and a by-election can be called to replace them. Ironically we do have the power to push through a motion of no confidence, but that's not in our hands, that's only available to the opposition parties. If a motion is put forward then the majority of the house of commons has to vote for it for it to be passed. If the government of the day has an overall majority, then unless a lot of it's own members rebel, it's not going to get passed. I can't see many MPs voting to lose their jobs on morale grounds.

In effect, there is no way through voter power to remove either one single MP, or a whole government, until the current Prime Minister sets a date for a general election, or the parliamentary term runs out.

Earlier this year we had the expenses row. MP's more than playing the system, they were effectively stealing from the British public, the tax payers, the people who put them into power basically. They've stolen our money, and we can do nothing at all about it. Nothing.

One of my favourite quotes about it was from the Tory MP Alan Duncan, describing the situation after the expenses row broke, "You have to live on rations and you are treated like shit.". This is someone who in the last six years has claimed £127,658 under the second home allowance. Of course he apologised after wards, explaining it was just a joke. Mr Duncan, you jokester you.

No way to get rid of these people. Unreal.

What can happen though is that public opinion can turn so badly against an MP that they look to stand down at the next election ( As there is no way they can win ). This isn't really falling on the sword for things like claiming extensive mortgage payments on a property which is already paid for and claiming it was an oversight ( That's not even me making it up to justify my point. Or happened just the once ).
Come the next general election a lot of MP's will be standing down due to the expenses row, so up until then they will still be representing their constituents in parliament. Why aren't these people quitting on the spot and enabling a by-election when they have lost the confidence of the people they are paid to represent ?

Meet the golden parachute payment. This little beauty is in place to "ease" MP's back into life outside of politics. This is a sum based on age and length of time as a MP. The best thing ? The first £30,000 is tax free. Recently it's been agreed that the amount of the salary they receive will increase. Every 3 years the Review Body on Senior Salaries ( SSRB ) reviews MP's pay levels. This same review body recommended that only MPs who have lost their seats at an election, or due to boundary changes, should receive this payment. If you've resigned, you shouldn't get it. Just to show how toothless this body actually is, this recommendation has been overturned by a committee of MPs. Vested interest ?

Is it any wonder that MP's are going to stand down at the next election, rather than do the honorable thing and quit now.

Here's an interesting thing. In May 2007 BP ( British Petroleum ) signed a deal with Libya to embark on a sharing deal of any gas or oil deposits found in the country. BP gets a healthy 19% share, in return for a $900 million investment. It's been quoted that the deal could generate as much as £15 billion in revenue.
Now BP have had a rough time of it recently, their profits are less than projected over the last quarter. A mere $2.6 billion, with yearly profits being $25.6 billion. Hard times, when you consider how much they spend on exploration and still see profits like that. These numbers are just vast. This is the 5th largest company in the world.

21st December 1988 a terrorist bomb was detonated in Pan Am flight 103, with the bulk of the wreckage landing on the Scottish town of Lockerbie. In total 270 were killed.

On 31 January 2001 Abdelbaset Ali Mohmed Al Megrahi was convicted and sentenced to life imprisonment.

On the 20th of this month he was freed on compassionate grounds as he has been diagnosed with terminal cancer. He's gone home to die.

This has obviously caused an outcry from all corners, relatives of victims, the US government ( Including the FBI ), the British press, the British people as a whole weren't in favour of this ( See this poll taken in Scotland ).

Remember how we mentioned BP and it's deal with Libya. Letters have been leaked that implicate the release of al-Megrahi with that deal being ratified.

Here's a quote from Saad Djebbar, a lawyer who advises the Libyan government "No one was in any doubt that if al-Megrahi died in a Scottish prison it would have serious repercussions for many years which would be to the disadvantage of British industry". Pretty obvious which industry that comment was aimed at, unless there are lots of British businesses investing $900 million + in Libya.

Here's a quote from a letter from Jack Straw, Secretary of State for Justice, sent to Kenny MacAskill, his Scottish counterpart in December 2007.
"The wider negotiations with the Libyans are reaching a critical stage and in view of the overwhelming interests for the United Kingdom, I have agreed in this instance the [prisoner transfer agreement] should be in the standard form and not mention any individual."
In his defence Straw originally didn't want to include al-Megrahi in any prisoner exchange deal, but did a U-turn as can be seen in the quote above.

Six weeks after that letter was sent the deal with BP was finally ratified.

One last quote, from Saif Gadaffi, Colonel Gadaffi's son, "People should not get angry because we were talking about commerce or oil. We signed an oil deal at the same time. The commerce and oil deals were all with the [prisoner transfer agreement]."

I think we're all grown up enough to know that all governments do things for what could be deemed the greater good without informing us. It's just that when politicians are shown to have told lies to us, the people who put them in power, the people who pay their wages, that we should have the right to remove them from their posts. The BP deal could generate up to £15 billion. How much of that will come back to us the tax payers ( Going by figures from 2002, only 20% ) ? Has a person who was convicted of killing 270 people been freed for purely economic reasons, to help wealthy people become more wealthy ? And if so, it's been done in our name, and there is nothing we can do about it.

Squize.

Monday, August 31, 2009 3:02:08 AM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [3]  |  Trackback
 Monday, August 24, 2009
If you're a regular reader you'll hopefully know that when we moan or bitch about someone or something then it's usually 'cause we think it's justified. We don't just turn on anyone and everyone for the hell of it, or for the joy of stirring things up. Life's too short.

The target of my venom ? The latest article posted on mochi, "The work scheme of an independent Flash developer".

The author Badim has made a point of being open and honest with his figures in the past, which we've even linked to before. His constant openness has made him somewhat of a poster boy for the indie scene, he's living the dream for a lot of people, and he's not afraid to share his knowledge.

That's got to be applauded.

But his article, sorry, but there's just not one word I can agree with, and I'm amazed it's been passed fit for publication by mochi.

The low light for me is this quote:

"If you’re not naturally talented at art, the next issue to be resolved is where to get good graphics. The easiest, cheapest, fastest way is to use sprite sets. The most popular of them are the hits from consoles (Megaman, Zelda, Sonic). it’ll be convenient for you to find the right set for your future games. If you can’t find the sprite set you want or have something specific in mind, move to the next option."

( The next option being to pay an artist ).

If I've even got to explain the wrongness with that then this really isn't the blog for you, move along please.

These "Let's make money with Flash, it's piss easy and there's loads to be made" posts seem to be getting progressively worse. I've just re-read the article again to make sure, and I can't find any mention of the joy of creating a game. The creative process. The love that makes a game shine. The shit that should matter basically.

A very disappointing article which sums up what is so wrong with the indie Flash scene right now. It's great that we can all make cash now. It's even better than very talented people can make lots of cash now. It's not great when money becomes the central focus of game creation. I don't live in a bohemian bubble, I have the same bills to pay that you have. My full time job is making games, that's it, without them I starve. But I still put the game first, and that's the advice I'd give to anyone, not to use a Mario sprite in your game.

Squize.

Monday, August 24, 2009 9:31:32 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [9]  |  Trackback
 Sunday, August 16, 2009
To celebrate ( If that's the right word, we'll have to see ) the launch of cronusX at Kongregate we've taken over the Freelance Flash Games news blog for a week. Well, taken over the theme anyway.

Check it out, as Olli has done an excellent job on the background, and we've both been through the hell that is messing with wordpress, and that's got to be worth a click ( And that's without evening mentioning the excellent work Ryan does at the blog with a constant stream of great posts ).

Squize.

Sunday, August 16, 2009 8:43:14 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [4]  |  Trackback
 Thursday, August 13, 2009
Think this is going to be the last in the epic posts that have followed cronusX's little life, from back in the day when he was still called X to today, when the viral version finally goes live.



Here's where we're hosting it: X
I still need to finish off the stat widgets ( So I guess this isn't the last post, oh well, you can't blame me for at least trying to kill it off ) but baring any bugs that people on portals will almost cream themselves over telling me about, it's done.

Nice.

Squize.

Wednesday, August 12, 2009 10:04:40 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [7]  |  Trackback
 Monday, August 10, 2009
I've been working on a TD game ( It's the law that you have to do at least one ) on and off for the past couple of weeks, and the main dreadnought graphics are pretty much done, so I thought I'd post a couple of grabs seeing how I've been relatively quiet here recently ( I moved away from London a week ago, and I'm suffering with things still in boxes and a mobile net connection, which is about as much use as tits on a nun, so that's why I've been a little awol )

ionic_grab1.jpg

ionic_grab2.jpg

I've not got much else to add at the moment. If you liked cronusX then you should like this, I want a mixture of TD and all out particle heavy shoot'em up. It's either going to work well, or fall flat on it's arse ( I'm thinking more the latter to be honest ).

Anyway more when I've got it. It's a bit of a stop start project as we've got a ton of work in right now, so that and real life is getting priority.

Squize.

Monday, August 10, 2009 5:32:14 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [8]  |  Trackback
 Thursday, August 06, 2009
So after the set of articles about random level generation I wanted to put that into use (alas not in the scale I planed it out - mind you) - so I came up with a nice little 3 week project - that was 5 weeks ago.

The basic idea is a simple top/down shooter blended with a good portion of Gauntlet added (hordes of enemies, maybe). And while it's fun to watch levels being created by code it involves a good deal of additional work, like changing the tilesets, adding dirt and stains.

The X entries seemed to be a good idea, so I'm going to publish a few wip builds soon, too (alas not as many as Squize).

In order to see something at all (except the test visuals from the article tests) I needed to convert the cell based dungeons into someting tile based, and write a simple scroller to display the created maps. I decided that each cell should consist of 6 by 6 tiles, so I could use a one tile wide border for the walls (if any) and still have 4 tiles walking space. Next point on the list was the question about how to store the data generated - as I didn't wanted to convert cells/tiles at runtime before they're being displayed. Storing them in an array seemed a good idea, but I wanted to try something new...

Not to mention that converting 50x50 cell dungeon would result in an 300x300 array.

After a few minutes I thought that using BitmapData would be a nice try to store the map, as it'll give me a quite quick direct access 3 dim array (x,y, R,G,B,A) which I could use multiple times. so I used the alpha chanel for the tileset, the red one for the actual tile, blue for pathfinding and green for effects/2nd layer.

Right, why storing a tileset?

In my idea each room has basically the same tiles (ie. walls, doors, corners and floor) and the conversion would be much easier if I would use the same tiles over and over. So I came up with storing tiles in tilesets, which offsets the tiles on the tilesheet.
The creation process is quite easy this way:

First I have to create a tileset and give it a name, say "Corridor".

myTileset = new Tileset("Corridor");

Then add tiles to that tileset, giving it a name and and x/y offset in the tilesheet (I wrote data class for that):

myTileset.addTile(new Tile("empty", 0, 0));
myTileset.addTile(new Tile("Floor00", 1, 0));
myTileset.addTile(new Tile("WallN", 0, 1));
myTileset.addTile(new Tile("CornerInN", 1, 1));


Internally I use the tile's index, but the cell/tile converter just uses the name:

if (!myCell.isUnused) {
                        
    iTile = myTileset.index(strFloor);
    iPath = 0
    iSpecial = 0;
    bmpdMap.fillRect(new Rectangle(xx, yy, iTilesPerCell, iTilesPerCell), this.rgba(iTile, iSpecial, iPath, iTileset));
    
    // walls
    for (i = 0; i < Dir.NUM_BASEDIR; i++) {
        
        if (!myCell.isOpen(i)) {
            cx = xx + aWall[i].x;
            cy = yy + aWall[i].y;
            
            iTile = myTileset.index("Wall" + Dir.shortName(i));
            iPath = 255;    // so you can't walk there (for the bool map pathfinding)
            iSpecial = 0;
            bmpdMap.fillRect(new Rectangle(cx, cy, aWall[i].width, aWall[i].height), this.rgba(iTile, iSpecial, iPath, iTileset));
            
            // door
            if (myCell.hasDoor(i)) {
                
                // door frames are painted "above" the floor, so I use the special layer for that
                iTile = myTileset.index(strFloor);
                iPath = 127;
                iSpecial = myTileset.index("Door" + Dir.shortName(i) + "0");
                bmpdMap.setPixel(cx + aDoor[i][0].x, cy + aDoor[i][0].y, this.rgba(iTile, iSpecial, iPath, iTileset));
                
                iSpecial = myTileset.index("Door" + Dir.shortName(i) + "1");
                bmpdMap.setPixel(cx + aDoor[i][1].x, cy + aDoor[i][1].y, this.rgba(iTile, iSpecial, iPath, iTileset));
                
            } // ToDo: add windows if possible ...
            
        }
        
    }
    
    // ... draw corner and outer coners [skipped]
}

Ah. Nice and easy :)

So by using a different tileset you can easily control the visuals of a room.

Next thing on the list: the scroller - more thinking here ...

I wrote the Scroller class as extension to Sprite so I could add my own sprites and use the Sprites scrollrect for clipping. Adding a Scoller to the stage became easy as 123:

this._Scroller = new Scroller(620, 460, 20, 20); // width, height, tilewidth and tileheight
this._Scroller.name = "scroller";
this._Scroller.x = 10;
this._Scroller.y = 10;

this.addChild(this._Scroller);

this._Scroller.setTileset(this._bmpdTileset, this._TilesetCollection);
this._Scroller.setMap(this._bmpdMap); // the freshly generated map
this._Scroller.setCenter(310, 230);   // alows offsettin the origin, so 0,0 can be at the center of the scroller

this._Scroller.xPos = 0;
this._Scroller.yPos = 0;
this._Scroller.draw();
// updates the visuals of the scroller

the way the scroller is set up (I still need to optimize redrawing, though) makes it possible to use it with tween utils like TweenLite:
TweenLite.to(this._Scroller, 1, [xPos: 100, yPos: 100, onUpdate: this._Scroller.draw});

So after a few days of coding it looks like this:
DialZ_pre_00_small.jpg
(scaled version)

The visibilty test is in place (you can only see the room you're currently in and vector boundaries are created (the green rect in the room, door triggers (blue rect)). The map in the left corner is shwoing the pathfinding bounds (helpfull for testing, too) and will be replaced by a minimap later (circular, hopefully).

Right now I'm writing the vector intersection methods (I'm using math instead of the tiledate for collisions) - so I thing the next entry will feature that.

nGFX

Thursday, August 06, 2009 12:28:03 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [1]  |  Trackback