Aaargh! Shit! Chris meant today not next Thursday! GDC ends on Saturday! So I rooted around for his phone number... and got a message on his answering machine saying he was away at GDC and unable to answer calls! Aaargh! Followed by another bit that gave his mobile phone number in an emergency! Hooray!

So I called him up at what turned out to be 3:30am or something for him, thinking to leave a message on his mobile while I FTP'ed Alien Flux over my suddenly very slow feeling ISDN connection. And guess what, he's actually still awake and got no plans to sleep Yes, like a naughty schoolboy, Chris is still doing his presentation slides

Well, he's got Alien Flux now and it worked a treat on his laptop. Except for one small snag which is the laser collision detection is a bit out and you have to be rather too accurate with it. I've fixed it now and I'll upload a patch to the FTP and drop him a line later.

He's also showing, amongst a bunch of other stuff, erikd's game, and that ancient terrain demo of mine. Hopefully my name will be sprinkled about liberally to rich industry types because my contract has just ended and I'm very shortly to be ultra-skint again

Charlotte's had a great idea for A.F. - the "Golden Blob". If an individual Blob survives for an entire 4 levels it becomes a Golden Blob, which will give it some special decoration - probably some twinkly stars around it or something. From that point on it's worth 1,000 points when rescued from a Bubble instead of the usual 500, and it's also worth 1,000 points * level number thereafter for every level it survives instead of the current 100 points * level. I might give the Blobs unique names too to add to their cutesy factor. Hover the mouse over a Blob and its name will appear next to it

Right then, Chaz is on with the emergency website, and I'll get on with eating some pasta. Then I'll tackle a few more bits.

No news of Chris at GDC. Sun appear to have a very low profile this year. Perhaps if things work out I'll actually go along next year with my plethora of Java games and tout my wares to unsuspecting Californians. Of course I might be living inside a wet paper bag outside Bridgwater sewage treatment works surviving off discarded pot noodles by then because the contract market is dead as a dodo. (Go and see http://www.jobstats.co.uk for the bleak situation).

What better incentive than to get Alien Flux finished, eh?

Today I put labels in the game, a new battlezone feature. Labels are just bits of text that I can bring up on a whimsy and float about the screen. Of course I immediately abused the feature. It was originally to display bonus points when you rescue a Blob from the clutches of a Bubble (and indeed that's what it does) - but now I've only gone and given the Blobs cute little individual names! Say hello to Eeny, Meeny, Miny, Mo, Weeble, Wurble, Fliffles and Bob! Hovering the nice new crosshairs that Chaz has drawn for me over a Blob now pops up a little label to tell you who it is Isn't that sweet? So don't shoot them, all right? Now they've got a soul.

And bugger me but I've only gone and put the new player laser in! Now rendered with merely one sprite and a line, it looks very nearly as good as the old laser but requires a vast amount less memory, a vast amount less sprites, and after fixing the bug in the collision detection routines yesterday, it requires considerably less processing time.

I've updated the SPGL Bresenhams class to have an iterative use now; eg. you set it up and can then call next() on it every frame to gradually plot your way from A to B. Previously you had to pass in huge integer arrays which it would populate all in one go. Apart from being a big old waste of memory it was a small but subtle performance win, as there is basically no need to work out the entire path of a moving thing in one go unless you're drawing lines. And that's something I leave to OpenGL.

Had a great ride for the first time today on a proper blood horse at John Honeyball's today. What a difference to a manky old cob! It was like getting off of a crappy Kwack GT550 and onto a ZX9RC. You bikers out there will know what I mean Twitchy, nervous, very fast, and exciting. Shame it hailed and blew a gale all over us but there you go.

Charlotte said my cute Blob names weren't cute and changed them all Chaz likes the new laser but it's not very colourful any more, so I'll be adding a tinge of colour to it in a bit.

I really ought to have a good long hard look at the title screen now and start thinking about renovating it. It needs Java, OpenGL, OpenAL, Jet, Sourceforge, and Eclipse logos on it to show where my affiliations lie, some copyright blurb, an About screen, a Help screen to tell you what to do, and some options.

The options screen has got to: select between 16 and 32 bit colour - 32 bit really does look a lot nicer; set the sound volume; and ... er, that's it. I don't really see the point in redefining the keys because there are only two of them. Swapping the mouse buttons might be a handy feature though. Which reminds me - I must wire the smart bomb up to the middle button.

I've noticed a couple of nasty slowdowns recently since I put in the frame-rate limiting code for Brian (his monitor claims to run at 60Hz but in fact it's doing 100Hz). Hm.

