Wednesday, October 24, 2007

Well the good news is, me and this fellow Pele/Robin Mitchell chap have decided to embark upon creating a little Metal Slug clone. Not a hell of a lot of originality going on there and if he wasn't such a fabulous artist I'd probably not be so keen. I wouldn't say I'm not a big, big Metal Slug fan, but the businessman inside me was like "The art will sell the game by itself!!" so what the hell...? It's not like I'll be running back to The Damned any day soon after losing months of work on it. Coding new stuff - even if you're not into it- is fun and all is potential cut&paste for use in other projects anyway.

I committed myself to coding it in AS3 to start off with, but progress has been slooooow so instead of trying to get my head around the complicated innards of the new language I decided I may aswell lay it all out in AS2 and then convert it piece by piece to AS3 when it's all done (or pay some other sucker for the task). Don't get me wrong, I'm all for AS3 but Jesus does it make the simplest tasks a pain in the arse at times, I mean, just the other day I was trying to create some simple lines to show me the co-ords of bounding box on an mc- something which would take like two secs in AS2- and three hours later I still couldn't get the bastard compiler to stop throwing out error messages. I guess I'm just an ambitious rodeo-cowboy without the chops to pin down the beast, for now.
I've decided to keep note of what changes between the two languages screwed me up so far, and will be creating a new little AS2-AS3 Ref.Guide for Game Programmers to go up on the Sidebar any day now.

As for the engine, I started off using TonyPa's Tile-Engine but being frank I think if you're going to make a game that has as much art in it as say Metal Slug you're better off with art-based, as you're not repeating many tiles anyway. Andre Michelle created a sweet little art-based prototype for mario over on GotoAndStop.it using vectors and so far it seems the best option to me, being I can derive the co-ords for every platform just by drawing a line over the art background and taking the x,y for each end, and don't have to muck around with a ton of code, either.

Friday, September 28, 2007

Today was a bad day...

Ah Jesus F**cking Christ a virus wiped out my entire hard-drive this afternoon and before you could even say "System Recovery Software" the wife had gone ahead and wiped/reinstalled the lot by the time I'd gotten home from work.
Can't blame her, it was my own fault for downloading files from the wrong sorts of sites and BAM! couldn't even get into Safe Mode to stick my Flash files on a CD.
It wouldn't usually bother me much but I'd been working on The Damned again and had practically finished the entire game. I was literally days away from uploading it to the safety of the server.
Geez, Level 2 was looking brilliant. Not only did I have zombies with location damage all over their bodies - arms exploding, heads flying off at random angles and calculated velocities, but the magnum weapon was working well; enemies exploded into chunks of blood and guts at close range. Like a different game and much improved. The real killer is that I had painstakingly redesigned many of the 'death scenes', cutting footage from zombie movies out and adding my own little personal touches. Took weeks. Gameplay was far more exciting, the zombies came flying at you from out of the darkness but could be illuminated from a distance for a brief second with a round off the beretta. I'd also created a 'Salems Lot' style monster that crawled along the walls towards you following a circle radius. Ah man, they looked awesome but I don't have a single screenshot- it was all for naught. A labour of love, lost.
Fuck..
Not only that. An update of the SORF engine with enemy AI and extra moves. A prototype I had made for a potential remake of Green Beret, written in AS3. It was looking pretty sweet, had the guy running around the tile-engine and he would execute a slash Strider-style ie- as fast as you could hit the key.
Oh well, adapt, overcome. I'm pretty bitter but there's nothing like a clean slate to spur on the imagination.
I'm too down to go back to work on The Damned so for the time being I might get into the fighting-engine. I figure codewise it won't be the biggest stretch to get a decent little mini-game up and running in no time, so keep your eyes peeled here for that in the near future. Later dudes.

Thursday, August 23, 2007

Nexus/Sirius Continued...



Been working on the Nexus demo a lot recently.

Check out the updates. Elevator now works. Choose a floor (1-5 are explorable) and tap D to operate the thing. You can now enter rooms and use the UP array to search through the junk in them for objects.

When you leave rooms the doors tint to red to let you know you've been in them. At a later stage that'll change so they'll tint only when you've searched the entire room.
Don't bug me about stuff in the game being wrong. I'm not asking for beta testers here, and I'm fully aware that some doors tint before you've entered them, rooms not existing and levels doing funny things. Cheers.

