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.

Monday, August 6, 2007

..little Nexus update...

I haven't quit the Streets of Rage engine, nope in fact it may have found a home.
I was approached by a talented artist about 2 weeks ago enquiring about a possible collaboration and it looks as though we may be working on a game together!
It's too early to say much about the project but suffice to say we've both agreed that it will be a medieval Hack'n'Slash a little like Golden Axe but with a lot more gore. There's a lot of ideas and concept art flying around at the moment but little else, so I'll leave the rest of the details for later.
Regarding progress, since my engine has to be custom adapted after we've set the framework for the character sprites and such, I've had some spare time on my hands to work on other projects. Therefore I broke out the old Nexus.fla and have been working on that. Goddamn was there some shitty code in there. But that is to be expected -it was the first game I had worked on since I started using Flash for making games, after all. It's nice to know my coding skill has upped and 1 year ago I wouldn't have dreamed of using arrays of objects to contain all the 'room' information in the base. I've put all my gained knowledge back into it and now things that screwed with me a year ago are working like a charm.
You can check out the update on the right. Now you can walk into rooms using the UP arrow and er..that's it. The doors to the rooms go red when the room has been entered, just like in the original Nexus. (You wouldn't believe what a bastard that was to get working, btw). Just laying foundations dudes.
I still haven't figured out how I put XML in Flash to good effect. People keep telling me they can't live without it these days but I haven't seen what use it would be unless we're talking about loading info on the fly. Saying that, I'll probably eat my words a year from now.
Laters.

Tuesday, July 24, 2007

STREEEEEETS OF RAAAAAGGGGE!!! (umm..and spike-out)

SO, here's the story. I was fiddling around with the Streets of Rage tutorial and thought "Hmmm this engine is coming along rather well" and decided to scrap the tute and embark on actually creating a proper game. So here's what I've done so far;-

USE THE ARROW KEYS FOR MOVEMENT- DOUBLE TAP ANY DIRECTION TO RUN

W = BEAT BUTTON Q = JUMP D = POWER


BEAT BUTTON CAN BE USED FOR COMBOS+GRAPPLE ATTACKS/THROWS
POWER BUTTON CAN BE RELEASED AT SET LEVELS TO PERFORM A SPECIAL MATCHING THAT LEVEL (AKA.SPIKE-OUT)










ENJOY!

Yes it's only a basic demo, just a small preview of what's to come- but at least the mechanics at this point are- in my opinion- pretty fluid. Took a lot of fiddling around with keyhandlers and the like to get it working like that. There are soooo many beat-em ups out there that look fantastic, but playwise lack the juice to keep you intrigued. This is mostly down to controls being unresponsive (bad coding) or the characters movements too slow (bad design). So I made an effort to keep things frictionless.

Pretty much everything I'd love to see in a 2d fighting game I intend on having, borrowing the best bits from the best games and leaving out the poo. Floating combos, multiple grapple techniques, power-up attacks, firearms, hitting grounded enemies. God I'm violent. There's only a handful of those in the demo so far, but keep your eyes peeled...


I you can draw real art, (ie something other than crappy little cutesy characters), please get in touch. There's money to be made for a good artist in Flash these days. Companies are beginning to realise the huge potential of advertising within online games and financially speaking things lousy sponsorship deals are becoming a thing of the past and giving way to percentage earnings. In other words, the day may be dawning when we can actually earn what we're worth. As you can see, the current demo uses placeholder graphics and one day I hope to either put in my own graphics, or hopefully get someone who has some real talent on the job.


I discovered a couple of handy coding techniques along the way with this puppy, such as saving a reference to whichever bad guy the hero is beating on after he comes up on the hitTest--bleh, difficult for a moron like me to explain, but in other words, you could do something like. hero.current_enemy._x=500;
In other words you have all of the current enemies properties available from within the player object. It saved me a lot of time. Guess my skills are improving, but I'd still love to know how 'real' programmers manage to code entire games without putting any lines within their movie clips as I completely struggle to figure out ways of avoiding that at times. There's that old coders adage that "It's not the code but the game that matters" but it's a great feeling when you know your coding is clean and organised (and all on one frame!).


Had an odd urge to go back to coding the remake of Nexus once again. I know the project is supposedly abandoned, and I had no intention of returning to it, but I can't help it- recently great ideas for how it could be done just keep popping into my head. I started scribbling down some map diagrams for the base and who knows, I might just break open the old swf and get cracking on it again.

This doesn't mean I'm blowing off Bounty Hunter 2, but the scale of that game is so large I'd be crazy to focus entirely on it when there's other more attainable visions to chase. Go with the flow of your mind dudes, that's all you can do. As long as you never stop a project completely you'll always have stages in the year when you feel like adding a little bit to it here and there.