Sharp Invader, a completed game.

wyrd

Well-known member
Joined
Aug 23, 2002
Messages
1,408
Location
California


EDIT:
You can download the new version at the bottom of this post (I just replaced the link with the new version).

I Took the advice of my fellow dotnetters and did the following;

- Made the controls more responsive and you can now fire, turn and speed/slow down all at the same time. Be careful though, the ship is a little bit harder to control. I actually like that, since it offsets the fact that you can spin & fire now.

- Added a scoring system. Hopefully this will make the game more fun. It now keeps track of how many missiles you fired, how many missiles hit, and your overall hit percentage. I changed one of the screenshots below so you can see the new game over screen.

- Fixed a few bugs where missiles would auto hit each other and explode while holding down the fire key, and also where theyd end up hitting you if you held down the fire key and warped to another part of the map.

If there are any other comments - good or bad - please let me know.



Everything you need to know is in the readme.txt file (which is pasted below and included in the .zip), but Id like to add a few comments.

Back when I was a kid there was a game I played on the Mac. I forget the name, but basically you flew around in a ship blowing up enemy ships and asteroids. I believe someone on the VB6 forums made a version of it a while back as well, which from what I remember was a most excellent game. Basically thats where the idea of this game came from, and its probably fairly similar to them as well.

When you first start up the game itll probably run a bit slow for the few 5 or so seconds (depending on how fast your system is). I assume this is because of the JIT compiler as it doesnt ever happen again until you reboot your system. If anyone has any suggestions on how to minimize this Id appreciate it.

The game is set to run around 35-40 FPS. It shouldnt go any slower then that (on my 800mhz 256mb g2 mx machine, which is fairly ancient for today, runs the game at a solid 34 FPS regardless of whats going on in the game). If for some reason the game continues to run slow, you can go into form designer for the game and resize the form to a lower resolution. Its currently set at 640x480. Or if youve got some insane 3ghz machine you can increase the size. :P

The graphics arent all that great. I got the effects (explosions, smoke, etc) from some sprite site, and made the rest myself. If anyone would like to take the time out and improve my pathetic attempts at game graphics, youre more then welcome to.

Im not going to offer much information on the map editor. Its there just for you to toy with if you want, and I only built it so I could quickly make maps for this game and maybe my next few games.

As usual, go ahead and reply with criticism. ;) If you find any bugs or possible performance issues let me know.

Heres a few screenshots of the game:

[Broken External Image]:http://www.danpeverill.com/siscreens/screen1.jpg

[Broken External Image]:http://www.danpeverill.com/siscreens/screen3.jpg

And the readme.txt for the lazy;

-- ABOUT --

Sharp Invader was created by me, Dan Peverill. E-mail me at dan@danpeverill.com
with any questions or comments that you may have.


-- STORYLINE --

Your mission was simple; head out to enemy territory and test out the new
cloaking device. It was suppose to be a routine mission, just fly in and fly
out to be sure the cloaking device couldnt be detected by the enemy. But
something went wrong. For some unknown reason the cloaking device went offline,
and as soon as that happened you were detected by an enemies radar.

The obvious choice would be to quickly fix the device and get out, but
unfortunately thats not an option. The enemy doesnt know you have this
device, and activating it would tip them off and negate any future surprise
attacks by your people. Letting your ship or yourself be capture is also not
an option for the same reasons.

With no other options left, your only choice is to run. But what fun is that?
Youre already detected and chances of escape is slim as enemy ships close in
on your position. You know youre probably going to die, so why not just take
as many of them s with you as you can?

Buckle up, youve got enemies to kill.


-- COMMANDS --

Up Arrow: Speed up.
Down Arrow: Slow down.
Right Arrow: Turn right.
Left Arrow: Turn left.
Spacebar: Fire missile.
Enter: Starts game or pauses/unpauses game.
Esc: Exit game.


-- MISC. INFORMATION --

When your shields hit 0 (shown in the lower right hand corner of the screen)
your ship will blow up. You can replenish shields by flying over "powerups,"
which are left behind by asteroids when they explode. Be careful as missiles
can blow up powerups, and both enemies and asteroids can benefit from powerups
as well.

Ships do not collide with each other, however asteroids do collide with ships.
Missiles collide with anything and everything (including other missiles).

Be sure to use this info. to your benefit.


-- SPECIAL THANKS --

Thanks to everyone at http://www.computerhelp.forum for their help when
I had questions about .NET.

Special thanks to Nerseus for slapping me around when I needed it, and mutant
for tossing around ideas with me.
 

Attachments

Last edited by a moderator:
Hmm..

Controls seem kinda jerky? Are you rotating the ship bitmap? If so why not move in smaller increments so holding an arrow key will move more smoothly?

All things considered I preferred the last game, but this ones good too.

Nice job.

Pete
 
No Im not rotating any bitmaps.

What do you mean by jerky? Theres a slight delay if you hold down a key rather then tapping it. Not sure why, but its probably because Im using the forms KeyPress event rather then DirectInput or Windows API. The last game I made also had this side effect (if you hold the down arrow key the block will take a second before speeding down to the bottom).

