Jump to content
IGNORED

Charge! (first BIN)


jrok

Recommended Posts

I decided to post some progress on a new game I'm working on. But instead of posting a bin, I thought I'd just describe the game's progress, and throw out some screencaps I cobbled together from the current build. I really only want to post a near-final release candidate for this project, since in the past I've started working on things only to have my interest fizzle out during development.

 

EDT: WIP binary attached :)

 

The game is called "Charge!" It's working out to be a weird hybrid of Defender, Phoenix and Joust (which, not incedentally, are three of my favorite arcade games.) The action takes place on a medieval battlefield. You control a knight defending your castles from invading armies. The game progresses as a series of Waves, varying the number, type and difficulty of enemies spawned with each new Wave.

 

The Knight is equipped with a Lance and a Bow. The Lance is automatically deployed when the knight's horse reaches a certain speed, giving him the ability to kill enemy knights and soldiers on the ground. The Bow fires magical Arrows skyward at dragons and other aerial enemies.

 

A Defender-style radar readout (directly above the score) gives the player information about what is happening off-screen. Each of the surviving castles appears as a light green dot (flickered Ball). The player's position is marked by a single white pixel(missile0), while the invading enemies are represented by other pixels (flickered missile1). An additional play option allows players to track how far away certain offscreen enemies are by displaying a number in the extreme right and left of the screen (PF0).

 

Play begins with four castles to defend and three knights (lives). Some enemies will focus on destroying your castles, while others will target your knight directly. Play ends when either all your knights are killed or all your castles are destroyed. Additional knights and castles can be earned during play.

 

I've been developing the game with batari's multisprite kernel, which is simply awesome. Thanks again to Mr. Quimby (and to Mr. Wierer, for his fantastic VisbB IDE).

 

Here's a couple of pics, showing the system of relative world movement. I'll try to keep posting updates whenever I have new things to show or explain. Cheers!

 

Charge_rev1.bin

 

post-21152-1245949926_thumb.jpgpost-21152-1245960922_thumb.jpg

post-21152-1245960951_thumb.jpg

Edited by jrok
Link to comment
Share on other sites

Wow! You did all of that with batari Basic? Quite impressive...

 

Thanks! Yeah, the multisprite kernel is pretty incredible, so all credit to batari. I'm learning about how it is constructed as I go so I can hopefully make some minor modifications for the final build. I'm also toying with the idea of going up to superchip, since I am throttling every last bit. It's tempting, but I really want to try to squeeze this into a standard 8K cart.

Link to comment
Share on other sites

I've made some decent progress over the past week. Thanks to batari's help, I am now coloring the background rows. This helps in the sense that with a slightly larger viewable battlefield, the player will have a bit more time to react before he is steamrolled by a dragon or a knight careening in from one side of the screen. Also, I no longer have to flicker PF0 between 0 and 255 to acheive a (modestly) different colored border. Given these new circumstances, I've been rethinking the whole idea of using the number counters to show how far away an enemy is, since that was partly a cludge for the narrow screen and partly for debug purposes.

 

The dragons themselves are finally getting to behave the way I want: bobbing, swooping and breathing flaming death all over everything. When the player kills one, a new dragon spawns in a random position after a short period, wreaking havoc on any castles nearby. There are still a few details that need to be hammered out (having them "wrap" the world edges has caused a lot of headaches, for one thing) but in general I feel like I'm ready to focus on difficulty leveling. I've learned a lot about how to squeeze as much use out of the temp variables as possible. They are real handy for sequentially setting a series of properties before a drawscreen. In one case, I'm using temp6 as a data pointer that sets the horizontal speed, color, and number/size of the dragons in any given level. I used to waste a ton of variables to keep track of that sort of thing. Neat stuff!

 

Here's a new screenshot:

post-21152-1246301812_thumb.jpg

Edited by jrok
Link to comment
Share on other sites

I'm very close to a good beta version here. The game is definitely playable in its current form, but I think it still needs some fine-tuning.

 

What's new:

  • I've stolen four addresses from the multisprite map (the Y values of the missiles and the ball and "statusbarlength") to create health counters for each of the four player castles. Even though the core game is finished, I still need to find 3-4 more variables to steal so I can create more data pointers for the dragons and knights. Even one or two would give me a lot more flexibility in making the enemies get more difficult over time.
  • The castles change color as they recieve dragonfire damage, and turn to rubble once they've lost all their "health." When all four are destroyed, the game ends immediately. Considering changing this to a "sudden death" scenario, where the game ends if all four castles are gone and the current knight is killed.
  • Decided to omit the 6lives_statusbar minikernel to conserve cycles. Substituted it with the pfscore constant, with the three left pixels represented the number of lives left and the right pixel bar representing the health of the current knight in play. Doesn't look as pretty, but it does the job.
  • The dragons' routines are now split across two frames. Frame 1 sets the dragon horizontal path and chooses whether to attack, and Frame 2 sets the vertical attack depth and runs the firebreathing routine.
  • In the firebreathing routine, each new stream of flame is progressively rendered and erased using the player0pointers. This means I need to flicker the player's knight sprite, but only when the dragon is on screen and breathing fire. But the flicker isn't too bad, and I think I can reduce it even further if I can figure out how to set the player pointers for the virtual sprites, and use an unused player to add color back to the knight sprite.
  • The "jousting" logic is about 50% done. Currently, four enemy knights roam the battlefield, separated by zones that they personally guard. Collisions test for how close the player's Y is to the enemy's Y, with closer margins killing the enemy knight and wider ones wounding/killing the player. The knights still need to be a little smarter though, and I need to add a speed differential test to encourage the player to be moving fast as often as possible.
  • Added a Title screen and a Game Over screen.

 

