Archive for June, 2012

C++ and DirectX 9

So, Sadly I wrote out a whole post only to have wordpress lose it somehow, So now I am unwillingly typing this post out again. Definitely with less excitement. Though I will try my best to keep it interesting. So I have been working lately with C++ and Less C#. Mainly I have been wanting to learn how to draw with Directx. So as I thought the best way to start making something appear on screen would be through drawing one single pixel to screen. I made it so I could choose colors and make it available to me if I wanted to change these colors, that I could.

Anyways I succeeded, with some reading, in actually drawing a white pixel to the screen, Now I started thinking if I wanted to draw a line to the screen how would I go about this. Have you guessed it. YES! That is correct. I will need to string multiple pixels together to created a line. Now I could have just repeated the code I wrote and changed the pixel coordinates by one every time one is drawn. That would work, but would take a long time. Think about it this way. If you wanted to make a line that was 100 pixels long you would have to copy the code 100 times, change each value 100 times then hope that there isn’t any typos in that code that could introduce bugs. What I am getting at is there is an easier way!

LOOPS!

The for loop is excellent for this. Basically for those that don’t know, A for loop will take value and increment it for however long I want it to go for. (very true to the name, “for loop”). ANYWAYS I stuck the code to draw a pixel into the loop and told it to go for about 200 pixels… this is what I got.

A line drawn.

Yup. pretty boring. But my theory worked. and I am positive this is how it is normally done… At least I think it is. Anyways next I thought it would be cool to resize and manipulate this line just to see how it would react. I know most have heard of the equation Y = mx+b. me too. I didn’t think I needed to know or remember it ever again. Well surprise I do. If I want to Draw “graph” a line that has some sort of slope, I need to use this equation. After some trial and error, I got it to work. I will post the code below for those that are interested. Can you find the equation in the code?! A fun challenge.

Here is another picture of the Line at an angle. One disclaimer, you might be wondering why I am even doing this. Fundamentals my boy! This code can apply to some rather cool things down the road that I will probably hit on later on.

Angled Line

Also Here is a video of the Line movement.

Enjoy.

CODE:

void D3DGraphics::DrawLine( int x1, int y1, int x2, int y2, int r, int g, int bl )
{
int dy = y2 -y1;
int dx = x2 – x1;

if (abs( dy ) > abs ( dx ) )
{
if (y1 > y2)
{
int temp = y2;
y2 = y1;
y1 = temp;
temp = x2;
x2 = x1;
x1 = temp;
}
float m = (float)dx / (float)dy;
float b = x1 – m*y1;
for ( int y = y1; y <= y2; y++)
{
int x = m*y + b + 0.5f;
PutPixel(x,y,r,g,bl);
}
}
else
{
if ( x1 > x2 )
{
int temp = y2;
y2 = y1;
y1 = temp;
temp = x2;
x2 = x1;
x1 = temp;
}
float m = (float)dy / (float)dx;
float b = y1 – m*x1;
for ( int x = x1; x <= x2; x++ )
{
int y = m*x + b + 0.5f;
PutPixel( x,y,r,g,bl );
}
}

}

Advertisements

Epic Space Adventure | Machanics Down

So I have now made about 10 or so Classes to run differing aspects of the game. These range from asteroid movement and collision. Main ship movement and collision and enemy ship movement and collision. I have also made it so that the enemy ships shoot at the player and fly differing patterns. I have also added a title screen and a ugly “HUD” in the game as to show you your current score and lives left.

Basically the game is in working condition, but doesn’t get progressively harder and could last forever, theoretically. I must now come up with some sort of timer that will make the game get harder as your progress. Possibly add some sort of boss fight.

These are some of my other Ideas:

  • Other enemy types with differing styles of “bullets”
  • More asteroids as the game moves along
  • Differing paths that the enemies fly
  • Power ups for the ship

Anyways below is a screen capture of  that I have so far. I might in the near future add the source code and a down-loadable packet for those that want to “try” this mini game.

Image

 

UPDATE!

 Source Files for Epic Space Adventure


Epic Space Adventure | StarScape