Stuff Done

Blob end-of-level bonus animations are in at last

Player's shield now replenished on death

New smoke graphics, which look a lot better.

Longer levels: more gidrahs, more waves. More hectic, too.

Fix particle glitch

Shorter time between waves. Actually what happens is now then next wave will appear as soon as there are 4 gidrahs or less on the level rather than 2.

I made a seemingly trivial tweak to the blob end-of-level bonus animation screen, which was that after the blobs are finished rezzing out it automatically skips to the next level instead of waiting for a mouse click, and the game crashes. Rather annoyingly it crashes in a disconnected way - a Sprite in the SpriteEngine had no image, and gets an assertion error. Of course, once a Sprite has been allocated and imageless there's no way to tell who or what allocated it and what it was meant to be drawing!

So I've given every Sprite an owner now, rather like SoundEffects. To allocate a Sprite you have to pass in this owner which will be displayed when the sprite is toString()ed. And so I discover it's a cute Blob sprite, which has an animation but has not yet been ticked, so it has no image. Solution: when setAnimation() is called on the Sprite it is set to tick=-1 and then ticked immediately, which automatically does the first frame for us. Beats me why I never fell over that one before.

Looking at my to-do list, which is now only 11 items long, I fancy doing something a bit more fun tonight, so I'm going to put the screen shaking and stroboscopics back in. Both of them will probably look a bit strange on my LCD display...

Today was my mum's 50th birthday, so I rode 350 miles to go and visit her in Durham. The 1150GS suffers from pretty bad turbulence past the screen so I was pretty knackered by the time I got there. 5 hours of having your head shaken by a rottweiler is a tiring experience. Several days off ensue.

Chaz has redone some of the graphics whilst I've been away. The smartbomb now looks a bit less wobbly, and the cute furry blobs are even cuter and furrier. He added a glow which unfortunately makes them look like I've got vaseline smeared on my monitor, so that's got to go, I think.

Smoke's also been redone by Chaz and it looks really good, but unfortunately it's twice as big so it uses four times the fill-rate and we're getting a bit of slowdown when the player explodes (which generates more smoke than anything else). Might have to either shrink it or reduce the amount of smoke.

Took the game round to the in-laws to test it out on my brother in law

The Options screen is now in. Currently this lets you adjust the sound volume using a slider and it's got two checkboxes, one to use 32-bit colour for those of you who have faster graphics cards and one to use bump mapping. Bump mapping is only available on newer (GeForce) cards and will automatically fall back to plain lighting attenuation if the ARB_texture_env_dot3 extension is not available.

It was a right bugger getting the 16/32 bit option in. In order to change display depths you basically have to unload everything you've loaded like animations and textures etc, close LWJGL down, recreate the display, and load everything back in again. It was a time of access violations, JVM crashes, and general frustration. I could have gotten all clever and tried to get away with replacing only those bits affected by GL being destroyed but it got fiddly, and I'm not prepared to spend another week on it, especially for a checkbox that might get used only once or twice ever. Got it working at 2am.

I released A.F. into the wild last night, to a select few unfortunates on the forum trying out that daft chat client and some of the hardcore shooters at Llamasoft.

There's a few overwhelming bits of feedback:

1. It doesn't seem to work on Win98SE. This appears to be a LWJGL problem, as the code is pretty much definitely sound on Win2K and WinXP so there's some funny OS specific weirdness going on with display mode selection.

2. It's far too difficult! I suspected as much. I, of course, am really good at it. I either have to tone down the difficulty or add a training level or something. Once you've played it about 20 times you suddenly get the hang of flying the ship and it all comes together.

3. It seems to be popular

In the end I decided on rather than doing a pure training level, the first level of the game only consists of four waves of Bubbles, and the Jellies they produce move at minimum speed. I might even slow the Bubbles down a bit too. Actually Charlotte decided that was what we should do. Charlotte also thinks I should slow the Jellies down for the whole of the demo. Not sure about that. Maybe I'll ramp the difficulty more carefully.

