Jump to content
IGNORED

Astro-Storm - My new RB+ Game


Recommended Posts

Hi all,

 

I'm currently working on a new game using RB+. Been finding it really cool, once you get used to the way to do things. I put the Light Cycles project that I mentioned elsewhere on hold for now.

 

It's a simple shooter where you blast away all the rocks before your shield runs out The shield will wear out quicker as the levels get higher.

 

I'm thinking about adding some baddies to shoot back at you, different size rocks, etc, it's still WIP.

 

All levels are randomly generated based off the same seed, so everyone should get the same levels every time. It just means I can be lazy and don't need to design waves for each level.

 

There are 3 types of rocks, each gives a different score. Apart from looks and score, they aren't any harder to kill or anything yet. Still thinking that over too.

 

You score will increase as you shoot rocks but at the end of the level your score is reduced based on time taken and shots missed. So don't just hold down the fire button if you want a big score.

 

If you press Pause on the controller (once playing) then you can pick 3 sound detail levels: 0 = Mute, 1 = All sounds except player shooting, 2 = All Sounds.

 

For some reason, sound level 2 blows up Virtual Jaguar randomly and crashes. It seems ok on my actual Jaguar though. I've tried a few things but not fixed that yet (could be cause i'm spamming the SNDPLAY too frequently?). So if you use an emulator, it's probably best to use sound level 0 or 1 for now. The game defaults to lvl 1.

Also in the emulator, some sounds just randomly don't play. Again, this seems ok on my actual Jag.

 

Please have a play and try out the ABS. I've stayed away from using a ROM because I want to play it on my Jag and only have a CD drive to play homebrews. No method to upload ROMS.

 

I've attached some screenshots and an ABS/ROM for your convenience. I might post a video at some point. Also, if I tweak anything, make changes etc then i'll post new versions here.

 

Controls

B = Fire

D-PAD = Move crosshair

PAUSE = PAUSE (yep!) / Unpause

*+# = Chew on a grenade

 

When Paused, 0,1,2 to change sound detail

 

 

Happy shooting.

post-42253-0-10436700-1437134188_thumb.png

post-42253-0-62722200-1437134198_thumb.png

post-42253-0-18696200-1437134204_thumb.png

post-42253-0-60525100-1437134211_thumb.png

AstroStorm.abs

AstroStorm.rom

Edited by Sporadic
  • Like 7
Link to comment
Share on other sites

Nice one Rik, congrats on convincing me to sign in at AA and post something for the first time in... I dunno tbh :0)

 

I gave it a few plays just now, you've really got to grips with rb+, it's very nice to see. Game shows promise as well, at first I didn't realise the rocks were following asteroids type paths, it all seemed quite chaotic and random. Second play I'd figured it out, breathed a little slower and had more fun!

 

astro-rhuv6.png

 

Glad you're leaving the pixel-based stuff behind for now in favour of the kind of fun stuff that the Jaguar and rB+ do best. Not that I have anything against your Tron stuff, it's great, just I know how much more fun it was personally when I got away from playing with that particle buffer and pixel plotting in favour of objects and things. Seeing you do this stuff and sharing your progress is motivating for myself as well, so thanks again for that and good luck with your games.

  • Like 5
Link to comment
Share on other sites

Nice one Rik, congrats on convincing me to sign in at AA and post something for the first time in... I dunno tbh :0)

 

I gave it a few plays just now, you've really got to grips with rb+, it's very nice to see. Game shows promise as well, at first I didn't realise the rocks were following asteroids type paths, it all seemed quite chaotic and random. Second play I'd figured it out, breathed a little slower and had more fun!

 

astro-rhuv6.png

 

Glad you're leaving the pixel-based stuff behind for now in favour of the kind of fun stuff that the Jaguar and rB+ do best. Not that I have anything against your Tron stuff, it's great, just I know how much more fun it was personally when I got away from playing with that particle buffer and pixel plotting in favour of objects and things. Seeing you do this stuff and sharing your progress is motivating for myself as well, so thanks again for that and good luck with your games.

Thanks for the kind words. Glad you enjoyed it! Yes, once I got to grips with some things it went much better.

 