EDIT:
BTW, why did you like my last game better then this one?
 
Last edited by a moderator:
Good job wyrd.

And about key input. DirectInput is so much faster then normal KeyDown, KeyUp, KeyPress events. The speed gain is great.
 
I didnt really want to get into DirectX until I started making some insane games that actually required that kind of speed. Does the Windows API offer a good speed improvement over the key events in .NET?
 
[api]GetAsyncKeyState[/api] allows you to check the sates of multiple keys at once, and at any point in execution; not just at a certain event. It will probably help your speed a bit.
 
Great job Wyrd. Im creating an RPG after I get done with Pindlebot, you see I really want to center my character on the game, but I dont know how :(

How did you center your spacecraft on the bitmap background? And what did you do to display the background? Did you just move the picturebox when the spacecraft moved?
 
Quick note: Updated game based off of feedback. ;) If its still not fun let me know.. suggestions would be good. :)


Originally posted by Diablicolic
Great job Wyrd. Im creating an RPG after I get done with Pindlebot, you see I really want to center my character on the game, but I dont know how :(

How did you center your spacecraft on the bitmap background? And what did you do to display the background? Did you just move the picturebox when the spacecraft moved?

I cant wait to see your game. :) We need to liven this place up a bit.

I made a map engine which handles what part of the map is shown on the screen. If you download my game, take a look inside the Source/SharpInvader folder. Open up the SharpInvader solution and go to the Map class. Its basically an array of 32x32 tiles, and has a "camera" which is nothing more then a Rectangle that determines which part of the map is drawn. So, in short, after the game loop updates all the game objects, it centers the map "camera" on the player sprite.

If you want you can rip the map engine right out of my game and use it. I built it with future games in mind, and it actually has a few features which I didnt use in this game (map collision and hindrance). Im planning on expanding it and reusing it for my next game. The classes that the map engine requires is Map, MapArea, MapAreaBuilder and the GDI.dll (source code for that is Source/GDI). You can look at the map editor to see how it can be manipulated to build maps, and the game to see how it was used in the game.
 
Some extra criticism for you, no offense intended :)

Okay you solved the jerkyness nicely, now its just too fast (at turning) which makes the ship difficult to control. Also the bad guys seem to pop out of nowhere at times (maybe my eyes arent quite working correctly, I dont know) and follow you just a little too closely (hard to hit -- just end up flying over them).

The start screen says game over??!!?

This game is interesting overall, but I just didnt find it as fun as the last one.. not sure why.

Pete
 
Originally posted by pjv
Some extra criticism for you, no offense intended :)

Okay you solved the jerkyness nicely, now its just too fast (at turning) which makes the ship difficult to control. Also the bad guys seem to pop out of nowhere at times (maybe my eyes arent quite working correctly, I dont know) and follow you just a little too closely (hard to hit -- just end up flying over them).

The start screen says game over??!!?

This game is interesting overall, but I just didnt find it as fun as the last one.. not sure why.

Pete

No offense taken. Id appreciate more criticism from you or anyone else.

Ship turning speed;
Yeah it turns a bit fast now. Personally I like it, because it requires a minor amount of skill to control your ship correctly. You can simply tap left or right if you want to turn slower. It also offsets the fact that you can fire + turn now (which you wouldnt before). If the turning speed was slower then you could just not move and hold down turn + fire to create an endless ring of missiles. It does have an advantage though, enemy ships are easy to out maneuver. However, I will consider slowing it down a tad, just for you. ;)

Enemies coming out of nowhere;
I have no idea whats up with this. Its a bug Ive been tracking. I have code which checks if a ship coming into the game is within the camera view, and if it is it shouldnt come into play at all. Unfortunately it doesnt seem to be working. Ill keep looking into it. Its an odd one.

Enemies flying to close and being to hard to hit;
Your ship turns fast now, and the enemies dont. It shouldnt be to hard to pull a 180 and lose an enemy. Once they are behind you though and you arent constantly trying to lose them, they will unload insane amounts of missiles and kill you.

Fun factor;
I realize the game may not be all that fun. Heck its only the second game Ive ever made. :P However I am a little shocked that you found the last game more enjoyable then this one.

Id love to hear ideas about how to make this game more fun. I had some discussions with bpayne over AIM last night and he suggested adding the following; ship upgrades (so you can get different looking ships), different weapons (you get through powerups), couple different enemies rather then just one. Im also going to add a radar, and maybe enemy bases which create enemy ships rather then having them appear at random points in the map. ;)

Whether or not any of the above will make the game more fun is beyond me. Ive been playing games for most of my life, and before a game is released I can predict whether its going to be a flop or the next big thing. Unfortunately, creating my own games blinds me to this, as my opinion is obviously clouded and biased towards something which I created. I suppose this is a good thing, because to be honest if I was as harsh on my own games as I am on commercial games, I would of never finished them, let alone post them on these forums (which arguable is a good or bad thing).

Basically what Im saying is that criticism is good. You can be down-right harsh and it wouldnt phase me in the slightest. So keep it coming. :)
 
