Jump to content
IGNORED

[WIP] Lawn Boy!


KevKelley

Recommended Posts

I have been playing around with some ideas partially inspired by rsiddall's lawnmower screen saver post. This idea was something I had thought about in the past and have finally decided to take a stab at it after working out some details.  I figured I would share my concept. This, like some of my other projects started as a bit of a learning exercise.  Much of the ideas behind this program I had gotten stuck on when making Manatee Madness and Bag Boy but had learned while working on Crossdock so I'm hoping that the lessons I learn here I can then revisit those other games with better insight. My goal with this program was to try and combine elements from my other games and see if I can integrate them into a coherent design, as well as try and learn how to use Superchip RAM. 

 

The things that I have borrowed or plan to use from my other games:

 

  • I adapted the idea of changing the playfield colors to show the progression of the game from Manatee Madness! (I use this to signify level changes in Bag Boy too).
  • I played around with pfread and pfpixel to mow the lawn - something I had help with in Crossdock and started playing around with in Cone Ball to learn more about using it.
  • I plan on using a kind of enemy/obstacle generation similar to what I used in Crossdock/Dock Boy and Bag Boy.

 

  

Title:

Lawn Boy!

 

Gameplay:

A storm is approaching and Lawn Boy must finishing mowing his lawns. Avoid obstacles and animals to finish mowing a field of grass but if the timer runs down the sky will get a little bit darker and the storm closer. 

 

The game screen shows the lawn in the center of the screen with a status bar, counters, and score on the bottom of the screen. 

The counters do not represent your lives but instead represent fuel.  The more fuel you have the quicker you can move.

The status bar is the time limit.  If it runs out of time the color of the sky changes color and the status bar fills back up.  This is essentially your life counter.

On the screen your sprite is represented by a person pushing a lawnmower. Press the fire button to mow the lawn. 

 

Currently, only one obstacle/animal is present - a swarm of bugs and right now it doesn't do much except follows the player when they mow.  

 

To Do:

  • Holding down fire button causes the lawnmower to heat up.  This will be represented by the gas counters changing, either by changing the sprite, the color, or adding an animation. Overheating may result in slower movement (less gas counters). I might even use the status bar color or sound cues for this.
  • Additional obstacles/animals:
    • Swarm - When they touch Lawn Boy he will slow down.
    • Snake - They will slither across the screen from left to right.  Touch one and it will cause Lawn Boy to momentarily pause.
    • Bunny - Avoid running over the bunny.  It will try to get in your way. Running over it will cause loss of gas. 
    • Gopher - It will dig holes in your way.  Falling in one of the holes will cause a momentary pause and loss of gas.
    • Rain/puddles - Rain will fall from the sky and create puddles that will get in your way.
    • Water - Water will flow up or down the screen causing an obstacle.
    • Sprinkler - A sprinkler head pops up and shoots water in a direction.
    • Birds - Flying by or pooping. 
  • Bonuses
    • Gas tank - Increases movement speed (additional gas tank counters)
    • Umbrella - Resets statusbar counter.  
    • Drink - Momentary speed increase.
    • Clock - Sets storm back one screen.
    • Oil - Cools down mower.

 

 

Things to figure out:

One of the big things that I am stuck on is just how to integrate the enemies and bonus.  Since I am limited to the 2 sprites, I am considering having the enemies "strike" for a determined length (like every x amount of points or have the enemy on screen until a counter reaches a certain point) and then flee off screen to where the code is run to either spawn another obstacle/animal or a bonus.  My thoughts are that the further along the game the more additional chances are, so in the beginning you may face the swarm and snakes and bunnies, but as the game progresses then there may be additional things like copies of the obstacles to avoid.

 

I also don't know what to do with the ball.  To make the playfield I utilize every pixel.  When you mow a certain section you turn the playfield pixel off.  Since I also use pfcolors, that would mean that the ball would blend in with the playfield or if shown on a mowed spot look as if the grass had grown back. I am trying to figure out how to utilize the ball to enhance game play. Do I have it randomly generate at a certain point so that you must mow it? Do I have it hidden and if mowed it activates some kind of event? Do I try to use it in conjunction with the sprites, like a crude animation of the mowed grass behind Lawn Boy? I am leaning on having it pop up during gameplay.

 

