Jump to content
AndyMt

New game uploaded: Brixx

Recommended Posts

Brixx

View File

This is a Breakout/Blockout/Arkanoid inspired game named "Brixx"ย ๐Ÿ˜€.

It is very early stages, this is my very first try on the X16. You have to use a mouse. I'd also like to improve it with sound and all the nice powerups we love and hateย ๐Ÿ˜….

I've only tested it on the emulator, so if anyone of the few with real hardware can give it a go, I'm eager to know the result.

Let me know what you think...


 

  • Like 4

Share this post


Link to post
Share on other sites

This looks great! I'll have to try it out some more when I have some time. I actually wanted to create a game like this for the X16 just so it would exist, but it got pushed too far back on my priority list. Thanks for doing it and doing such a nice job!

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)

Even though it's a prototype, I agree it's fairly well done! There seems to be a small bug that sometimes the walls can be replaced with the background tile, and it seems to be possible for the ball to sneak past the paddle in the bottom left corner. But overall, very good, and thanks!

Edited by StephenHorn
  • Like 1

Share this post


Link to post
Share on other sites

Thanks @StephenHorn. Yes - the collision detection is still a bit shaky. I tried to optimize it as much as possible by just using the character positions when checking for a bounce. That's an issue if the ball travels over a corner by more than 1 pixels at a time...

If first wanted to use sprites for the bricks coming up in the trajectory and then have Vera detect collisions...ย  until I read that the emulator doesn't detect them, right?

Share this post


Link to post
Share on other sites

Correct, the emulator doesn't do collision detection yet. I submitted a pull request quite a while back to address this, but I may have implemented it backwards and as far as I can tell nobody has looked at it, much less accepted it.

It may be difficult to implement the blocks via sprites, anyhow, as you may find yourself bumping up against the VERA's per-line sprite limitations. The emulator does replicate that behavior. If you wanted the background to be visible behind the tiles, you might consider using the second layer to display the bricks on their own tilemap.

Share this post


Link to post
Share on other sites

Trusting the hardware collision detection is risky, anyway. It's best to implement your intersection formula yourself. There is plenty of time to have the CPU do the math.

Share this post


Link to post
Share on other sites
1 hour ago, StephenHorn said:

[...]

It may be difficult to implement the blocks via sprites, anyhow, as you may find yourself bumping up against the VERA's per-line sprite limitations. The emulator does replicate that behavior. If you wanted the background to be visible behind the tiles, you might consider using the second layer to display the bricks on their own tilemap.

I just wanted to use a maximum of 3 potential sprites in line with the trajectory at the same positions as the tilesย (just using the same bitmaps as the sprites). The player would not notice.

The 2nd layer I'd like to make use of to do some parallax effects - just because Vera can ๐Ÿ™‚. I struggled getting it to work (black screen only), so I left it out for now.

34 minutes ago, SlithyMatt said:

Trusting the hardware collision detection is risky, anyway. It's best to implement your intersection formula yourself. There is plenty of time to have the CPU do the math.

Ah I see - your're probably right. Doing it myself also teaches me someting. And at 8MHz... if we just had this speed back then... Ok my trusty Atari ST did, but it didn't have any hardware acceleration like Vera provides.ย 

  • Like 2

Share this post


Link to post
Share on other sites

Ok, I've uploaded a new version with improved collision detection. I hope I understood the way I'm supposed to replace the PRG in the software library with a new version ๐Ÿ™‚.

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, AndyMt said:

Ok, I've uploaded a new version with improved collision detection. I hope I understood the way I'm supposed to replace the PRG in the software library with a new version ๐Ÿ™‚.

The updated version appears correctly here ๐Ÿ™‚

Love the mouse support!

Share this post


Link to post
Share on other sites

Uploaded a new version (0.2). This one now uses BIN files to load the palette, sprites and tile set. I managed to create some artwork which (in my opinion) makes the game already appear to look a lot more like Arkanoid back in the days ๐Ÿ™‚.

I made it more difficult for myself by using 4bpb tiles in a 256 color palette I've designed myself. Then using color offsets (multiple of 16) I now can easily recolor all the bricks just by moving them in the color palette :).