Another problem is that the 16/32bit switch seems to fail when compiled with Jet. The game crashes, but when it's restarted at least it's changed display modes.

If anybody's got any bright ideas by the way, I'm all ears.

Stuff done

Fixed sprite Y-sort bug. It was the wrong way round and no-one noticed...

Explosion particles bug. Some of the particles just stayed still and never moved

Blob name alignment was offset to the right. It didn't work so now it's in the middle again.

Blob names would sometimes dissappear and not come back.

Smartbomb explosion radius has been shrunk to 450 pixels.

The training level

The Blob Powerup now spawns a Blob when you pick it up

Golden Blobs are now implemented. If a Blob survives 5 levels it's suddenly worth 10x more points. So keep it alive!

A level strap line now scrolls up the screen at the start of the level. A nice little touch.

Res-in speed for Blobs on the end-of-level screen has been speeded up.

Fixed a bug where if you simultaneously died and killed the last alien we'd get an assertion error and the game would crash.

[i modified the resolutions of that driver too (copy&paste) therefore i think that wasnt the issue before.]

well i still dont know why the lwjgl examples worked with the older drivers but your app didnt :]

oh and it still says: "This application requires a greater alpha depth."

-the speed of the game is surprisingly high (around 60fps i think) -sounds r great -sprites r sweet - gg Chaz -there is a (filled) rectangle (quad) around the buttons on the title screen, wich changes it's colors... dunno but it looks like it wasnt supposed to be there or to look like that ._o-add a swap buttons option -accel=lmb, fire=rmb, smartbomb=space... that's it or have i missed something? (just played again... shield=shift - first time i survived level 1) :>-it's quite hard especially cuz the enemys fire on the place where u'll respawn... the mentioned "2 seconds invulnerability on respawn" should do the trick

hmm... maybe it's a good idea to add some hinting arrows, wich shows where a "furball" got "eaten" by a bubble (if it's not on the screen)

and i guess it would look nice if the shadows (of all objects) get shifted accordingly to the position of your ship

Seeing as I've spent mucho effort on getting it to run bang on 60Hz I'm quite glad that it's running at 60Hz on your system!

As if by magic, 2 seconds' invulnerability have indeed been added, and I'll enhance the smartbomb as you request - thanks for the suggestion. And it's funny you should mention the hinting arrow because I put that in at 2am last night

Those boxes are meant to be around the buttons on the title screen coz I haven't removed them yet It's under the generic To-Do heading of "Tart up the title screen". There will be a redefine keys/swap buttons option coming later.

Hold your horses, I'm just squeezing more niceness into it before I tell everyone where it is...

IF it is this file with 3.7MB that i've found after reading your post (was really easy... )..THEN it doesn't work on a Radeon9700 using the newest driver (3.2 i believe) under Win XP. It tells me to get a new graphics card (and i hate it for that). It does run on a GF3 under XP. IF this is not the version you are teasing us with...then ignore this post....

The real one you can try is here. Or at least, it will be, in about 20 minutes from this post.

It's still alpha code, and you still need a Geforce or Radeon (or basically a card that supports ARB_texture_env_dot3) to run it. The new targeting effects are temporary, and the powerup graphics aren't finished yet, but it's very nearly complete.

silly question, but what do i need to do in order to get rid of the "You need an OpenGL compatible card..." box when attempting to run with my "new" GeForce2 MX card?

The same here for a Radeon 9700 pro running under WindowsXP home. I'm missing the "i HAVE an OpenGL compatible card...you sucker!"-button in the dialog that pops up . I really hate it, when programs are telling me what i should do or have if i already did and have that.

Argh! Feckin' display mode selection! This is what happens when I let Linux, Danes, and my code mix.

We're working on a fix and hopefully display mode selection will be all nice and happy again.

I'd be surprised if it worked on a G400 as a) their drivers are utterly abysmal b) I've never tested one and c) I don't think it supports the extensions I'm using at the moment and I haven't coded the alternatives!

Please folks, try to restrict it to Geforce and Radeons until I've written the fallback code!

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org