I am also thinking of having a type of bonus screen where the ball (and player 1 sprite and missile) appear and you have to either mow or touch them (or have a leaf blower and blow them to the sides before the timer runs down for some extra points) This bonus screen might be after you complete a certain number of levels and used as a way to break up the gameplay a bit.  Since I am using Superchip RAM I definitely have some extra space. 

 

Anyway, thanks to all those who have helped me in the past and in some of my more recent posts and here is a working .bin. I sped up the level transitions just so that you can see the progression.

 

Thanks!

 

Kevin

 

 

LAWNBOY_2021_9_28.bas_8.png

LAWNBOY_2021_9_28.bas

 

LAWNBOY_2021_10_04a.bas.bin

Edited by KevKelley
  • Like 11
Link to comment
Share on other sites

I'm intrigued! ?

 

The idea that mowing attracts the swarm of bees is a pretty cool play mechanic!

I thought they would kill me so I stopped mowing until they were far enough away to begin again.

 

Running out of gas (versus unlimited gas) might be something you could incorporate the ball's use with.

You touch on "power-ups" as a possible solution.

 

Anyway...enjoyed the demo and look forward to more!

 

  • Thanks 1
Link to comment
Share on other sites

1 minute ago, rsiddall said:

I'm intrigued! ?

 

The idea that mowing attracts the swarm of bees is a pretty cool play mechanic!

I thought they would kill me so I stopped mowing until they were far enough away to begin again.

 

Running out of gas (versus unlimited gas) might be something you could incorporate the ball's use with.

You touch on "power-ups" as a possible solution.

 

Anyway...enjoyed the demo and look forward to more!

 

Yeah. Right now i just have the basic level and gameplay down.  I was considering that when an enemy touches you it basically takes away a life but I figured if that could get rather difficult and would essentially make every enemy the same, just with different movements.  The first one I made was the swarm because it was easy to program and so I can try to figure out the direction I wanted to go with this. I had considered running out of gas vs just getting slower as an option, but I had thought the only real way I could measure that is with the statusbar, but then how would I indicate when the storm will get closer (essentially the loss of life).  My thoughts are that by going slower it just increases the challenge of the level because it become more of a race against the clock, so you could be good at dodging obstacles or good at precise mowing... or both. 

  • Like 1
Link to comment
Share on other sites

20 hours ago, KevKelley said:

Yeah. Right now i just have the basic level and gameplay down.  I was considering that when an enemy touches you it basically takes away a life but I figured if that could get rather difficult and would essentially make every enemy the same, just with different movements.  The first one I made was the swarm because it was easy to program and so I can try to figure out the direction I wanted to go with this. I had considered running out of gas vs just getting slower as an option, but I had thought the only real way I could measure that is with the statusbar, but then how would I indicate when the storm will get closer (essentially the loss of life).  My thoughts are that by going slower it just increases the challenge of the level because it become more of a race against the clock, so you could be good at dodging obstacles or good at precise mowing... or both. 

All valid points.

 

Wanted to share some attachments with you if it's cool.

 