Next topic is sound... Something I have zero experience.

I consider changing the layout of the playing field to be more square and show score, lives etc on the right hand side (similar to Arkanoid). Right now I think there are just too many bricks on the screen - it takes ages to complete a level...

What do you think?

  • Like 1

Share this post


Link to post
Share on other sites

Just played the level. It looks and plays great. But it doesn't seem to be possible to get the ball to go up again after it started to bounce mostly sideways. But maybe I'm just a bad player.

Share this post


Link to post
Share on other sites

The angle can be modified by letting the ball hit the paddle more at the sides. If ball is coming from the right and hits the left hand third of the paddle then it is redirected in a more steep angle. That way you can get it back upwards. Imagine the paddle is curved.

I consider to change that to be depending on the movement of the paddle. So the ball would inherit some impulse from the paddle movement. Not sure how Arkanoid worked...

  • Like 1

Share this post


Link to post
Share on other sites

I don't think Arkanoid did that, but I remember playing a clone in the MS-DOS days and I remember that paddle/ball interaction wasn't really physically plausible, but it was fun. By the way, we're in the same timezone.ย ๐Ÿ™‚

  • Like 1

Share this post


Link to post
Share on other sites

If you need the ball to go up, just right-click. ๐Ÿ˜‰

The improvements look great! The one thing that sticks out to me is that I wish the paddle had even more influence over the horizontal movement of the ball. The ball clearly gets some horizontal component added to it based on where it strikes the paddle, but I wish this influence were even stronger, or just straight-up assigned a velocity instead of influencing the existing one.

To get right at the point, I really wish that when I narrowly miss a block near the edge of the screen, I could bounce the ball off paddle to reflect the ball back and take another shot at the missed block right away at a hopefully similar (but not exact) angle. Right now, I feel like I have to bounce the ball across the entire width of the screen, because it's just about impossible for the paddle to influence the ball enough to actually reflect it back in the direction it came from.

  • Like 1

Share this post


Link to post
Share on other sites

Definitely fun to play, well done! Playing with the web emulator the mouse sometimes gets outside of the canvas. I will look into fixing this and keep the mouse captive to the emulator area.

  • Like 1

Share this post


Link to post
Share on other sites

Yes, using the mouse with the emulator is tricky. It would need to continue reporting mouse positions to the prg even if the mouse is outside of the window. That also applies to the native emulator on Windows, it also happens there.

  • Like 1

Share this post


Link to post
Share on other sites

Uploaded a new version (0.3). Now we have some additional levelsย ๐Ÿ™‚.

I also improved the collision detection further. The paddle now allows to control the ball so that it almost moves in a vertical line. Not entirely - that would be too easy, right ๐Ÿ˜‰?

Some cheat codes added, too:

  • l: level switch - this way you can check all the levels without playing them
  • a: autoplay - for testing collision detection

Have fun!

I'll upload the source code to github at some point - but I want to do some proper cleanup first. All code is inside a file named "cc65test.c"ย ๐Ÿคฃย atm.

I started with sound effects - but Vera's PSG doesn't provide me with the effects I'd like. So I also tried the YM2151, but that's a lot more complicated. Any easy way to get sound effects from some sort of library and a "player"?

  • Like 2

Share this post


Link to post
Share on other sites
3 hours ago, AndyMt said:

Any easy way to get sound effects from some sort of library and a "player"?

You can take a look at the code I wrote for XCI to playback PCM sound samples. That's the easiest way, as you can just download or make recorded sound effects and use Audacity to resample them to whatever rate you want to use. Now, this method will take by far the most amount of RAM, as you have to be able to load the entire sample from disk and play it back over time, but it gives you exactly what you want.

You can see my code for playback on GitHub:ย https://github.com/SlithyMatt/x16-xci/blob/master/engine/sfx.asm

And you can see how I download and convert free sound effects in this video:ย 

ย 

  • Thanks 1

Share this post


Link to post
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.

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.


ร—
ร—
  • Create New...

Important Information

Please review our Terms of Use