NeoBat with SOUND!

Here is an arcade game I made because I really liked the bloom filter and to practice actual game play stuff for the bigger game I am working on.

Break out style with glowing lights. How high can you score without getting distracted by all the glowing neon particles? Let the light show begin.

And Screens

Edit:
And link
http://www.mediafire.com/?gfh1569v5q45ygz

And Controls:
Click to use mouse or use arrow keys.
“P” pauses game. Game starts paused.
“B” to launch new ball.
Special balls only have a limited amount bounces before they run out of power and turn into normal balls which are harder to see.
Every 5k points you get another ball.
Bat upgrades carry through to new lvls but there is a max.
After each lvl you will need to press space when you are ready.
Special bonus at higher scores.
Harder lvls at higher scores.

The Number Keys 1-5 change the life of particles from low being 0 to high being 5. This will let you choose the right amount of particles for you eyes. Note: This only changes possibly annoying particles (the ones that block view of ball) not the trails or other special effects.

Change log:
v1.3
made things look even better.
Improved performance slightly.
Collisions are now great really feels like a break out game now.
Cleaned up code a little and now it is only 3mb. All sound files.

v1.2
made things look better.
particle settings are much smoother. Can set it so almost no particles on screen.
sound is added. Tell me what you think. ???

v1.1
fixed many bugs.
can use mouse
collisions work better.
Dieing resets properly.
Added new Powerup Lck: ups chance of getting powers.
Added new Powerup BFB (Big-Fat-Burst) : Has two effects. First is an effect that shoots block killing shrapnel in all directions. Second shoots the same shrapnel in one direction.
Added new Powerup FX: Start retro mode.
Changed Powerup BB (Burst Ball): Shoots more shrapnel.
Changed Bonus Score “1000” to “1K”
Added the ability to lower particle life. Keys 1-5 Lower-Higher
Playing area is larger.
Added a few new level layouts for some more variety.

v1.0
And Bugs:
Clicking on the playing area can cause game to freeze.

And other info:
Expected game hours: 5 minutes.
Very good time killer.
Game made all in java2D. Very small game as there are absolutely no resources loaded.
Made in about 2-3 days.
Thanks to people from this thread http://www.java-gaming.org/topics/java2d-bloom/26932/view.html for help in some optimizations.
I used a slightly modified version of the particle system from my tutorials.

Cool effects!
Can’t play it right now, but it looks professional

My only problem is the game. I get bored of breakout very quickly, whether I’m winning or losing. Anyway, keep working on it and see what you can do.

How to launch the ball? pressing B only change the color.

[quote=“StumpyStrust,post:1,topic:39393”]
:wink:

Had the same problem, the thing is that I always “accidentally” clicked on it before (probably habit of really force receiving the focus :wink: ) Looks nice, it screams for some cool sounds effects, though the ball is hard to see with all that ‘exploding’ effects.

Hard to see? Man, it’s impossible to see in all that debris. Very cool effects, though. But you have to make one able to see where the ball is. Maybe make it a color no other particles can have, like red or something.

[quote]Hard to see? Man, it’s impossible to see in all that debris.
[/quote]
:persecutioncomplex: I can play easily with all the debris, but I guess that is because I made the game and all. Also, if you get the max bat size and of a few power balls going, you can just demolish lvls.

I never really planned to do that much more with this but I got a few new ideas I will add.

  1. Try and fix the clicking bug and maybe add an option to control it with mouse. I don’t know if people would want that.
  2. To make it easier to see the balls I will make it so the “push” all debris away. Like the opposite of a gravitation pull. I don’t know how much this will slow the game down though so…we will see.
  3. If there is still processing room, make the screen a little larger to make it easier to play.
  4. Add some more variety in the new lvl code.
  5. Smoother lvl transitions.
  6. More power ups and such if you have any ideas just ask I and I will try to add it.

More Known bugs:
When die the current lvl is not reset.
When you die the balls do not get reset back to 8 but to 25.
Some collisions errors but nothing major.

Really like the look. It starts off a skooch too hard though, the bricks are too close. As for the “debris” I say go crazy and add even more gratuitous effects, go for something like this: http://www.youtube.com/watch?v=aoT-_2wC4vY

Those fixes will make it complete, and a game I would very much like to play from time to time :slight_smile:
Great idea about the ball repelling debris