For example, to start with I was moving the crosshairs manually 3 pixels at a time. I also used a vsync in the main loop. This was ok on the emulator but once on the real Jag it was pretty slow and jerky. I changed the crosshair movement so that when dpad direction is pressed it sets the R_sprite_xadd or yadd to 3. Then at the start of the next main loop, reset that back to 0 ready for next input. This allows RB+ to do the smooth sub pixel stuff :) I also removed the vsync and changed to the Rupdall(1) command. That is lots faster than a manual vsync call!

 

The starfield is real time, 16 sprites used for that. Its randomly created on start and then when the stars vanish they are reset to their original positions. Its hard to spot and saves generating random numbers at runtime.

I'm thinking what to add next, would be nice to have some level variation or gameplay variation and push the Jag more. I was pretty surprised how easy it handles the full screen 16bit graphics. I stopped using the 4bit stuff and ended up doing most things 16 bit. It doesn't seem to slow things down. Perhaps it would with more going on? Some things like the rocks and stars are 4bit. I also couldnt seem to create any sprites smaller than 16x16.

 

Anyway, I'm rambling now. Its just nice to talk about it and brain dump.

 

I'm open for suggestions if any come to mind. ;)

 

Memory track saves would be nice ..... If I'm remembering correctly that Raptor supports them. Hint hint :)

 

 

Cheers again guys.

  • Like 4
Link to comment
Share on other sites

Thanks for the kind words. Glad you enjoyed it! Yes, once I got to grips with some things it went much better.

 

 

I have the utmost respect for people who take the tools available and create with them silently in the background and then release, as opposed to the people who continuously ask why this or that isn't available and yet never produce anything.

 

So hats off to you :) And I hope to see more in the future! RB+ was created specifically to allow people to make Jaguar games themselves by leveraging the hardware easily via RAPTOR. Seeing games appear... magical feeling.

 

I'll work with ggn to see if we can get MemoryTrack implemented in RB+. As you say, its a basic function call in RAPTOR so it should be fairly easy to implement (at the cost of 16k of RAM)

 

The sprite size 'issue' is a limitation of the object processor. You can go smaller in x, but you have to increase the bit depth as (afair, from the top of my head) the image data width in bytes must be divisible by 8 (ie, a 16bpp sprite can be 8 bytes wide = 4 pixels) - you can go down to as low as 1 pixel high, the Jaguar won't care. Hope that makes sense?

Edited by CyranoJ
Link to comment
Share on other sites

I'm open for suggestions if any come to mind. ;)

 

Suggestions, you say? :) Here's some ideas that came randomly into my head while playing:

 

- Perhaps some things that shoot back at you? That would spice things up

- Maybe have the player shoot the rocks in a specific sequence so you get more points? (a la bombjack)

- Adding to that, in later levels lose a life if you shoot things out of sequence?

- Memory track, sure we can add that. I just didn't want to add everything including the kitchen sink and then nobody ever using it!

