Jump to content

Photo

Wal-Rush 2: Tick Tusk [Complete]


14 replies to this topic

#1 JWalrus OFFLINE  

JWalrus

    Space Invader

  • 13 posts

Posted Sun Feb 25, 2018 12:55 PM

What follows is the original post. The downloads attached are outdated. Click here for the latest version!

Hello, AtariAge! I made a game called Wal-Rush! in the beginning of 2016 (a more updated version of which is downloadable here). Recently, I had been thinking that there were a few things I could have done to improve it. So now, I am making a sequel from scratch! Funnily enough, Scratch was this game's first platform.
 
Wal-Rush 2: Tick Tusk
BeRzyoT.gif
 
This game has a large emphasis on time. The bar at the bottom left indicates how much time you have left before the game is over, which decreases over time and with running into the exploding red mines. However, collecting the collectibles will increase your score and give you more time. (The hourglass does nothing now, but I plan to have it stop the timer from changing for a while.)
 
This is a work in progress, so there is a lot of work to make this into a full game. (The "game over" screen is literally just a drawscreen loop at this point, heh.) I hope to keep the size under 4K, but I have only 1355 bytes of space left, so who knows?
 
Download attached. Source also attached. Tell me what you think!

Attached Files


Edited by JWalrus, Sun Mar 4, 2018 4:38 PM.


#2 JWalrus OFFLINE  

JWalrus

    Space Invader

  • Topic Starter
  • 13 posts

Posted Mon Feb 26, 2018 8:50 PM

Bump.
 
New version! While still not complete, this is a (barely) playable version, until you game-over.

The bombs now make you spin around, and the hourglass powerup actually works! The hourglass will freeze your timer for a while, until the bar in the bottom right stops animating. (No, you cannot stack the effect with multiple hourglasses. ;) )

390VLe2.gif

Download attached. Source code also attached. I would like some help in reducing the size of the data for the pfscore2 bar (the one that animates when time is frozen), if possible.

Attached Files



#3 JWalrus OFFLINE  

JWalrus

    Space Invader

  • Topic Starter
  • 13 posts

Posted Wed Feb 28, 2018 8:20 AM

Bump.

This will hopefully be my final version, aside from maybe tweaking speeds and item probabilities. I literally only have 1 byte in order to do anything else, so I think it's safe to say I have nothing to add.


 
I use the Bitmap Minikernel here to put the title of the game between the playfield and the score.

Download attached. Source zipped and also attached. Tell me what you think!

Attached Files



#4 JWalrus OFFLINE  

JWalrus

    Space Invader

  • Topic Starter
  • 13 posts

Posted Tue Mar 6, 2018 7:32 AM

Bump.

#5 StanJr OFFLINE  

StanJr

    Web-slinger

  • 15,310 posts
  • fun or bust
  • Location:Louisville KY

Posted Mon Mar 12, 2018 7:27 PM

I wish it hadn't taken me so long to get to this game.  First off the Walrus and the entire concept is adorable.  I really like everything you've got going here conceptually.  However, as it plays now, the game is WAY too easy.   Clocks come too often so there is no real threat of running out of time unless you just really suck at dodging the mines.  The difficulty also doesn't seem to ramp.  The speed/frequency of the approaching obstacles/items doesn't seem to change, no new enemies/power-ups come into play, there are no new game elements.  Granted I only played to about 1400 pts., but that was a solid 3-4 minutes of game time and in that amount of time something if something novel was going to happen it needed to happen.  This was the same problem Go Fish! had a decade ago.  Great game, but it took upwards of five minutes for things to get interesting.  In an arcade style game that's not going to fly.

 

Also I don't think the player should be able to ride the top of the screen letting dangers pass by until a power-up appears.  This is what I did for most of the game.

 

Fish should give points OR time not both.  Still not entirely sure what the hourglass does apart from freeze the playfield and cause an additional timer bar to appear in the bottom right.

 

Also not sure why my score is getting cut off of my screen (using Stella, see pic)

 

What is the Walrus bouncing on?  Ice?  Is he trying to avoid falling in the water and freezing?  I didn't see any story provided for what's going on.

 

I think you've got a winner of a concept here, but the gameplay needs some fleshing out to make this something I want to keep coming back for.

 

:spidey:

Attached Thumbnails

  • WalRush2.png


#6 stephena OFFLINE  

stephena

    River Patroller

  • 3,133 posts
  • Stella maintainer
  • Location:Newfoundland, Canada

Posted Tue Mar 13, 2018 4:17 AM

Something strange seems to be done with auto-detecting the first visible scanline (late VSYNC, maybe?).  For now, go to Options -> Game Properties -> Display and set 'Y-start' to 32.  Then click OK and reload the ROM.

 