So since I just started this blog, I thought it would be nice to post some code and maybe talk a little about the game I am working on currently. The game I am currently working on is sort of a learning/fun project. The idea is a standard “scrolling” outer space shooter. I have been working on this in C#, and using the XNA framework. As I am quite new to C# it is a change and the learning curve, at least for me is slower. First I developed the background starscape. I didn’t want it to look “real” so I first drew out some stars then threw them in photoshop. This gave me a cartoony/poopy look that I really didn’t like that much. So I decided to just make a randomizer of pixels that I would choose from. Since in C# and in the XNA framework white can be changed in colors  I decided that I would also randomize what colors would be picked with the help of online and some books I had been reading I came up with this code for the background randomizer.

class StarField
{

private List<Sprite> stars = new List<Sprite>();
private int screenWidth = 800;
private int screenHeight = 600;
private Random rand = new Random();
private Color[] colors = { Color.White, Color.Yellow,Color.Wheat, Color.WhiteSmoke,Color.SlateGray };

public StarField(int screenWidth, int screenHeight, int starCount,Vector2 starVelocity, Texture2D texture, Rectangle frameRectangle)
{
this.screenWidth = screenWidth;
this.screenHeight = screenHeight;

for (int x = 0; x < starCount; x++)
{
//My Star Generator
stars.Add(new Sprite(new Vector2(rand.Next(0,screenWidth),rand.Next(0,screenHeight)),

texture,frameRectangle,starVelocity));
//My Star Color randomizer
Color starColor = colors[rand.Next(0, colors.Count())];
starColor *= (float)(rand.Next(30, 80)/ 100f);
stars[stars.Count() -1].TintColor= starColor;
}
}

public void Update(GameTime gameTime)
{

foreach (Sprite star in stars)
{
star.Update(gameTime);
if (star.Location.Y > screenHeight)
{
star.Location = new Vector2(rand.Next(0, screenWidth), 0);
}
}
}

public void Draw(SpriteBatch spriteBatch)
{
foreach (Sprite star in stars)
{
star.Draw(spriteBatch);
}
}

}

Sorry for the terrible formatting, I am working on getting my own domain and such so wordpress doesn’t allow me to use coding pluggins as of right now. So this will have to do. It’s readable.

Anyways, this is the coding of the whole class. Small but effective. Anyone have any improvement they would like to add?


Introduction and Past to Present

So hello and welcome everyone. This is going to be the main site, for now, of me and my development progress in games. Firstly, for those that don’t know me, I am an avid gamer, and have been since my younger years. As such, I have been happily plagued with the want and need to play video games. I like it. A LOT! Needless to say, I think everyone gets that. Secondly, I am a Canadian, and love to learn, and discover. This is why at a younger age I was curious to figure out how to develop games and found myself researching and teaching myself multiple programming languages. After high school I found myself saying, this can’t be the life I want to live. I don’t want to work countless hours for another game company only to develop what they want me to develop. Therefore, instead of creating something for myself, I went to university and ignored the urge completely. I then finished with a BSc in …science…. Now you are thinking, oh it must have been computer science as his major, or if anything his minor. Alas, this is not the case.

I majored in chemistry and minored in biology, I wanted to be a doctor! I had everything on track. I had the grades; I had the interest; but then something inside of me kept coming back to me saying, “doug, is this what you really want to do?” I would say back to the sneaky little voice in my head. Yes, I find it very interesting and I think it will be very rewarding as well. The voice then said, “there are many rewarding paths doug.” I then said, true… and went to sleep because I was tired. Needless to say. I was worried. I was worried that I would disappoint my wife, my family, and my friends and now my little baby girl Wren. To me I thought I would be giving up, not finishing what I had started, of course this being medicine…

So now this basically brings us to present day. I have in the last 4 months really started to consider differing paths for a living. Medicine? Pen Testing? Application development? Indie Game Design? All were possible, and I have to make a decision. I still haven’t quite made that decision as of yet. But I think this development blog, and time spent researching will help me on my way.

Enough with the boring jibba jabba. I know one thing, and that is I want to make games. Weather that is in my spare time or eventually full time. And this is the place I will be posting my research, projects, and source code for all to see. Raw and naked. Don’t worry not that kind of naked.

One other thing. I am no writer/speller. So if you see some sort of grammatical problems… ignore them.