Arkanoid3D

Community Forums/Graphic Chat/Arkanoid3D

PowerPC603(Posted 2009) [#1]
Hi guys,

As some of you already know, I'm doing my version of Arkanoid3D and would like some feedback.

The game isn't finished yet, but it very well playable.
It only lacks more levels, a menu-system, updatable player-data and background images.

All the blocks in a level are joined into one big mesh, and as a result, when lots of balls are hitting the big mesh, collision calculations are somewhat slow when alot of blocks are in the mesh.

Like level 6, this level has about 400 blocks joined together into one big mesh, each block has 12 vertices and 20 triangles.

The first version of my game had all blocks as separate entities and I'm wondering if I should revert to this setup.
Rendering will be slower, but collisions are calculated faster.

Right now, when more than 5 balls are present and steelballs is active (they go through the blocks instead of bouncing off), my laptop slows down to almost a crawl.
Because every frame, collisions for every ball are calculated separately in case 2 or more balls hit the same block together and the block should be destroyed in one hit.
(The first ball is moved and checked on collisions. After they have been processed, the second ball is moved and checked too. And this happens every frame.)

Then the collision with the first ball deleted the block entity and the type-instance and the second ball cannot find the block anymore, because it's already destroyed.
This would give MAV's.

I would like to ask you to try the game and report if it runs fine or not.
I'm also willing to listen to any suggestions for improvements.

This is my very first game written in Blitz3D (in fact, it's my very first game ever).
I've programmed some other programs in Visual Basic 6, but never anything like this.

The level-editor is included too, so you can create your own levels if you like (up to 125 levels are supported).
Also the full source-code of both the game and the editor is included and may be used freely without any restrictions.
This is just a test-project to expand my programming skills.

The sounds come from Windows Vista, as I don't have a sound-editing program. I just searched around and found some sounds that could be used for this game.

Also my 3D GUI System is included (in the folder of the leveleditor source-code), as the editor uses it.
It's simple, but very stable.

http://users.telenet.be/vge/Arkanoid3D/Arkanoid3D.zip
Keep the directory structure intact while unzipping or the game/editor cannot find the resources they need and you'll get MAV's.


_Skully(Posted 2009) [#2]
I loved this game.. I'll give it a go.

{edit} for some reason the file is showing as 2GB and would take several days to download LOL


PowerPC603(Posted 2009) [#3]
Thank you, Skully.
Over here, it shows 1,95Mb to download.


_Skully(Posted 2009) [#4]
Works now... weird!

Trying...


_Skully(Posted 2009) [#5]
Looking good!

A few observations...

On the level with the heart shape it sucks to watch all the power-ups dropping where you cant get to them.. not sure thats adding to the game play to restrict the players movement unless perhaps they grab a new kind of red block that does that.

I'm honestly not really seeing anything 3D... it looks 2D and if I didn't know you did this in 3D I wouldn't have realized it.

Otherwise, the game plays great!... Reflection looks good... needs some special FX but I think you already know that.

Cheers


PowerPC603(Posted 2009) [#6]
Yes, the game is displayed as 2D, but everything in the game is a 3D-model.

For real 2D, I wouldn't know how to apply reflections or lighting.
Or to find out at what angle the balls should be deflected and track the movements.

I found it easier to process everything 3D-wise.
The lighting is simply done by moving a spotlight randomly over the playfield, which is positioned slightly in front of the blocks.
That's how the blocks are lit.

The heart shape is designed to restrict the player's movement, that's correct.
It also make the player see that Arkanoid doesn't always need a rectangular shaped playfield.

What did you mean exactly with:

unless perhaps they grab a new kind of red block that does that.



Do you mean there should be a powerup that modifies the walls to move outwards, so you can grab the powerups everywhere?
Or a powerup that enables the powerups to be picked up even when the player's paddle isn't picking them up, but some bar at the bottom like the bottom-wall?

That would suck too I guess, as it would pickup every powerup, even the ones you don't want (like small paddle or end).

With the editor, it's very easy to modify the walls to allow the paddle to move further.

For the special effects, they need to come at a later stage.
I was already thinking the display some fireworks when you've completed a level, and some explosions when a block is destroyed.

First I need to design a menu where the player can choose between 8 player-profiles.
This will enable to play the game by several people on the same computer.
You could use one profile, your wife uses the second, your kids may use the 3rd and 4th profiles for example.
Each profile will record where that player currently is (the last level he has reached) and records the best score for each level.
You should also be able to re-play a single level to try to improve your highscore for that level.

So, I've still got some work to do. :)


PowerPC603(Posted 2009) [#7]
I just tried to setup the camera to use normal 3D, but it was really weird.
I'll keep it 2D, or I can make a menu which allows the player to choose between 3D and 2D view.
It's not that difficult to change, just a few camera-settings.
That should be possible to do with a simply button.


_Skully(Posted 2009) [#8]
What did you mean exactly with:
unless perhaps they grab a new kind of red block that does that.


I meant the play field should remain open unless perhaps a red block caught would cause the outer walls to close...

but another way to handle this might be to have the falling blocks follow the wall enclosure (sliding collision) into the active play field.

For a 3D point of view, perhaps you could shift the camera back towards the player paddle and then point the camera at the middle block.. that should add perspective and give the player what they are expecting... since the name of it is Arkanoid3D

Just a thought...


PowerPC603(Posted 2009) [#9]
I tried it to let the powerups slide downwards against walls, but the powerups didn't make it to the floor when BottomWall was active.
They kept bumping against the bottomwall until the bottomwall disappeared.

For the 3D point of view, you mean parenting the camera to the paddle mesh, positioning it slightly in front of the playfield (say 50 units) and always let the camera point to the center of the playfield?

I'll try some different approaches soon.
Now I'm working on my own particle system.
I already have explosions working.
They are just 24 quads in a single surface and exploding outwards.
I'll implement that soon too.
Then this can be used when a block is destroyed.
The explosion can then be placed at the block's coordinates and show a short explosion animation.


_Skully(Posted 2009) [#10]
Well, that could be interesting but might make it hard to gauge where the balls are going but I'd certainly try it out to see!

I was just referring to setting the camera actually well above, but behind the paddle pointing to the centre of the playfield statically... so you can clearly see the paddle and the playfield but with a 3D perspective.


PowerPC603(Posted 2009) [#11]
Ah, like the camera is positioned now, but let the camera have a true 3D view?
Right now, it uses orthographic projection (render the 3D world as 2D).

That's easy to change.
I'll investigate some camera-setups and let the player choose between them when he starts the game.
Then every player can choose his own settings (2D, 3D, ...).

I've added the explosions already.
Now, when a block is deleted (destroyed), an explosion at the block's coordinates is shown.
The explosion particles have the same color as the block had.

http://users.telenet.be/vge/Arkanoid3D/Arkanoid3D.zip


PowerPC603(Posted 2009) [#12]
I've created a new version where all blocks are separate entities and this works alot faster than the single-surface block, where all blocks were joined together.

Now in level 6 I don't have any slowdown anymore when lots of balls where colliding with the blocks.

Also recreated the walls for level 4 (the heart-shaped level), so the user can pick up all dropping powerups.
But it can be dangerous if your ball enters this area, because there is little space between the paddle and the walls.
This could create a new challenge to the player to keep his ball from touching the ground.


PowerPC603(Posted 2009) [#13]
I've added 3 other cameramodes for 3D.
The new version is uploaded to my webspace as normal:
http://users.telenet.be/vge/Arkanoid3D/Arkanoid3D.zip

When the game starts, the game asks the player which cameramode he wants:
- 2D camera (like it has always been)
- 3D camera center (same camera position, but with 3D perspective)
- 3D camera bottom (camera is placed at the bottom and in front of the playfield, pointing to the center of the playfield)
- 3D camera moving (camera is moving around the playfield randomly), and pointing to the center of the playfield

I had to use 2 separate cameraviewports for the 3D modes, as the playfield isn't positioned in the middle of the screen.