Jump to content
IGNORED

The Horde


graywest

Recommended Posts

Hello all!

 

It's been awhile, but I've been itching to get back into some batari Basic programming. This is a *very* early WIP version of a game that's been kicking around in my head for awhile now.

 

It's tentatively called "The Horde" and that's because there are 255 UNIQUE ENEMIES in the game. The gameplay challenge, I hope, will come from the player adapting to the different ways they are put together.

 

Think of it as a version of "Strawberry Shortcake's Musical Matchups", only with more ass-kicking.

 

Each enemy is dynamically generated. Each enemy looks different (built from a collection of heads, torsos, and legs), moves differently, defends differently, and attacks differently.

 

The player will have a selection of weapons and powerups at his/her disposal. Right now only one weapon - a bouncing bullet - is implemented.

 

The enemies model random damage when hit - a benefit of using variables to contain sprite data. Each enemy has between 2-5 hit points. When one enemy is destroyed, the next will take its place.

 

There's a lot to be done, but I wanted to share. I'm interested in feedback, good or bad. Gameplay suggestions are welcome. I like games that play to the 2600's strengths - no complicated graphical backgrounds, just an arena and some fast arcade-action.

 

(Edit 12/3: Updated .bin file to the latest version.)

TheHorde.bin

Edited by graywest
  • Like 4
Link to comment
Share on other sites

  • 3 weeks later...

Hey everyone,

 

I updated the .bin in the first post to the latest version. This has a lot of changes:

  • Player can fire
  • Enemy can fire
  • There are two different player weapons: a throwing disc that bounces off the walls and must be caught to throw again (a la Tron) and a rapid-fire bullet that disappears when it hits the playfield boundaries
  • Player has three hit points: Green player color = 3, yellow = 2, red = 1
  • The game stops when the player has 0 hit points
  • Robots have hit points as well, somewhere between 5 and 2, depending on the robot type
  • There is a powerup for the player that appears randomly - a blue box that switches weapon types
  • Robots melt into a puddle when destroyed
  • The action stops then the player hits 0 health - press the joystick button to continue

At this point, I'm aiming for something like Robotron 2084 on the 2600. From the bits of history that that I know, Robotron was attempted on the poor old VCS, but it was too flickery to be playable. I want to make something with a similar feel, but with fewer sprites.

 

I'm trying to make up for the lack of sprites with a lot more enemy types to defeat. Right now the AI is weak, but that's something I am planning to focus on. I also have plans for a few more player weapon types, as well as a score to keep track of how many robots the player has destroyed. I want to make a game that can be quickly replayed several times as the player improves.

 

Comments and suggestions are always welcome! Keep in mind that this is just an alpha version.

  • Like 1
Link to comment
Share on other sites

Holy crap. This game just went from Sunday walk in the park to red ass beat down in 5 seconds. Enemy speed is blinding and I'm dead before I can get off a shot sometimes. Need to tweak difficulty ramping because this baby is at 11 right out of the gate.

 

With that said, I love all of the other improvements and think you still have a solid concept here. Just take the difficulty down at the start and work me up to the instant kill level.

Edited by StanJr
Link to comment
Share on other sites

Holy crap. This game just went from Sunday walk in the park to red ass beat down in 5 seconds. Enemy speed in blinding and I'm dead before I can get off a shot sometimes. Need to tweak difficulty ramping because this baby is at 11 right out of the gate.

 

With that said, I love all of the other improvements and think you still have a solid concept here. Just take the difficulty down at the start and work me up to the instant kill level.

 

Haha - yes, agreed. One or two of the enemy AI types are WAY too fast. I need to work on that. One of them constantly tries to hide from the player as well, so if you end up facing that robot, it's way too easy. I think maybe a "grace period" needs to be implemented when the new enemy robot enters the playfield, to give the player a chance to react. Also, I want to work on more complex behavior.

 

I do appreciate the feedback!!

Link to comment
Share on other sites

  • 2 weeks later...

I posted a new version tonight - see the first post in this thread for the .bin.

 

