DeaDb0Lt
Squire
USA
20 Posts |
Posted - Mar 20 2005 : 10:32:47 PM
|
This is the most current build of Bullet Dodger as of 4/28/05. NEW IMPROVEMENTS: - Flicker free Graphics thanks to BITBLT - Time Based Modeling (for Animation) - 18 Modes of Unique Gameplay - 6 POWERUPS! (2 INTERACTIVE) - Dynamic Scoring System - 1 Score File (BINARY!) NO MORE HACKING SCORES! - Sound Effects - Frame Limiter Option - Sound Off Option - A HELP screen
BUG FIXES: - PAUSE works properly - Fixed any KEY Repeating Issues - No graphics display off-screen - Fixes the Windows XP Skin issue - Menu's now dont interfere with game timing
DOWNLOAD IT HERE. http://www.jacobsonfarms.com/aaron/BulletDodger.zip
KNOWN BUGS: - The Frame Limiter only works properly if you get above 63 FPS. If you see FPS goes below 63, UNCHECK THE FRAME LIMITER.
THE MAIN SCREEN:
THE HIGHSCORE WINDOW:
THE HELP WINDOW:
Feedback on the game's presentation would be nice ie: Gameplay, Sound, Graphics
- Have fun.
|
Edited by - DeaDb0Lt on May 06 2005 10:16:50 AM
|
|
VBBR
Moderator
Brazil
617 Posts |
Posted - Mar 21 2005 : 10:26:15 AM
|
Hm, looks interesting. Good for a quick break. (I scored 800 :P)
Are you using GDI to do the drawings?
|
Whatever. Who knows... |
|
|
DeaDb0Lt
Squire
USA
20 Posts |
Posted - Mar 21 2005 : 11:14:25 AM
|
No, just using VB's Top and Left properties to move the controls and images.
Wanna take a stab at using GDI to draw the graphics?
Then I could make a more interesting player cursor.... |
|
|
VBBR
Moderator
Brazil
617 Posts |
Posted - Mar 21 2005 : 11:37:25 AM
|
Hm, that explains the relative sharpness of the movements. I might add GDI drawing code to it, seems very easy (just a matter of using BitBlt, nothing too fancy ). |
Whatever. Who knows... |
|
|
DeaDb0Lt
Squire
USA
20 Posts |
Posted - Mar 21 2005 : 3:19:50 PM
|
I'm willing to do the GDI programming myself, however, I need to learn BitBlt first. :)
I am hugely interested in learning, just need to find a nice tutorial that I can learn from.
I'd like to eventually change my Player "icon" to something of interest, like a plane, or something. I can do it was a GIF with Transparency, but then the balls still "collide" with the transparent part of the image.
Again, I need to learn. Can you point me to any nice tutorials? When I get a chance, I'll scan google for one. Just havent done it yet. |
|
|
Lachlan87
Moderator
USA
160 Posts |
|
VBBR
Moderator
Brazil
617 Posts |
Posted - Mar 21 2005 : 4:26:52 PM
|
You can use circle collision detection and a circular "player" sprite.
|
Whatever. Who knows... |
|
|
DeaDb0Lt
Squire
USA
20 Posts |
Posted - Mar 21 2005 : 10:13:55 PM
|
Circular collission detection?
I'm really not even sure how I would go about programming that.
Is there a way in with Bitblt to do rotations of images, or even stretching? I could do some interesting things with those features.
Oh, and I'm trying to code the graphics with Bitblt now. We'll see how it goes. |
|
|
dxgame
Knave
USA
73 Posts |
Posted - Mar 22 2005 : 03:31:50 AM
|
I thought your game was fun! I love these kind of old school ideas. It's amazing how much fun games like this can be. Seriously, after doing a lengthy coding session I stumbled upon this game and it immediately took the edge off. If this is your first project released, I'm sure you're going to do some pretty cool stuff in the days to come. ;) Yah, bitblt would let you have irregular shaped "sprites" with transparent sections in them via "masks". Check out the tutorial link given, it's a good one. Bitblt does allow you to do stretching but no rotations. A common "trick" is to simply rotate your graphics ahead of time in a paint program and use them in your program as needed. Keep at it... :) |
|
|
DeaDb0Lt
Squire
USA
20 Posts |
Posted - Mar 22 2005 : 11:25:43 AM
|
I worked on the Bitblt portion of drawing the Background layers, and the Player cursor. It works quite well, and I'm happy with the result. I AM using a backbuffer to draw the graphics onto before they print on-screen.
However (the big HOWEVER), I don't know how to resolve the flickering of the labels on the form being drawn over the Bitblt images. I'm sure there are a of ways I can rearrange the on-screen text to not draw over the Bitblt images, but I like the layout as it is now, and do not wish to change it.
Should I use graphics for the text, and draw them along with the other graphics, or is there a way I can manage so I don't have to create separate graphics, and keep the labels?
Here is the Bitblt alpha version: http://www.jacobsonfarms.com/aaron/bd_bitblt.zip
Suggestions anyone? |
|
|
Eric Coleman
Gladiator
USA
811 Posts |
Posted - Mar 22 2005 : 1:04:42 PM
|
If your backbuffer is a picturebox, then you can use the .Print method to print text at different locations. For different colors, sizes and fonts, you would change those properties on the picturebox before using Print. To specify the location of the next Print, you would use .CurrentX and .CurrentY properties of the picturebox.
Picture1.ForeColor = RGB(255, 0, 0) Picture1.Font.Bold = True Picture1.Font.Italic = False Picture1.CurrentY = 0 Picture1.CurrentX = Picture1.ScaleWidth / 2 - Picture1.TextWidth("hello world") / 2 Picture1.Print "hello world" Picture1.ForeColor = RGB(0, 0, 255) Picture1.Font.Bold = False Picture1.Font.Italic = True Picture1.CurrentY = Picture1.ScaleHeight - Picture1.TextHeight("bottom left") Picture1.CurrentX = 0 Picture1.Print "bottom left"
As for your game, I played it and I thought it was really well polished for a first game. The code is also formatted nicely and is easy to read, which is very rare for freshman games. Overall it's really amazing for the first game you've ever created. Keep up the good work. |
|
|
VBBR
Moderator
Brazil
617 Posts |
Posted - Mar 22 2005 : 1:45:35 PM
|
Hm... how about drawing the game on a picturebox instead of the for itself? This might work if you're drawing to the form currently. |
Whatever. Who knows... |
Edited by - VBBR on Mar 22 2005 1:45:57 PM |
|
|
Eric Coleman
Gladiator
USA
811 Posts |
Posted - Mar 22 2005 : 3:35:29 PM
|
Another option is use to use VB's "paintpicture" method of pictureboxes and forms. It's essentially a wrapper for bitblt and on today's multi gigahertz computers I can't tell the difference. The benefit to useing this method for drawing is that you don't have to worry about creating and destroying Device Contexts since VB handles those for you automatically.
You can even mix the different drawing methods quite easily. Instead of creating a DC via the API for the backbuffer, use an offscreen Picturebox. Instead of using this
BitBlt myBackBuffer, playerX, playerY, 33, 33, picBox, 0, 0, vbSrcCopy
use the picturebox dc,
BitBlt picBackBuffer.hDC, playerX, playerY, 33, 33, picBox, 0, 0, vbSrcCopy
I almost forgot, when using the API functions for drawing sprites on a Picturebox or Form, make sure that ScaleMode is Pixel instead of the default of Twip. Also, AutoRedraw needs to be True I think. |
|
|
Lachlan87
Moderator
USA
160 Posts |
Posted - Mar 22 2005 : 4:19:09 PM
|
Bitblt can be a pain on NT/2000/XP, because of the way most tutorials have you load the picture. I don't remember the details anymore (it's been quite a while since I've used bitblt), but it's worth considering when choosing between paintpicture and bitblt. |
|
|
VBBR
Moderator
Brazil
617 Posts |
Posted - Mar 22 2005 : 4:51:04 PM
|
AutoRedraw must be set to on if you're redrawing the screen X times per second, and off if you're just redrawing when you need to. AotoRedraw on is VERY slow however. |
Whatever. Who knows... |
Edited by - VBBR on Mar 22 2005 4:51:25 PM |
|
|
DeaDb0Lt
Squire
USA
20 Posts |
Posted - Mar 22 2005 : 7:16:07 PM
|
So far, with drawing the Backgrounds, Player Cursor, and Bullets, I've had good results. Speed is good, even with 200 balls on the screen.
Drawing is done is this order in my main game timer: - Background - Logo (if in demo mode) - X Number of Bullets (Drawn inside for-next loop) - Player Cursor - Draws buffer to Form.
I'd like to try to use an "offscreen picturebox" and get successful results. I made one, and used it as my backbuffer, but when it painted to the form, it drew this:
Not sure how what properties to set on the picture box, or where to place it to get the desired results.
|
|
|