New Z26 Screenshots:

 

Player Hunts Distant Enemies

post-21152-1246893185_thumb.jpg

 

Enemy Knight Running Away

post-21152-1246893368_thumb.jpg

 

Enemy Knight Kills Player

post-21152-1246893416_thumb.jpg

 

Dragon Burns Down Castle (after Killing Player)

post-21152-1246893525_thumb.jpg

Edited by jrok
Link to comment
Share on other sites

This is one of the best things I've seen on bB yet. How on earth did you do the Defender-style object map near the score? This kind of looks like your Knight Rider thing you did a while back (i.e. the horse and rider in particular.) Did you use some code from it?

Link to comment
Share on other sites

Hands down I think it's the best bB game I've seen so far!

 

I'll admit I suck at it and don't totally know what to do, but the elements are freakin sweet.

 

I love how you hold left and let go.. he'll keep running for a bit and then stop. The mini map thing is awesome. No clue how you did that. Custom ASM?

 

Not sure what that bird is on top that keeps shooting at me.

Link to comment
Share on other sites

This is one of the best things I've seen on bB yet. How on earth did you do the Defender-style object map near the score? This kind of looks like your Knight Rider thing you did a while back (i.e. the horse and rider in particular.) Did you use some code from it?

 

Thanks! I just reused the spriteset for the knight. Everything else is from scratch.

 

The object map is still a work in progress. It's composed of alternating balls (the castles), missile0 (the player's knight) and missile1 (the dragon). If I went up to superchip I could probably do a lot more with it, but if I did that I could probably do a lot more with everything I guess.

Edited by jrok
Link to comment
Share on other sites

Hands down I think it's the best bB game I've seen so far!

 

I'll admit I suck at it and don't totally know what to do, but the elements are freakin sweet.

 

Thanks man. I suck at it too, heh. I purposely made this version a little mean-spirited while I'm still fiddling with the AI and difficulty progression.

 

The mini map thing is awesome. No clue how you did that. Custom ASM?

 

No, that's all bB. There's no inline asm in this at the moment. I'm using the ball and the missiles to make it.

 

Not sure what that bird is on top that keeps shooting at me.

 

That's a dragon man! Come on and use your imagination :)

 

But seriously, the design of that sprite may change before the game is done. I'm experimenting with a 16px sprite that looks a bit more like a dragon... it'll flicker but it might look better.

Edited by jrok
Link to comment
Share on other sites

wow..... this was done in bB! lol sweet.

 

Thanks! Quick question for you (or anybody else): Are you playing this in Stella? If so, do you hear the sounds? For some reason, I'm only hearing sound in Z26.

 

 

I am playing it with Stella and hearing the sounds fine. I can't figure out what to do in the game though other than ride at full pace and lob grenades at birds :) Am I doing it right? GREAT looking game!

Wp

Link to comment
Share on other sites

wow..... this was done in bB! lol sweet.

 

Thanks! Quick question for you (or anybody else): Are you playing this in Stella? If so, do you hear the sounds? For some reason, I'm only hearing sound in Z26.

 

 

I am playing it with Stella and hearing the sounds fine. I can't figure out what to do in the game though other than ride at full pace and lob grenades at birds :) Am I doing it right? GREAT looking game!

Wp

 

Thanks, slim! Hahah yeah, that sounds about right. If you can ride under a dragon's fire column and time a shot just right, you can even avoid getting damaged. You also have to stop those dragons/birds from burning down all your castles with their firebreath/flaming-bird-poop.

Link to comment
Share on other sites

I worked on a couple of bugs and lightened up the difficulty a little in this version. I'm curious if anyone makes it to the first "boss."

 

A few notes:

  • To kill knights, try aiming a little above their Y position (the actual jousting logic has been disabled for now)
  • Try to kill dragons before they can reach a castle.
  • In later waves, some dragons must be hit more than once to kill.

 

Any suggestions are welcome.

 

Archived Version:

Charge.bin

 

Latest Version:

Charge_rev1.zip

post-21152-1247069080_thumb.jpg

post-21152-1247069331_thumb.jpg

post-21152-1247069592_thumb.jpg

Edited by jrok
Link to comment
Share on other sites

I !!was!! using my imagination. Originally I thought it was some sort of space ship about to beam me up!

 

Not sure what that bird is on top that keeps shooting at me.

 

That's a dragon man! Come on and use your imagination :)

 

But seriously, the design of that sprite may change before the game is done. I'm experimenting with a 16px sprite that looks a bit more like a dragon... it'll flicker but it might look better.

Link to comment
Share on other sites

My advice is that when you're done you have a high res title screen done up in ASM. Then nobody for sure will know this is done in bB. Or maybe you're craftier than me and can do something tricky in bB.

 

Thanks, but I wouldn't want to hide the fact that this was made with batariBasic. I mean, at the very least batari deserves credit for making 2600 programming so accessible and fun for guys like us, you know? If I ever completed and sold this, I'd put "bB" on the box.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...