Sirius, the brightest star in the sky. That's the new working title since I can't go completely ripping off Nexus now can I? Truth be told I've thought of a few little changes I'd like to make to the original game anyway. So, it's now not a blatant Nexus but inspired by Nexus. I hope to retain the atmosphere of the first game but evolve it with a few added extras such as a couple of new weapons and some other stuff I've been mulling over.

So, how would you set up a world similar to mine?

myMap = [[16, 12, 12, 12, 12, 12, 12, 12, 12],
[11, 9, 8, 7, 7, 7, 7, 7, 0],
[5, 4, 6, 4, 3, 2, 1, 2, 0],
[14, 15, 14, 15, 15, 14, 15, 14, 14],
[12, 12, 12, 12, 12, 12, 12, 12, 12]];

This is the array that represents the rooms for each level. So we've got 5 levels at present (elevator levels higher than 5 don't exist). The numbers in the array are used to reference the tiles that are used in the background.


//GLASS CAVERN
floor3 = [[[0,0],[10,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1,0],[1,0],[0,0]],
[[0,0],[1,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
[[0,0],[102,0],[102,0],[0,0],[2,0],[0,0],[0,0],[102,0],[0,0],[0,0]],
[[1,0],[1,0],[1,0],[3,0],[3,0],[1,0],[1,0],[1,0],[1,0],[0,0]],
[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[0,0],[0,0],[0,0],[0,0]],
[[0,0],[101,1],[101,2],[0,0],[0,0],[0,0],[1,0],[0,0],[0,0],[0,0]],
[[0,0],[0,0],[1,0],[0,0],[3,0],[0,0],[0,0],[0,0],[10,0],[0,0]]];


This 2d array is for the main tiles on each level. It's 10x7: 10 tiles per screen, 7 screens per level. 0,0 would be an empty space, 2 is an elevator (for now), and anything from 3-100 is a graphical tile with no properties (so 1,0 is a barrel). 100 and up is a door. Each level uses a different door mc, so we need 101,102 etc. the second part of the array represents the room number. so [101,10] would work as say "Use tile with linkage tile_101 for the graphics and 10 we'll keep for later so we know what room it leads to".


myMiddleMap2=[{roomnumber: 1, image:0, entered:false, tile:"room1", roomArray:[[11,0], [12,0], [3,0], [13,0], [14,0], [1,0], [13,0], [14,0], [0,0],[10,0]]},
{roomnumber: 2, image:0, entered:false, tile:"room1", roomArray:[[11,1], [12,1], [2,1], [13,2], [14,3], [13,1], [14,0], [1,1], [0,0],[10,0]]},
{roomnumber: 3, image:0, entered:false, tile:"room1", roomArray:[[11,0], [12,0], [3,0], [13,0], [14,0], [1,0], [13,0], [14,0], [0,0],[10,0]]},
{roomnumber: 4, image:0, entered:false, tile:"room1", roomArray:[[11,0], [12,0], [3,0], [13,0], [14,0], [1,0], [13,0], [14,0], [0,0],[10,0]]},
{roomnumber: 5, image:0, entered:false, tile:"room2", roomArray:[[11,0], [12,1], [3,4], [13,5], [14,2], [1,8], [13,3], [14,2], [0,0],[10,0]]},
{roomnumber: 6, image:0, entered:false, tile:"room2", roomArray:[[11,0], [12,0], [3,0], [13,0], [14,0], [1,0], [13,0], [14,0], [0,0],[10,0]]},
{roomnumber: 8, image:0, entered:false, tile:"room3", roomArray:[[11,0], [12,0], [3,0], [13,0], [14,0], [1,0], [13,0], [14,0], [30,0],[10,0]]},
{roomnumber: 9, image:0, entered:false, tile:"room3", roomArray:[[11,0], [12,0], [3,0], [11,0], [12,0], [11,0], [12,0], [14,0], [30,0],[10,0]]},
{roomnumber: 7, image:0, entered:false, tile:"room2", roomArray:[[11,0], [12,0], [3,0], [13,0], [14,0], [1,0], [13,0], [14,0], [0,0],[10,0]]}
];


This is the array of objects for our rooms. We can give it as much information as we went, in this case roomnumber, image (no use right now), entered:- has the room been entered, boolean. tile: linkage for the room background mc, and roomArray is another array similar to the maintile array for coordinating object/furniture tiles across the screen. This time the second array number carries special information about what objects can be located when the player 'searches' the tile in question. Anything above 0 is an object. I've yet to incorporate anything such as puzzle pieces or weapons so at present all you'll receive is a "Got Something" message when you search objects in the rooms.