Tuesday, August 29, 2006

Blogger is behaving today.

Here are the other bosses that have been created so far;

EVILK



A pyscho based on LeatherFace who tries to carve you up with a chainsaw. EvilK is a shite name for a game boss, but leaves no mystery as to which flash coder authored the original game, in the case of E.Baum or another criminal stealing it and claiming property rights. The showdown with EvilK is 100% complete already, and I'm 98% happy with it. You fight him in a dark cave, and I've used an actionscript generated tint to colour him black so that you only see him when he comes running out of the shadows. It works suprisingly well, and has the desired effect of scaring the poo out of you on first sight. He also has a blood-curdling scream to go along with the ear-ripping chainsaw sounds. (Update 8/2010 'EvilK' became 'Project K' in 'THE INSANITY 1 & 2'

LUCIFER



Lucifer is a demon that was accidentally raised by a necromancer who foolishly believed he had will enough to master. Unfortunately for him, he raised a sovereign monster far beyond his control and was slaughtered. Lucifer is a quick boss that grows wings in his second stage of battle, and can also raise other creatures to his aid. He doesn't have any special weak points, unlike Snakeman or EvilK- you simply have to be nimble with the mouse to catch him under the crosshair.

Lucifer has been rendered but I've yet to get him into code. I figure after he's done I'll tweak the game up, see what the public thinks, and then maybe make a few more levels if it's popular.

Tuesday, August 15, 2006

Apologies for a long absence..

No excuses, other than myself being lazy to update I'm afraid. Well, not exactly lazy- in fact pretty busy. Not with chasing hot babes and driving fast cars, worse luck, but with coding.
I ran into a coding problem with Nexus and decided to drop the project temporarily. I hit a brick wall and realised I don't have the programming know-how to deal with the ever fiddly tile-engine. Instead, I've been working on my first game, House of Splatter (now retitled with the less daft-sounding 'THE DAMNED').
And man, what was a tiny little shooter has now matured into a top-notch game. Who would have known it had such potential. In its current stage of completion it features new graphics, bolder death scenes, extra blood'n'gore, an intro page, and some perversly evil bosses:

SNAKEMAN





Snakeman is a creature kind of inspired by Jason from Friday 13th. He lives in the lake and protects his vulnerable tongue with a tempered steel mask. *HINT*

Go ahead and check out the first level of THE DAMNED on link section.


Sorry the rest will have to wait as Blogger isn't uploading pictures properly right now.


The bosses have some fairly predictable AI patterns, but won't be beaten by any lazy trigger fingers (saying that though, Snakeman is a bit too much of a wimp at present). You also have to time your reloads very carefully or you will get a game over - as a unique aspect of this game is that you have only one life.

I'm quite chuffed with the mileage I can get out of Poser these days. When I first got my hands on the program about 5 years ago, it was of little real use and just a way to waste an hour making two crappy looking-models kung-fu fight, or do 3d humping for a laugh.
Nowadays, it is much improved.
It's a bug-ridden application that crashes more often that not; a pile of cack compared to Max or any of the other big boys, but it certainly can do the job at times. Now that I've figured how to wrap textures around models correctly with UVMapper, deform them with magnets, and have mastered the Cloth room, Poser truly has become indespensible for making realistic keyframe animations. I recommend it to other newbs who are embarking on their journey into the world of 3d animation.

Sunday, July 30, 2006

Tile-Engine Rebirth




It's highly enjoyable remaking old classics of your childhood. but it sure is time-consuming. I'm embaressed to say how long it took to make some of the backgrounds alone. Today I got quite a lot done though.

Check out the Nexus link for some new updates.

You can press Q to punch, and if you're in the elevator room, you can see the doors open too when you press it. I haven't as yet implemented a proper elevator system as of yet(that's probably next) but if you tap Space bar it flips arrays and you can see the next level when you leave the screen.

CODING
First, I got around to rewriting the art/tile based hybrid engine. If you check the Nexus l*ink you can see the little beauty in action.
It wasn't much of a hurdle to code- in fact, I'll post the code here for the newbs.

tile_width=60;
tile_y=50;

myMap = [5, 4, 6, 4, 3, 2, 1, 2, 0];

//myMap is the array for the background. The numbers refer to the corresponding movies. Ah, you'll get what I mean in a minute..It'll probably end up as a 2d array (to deal with levels) but I'm just keeping things simple for now.

myMiddleMap = [[0,10,0,0,0,0,0,1,1,0],
[0,1,0,0,0,0,0,0,0,0],
[0,0,0,0,2,0,0,0,0,0],
[0,1,0,3,0,0,1,1,1,0],
[0,0,0,1,1,1,0,0,0,0],
[0,0,0,0,0,0,1,0,0,0],
[0,0,0,0,0,0,0,0,10,0]];

//myMiddleMap is a double-array that contains references to objects held in movies that combine to create the middle tile layer.

this.createEmptyMovieClip("background", this.getNextHighestDepth());

background.attachMovie("cavetile_" + myMap[current], "cave", background.getNextHighestDepth());

//In the library, my backgrounds are all named like "cavetile_1" "cavetile_10" etc, so all the above line does is check the myMap array to see which one is up, then attaches it to an empty movieclip called background.


for(var i=0;i < style="font-style: italic;">current is a referer to which screen you are actually in.
First we check to make sure the array reference isn't 0. If it is, that means there's nothing to plot, so we do nothing except go to the next tile, 60 pixels further to the right. If we do have a tile that needs to be placed, we give it a name "Midtile" with a number from 1-9. and we position it appropriately by setting its x co-ords to i*the set tile width.

Later on I make sure to replace 'cave' with the new backgrounds at screen change, and remove the previous one when it's out of view, along with all the tiles that are attached to it.

I quite like my little tile engine because it's fairly flexible. Though the mid-tiles have to retain a set width, their height is dependant upon you. Further more, since they're all movies, they can be animated and code put on them.

For example, an invisible wall tile is pretty easy to implement.
When the character runs, before incrementing or decrementing his x position, we check to see if a collision flag has been raised. If so, we disallow any changes. The collision flag check is performed within the tile movie itself. You run a hitTest to see if the _root.hero has collided with it, and if so it returns true and our character stops moving towards it. With most tile-engines, you have to check every frame for a collision, but because the code is inside the tile and not on the main program, it's that little bit faster as it only runs tests after it has been created.

I'm either really smart, or my code is pants and I'm just too dumb to recognise it.
-----------------------------------------------------------------------------------------------
I was thinking about whos faces to use for the undercover agents. In the original, the faces were digitized and probably mates of the programmers, but I figure "Why not just go the whole hog?" and put my favourite actors in there instead. So look forward to seeing Christian Bale, Al Pacino, Di Caprio (haha, just kidding), Christopher Walken, and plenty of others make an appearance. I figure I'm never going to get sued since the game is being made basically just for my entertainment, and if any Ebaum or wherever steals it without my permission for their site then they'll likely be the ones getting the finger pointed at instead. Hell, I'd find it hilarious if I was a famous moviestar and some cheeky Brit used my face for a crappy game.

Well, it'll be a laugh getting to that, but first and foremost I need to get the levels working properly and a tracking system up and running. Did I mention I welcome volunteers? Sigh.This is going to take forever...

Labours of love.

Friday, July 28, 2006

Bollucks. The worst thing that can happen to any programmer happened to me. I know, you're thinking "Your doctor told you you've got 6 months to live". Nope. Worse.

My laptop died. I know, shocking news. What makes it even worse is that it was smack-bang after I had just finished coding a sweet little tiling engine that worked exactly in the way I described in the below post. Oh man, it was so perfect. There I was, rubbing my hands in glee and self-congratulation, and was 5 seconds from saving when I knocked a bottle of wine over the soddin' keyboard. Instant frizz-out. I'm now writing from our new nifty 80 gigabyte 1.6 mhz Dynabook, so, some good things can come from bad.

Oh but Nexus. Shite. I lost all my Poser animation files. The actionscript. Everything I worked for. And none of it was backed-up because, hey, who ever imagines your PC is gonna fry? I mean, maybe your flash memory stick or CD drive but the whole thing. Let's just say I will learn from my mistakes. It takes the piss that I will now have to use a decompiler, and try to salvage whatever crap I can from it. I'm pretty hopeful I'll get the code back, but all the graphics...unlikely.

All for now, folks. Will update you tomorrow on the how's-it-goes.

Monday, July 10, 2006

Nexus [2]

Didn't have time to fiddle around much with Nexus today. In the morning I noticed that I had forgotten to remove movies that were no longer visible to the player once another background movie swiped over it, so I fixed that. Then later on in the early morning I made a few more screens for the cave level. Trying to make sodium lamps in the walls was a bit of a bugger in Photoshop, but after dabbling with a million filters I finally got a result I was satisfied with.

You can check out the additions now - I've updated the link below.

Sunday, July 9, 2006

Nexus [1]

Working on Nexus kept me off the porn all day, much to my wifes delight. (not that she ever catches me anyway, *chuckle*)

TILE-ENGINE




Originally, I had decided I was going to use small 50x60 tiles for everything, but today I was going over it in my head and I thought "Well, hang on EvilKris, that could be a waste of time - since the screen isn't that big in dimensions anyway. Why not just use 1 big tile per screen - for the lions share of the background- and one simple row of tiles that runs along the middle of each screen for objects and doors."

That way, even if the main background on each level is fairly homogenous, I can just chuck in whatever 8 tiles I like sort of randomly and each screen will still look unique. I probably won't need to piss around with many 2d arrays or map editors as much.

Anyway, I designed a couple of screens of the cavern where you meet the first Nexus member in the original, and suprisingly, designing the main background tile-engine only took about an hour of my time (guess my coding's improved), complete with an RPG style screen swipe'n' all.






Simple is best eh?

Will update the flash file on this page in a week or so..

Saturday, July 8, 2006

Nexus

Here now's a new prototype I've been working on. Based on the old C64 game 'NEXUS' (C64 - Oh those were the days...). So far you can roll, jump and run, and punch with Q.

The character was made in Poser. Some of you out real, real old time gamers might recognise that the animation seems a little familiar. That's because it was modelled frame-for-frame on Impossible Mission, yet another C64 classic. You've got to love those golden oldies. I've been trying to figure out a way to make the main character less fuzzy when he's animated (looks perfect if he runs on the spot). Reducing the amount of frames in the animation hasn't worked, nor decrementing the detail. What a bugger..

One good discovery I made today (that had quite stumped till now) was how to make a flash file 'reset' when the player gets game over or hits the Escape key. With regular flash animations, all you have to do is stick _root.gotoAndStop(1) and that would work fine, but with a game you get some odd results with that method and your movies will still be there even back at the beginning frame. Finally, I came across this bit of code-

loadMovieNum(_url, 0);

- which does the job marvellously. No need to set all your variables back to their original values or unload/remove movies.

CHECK IT OUT HERE


By the way, if anyone out there wants to fiddle around with the stuff I've made already, adding your own code or techniques, that's cool with me.