A whole load of changes again, and I'm not sure I can remember everything I've done since the last version, but here are the highlights:

  • There is a score that displays the number of robots you've destroyed.
  • There is an "inventory" icon that shows which weapon you are using, gun or throwing disc.
  • The powerup causes a few different effects. It can change the player's weapon (disc or gun), it can increase the player's health, or it can instantly destroy the enemy.
  • There is a large blue "electrified" square in the arena that randomly lights up from time to time. Don't step on it or you will lose health.
  • Bugfixes, including one where the player could drop his/her weapon and it would remain stationary.
  • The game won't restart instantly if you are holding the button down upon player death - after a few seconds, you must press the fire button to reset. Gives the player a chance to see the final score.
  • A flashing "door" will indicate where new robots enter the arena - gives the player a chance to react.
  • Changes to the different types of enemy AI. I'm still not totally happy with this, so I'm planning to work more on it.
  • Added enemy firing AI. Depending on the type, the robot will fire randomly or toward the player, fast or slow.

Let me know if you run into any bugs or have suggestions - thanks!!

  • Like 1
Link to comment
Share on other sites

I got 11 robots!

 

These new additions are adding great depth to the game play. Could the power-up be a different color than the trap panel? I realize they are different sizes, but different colors would also help.

 

Am I meant to collect the little thing that appears when the enemy is vanquished?

 

Really enjoying this more and more!

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Graywest, would you mind sharing how you varied the enemy sprites? I'd like to try to apply a way to make my trees look more random. Your technique might work for me.

Thanks.

 

Sure thing. The main thing to keep in mind is that you'll need to use quite a few of your variables for this, so if you can't spare any, this probably isn't the best technique to use. You're basically trading ROM space for RAM space.

 

Bogax helped me get started a long time ago with this post:

http://atariage.com/forums/topic/235398-alternate-ways-to-create-player-sprites/?do=findComment&comment=3184747

 

The key is setting the "player0pointerhi" and "player0pointerlo" to the memory locations that correspond to the variables that you want to use. If you want to use more or less lines per sprite, you'll need to adjust the memory locations accordingly. I think Random Terrain's site has a memory map that details these locations.

 

Since generating dynamic sprites eats up a lot of my variables (I'm trying not to use Superchip RAM) I have to use individual bits of a lot of variables to make up for it. But the enemy type itself is just a single byte that I set randomly when a new enemy is needed. In the enemy generation subroutine I pull the bits from that and branch off depending on whether they are 1s or 0s to build the sprite parts. I think I use 3 bits for the head type, 2 bits for the torso, and 3 bits for the legs. That gives me 8 different heads, 4 different torsos, and 8 different legs for 256 enemies total. Actually, I think there are 255 enemies because I use %00000000 as a flag that no enemy is onscreen.

 

This probably sounds like a lot of work to set up, and it was, but once it's ready to go, you can create some fun effects, like changing the the variables for dynamic enemy damage and cool explosions. I also reuse the enemy sprite variables to determine what sort of AI should be used for the enemy - firing rates, movement types, etc.

 

I'm attaching the source code here, in case you want to browse through it. Let me know if you have any questions!

TheHorde.bas

  • Like 1
Link to comment
Share on other sites

I got 11 robots!

 

These new additions are adding great depth to the game play. Could the power-up be a different color than the trap panel? I realize they are different sizes, but different colors would also help.

 

Am I meant to collect the little thing that appears when the enemy is vanquished?

 

Really enjoying this more and more!

 

Great! Glad to hear you're enjoying it. Yes, the red "plus" symbol that is dropped when you defeat an enemy is a health pickup - it will restore one hit point. If you're already at 3 hit points (player is green) there is no reason to go after it though.

 

I'll look into the color of the power up.

Link to comment
Share on other sites

One more thing - here's the latest version, compiled from the source code in the post above. This version has some SOUND which adds a lot, I think.

 

This game still isn't finished - I haven't had as much time to work on it lately as I'd like, but I'll get back around to it. I still really want to improve and tweak the enemy AI, which isn't where I want it yet.

 

(.bin file updated here, and in the first post of the thread.)

TheHorde.bin

  • Like 1
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...