Monday, August 04, 2008
Alpha is out, now there are just a few things left to do to improve the useability of the editor and wait for the final informations on how the main game should handle custom levels.

Oh and there are just a few levels to enter ... 130 to be honest.

On Friday I had the "more-than-bloody-stupid" idea to enter a few of them. I did 2.

The one that killed 100% of my motivation was a nightmare of force fields all pointing in different directions:
cc_lvl_22.jpg

Believe me when I say looking at this level in full size can make you want to puke.

After some agonizing hours, I finally started to write a file converter that should be able to read in the binary file format of the original game. OH JOY!

This somehow kills the edia of entering the levels and testing them along the way to see if the engine can handle all the weirdness of the original creators (and I still do believe that some of the levels where purely designed to piss the player off as much as possible).

oh well ...

nGFX

Monday, August 04, 2008 7:28:07 AM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Friday, August 01, 2008
Well here it is, the "Too early to show mix" of Orbs.

No preloader, so stick with it ( About 700k )

I figure this post is more a show and tell as opposed to anything more. There are lots of bugs so I'm not really after reports ( Thanks ), this is very WIP, and I've only really posted it here due to reasons outlined in the post from the other day.

The gameplay will be more refined in the final version, "Campaign" mode will be the primary game type ahead of arcade ( There's not even an option for it yet ), and there are quite a few more baddie types and a lot of love to go into it yet.

A quick spurt of instructions:
Your objective is to protect the Orb. As long as it's got power it can re-generate your ship. WASD or Arrow keys move you around, aim and shoot with the mouse, P to pause.
Some of the options work ( Stats for example, although there are some unfinished ones in there, and a lot more to go in, along with a lot more medals ), but most don't.

It's mainly a case of looking around and watching the particles right now, but they are quite pretty so far.

As I do more work on it I'll flesh the posts out about the tech. side of it as I've gone to quite a bit of effort to get this bad boy running as fast as possible ( Which is sheer bliss. In real life you never have the time to even write the word optimise never mind doing it ) and hopefully development will go onlong in fits and starts like it has since the project started 'til one day it can go free into the world able to stand on it's own two feet.

Enjoy.

Squize.

Friday, August 01, 2008 8:19:41 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [8]  |  Trackback
 Thursday, July 31, 2008
Great day, Geometry Wars2 is out today ( And I've nearly nailed the collision routines in the arkanoid "style" game I'm doing at g5games, but I digress ). Regular readers will know I've been working on Orbs forever now, which is inspired by the GWars look and feel, so I've been keen to check the sequel out ( For the whole week or so since I heard it was coming )

800 points later, and wow. It's sex.

When you shoot a baddie, it drops a geom ( Correct me in the comments if I've given that the wrong name ). When you get close to them, they get sucked towards your ship.

Hmmm, just like the credits I coded the other day in Orbs.

Also there are new things, called "gates" ( Corrections always welcome :) ), where you can shoot them and your bullets rebound to kill baddies. It even keeps track of how many rebound kills you've got.

Hmmm, just like when you shoot the orb and it rebounds and kills a baddie.

Arse. For fear of Orbs coming out and everyone just pointing the finger of copy catness, it's forced my hand ( Yeah the title makes sense now, these posts aren't just thrown together you know ) to release a demo sooner than I'd rather.
Hopefully by Saturday we can have some particle porn up here. I'm just thankful that Bizarre haven't got Pong in the pause mode.

Squize.

Wednesday, July 30, 2008 10:21:16 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Tuesday, July 29, 2008
Here's a funny thing.

Law of the West Pinball was posted to newgrounds. All good so far. Got a score of around 3.15, nothing great. Some helpful feedback, some pointless ( Well, one pointless ).

Being kind of anal I check back on it now and again, and this is the weird thing, it's score is going down every day. Every day, someone is voting it down.

Now it was never really on the radar, I've never linked to the NG page anywhere ( I don't really like to, it feels very "Here's my game. Oh look, you can vote for it, I never noticed that before. Well, whilst you're there, give it a 5. Please. I'm needy." ) so it seems really odd that either one person is going there everyday fuelled with petty hate and knocking it down slowly but surely until it goes the way of Chimbo and gets blammed or someone new is stumbling across it every day, and hating it that much that they're voting it down.

I'm not sure which is worse actually.

I just thought I'd mention it, as it's bugging me slightly, and what other reason is there to have a blog than to be self indulgent and post about petty things ( Tomorrow, "Why do people wear shades on the underground ?" ).

Squize.

Tuesday, July 29, 2008 9:51:00 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [3]  |  Trackback
 Thursday, July 24, 2008
FINALLY!

CC is going to become early alpha tonight. I spent the last week adding levels and testing them along the way (which takes some time because they are quite ... complex ... and not easy to play). While making sure the game behaves like it should and fixing things that don't work quite like expected.

There are still some features missing and *a lot* of love left to add, but I think the engine is pretty solid now, it runs smooth in the editor and because it's tilesize independent it should also run in game mode (I'll see that later today).