EDIT: I should add that this is only a temporary fix, since it's likely that if you play this on a real console and TV, it will be cut off too.  So it probably needs to be fixed in the ROM itself.



#7 Random Terrain OFFLINE  

Random Terrain

    Visual batari Basic User

  • 28,681 posts
  • Controlled Randomness
    Replay Value
    Nonlinear
  • Location:North Carolina (USA)

Posted Tue Mar 13, 2018 7:07 AM

Something strange seems to be done with auto-detecting the first visible scanline (late VSYNC, maybe?).  For now, go to Options -> Game Properties -> Display and set 'Y-start' to 32.  Then click OK and reload the ROM.

 

EDIT: I should add that this is only a temporary fix, since it's likely that if you play this on a real console and TV, it will be cut off too.  So it probably needs to be fixed in the ROM itself.

 

I had to change it to 28 for Seaweed Assault to look the way it does on a real Atari 2600:

 

atariage.com/forums/topic/205927-stella-inaccuracies/?p=2648567



#8 JWalrus OFFLINE  

JWalrus

    Space Invader

  • Topic Starter
  • 13 posts

Posted Tue Mar 13, 2018 7:11 AM

I wish it hadn't taken me so long to get to this game.  First off the Walrus and the entire concept is adorable.  I really like everything you've got going here conceptually.  However, as it plays now, the game is WAY too easy.   Clocks come too often so there is no real threat of running out of time unless you just really suck at dodging the mines.  The difficulty also doesn't seem to ramp.  The speed/frequency of the approaching obstacles/items doesn't seem to change, no new enemies/power-ups come into play, there are no new game elements.  Granted I only played to about 1400 pts., but that was a solid 3-4 minutes of game time and in that amount of time something if something novel was going to happen it needed to happen.  This was the same problem Go Fish! had a decade ago.  Great game, but it took upwards of five minutes for things to get interesting.  In an arcade style game that's not going to fly.
 
Also I don't think the player should be able to ride the top of the screen letting dangers pass by until a power-up appears.  This is what I did for most of the game.
 
Fish should give points OR time not both.  Still not entirely sure what the hourglass does apart from freeze the playfield and cause an additional timer bar to appear in the bottom right.
 
Also not sure why my score is getting cut off of my screen (using Stella, see pic)
 
What is the Walrus bouncing on?  Ice?  Is he trying to avoid falling in the water and freezing?  I didn't see any story provided for what's going on.
 
I think you've got a winner of a concept here, but the gameplay needs some fleshing out to make this something I want to keep coming back for.
 
:spidey:

Thank you for the compliments! Let me try to explain some of the things you bring up.
 
First off, the game is based on this YouTube video that was shown 3 minutes before the opening of CodeWalr.us, a website I'm a member of. The original Scratch version was based on the flying walrus in that video (and it was grayscale to look like a TI calculator game), and my original Atari version mainly was based on that. So the background is not ice, and to be honest I don't even know what it was in the first place.

I do agree with you on the difficulty point. Perhaps I can modify this so that the air mine follows your current Y position. Also, the speed of the obstacles is supposed to increase as you run out of time (and it used to increase more, but then I didn't have enough space for some extra goodies).

Do you have suggestions on what can give back time? The clocks (which refill your timer) are supposed to be somewhat more rare, so one cannot be expected to really rely on them. Here are my current item probabilities:

Air Mine: 50%
Fish: 32.8125%
Clock: 10.9375%
Hourglass: 6.25%

The hourglass freezes time for a bit (indicated by the background also not scrolling), until that timer stops animating. I've also made it so anything that modifies your time has no effect when the hourglass is active. Should I change this?

Perhaps your score is getting cut off because of my somehow misusing the Bitmap Minikernel. I used it to display the title alongside the game, because there's no room in 4K for the Titlescreen Kernel, and I wanted to keep this under 4K.

Again, thanks for the compliments and constructive criticism!

#9 stephena OFFLINE  

stephena

    River Patroller

  • 3,133 posts
  • Stella maintainer
  • Location:Newfoundland, Canada

Posted Tue Mar 13, 2018 8:33 AM

 

I had to change it to 28 for Seaweed Assault to look the way it does on a real Atari 2600:

 

atariage.com/forums/topic/205927-stella-inaccuracies/?p=2648567

 

This may no longer be necessary for that ROM, since the TIA core rewrite has fixed many of those 'starting line' issues.  I'd have to test the ROM in this thread on real hardware to know for sure if it is a y-start problem or an issue with the ROM itself.  I will check later today.



#10 iesposta OFFLINE  

iesposta

    River Patroller

  • 3,694 posts
  • Retro-gaming w/my VCS
  • Location:Pennsylvania

Posted Tue Mar 13, 2018 9:03 AM

I found 40 bytes.

 

You already have a huge saver in your coding style!

* Always drop the "goto" IF it compiles in an "if something then goto​ label".

(Technically it is something like the compiled code "label" has to be within 128 bytes of the "then goto", you can delete the "goto". Dropping "goto" saves 4 bytes each time. If compiling fails, then you need to add back "then goto".)

 

* Line up same values on one long line. i.e.

 apple = 11: pear = 11: score2 = %00001011​ 11     I hope that binary actually equals eleven! :)