hey wyrd, how did you create that startup bitmap, its looks great!
btw wheres the updated version of your game?

nice job wyrd!


btw, what other games are u making in the future?
what i mean is, what kind of games are u making?
adventure, RPG, action, 3d
 
I made the startup graphic mostly in Bryce. I added the lettering with Photoshop. Someone said I should of had a background for my last game, and since I didnt I added a startup graphic to this game.

After Im done with this one I want to make a multiplayer action game similar to Gauntlet (old school arcade game).
 
Looks good (havent tried it yet, but will tonight) from the screenshots, plus anyone with the name Dan cant be all that bad (my name, too). :p

As for the pause on a keypress, theres a nifty trick you can use that really helps (I stole the idea from MS). Create an array of bool[256] and initialize all values to false. In the key down event, set the appropriate value to true (so the letter a, which is 65, would set keys[65] = true). On key up, set it back to false. In your game loop (I assume you have one), you can check what keys are currently down and take an action based on that. Then you dont need GetAsyncKeyState.

One note: I only noticed a Shields value and a Hits value displayed while playing. But when Game Over came up, I had a score. No "real" shoot-em-up would NOT give you a score while playing :)

-nerseus
 
Heh, theres also DiverDan on these forums. Lots of Dans floating around. :P

Interesting trick with the keydown/up. I already added the GetAsyncKeyState though. :/ Definitely good info. for later.

The score is based off of kills + hit percentage. You get 5 points for a kill and 10 points for every hit percentage. If I showed the score during the game itd be going up and down a lot, which is why I decided to show your kills instead, then the final score at the end of the game. Should I still replace the kill counter with the score?

If youre going to try the game out tonight, check back here first. Ill more then likely have another update by then. Ive added and tweaked tons of stuff that I need opinions on.
 
Originally posted by wyrd
I made the startup graphic mostly in Bryce.
bryce sounds cool,

where can i download the Trial version of Bryce? I wanna try it out.
For 3d i use Rhino (www.rhino3d.com) but i cant do 2d in it, i tried photoshop and realized that it was better for editing rather than drawing (in my opinion)
and sorry i didnt realize that you had an updated verion of your game on the first post

edit: 4 suggestions if u dont mind:

1)enemies should be able to kill themselves(friendly fire)
2) there should be a "Boost" key to boost yourself
3)it should take a little less time to get killed(like more health)
4)dont say gameover when you start the game ;)
5)ugpgrade weapons/armor/powerups

overall: its a good game, a little hard to control :p
i like how when you push down, it doesnt turn down, it "goes backward"
;) improve on it a little add music,

i posted a link to your "game graphics/sprites" post
theres great midis on that which u can add to ur game
gauntlets classic, i hope u make it :) ill be waiting (its similar to Zelda - IIRC)

good luck
 
Last edited by a moderator:
Huge game update:
  • Added a radar to the upper right corner of the screen. You can toggle it on/off with the R button. Green = you, Red = enemy ship, Orange = enemy space station, Blue = asteroid, Yellow = missile.
  • Added enemy space stations, which enemy ships will appear out of. Yes, you can destroy the space stations.. but its very hard.
  • Toyed with the player movement some more as requested by pjv.
  • Changed the stars so they arent flying around at random, but rather give your ship the appearance of flying through space (I hope).
  • Enemy ships and asteroids can no longer gain powerups by moving over them, only the player can. Missiles will also no longer destroy powerups. I also reduced the health of Asteroids. This should make it a lot easier to get powerups.
  • Toyed with the scoring system as requested by Nerseus.
  • The player ship should now be easier to see.
  • Fixed the bug where objects seem to appear out of nowhere.
  • Tore into a lot of code, reorganizing and reprogramming areas where needed. Along the way I fixed a few bugs which werent noticable (ie; objects being drawn when they werent in the camera view)

Please give me opinions on the updated version. Is it more fun? Does it still suck? Are the updates good? What other improvements can I add? etc. I plan on adding more powerups and another type of enemy ship later on.

You can d/l the updated version via this link;
http://www.danpeverill.com/SharpInvader.zip

I figured itd be easier for future updates since I cannot update old posts.


ThePentiumGuy:
I wouldnt recommond bryce for game graphics. :P Its been a pain to work with. I only use it because I dont feel like taking the time out to learn another program (which I probably should of considering the amount of time it took me to make the pathetic graphics I have now).

The one that most people seem to use is Blender, which is free. Search google for Blender, the URL for it will pop up.
 
1)enemies should be able to kill themselves(friendly fire)
2) there should be a "Boost" key to boost yourself
3)it should take a little less time to get killed(like more health)
4)dont say gameover when you start the game
5)ugpgrade weapons/armor/powerups

..

i like how when you push down, it doesnt turn down, it "goes backward"

1) They can. ;)
2) Interesting idea.
3) I reduced player health to 200 in the latest update. Theres also more enemy ships flying around too though.
4) Fixed in latest update.
5) Working on it.

I actually removed "going backward." Youre now always going forward, you cant even fully stop. Let me know how the new controls are and Ill fix accordingly.
 
Back
Top