Mr Bomber Man, and the legend of Bomber Creek
Mr Bomber Man, and the legend of Bomber Creek
(thats my wip game title)
I started writing a little game. While I was in Europe and without a laptop I was looking at 1 key spectrum games. I found a version of this sort of bomber game and got quite addicted to it. So I started writing my own version.
After 20 minutes I have a game! It spawned a city, flew a jerky plane over the city and you could bomb it. it you hit the building you died. I was pretty pleased that I can now do something like that so quickly.
CSC entry here we come! or so I thought. Then I stopped myself submitting and said, what can I do to improve this and take the 20 minute sketch and make it a better game - the best game I can do. So here it is, a work in progress. I'll update more later about how I started and where I am at now, if people are interested.
I started writing a little game. While I was in Europe and without a laptop I was looking at 1 key spectrum games. I found a version of this sort of bomber game and got quite addicted to it. So I started writing my own version.
After 20 minutes I have a game! It spawned a city, flew a jerky plane over the city and you could bomb it. it you hit the building you died. I was pretty pleased that I can now do something like that so quickly.
CSC entry here we come! or so I thought. Then I stopped myself submitting and said, what can I do to improve this and take the 20 minute sketch and make it a better game - the best game I can do. So here it is, a work in progress. I'll update more later about how I started and where I am at now, if people are interested.
Re: Mr Bomber Man, and the legend of Bomber Creek
So the quick version was done in boriel, since my confidence has grown loads with what I can do with it. Using sublime and [mention]patters[/mention] basic highlighter was a game changer. As was the fact I worked through cassette 50's spectrum cross, which has loads of interesting ideas, and even ASM routines. Getting all that to work in ZX Basic taught me loads of stuff, and I picked up more thats the [mention]boriel[/mention]'s documents and forum.
I wrote a quick loop to populate and array of 15 items with random numbers between 1 and 18. This was going to be the basis of my city
Then a loop to print buildings in the middle of the screen, using the array to determine the height. At this point the city was made using '#' rather than any graphics.
I used 'print at' to draw and delete the plane, and I set up a sub called counter to regulate the games speed. The plane stared at the top left, and X was incremented by 1 when the plane got to the left side of the screen
So now I had a city and a moving plane. Time for bombs.
I created a spawn bomb sub that was activated using inkey = " ". That set the bombs x & y to the same x and y as the plane.
Then another sub that prints the bomb as controls its movement. again using the SUB counter() and print at command.
The counter allowed me to have the bomb and plane move at different speeds using if statements.
When the bomb, an "*" was at x = 21 then the bomb was removed.
The use of print at x,y;" " to remove the old bomb position as it fell meant that is already destroyed the city if it was on target.
So now I needed collision detection for the plane. This is where I got really cheap. I used the Spectrum Cross method.
Dead() was a sub that printed game over on the screen with a pause 0.
That gave me a playable crap game, and took about 20 minutes to code.
The game worked but it was clunky as hell of course. The SCREEN$ method for collision really slowed everything down and the attribute scrolling was horrible. Also, the sprites flickered - not good. So I knew I had to see what I could do to improve this thing.
I wrote a quick loop to populate and array of 15 items with random numbers between 1 and 18. This was going to be the basis of my city
Then a loop to print buildings in the middle of the screen, using the array to determine the height. At this point the city was made using '#' rather than any graphics.
I used 'print at' to draw and delete the plane, and I set up a sub called counter to regulate the games speed. The plane stared at the top left, and X was incremented by 1 when the plane got to the left side of the screen
Code: Select all
let time = 3
SUB Counter()
IF t = 4 then let t = 1 : else let t = t + 1 : end if
pause time
end sub
I created a spawn bomb sub that was activated using inkey = " ". That set the bombs x & y to the same x and y as the plane.
Then another sub that prints the bomb as controls its movement. again using the SUB counter() and print at command.
The counter allowed me to have the bomb and plane move at different speeds using if statements.
When the bomb, an "*" was at x = 21 then the bomb was removed.
The use of print at x,y;" " to remove the old bomb position as it fell meant that is already destroyed the city if it was on target.
So now I needed collision detection for the plane. This is where I got really cheap. I used the Spectrum Cross method.
Code: Select all
IF SCREEN$(x,y+1)=" " then the plane is safe to move. otherwise call a SUB called dead()
That gave me a playable crap game, and took about 20 minutes to code.
The game worked but it was clunky as hell of course. The SCREEN$ method for collision really slowed everything down and the attribute scrolling was horrible. Also, the sprites flickered - not good. So I knew I had to see what I could do to improve this thing.
Re: Mr Bomber Man, and the legend of Bomber Creek
So the next day I wanted to make the game much smoother. To do this I had to change the collision detection.
So I wrote another sub:
SO when the plane enters the airspace of the city (if y3 > 6 and y3 <=22...) it starts to look at the building height of the buildings. If the building height is greater than the planes height then dead().
this made the game run a lot faster. But I still had issues with attribute scrolling and flickery sprites.
So I wrote another sub:
Code: Select all
sub collision()
let y3=y+1
if y3 > 6 and y3 <=22 then
let coll = 22 - buildingheight(y3-7)
if coll <= x then
noise()
dead()
end if
end if
end sub
this made the game run a lot faster. But I still had issues with attribute scrolling and flickery sprites.
Re: Mr Bomber Man, and the legend of Bomber Creek
I was wondering what to do about scrolling. I'd had an idea ages ago about a simple trick to get 4 pixel scrolling in a basic game. So I decided to give it a go.
so I made a UDG plane that was 2x1 attribute. Then I made a second version of the plane that was over 3 attributes.
Using my counter I used the first plane on frame 1 and 3 and the second plane on frame 2 and 4. On frame 1 & 3 the plane also moved: let x=x-1. That created much smoother scrolling and things were starting to look quite good!
so I made a UDG plane that was 2x1 attribute. Then I made a second version of the plane that was over 3 attributes.
Using my counter I used the first plane on frame 1 and 3 and the second plane on frame 2 and 4. On frame 1 & 3 the plane also moved: let x=x-1. That created much smoother scrolling and things were starting to look quite good!
Re: Mr Bomber Man, and the legend of Bomber Creek
Ive decided to call this game "The Disputed Territories of Ghotto"
in a vague way the title is a reference to Goto Island of love - https://letterboxd.com/film/goto-island-of-love/
I changed the spelling as I am sure we would all pronounce it 'go to'
The game has 9 levels and 3 difficulty settings.
You take the role of a pilot leading a bombing campaign to recapture territory your country lost in a great war.
The game itself is a 1 button 'on rails shooter' where you must destroy the city so your plane can land safely.
Completing each level reveals more of the story, and the pilots journey through his own thoughts and feelings as he tries to make sense of war, and what he is doing. There are no right or wrongs, only things he see and feels.
The last level is a special is a boss location.
At the moment the game is ready, except for the sound effects and music, which need lots of work and it is not my strength.
I'm really pleased with how this game is looking, the story and the smooth game play. Hope I can complete it soon!
in a vague way the title is a reference to Goto Island of love - https://letterboxd.com/film/goto-island-of-love/
I changed the spelling as I am sure we would all pronounce it 'go to'
The game has 9 levels and 3 difficulty settings.
You take the role of a pilot leading a bombing campaign to recapture territory your country lost in a great war.
The game itself is a 1 button 'on rails shooter' where you must destroy the city so your plane can land safely.
Completing each level reveals more of the story, and the pilots journey through his own thoughts and feelings as he tries to make sense of war, and what he is doing. There are no right or wrongs, only things he see and feels.
The last level is a special is a boss location.
At the moment the game is ready, except for the sound effects and music, which need lots of work and it is not my strength.
I'm really pleased with how this game is looking, the story and the smooth game play. Hope I can complete it soon!
Re: Mr Bomber Man, and the legend of Bomber Creek
Looking forward to seeing this. I've been inspired to try my hand at a city bomber game. Mine's very much in crap game territory though
Re: Mr Bomber Man, and the legend of Bomber Creek
Thanks! I want to get it released so bad. I'm really pleased with it.
Just trying to sort the sound out now, and a couple to tweaks / bugs and its done.
I think it will be the most ridiculously gilded city bomber game for the spectrum.
Just trying to sort the sound out now, and a couple to tweaks / bugs and its done.
I think it will be the most ridiculously gilded city bomber game for the spectrum.
Re: Mr Bomber Man, and the legend of Bomber Creek
Ive also improved this so now it scrolls 2 pixels at a time, and looks very smooth. The bomb fall in the same way.Jbizzel wrote: ↑Thu Mar 03, 2022 6:12 pm I was wondering what to do about scrolling. I'd had an idea ages ago about a simple trick to get 4 pixel scrolling in a basic game. So I decided to give it a go.
so I made a UDG plane that was 2x1 attribute. Then I made a second version of the plane that was over 3 attributes.
Using my counter I used the first plane on frame 1 and 3 and the second plane on frame 2 and 4. On frame 1 & 3 the plane also moved: let x=x-1. That created much smoother scrolling and things were starting to look quite good!