It makes source harder to read, but it saves bytes. Usually there's a lot of " = 0" and lots of " = 255" , so put them on one line separated by the colon if you are able.

(Technically this:

 one=0

 two=0

 three=0

 temp=0

compiles to (assembly in readable words):

 Load 0

 Store 0 in one

 Load 0

 Store 0 in two

 Load 0

 Store 0 in three

 Load 0

 Store 0 in temp

... really, it does that.)

 

This basic code:

 one=0: two=0: three=0: temp=0

 compiles to (in assembly readable words):

 Load 0

 Store 0 in one two three temp

... hope that makes sense. I always think I'm terrible at teaching / explaining. :)  )

 

Your Channel0 sounds were all AUDC0=8, so that temp5 can be skipped and set the audio channel directly with AUDC0=8, and then drop all the 8's in the data statements.

I expanded on that idea in my own sounds / songs data by using "flag" numbers that let me change/set the volume or duration or channel directly rather than from duplicated data in data statements. For instance Channel is probably only going to be 1, 4, 8 or 12. Or the pure sound flipping of channel 4 and channel 12, I'll use flag numbers like 35 and 42 to flip pure channel 4 and channel 12 then remove all the repeated 4's and 12's from the data statement. 

That's an instance of compression that I dreamed up to remove all the repeated data in data statements. Usually there's a lot of 0's in data statements also. I think of ways to remove all those repeated zeros.

 

That's how I returned 40 bytes.

I didn't look at the timer bar you asked about, sorry. Off the top of my head, you could use an addition or subtraction counter or loop to add or remove those bits that turn into the timer bar??

 

Attached Files



#11 StanJr OFFLINE  

StanJr

    Web-slinger

  • 15,310 posts
  • fun or bust
  • Location:Louisville KY

Posted Tue Mar 13, 2018 2:23 PM

Clocks are fine for restoring time, I would just have them restore less, maybe 50% of the current bar or just 25% of the total bar.  But right now they show up a LOT.  I got 3 back-to-back during one game!  And hourglasses were coming rather frequently as well.  The bulk of the game should be fish and mines, and when you see a clock or an hourglass you make every effort to pick them up.  I never had an issue with running out of time, I stopped playing because I felt like I had seen everything the game was going to show me.  I think if you make the clock and the hourglass have an equal % of generating, and maybe split the rest between the mine and the fish, you might have something.  Say 30% fish, 40% mine, 15% clock, 15% hourglass.  Not sure if that makes the hourglass and clock show up too often, but those are the kinds of ratios I think might work.  

 

The only speed increase I see in is the movement of the play field, I don't see the mines or fish coming any faster than usual, just one right after another.

 