Marmotte from dot-invasion has dome some georgeous tiles so this is done, too.

Basically there are a few renderings left (mainly for the player deaths) and I have to do all the sounds (including a lot of speach) and music.

And for the sake of it:
cc_promo_00.jpg
Our hero ...

nGFX

Thursday, July 24, 2008 8:37:32 AM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Thursday, July 10, 2008
I've been pulling my hair out for about an hour with this beauty, and after finding the solution I thought I should share here, if for no other reason that I know I'll get it again and lose another hour ( I'm 36, my memory is shot ).

When trying to make a new bitmap instance of a bitmap in the library, along the lines of:

        [Embed("/_assets/assets.swf",symbol="bouncerBitmap")]
        private var bouncerBitmap:Class;

        var bm:Bitmap=new bouncerBitmap();

I was getting invalid data when running the swf, basically it was failing big time.

Had a bit of a google and found this. For some beautiful unknown reason, sometimes when you import a png to the library and set the compression to jpg ( Although in this case I actually hadn't, Flash just took it upon itself to make it a jpg for me ) it screws up.

Joy.

Anyway all fixed now, and I've even got this as a reminder for next time.

Squize.

Wednesday, July 09, 2008 10:48:45 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Wednesday, July 09, 2008
I think it's time to question my motivation.

While working on client projects, I allow myself always a more or less big "sideproject" (because as Bill Murray put it in Groundhog Day: "Keep the talent happy.").

I usually try to stay on the easier side (game wise), but I'm not the button basher game type of developer, although I tried it ...
When sitting there and plotting down ideas, the transform from "one week and done" to "woha that's big" is almost instant.

So let's just accept the facts.
Looking through my sketches it shows that this is again no quick and easy project, I see a lot of locations, all done in 3d, different maps, a story that ties it all together and of course weeks of work.
I think that anyone with some gamecoding background (i.e. coding games beyond the scope of flash) is looking for: the big one. A real game.

Puzzle games are somewhat of a different league beside all the clicketyclick-crap that is called "game" and not many flash games reach into that region for me.

One of the few ones I admire for it's depth is Luxregina's Two Kingdoms.

But how can you compare a flash game to a "real" game?
Savegames? Maybe.
Levels? Maybe.
Story? Maybe.
Depth? Certainly.

What was I talking about?
One of the questions that keep bothering me for the last days is: does it pay out?

Beside the fact that it will be quite fun to do a big game, this one question is really nagging me (espeacially since the LotW hacking incident).

There's the fact that flash isn't save at all. each damn script kiddy ot there could grab this application (which name I won't tell) and just open your swf and change a lot of things without even having to dig through the code. Changing an image or adding a new button is a case of a few mouseclicks. AS3 seems to make it a bit harder, but I doubt that it will be forever. (Maybe there might be some sort of solution, Squize and I have been talking about a ugly way of protecting you game from just changing things on the fly, but we need to test that before I can tell you more)

Using Director isn't an option at all and one of the environments that really would make me go away for coding a game isn't yet reachable because the dev environment is on Mac only and I don't have the space to have another box standing around, here even if is a pretty one.

Because we all know that such a project is normally for pleasure only, you still have to ask if you can get the odd quid out of it - can you?

Sponsoring isn't a route, because as I see it it's not a win situation for the developer, the exposure gained doesn't reflect in website traffic at all. The money isn't nowhere near what can be charged for a client development or an exclusive deal, but it's unlikely that you get one.

Ingame ads seems to be an option but you need some fairly good exposure to reach numbers that pay out well, too.

It's all personal again ...
So it all sums up to: do you enjoy doing such a big game. Well I certainly would. But there are doubts.

K. let's get back to some coding of CC, and later this week some tests on security ...

nGFX






Wednesday, July 09, 2008 10:03:59 AM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Saturday, July 05, 2008
As regular readers will know, we've been done over with a hacked version of "Law of the West". Instead of just bitching about it, we've decided to be pro-active.

This is going to take a number of forms, one of which is SICO, or "Source In, Crap Out".
We looked at what encryption and obfuscator software there is out at there, and came across irrFuscator. It looks pretty cool, and at 69 euros isn't going to to break the bank, but it also looked like it was something we could do ourselves without too much effort.
Where SICO fails compared to irrFuscator is that from what I can tell it takes the whole project and messes it up, so public functions ( And therefore getters / setters ) get screwed with too, whereas our project just takes one file and so has to leave anything which could be called from a different class alone.
Also it converts strings, but it looks costly. Looking at the example on their page, "end" gets converted to irrcrpt(23, "uzd."). That kinda looks like a static class is added to the project with a method called irrcrpt, which takes the first value as the "key", and I guess it's just a simple XOR with the string value.
Fine for scrambling a filename, but I think it would be too harsh [ In performance terms ] to do that to every string in the game, so it's easy enough to just add a method in like that by hand for your filenames / passwords / cheat codes etc.

( In case this reads like I'm just bashing irrFuscator, I'm really not. It's better than SICO, I'm just pointing out the differences ).

So what can our baby do ? Here's the loader class we use for it:

package Classes {  
    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLRequest;
    
    public class IO {

//---------------------------------------------------------------------------------------
// Properties
//---------------------------------------------------------------------------------------
        private var loader:URLLoader;
        private var callBack:Function;
        
//---------------------------------------------------------------------------------------
//Constructor
//---------------------------------------------------------------------------------------
        public function IO(){
/*
Null constructor, we don't need to do anything here
*/

        }

//---------------------------------------------------------------------------------------
// Public
//---------------------------------------------------------------------------------------
        public function toString():String {
            return "IO";
        }        

//---------------------------------------------------------------------------------------
        public function loadScript(filename:String,callBackArg:Function):void{
            callBack=callBackArg;
            
            loader = new URLLoader();
            loader.dataFormat=URLLoaderDataFormat.TEXT;
            loader.addEventListener(Event.COMPLETE, xmlLoaded);

            var request:URLRequest = new URLRequest(filename);
            loader.load(request);
        }

//---------------------------------------------------------------------------------------
// Private
//---------------------------------------------------------------------------------------
        private function xmlLoaded(eventArg:Event):void{
            var source:String=eventArg.target.data;
            callBack(source);
        }

//---------------------------------------------------------------------------------------
    }
}

And here's what it looks like after being run through SICO:

package Classes {  
    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLRequest;
    
    public class IO {

        private var _V64K0q:URLLoader;
        private var _87qjufb1lsM:Function;
        
        public function IO(){
        }

        public function toString():String {
            return "IO";
        }        

        public function loadScript(M85u8En4i:String,_87qjufb1lsMArg:Function):void{
            _87qjufb1lsM=_87qjufb1lsMArg;
            
            _V64K0q = new URLLoader();
            _V64K0q.dataFormat=URLLoaderDataFormat.TEXT;
            _V64K0q.addEventListener(Event.COMPLETE, _v1zr6rD62q);

            var kDu541CN2C5:URLRequest = new URLRequest(M85u8En4i);
            _V64K0q.load(kDu541CN2C5);
        }

        private function _v1zr6rD62q(_wVl6q:Event):void{
            var n1XScOB03y:String=_wVl6q.target.data;
            _87qjufb1lsM(n1XScOB03y);
        }
    }
}

Pretty mashed up. There are still some quirks to it which need ironing out, and it's not got a list of reserved words or anything that cool, but that code is nasty once run through it.

Next we need to actually make some sort of front-end for it, ideally using Air to get to play with that, more possibly with Zinc to make it easier, and then decide what to do with it. It won't ever be for sale, it may be a case of we just give it to friends and let it spread gradually like that, we're not sure yet, but it will be given away. There's no point bitching about hacking, and then coming up with something that makes our stuff safe and screw everyone else.

And that's part 1 ( Or 0.5 ) of our push to try and get the community as a whole being a bit more protected, there is more to come. Olli and I have had some long chats the past couple of days. We both came to the conclusion that yeah, having hacked games floating around sucks, but there are some things which are more acceptable than others.
If LoW had been hacked to use the hi-score component of the system it's been hacked for ( Some "shovelware portal in a box" system ) and everything else had been left intact, then we can swallow that. Just. The game gets spread so the sponsors happy, we get our credit out so it's not too bad for us, the ad gets seen etc. It's not that bad. It's only when the game is just ripped of everything like that we get pissy.

Part of this process of stopping it is to actually get involved with the boards that link these games, for fear of sounding like a politician, it's about education. A lot of sites with hacked games on are run by decent people, just trying to make a couple of quid, and not really knowing about any harm they could be causing 'cause they never ever have any contact with a developer.
Flash games are percieved as such a throw away commidity that the line between IP theft and hosting becomes very blurred. A lot of people who run boards wouldn't dream of hosting mp3's, but see Flash in a totally different light.

We really fucking resent having to spend time on things like this, but if we're in the position of toying with ads and sponsorship as well as the client based work, then we need to protect our IP. Like we all do.

There's more coming,

Squize.

Saturday, July 05, 2008 4:49:49 PM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [4]  |  Trackback
 Thursday, July 03, 2008
We have recently discovered that one of our sponsored games is out there in a pirated version.

I know that is is part of the deal to spread a game as much as possible, but when someone hacks the (encrypted) game and removes all that what makes it a sponsored game ... I get pissed. I mean it was for "free" anyway.

So fellow flash developers, have a look at your stats and see if your games happen to be run from this domain:

http://forum.***.**/...

These guys steal games, and use hacked versions.

See this:
lotw_pirated.jpg

Of course the loading screen ad has been bypassed too.

There is money involved so I think it's my damn right to be pissed. I have contacted them, let's see what happens.

/* edited, we found thesource and further steps have been taken ... read the SICO post */

nGFX.

No, I'm not in a good mood today.

Thursday, July 03, 2008 8:55:17 AM (W. Europe Daylight Time, UTC+02:00)  #    Disclaimer  |  Comments [9]  |  Trackback