If you decide not to use missile1 (or can't find a good use), then you might consider a multicolored player/mower. ?

 

Included an option for one-color as well although my guy is 1 pixel taller than yours. ?

 

Whatever you decide, I think you have the beginnings of an interesting game.

 

Thanks for sharing!!

LAWNBOY_2021_9_28rev1.bas mowing.bas

Edited by rsiddall
  • Like 1
Link to comment
Share on other sites

4 minutes ago, rsiddall said:

All valid points.

Wanted to share some attachments with you if it's cool.

 

If you decide not to use missile1 (or can't find a good use), I've got something for you. ?

Included an option for one-color as well although my guy is 1 pixel taller than yours. ?

 

Whatever you decide, I think you have the beginnings of an interesting game.

 

Thanks for sharing!!

LAWNBOY_2021_9_28rev1.bas 9.81 kB · 1 download mowing.bas 1.25 kB · 1 download

EDIT: Sorry, reversed the REFP0s in the color mower version...but you get the idea.

Edited by rsiddall
Link to comment
Share on other sites

2 hours ago, rsiddall said:

EDIT: Sorry, reversed the REFP0s in the color mower version...but you get the idea.

Just checked it out. The animations are cool. I had considered doing a different animation for Lawn Boy, like the movement of Dock Boy in Crossdock but I also wanted to keep it simple. As for the multi-colored sprite, I like it but I have at least a couple plans for Missile1 - I use it for some of the rain and I plan on using it for things like the gopher holes or sprinkler water.

 

I had played around with various setups, like using background colors instead of the pfcolors. I settled on this one because it gave the desired aesthetic and really the only downside was use of the ball and limited missiles. I just figured that the creative process will solve that, which is partially why I decided to finally make this post. And already the back and forth has given me some great ideas to work with. 

 

 

 

 

  • Like 1
Link to comment
Share on other sites

9 hours ago, Karl G said:

Looks like it has some good potential, and keeps with your theme of "work games".  :D

 

Right now, is there any reason one wouldn't just keep the button pressed at all times?

The bee swarm should be the deterrent for keeping the button depressed at all times. Although I'm not sure they actually slow you down in this version.

mowing.bas mowing1color.bas

Edited by rsiddall
Link to comment
Share on other sites

25 minutes ago, Karl G said:

Looks like it has some good potential, and keeps with your theme of "work games".  :D

 

Right now, is there any reason one wouldn't just keep the button pressed at all times?

I haven't really programmed any negative effects. The swarm just follow you right now but once I get to that part they would effectively be a deterrent. 

 

I was kind of just setting up the look of the game first and then I was going to inject the enemies. 

 

Link to comment
Share on other sites

21 minutes ago, KevKelley said:

I haven't really programmed any negative effects. The swarm just follow you right now but once I get to that part they would effectively be a deterrent. 

 

I was kind of just setting up the look of the game first and then I was going to inject the enemies. 

 

I'm not asking about the enemies; I'm asking about pressing the button to mow vs not pressing it and not mowing. Will mowing be slower, or will gas go down more quickly, perhaps?

Link to comment
Share on other sites

1 hour ago, Karl G said:

I'm not asking about the enemies; I'm asking about pressing the button to mow vs not pressing it and not mowing. Will mowing be slower, or will gas go down more quickly, perhaps?

Oh. I misunderstood. 

 

So I was thinking that the more gas you have the faster you go. But if you maybe hit an enemy you may lose gas. 

 

If you hold down the button I was thinking the lawnmower will overheat causing it to do something, like lose a gas counter. So holding it down would be indicated maybe by a change in color or sound. 

  • Like 2
Link to comment
Share on other sites

This is a great idea. I remember playing the game Bully for the PS2, and as a punishment, the head master makes you mow the school lawn sometimes. That was actually one of my favorite parts of the game. I just found it oddly satisfying going around the trees and completing the job. I think you're onto something here. 

 

Also, Phish had an album called Lawn Boy back in the 90s. It was good. Just throwing that out there. Haha

  • Like 1
Link to comment
Share on other sites

14 minutes ago, profholt82 said:

This is a great idea. I remember playing the game Bully for the PS2, and as a punishment, the head master makes you mow the school lawn sometimes. That was actually one of my favorite parts of the game. I just found it oddly satisfying going around the trees and completing the job. I think you're onto something here. 

 

Also, Phish had an album called Lawn Boy back in the 90s. It was good. Just throwing that out there. Haha

Part of me was reminded of all those old Windows games that were Pac Man clones where instead of eating dots you mowed grass. But I am less of a Pac Man player and wanted to do something a little different.  I had considered doing something like in my other game where the player has to grab another sprite and move it around (guy grabbing lawnmower) but I thought that wasn't really necessary for this game.  The fire button accomplishes that.  Plus I was a bit limited.  But I think I can make a simple, mindless game of clearing a screen and avoiding obstacles... so kind of like Pac Man. lol. But I was more of a Dig Dug fan. 

Link to comment
Share on other sites

So since I got the basics of gameplay down (walk and mow before storm approaches), I am now working on the enemies/obstacles.

 

For this I was going to implement the code similar to what I used in the bonus screens in Crossdock.  In Crossdock I used a variable that would randomly choose the enemy that would appear (pooping bird, spider, ants, snake, etc). I want to have a variety of enemies appear in a screen so I am thinking that the enemies that spawn will be dependent on how far along you are in the game.  So in the beginning you may be met with a swarm of bugs.  The next stages may open up more possible enemies.  And as it goes on the variety of enemies may increase, as well as with the level of difficulty in which they are at.  I think instead of a single enemy per lawn I may have them appear for a certain amount of time and then leave so either another enemy can spawn. 

 

Right now I figured the easiest thing for me to do is program the various enemies and when I am done I plug it into my Crossdock code and then plop it into Lawn Boy. I am also experimenting with different obstacles to see if one mechanic would be small enough to work in Crossdock (I have been trying to modify the obstacles just a tad to balance the game a bit and see if I can squeeze just a little more into it).

 

Here is a glimpse of one of my other enemies - the sprinkler system. I started with one copy but figured it was too easy. Three copies seemed just right.  I have it currently moving at about a half pixel per frame but even when I doubled the speed it was still playable but very challenging.  I think I may also make a two copy version where the water continues to move left or right instead of just up.  The code is small enough and I have plenty of space so I think I can come up with plenty of options. When you get hit by the water it will deduct a gas counter. I am also considering also only making the water take away a gas counter only if the fire button is played, so there is a bit of a risk/reward - keep mowing and time it right or play it safe and let go but skip mowing so you will eventually have to doubleback.  I haven't programmed the movement when gas is reduced yet.  I am considering just having a simple check, like "if lives<>32 then..." or have movement subtract like _PX0=PX0-GAS1.  I haven't really played around with that yet.

Edited by KevKelley
  • Like 1
Link to comment
Share on other sites

Also worked on this a little - a scorpion.  While mowing, a hole will appear and after then shortly after that a scorpion will emerge.  Right now it just follows the player slowly but ideally I am trying to figure out how it follows the player but only on the mowed paths (where there is no playfield).  I suppose I will have to set up temp variables for each direction and check to see if there is a playfield in the way and if so then change direction.  I had played around with doing various collision checks but I had came up with limited success.  Guess no taking the easy way out. One thing I would probably be better is that the scorpion is slightly bigger then a pfpixel, so if I go this route then I can probably make it travel tunnels, but then I'd have to figure out how to make it change directions. I think I have seen something like it in a sample program somewhere. lol

 

And why should a Scorpion be an enemy in a lawn mowing game? Why not? 

 

My three-year-old suggested flamingos, which now that I think of it, with this being Florida could be very appropriate.  lol Maybe some nice pink flamingos to dodge!  

LAWNBOY_2021_10_01.bas_15.png

Edited by KevKelley
  • Like 2
Link to comment
Share on other sites

2 hours ago, rsiddall said:

Wow, that's a lot of things to dodge/worry about with just the addition of sprinklers and scorpion. You're going to have one busy game! Looking forward to the next demo. ?

 

My son was doing schoolwork today so I was beside him with my computer, giving me the rare moment to work. I got hung up a little on the Scorpion and by then my other son got up from a nap. I think adding other stuff shouldn't take that long. The code I am basing this off of only took me a couple days and since I have much more room to work with here I think I can have a good amount of variations. That is one thing I am always worried about - my games being too boring or repetitious. 

 

The big thing I'm trying to figure out apart from some of the harder enemies is how I swap them off the screen... which I think I may try out.  Some of the enemies will only require the player1 sprite while others utilize both missile1 and player1.  I think that for the enemies/obstacles that use just the sprite I can have the missile randomly generate and if the player hits it they can eliminate the sprite and have a chance for a random bonus item appear.  

 

I think with others that may go back and forth, like say a bird flying across the screen, I may have a moment when it is off the screen to generate stuff. For harder or more complex enemies I may just leave those on the screen for the full lawn.

Edited by KevKelley
  • Like 1
Link to comment
Share on other sites

I got my fill of telecommuting from home and being a "substitute" teacher for my 12 year old last year. Not saying I hated every minute of it but found out quickly I was not equipped to do either very well.

 

One good thing to come out of it was I stumbled upon the batari forum and rediscovered my love for Atari and the desire to learn a little programming for the console.

 

I still do an occasional telecommuting but happy both of my kids were able to return to to their schools and on-site learning.

  • Like 1
Link to comment
Share on other sites

37 minutes ago, rsiddall said:

I got my fill of telecommuting from home and being a "substitute" teacher for my 12 year old last year. Not saying I hated every minute of it but found out quickly I was not equipped to do either very well.

 

One good thing to come out of it was I stumbled upon the batari forum and rediscovered my love for Atari and the desire to learn a little programming for the console.

 

I still do an occasional telecommuting but happy both of my kids were able to return to to their schools and on-site learning.

When I had my second son I had to switch to a quieter hobby. I like to make music. So one day I stumbled upon the Tinkernut video and fell down the rabbit hole. I had tried numerous times over the years to learn programming to make retro games but when I found bB I feel the Atari community is tremendous and I had gotten farther than I had ever before. This turned out to be much quieter and very fruitful. I typically bring my computer with me to work and try to do things on my lunch or when I sit with my son. The little one now loves to watch and always asks me to change numbers and they both offer suggestions on what I should do. So I try to make them happy and incorporate their ideas into these games.

Edited by KevKelley
Link to comment
Share on other sites

Made my toddler happy. Pink flamingos are being programmed. They bounce back and forth. There is a little variation to throw off the movement a bit but just a standard.  Used two copies as three seemed hard to dodge. He was happy.  He had asked me to change the various numbers in the code and told me if they move too fast or slow.  

Edited by KevKelley
Link to comment
Share on other sites

40 minutes ago, alfredtdk said:

This brought back memories of a game I used to play on my cell phone. The concepts are similar, which is very good and that's why I see a lot of potential.?

My only worry is that I will hit a roadblock on some of the stuff I am trying to accomplish. A lot of what I make is kind of my interpretation of what I liked in games as a child put together. 

Link to comment
Share on other sites

I updated the .bin in the first post. 

 

So I was playing around with this a bit more.  I kind of reserve some programming tasks for when I am at work (things that are generally quicker and easier to program) so I decided to work a little more on the levels a bit, as in once a lawn is cleared a new lawn is started and every 4 lawns mowed you go into a bonus, or "Clean Up" round.

 

I Worked on one of the bonus rounds. This is the Raking screen.  In this one the lawn is already mowed but little patches of grass will randomly pop up. You must rake up these patches by touching them with your rake and pressing the fire button.  Unlike the lawnmower you cannot hold down the fire button to rake up the leaves.  While you rake them up you fill up a bag in the bottom left of the screen. Fill it up (after about 6 raked leaves) and then go tie it off by touching it. A full bag will appear next to it and you must fill up another bag.  Try and fill up 3 bags before the timer runs out for bonus points.

 

In the .bin I put up, I have it to where you don't have to mow the entire lawn for it to get to the next lawn.  This is just for testing purposes. Also, pressing the second joystick fire button decreases the status bar, again for testing.

 

My code is probably bloated.  To make the bonus screen I kind of just made a separate game in one of the banks and then goto it when needed.  I figured this would be easier and require less then if I just bounced back and forth.  That is what made Crossdock a little harder for me to work on as it progressed because I squeezed all sorts of code in every little corner, so there may be various checks here and there telling the program where to go or what to skip depending on the mode and as I grew the program I just put things in where I could find it. I started to take a different approach with Lawn Boy since I started with 32k I decided to try and make each segment separate and then integrate them into the game by using the various banks (i.e bank 2 enemies, bank 3 music, bank 5 screen changes, bank 7 bonus screens, etc...). I was wondering if this method would be easier.

 

I also think I figured out what to do with the ball since it would essentially be disguised by the playfield. I will probably utilize it in the generation of powerups.

 

Anyway, hope you all enjoy!  This one has been real fun to play around with so far.

Edited by KevKelley
  • Like 3
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...