Is it possible to add "safe spots" where the Walrus can land and catch his breath a minute? (I'm now thinking about the video you linked to), or other kinds of enemies to dodge?

 

Your Walrus makes the SNES walrus in the video look silly.  Hooray for VCS Walrus!

I love the concept and the visuals are great!  Keep up the great work!

 

:spidey:



#12 Kiwi OFFLINE  

Kiwi

    Stargunner

  • 1,535 posts

Posted Tue Mar 13, 2018 8:08 PM

Looking over the code, I did find a bug.

 rem Check if high score should be updated.
 if sc1 > hi_sc1 then _New_High_Score
 if sc2 > hi_sc2 then _New_High_Score
 if sc3 > hi_sc3 then _New_High_Score
 goto _Skip_High_Score

So if you scored 125 and got a high score, it'll save it properly. The next game you score 50, then your new high score will be 50.  High score is a bit harder to figure out with 8 bit numbers and usually take me several hours to get it to work.



#13 Random Terrain OFFLINE  

Random Terrain

    Visual batari Basic User

  • 28,681 posts
  • Controlled Randomness
    Replay Value
    Nonlinear
  • Location:North Carolina (USA)

Posted Tue Mar 13, 2018 10:41 PM

Looking over the code, I did find a bug.

 rem Check if high score should be updated.
 if sc1 > hi_sc1 then _New_High_Score
 if sc2 > hi_sc2 then _New_High_Score
 if sc3 > hi_sc3 then _New_High_Score
 goto _Skip_High_Score

So if you scored 125 and got a high score, it'll save it properly. The next game you score 50, then your new high score will be 50.  High score is a bit harder to figure out with 8 bit numbers and usually take me several hours to get it to work.

 

Related link:

 

randomterrain.com/atari-2600-memories-batari-basic-commands.html#savehighscore



#14 iesposta OFFLINE  

iesposta

    River Patroller

  • 3,694 posts
  • Retro-gaming w/my VCS
  • Location:Pennsylvania

Posted Wed Mar 14, 2018 4:00 AM

The free space is now 162 bytes.
Surprised myself I got that much back. You weren't at zero bytes left, there was 20 bytes.

I don't know if you can do anything with 162 bytes, but there's a lot of suggestions (which is my weakest skill - game logic). I'll take sound, art, layout, music, optimization over "efficient game logic" any day.
Like in my DK Arcade 2600, if Byte Knight and RevEng and Omegamatrix and others hadn't helped get the bugs out of DPC+ batari Basic and coded animation arcade-like game logic, my version would have had fireballs going back and forth like the Coleco original. I got as far as The Carpenter being able to climb and walk around the Rivet level 4.

I changed the highscore code to Random Terrain's code. That used bytes.
Then I removed more music data, and put some same code in a gosub subroutine.
The "set optimization noinlinedata" saves a nice chunk of ROM. It just means to have data statements outside of loops and your program doesn't run through them - which where I logically put data statement naturally.
I just learned that the always recommended "set smartbranching on" actually is _supposed_ to put in goto's after then's that are going to a label 127 bytes or more "out of range", but it misses sometimes and it's a pain to track down the needed goto that's causing your program not to compile.
I now just don't use "then goto" if I know the label is close, and then later start at the top and remove the goto after a "then goto" and compile, and go through each one, and if one causes a non-compile I'll put it back, and that one big optimization pass I always do, especially when you have code over 6 4K banks like the batari Basic 1.1 DPC+ kernel lets you use. (Bank 0 is nearly all full of bB code, so there's Bank 1, 2, 3, 4, 5 & 6 to code into a 32K ROM.


It's challenging and fun to make a good game in 4K.
FLAPPY was my 2nd game in the 1.0 bB 4K size, and I went for near Activision quality and game play like Barnstorming. Barnstorming is trying to beat the clock and get a faster finish time in a course that ends. Mine is opposite in that you try to stay flapping in the air for as long as you can, and then you want to play again to get an even higher score. The difficulty speed tops out after 40 points and if you can "flap" that fast it can either be a challenge or monotonous
It's even more challenging to try to optimize and compress such small, efficient code.
But for me it's a fun hobby!

Attached Files



#15 JWalrus OFFLINE  

JWalrus

    Space Invader

  • Topic Starter
  • 13 posts

Posted Wed Mar 14, 2018 7:21 AM

Clocks are fine for restoring time, I would just have them restore less, maybe 50% of the current bar or just 25% of the total bar.  But right now they show up a LOT.  I got 3 back-to-back during one game!  And hourglasses were coming rather frequently as well.  The bulk of the game should be fish and mines, and when you see a clock or an hourglass you make every effort to pick them up.  I never had an issue with running out of time, I stopped playing because I felt like I had seen everything the game was going to show me.  I think if you make the clock and the hourglass have an equal % of generating, and maybe split the rest between the mine and the fish, you might have something.  Say 30% fish, 40% mine, 15% clock, 15% hourglass.  Not sure if that makes the hourglass and clock show up too often, but those are the kinds of ratios I think might work.  
 
The only speed increase I see in is the movement of the play field, I don't see the mines or fish coming any faster than usual, just one right after another.
 
Is it possible to add "safe spots" where the Walrus can land and catch his breath a minute? (I'm now thinking about the video you linked to), or other kinds of enemies to dodge?
 
Your Walrus makes the SNES walrus in the video look silly.  Hooray for VCS Walrus!
I love the concept and the visuals are great!  Keep up the great work!
 
:spidey:

I will consider your suggestion about the items.

Yes, the obstacles do move faster, but not as fast as the playfield accelerates, and in much lower increments of speed. Perhaps with the extra space iesposta was able to free up, I can make this a bit more fast and obvious.

While making some sort of safe spot is technically "possible", I suppose, I don't think I should do it for a number of reasons.

Thanks for the compliment on the walrus design! Funny enough, xlibman (formerly DJ Omnimaga) over on CodeWalrus made a calculator version of Wal-Rush, but instead of the normal walrus, he used mine (one-color-per-scanline and all :) ).
87045.gif

Also, iesposta, when I compiled Wal-Rush, the report I got back said I had 1 byte left (which stayed the same even after I removed the Player-2-FIRE-hiding-the-obstacle line...weird), so I don't know what's going on there. Thank you, I do appreciate you taking the time to find the optimizations you did. I will use the newly-free bytes to add even more goodies :D




0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users