- All the time I was playing I kept thinking that it would probably be cool if this was mouse controlled. Now, we DO have a different audio player lying around which has mouse input but is a bit more restrictive... plus I have no means of testing it (no adapter for a mouse and vj doesn't support rotary devices). Of course a mouse can make the game all too easy. I dunno. Just laying it on the table, give it a thought and tell me if you think it'll be better for your game.

  • Like 1
Link to comment
Share on other sites

I'm open for suggestions if any come to mind. ;)

I'm trying to keep with the moving cross hairs game mechanism, so how about an "intermission" every 3 or 4 levels where you:

  • Dock with a moving target
  • Try to keep inside a warp field or worm hole [1]
  • Navigate through a moving asteroid belt (due to laser over heating?)
[1] There was a game on the Speccy (I think) that did this, but I can't remember what its called.
  • Like 1
Link to comment
Share on other sites

@CJ Cheers. Yes that sprite sizing makes sense. I found I had issues with other sizes too unless they were divisible by 8 if I recall. Even big sizes. Memory track would be awesome but no rush, please do in your own time. Is it pure Memory track or does it support cart/skunk saves too? If the skunk can save that is, not owning one, I've not looked into it.

 

@ggn Yep those are cool ideas. I'll put some thought into that. I've shot myself in the foot really because you dont control a player character, there is nothing for the bad guys to shoot at. They would have to shoot into the screen. I had thought when a bad guy appears then the sheild could reduce quicker. Not as fun as getting shot at though. Could also add something in the viewport you have to protect.

Mouse idea is cool, but I'm kind of a purist. I wouldnt want to alienate anyone from playing. Also, they would have an advantage and get higher scores. I think I'd rather force people to use the jagpad muhahahahaa. (I actually like the pad). So don't worry about digging that out. Although might be interesting im the future.

 

I am after some help on scaling if someone can help out. I thought it might make it more "Jaggy" with some scaling sprites lol.

Im having trouble doing smooth scaling. I could only get it to scale with whole numbers. I couldnt work out the correct sequence or bit shifts to pass to setobj for the size. Eg. If I have a float variable for the distance to the screen then I'd like to translate that to a scale size at runtime. Then perhaps I could have missiles coming at the player , into the screen.

 

Link to comment
Share on other sites

I'm trying to keep with the moving cross hairs game mechanism, so how about an "intermission" every 3 or 4 levels where you:

  • Dock with a moving target
  • Try to keep inside a warp field or worm hole [1]
  • Navigate through a moving asteroid belt (due to laser over heating?)
[1] There was a game on the Speccy (I think) that did this, but I can't remember what its called.
Excellent, I like it! They would be pretty cool to add. I had thought of some kind of start level where you navigate to a planet. Depending on what you do it sets the seed for the random level. Maybe that could be an adventure mode hehe.

 

Cheers for the input.

 

The .bas file is getting monolithic already lol Its going to be huge after more additions.

Link to comment
Share on other sites

Memory track would be awesome but no rush, please do in your own time. Is it pure Memory track or does it support cart/skunk saves too?

 

RAPTOR currently supports standard cart saves (eeprom), Jagtopus cart saves (Won't be of any use to anyone external) and web code generation (This is removed in the current public RAPTOR builds as we have no way to release a secured back end that won't expose all our own scoreboards)

Link to comment
Share on other sites

  • 2 weeks later...

Just a little update;

 

I've added a level transition mini-game (every 2 levels) to help you increase your score. Basically 'fly' through the navigation boxes. I might expand this and actually cause a game over if you miss 1 or 2. Still deciding.....

 

Also just finished implementing the highscore system with name input.

 

I'm at work at the moment, so I can't test it on my actual Jag. Once i'm happy then i'll release an updated version.

 

:-D

  • Like 6
Link to comment
Share on other sites

The .bas file is getting monolithic already lol Its going to be huge after more additions.

 

Ok, this bugged me a bit so I searched the bcx manual and found this:

 

 

 

$INCLUDE directive

Purpose: $INCLUDE merges a file into the calling BCX file at translation time. $INCLUDE can be used anywhere in a program and the file will be inserted at the position of the $INCLUDE directive

 

Definitely something I'd try! (crosses fingers this works!)

  • Like 3
Link to comment
Share on other sites

Ok, this bugged me a bit so I searched the bcx manual and found this:

 

 

 

 

Definitely something I'd try! (crosses fingers this works!)

 

 

Nice find! I was going to look for something like that. I'll definitely give that a try as i'm currently pushing 1357 lines of code.

 

It would be good to organise functions into utility files for example, or player stuff into a player.bas

 

I've delayed releasing the update I mentioned because the navigation mini-game I added is too slow on my actual Jag. I only had chance to try it tonight (anyone need a coaster? I have a few laying around now... )

It's nice and quick in the emulator though. Shame the emulator isn't matching the real speed in this case. Normally it's the emulator that runs slow if anything.

 

But, the highscore table works with and without the memory track inserted.

I managed to save my first highscores :) So thanks again everyone involved in getting that added.

 

Hopefully tomorrow lunch I'll get chance to tweak the mini-game and dig some speed out from somewhere. Just a shame I won't know if its working until I burn another coaster.

  • Like 3
Link to comment
Share on other sites

Nice find! I was going to look for something like that. I'll definitely give that a try as i'm currently pushing 1357 lines of code.

 

It would be good to organise functions into utility files for example, or player stuff into a player.bas

Pah! Not even 10000 lines yet? It's small then ;)

 

I've delayed releasing the update I mentioned because the navigation mini-game I added is too slow on my actual Jag. I only had chance to try it tonight (anyone need a coaster? I have a few laying around now... )

It's nice and quick in the emulator though. Shame the emulator isn't matching the real speed in this case. Normally it's the emulator that runs slow if anything.