Updated it with a bunch of extra stuff. It is easier to play now with a large playing area. You can now lower the effect count if too much awesomeness is going on for you. You can use mouse you play ( took for ever to get it working the way I wanted >:(). I have added a few new power ups for when you get a high score. One is a super weapon that can have 2 different effects and the other is well…retro mode. ;D At lvl 5 and 10 you unlock new lvl layouts for more variety. Maybe will add random bosses or something. Level transitions or much better as are the collisions.

As for the ball pushing particles away. There is more then enough processing room to do this. (for me at least) The problem I have is that all of my particles are in one array so if I have all particle be pushed by the balls then there will be now fancy trail effects. So what I might do is have 2 lists, 1 for particles that can be pushed and one for particles that wont be pushed. I am thinking of making this a power up instead.

Anyways, hope this is an improvement.

and new screen

http://s15.postimage.org/reit56oy3/png11.png

http://s15.postimage.org/ebn6lwyq3/psscshtop.png

Update:
Made things look better. Better particle settings for those of us who have weeks eyes. Some other stuff and most importantly, SOUND!!!

I have added sound using Tiny sound and it works really really well. Take a look.

The game starts of paused, you may want to let the player know the game is paused, draw GAME PAUSED or something over the top, so we know, I was in the middle of writing up saying I couldn’t do anything when I thought to press P

EDIT: Also I cannot hear any sound

[quote=“Mads,post:4,topic:39393”]

:wink:

Get the new version it is much smoother.

I am guessing I beat you to updating the thread? I notice the massive difference in file size lol

Maybe shorten the splash screen, I think its a bit to long.
When unpausing the game at the beginning, the ball fires downwards, meaning I loose my ball first go, you may want to fix this, or make the player start with no ball, causing them to have to press b to get there first ball, then removes the need of having to start the game paused.

EDIT: The sounds are great!
Player seems to be not as responsive, when I try and quickly move from one side to the other, I just pause for a second or less.

It is about 12 seconds as it takes a bit to load the sounds. I think splash screen is better then a blank screen when loading stuff.

I could cut down 1-2 mb off the file size but I am really lazy and don’t want to change a bunch of things.

If you are using mouse, after you unpaused the bat jumps to the mouses location so you need to make sure it is in the center. I will change it so it does not auto launch but will keep game paused at start.

Using arrows is slower then then mouse. I have no issue using mouse but kinda suck at arrows. There is also a but I think with arrow key movements. It involves holding more then one button down. You need to release the other button before you press the key. I think the issue is because I am using the default KeyListener which I think has issues.

If I feel like this is worth anything I will add more stuff but right now I just wanted to test Tiny sound.

I really like this game! The sounds are so cool. I could use this to come up with melodies for my music :smiley:

One suggestion: When there’s kust one brick left, it becomes apparent that I have no way of making the ball go where I want it to. Perhaps you should look into making it so the ball springs out from the bat in a direction relative to where on the bat it hits, like spme of the good old Breakout games. So if it hits on the left side, the ball will spring out in an angle shifted to the left, depending on how close to the middle it is, and then there should be a “safe-zone” in the middle which leaves the original angle intact.

Just a thought. Really great work!

That is exactly what I want to do but I have no idea how to do it ???

The balls have enough ‘randomness’ that they will eventually hit the brick. (they are always having a little bit added or subtracted from their vel)

I guess you’re right about that last part.
However you assign the new angle when the ball hits the bat, you add in a specific double, depending on where on the bat it hits. Have a value of, say, -40 degrees for the far left, and 40 degrees for the far right. Then, if the ball hits within batWidth / 100 * 20 / 2 from the middle, the ball continues unaltered, but outside these 20% in the middle, you calculate the amount of degrees to alter it, by doing this for the left side, and add that negative number to the calculated angle:
(-40 / (batWidth/100*40)) * amountOfPixelsOnTheBatFromTheLeftWhereTheBallHit
or something like that. And do something similar for the right side.

Good news everyone…well mainly ultroman. I have now got perfect bouncing controls. Feels just like all the old school retro games we love. By default particles are turned down. You can turn them back up or almost off.

It took me f**king for ever trying to figure out how to get the angle of the ball right. Online everyone kept saying vector math or just leave it with reversing velocity.

Just so no one else has issues if they want to do something similar, here is code.

if(this.collision(b)){
			loc.y = b.loc.y - b.size.y/2 - size.y/2-.01;//set it a little above the intersection so we don't keep colliding
			if(b.loc.x + 5 >= loc.x && b.loc.x - 5 <= loc.x){//<---safe area
				vel.y *= -1;
				vel.x *= .2;
			}
			else{
				if(loc.x > b.loc.x){
					vel.y *= -1;
					vel.x = 1*(3+(loc.x-b.loc.x)/size.x);
				}
				if(loc.x < b.loc.x){
					vel.y *= -1;
					vel.x = -1*(3+(b.loc.x-loc.x)/size.x);
				}
			}
			return true;
		}
		return false;