No thanks, we're good - after creating about 50+ of them to create ULS (which is the magic sauce JiFFI uses to generate CDI images) and a ton of others for sfdx I think we're covered!

 

Plus, don't give those coasters away - just put them up on ebay as L@@K R@R3 PRE-ALPHA VERSION, $$$$$$!

 

But, the highscore table works with and without the memory track inserted.

I managed to save my first highscores :) So thanks again everyone involved in getting that added.

Okay, I have to mention that I never tried this because I don't actually own a Jagcd (then again I do own a MT...). Huge relief to read that it works!

 

Hopefully tomorrow lunch I'll get chance to tweak the mini-game and dig some speed out from somewhere. Just a shame I won't know if its working until I burn another coaster.

Worst case, if you can post a snippet of the code and relevant supporting files we could help. (or you can send us the code if you're too ashamed to put it up in public!)

Edited by ggn
Link to comment
Share on other sites

I've delayed releasing the update I mentioned because the navigation mini-game I added is too slow on my actual Jag. I only had chance to try it tonight (anyone need a coaster? I have a few laying around now... )

It's nice and quick in the emulator though. Shame the emulator isn't matching the real speed in this case. Normally it's the emulator that runs slow if anything.

How are you doing this? If its drawing lines you might be better off using scaled bitmaps instead. Or use bitmaps of lines and assemble them on the fly to make the shapes you need.

Link to comment
Share on other sites

Pah! Not even 10000 lines yet? It's small then ;)

 

 

No thanks, we're good - after creating about 50+ of them to create ULS (which is the magic sauce JiFFI uses to generate CDI images) and a ton of others for sfdx I think we're covered!

 

Plus, don't give those coasters away - just put them up on ebay as L@@K R@R3 PRE-ALPHA VERSION, $$$$$$!

 

 

Okay, I have to mention that I never tried this because I don't actually own a Jagcd (then again I do own a MT...). Huge relief to read that it works!

 

 

Worst case, if you can post a snippet of the code and relevant supporting files we could help. (or you can send us the code if you're too ashamed to put it up in public!)

Highscore code MT ship straight to production! Excellent :)

The only thing I had to do was iterate over the raptor_highscores_hex array first to see if the player is in the top 10. This then drives the logic to display the "Enter your name" screen. Then call the hiscore_check(score,name$) function to actually enter it into the table.

 

I'll see how I get on with this and post an example project if I get stuck. Cheers.

 

 

I'm happy to run test binaries for you, in both NTSC and PAL - PM me if you need this.

Awesome, thanks for the offer. Very much appreciated.

 

 

How are you doing this? If its drawing lines you might be better off using scaled bitmaps instead. Or use bitmaps of lines and assemble them on the fly to make the shapes you need.

It's a single scaled bitmap.

 

All the bit of code is doing is updating the starfield (same as in the main game) and scaling a single 32x32 bitmap of a hollow rectangle from 0 to 255. Basically so it looks like it's coming at you.

Its X,Y (random) position are worked out before this part of the game starts and stored in an array so there isn't any realtime RND going on.

 

As it scales I have to adjust the x,y position based on the current scale because the origin is in the top left rather than centre of the sprite. This keeps it in the correct position as it scales. There isn't any crazy math here either.

 

I'll play around and see what happens.

Link to comment
Share on other sites

 

Ok, this bugged me a bit so I searched the bcx manual and found this:

 

 

 

 

Definitely something I'd try! (crosses fingers this works!)

This totally works!!!

 

I now have multiple .bas files with subs, functions in them. These then just get included at the bottom of the main .bas file.

 

Eg.

 

$INCLUDE "stars.bas"
$INCLUDE "sound.bas"
$INCLUDE "scores.bas"
$INCLUDE "navigation.bas"
$INCLUDE "util.bas"
It even looks in the working folder for them so you don't need to hard code a full path :-D
Edited by Sporadic
  • Like 4
Link to comment
Share on other sites

Just had an idea that might be cheaper in terms of performance.....

 

Ditch the scaling and just create a 128x128 sprite and animate it to make it look like its getting larger/closer.

 

Then I can just dump it at the correct x,y and run the animation..... rinse and repeat.....

 

Could probably make it look a bit nicer too then.

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