• Random
  • ConceptRunner
  • ScreenShot1

Latest

Level Generation Tool

So I have been progressing with the new game idea for the last few months. I have only been able to work on it late nights, and that’s if I really feel up to it after working during the day. Anyways, enough with the complaining. More Game Development. So an update… an update… yes…….. WELL! Those that have seen on my google+ account, I have posted little pictures of my development progress…. There I talked a little about properly implementing my version of procedural level design. As there are, I am sure, many paths I could take in developing my “random” level generation. I have chosen a simple yet I feel elegant way about generating the “first bit” of the level. This being probably the first 2 minutes into the game. Then I will probably start generation again after a short period of that time has expired. Anyways, a picture would help with my explanation.

 

As this picture below is me prototyping, this isn’t exactly how the game will look in the end.

Random

This “screen picture” was taken after I had perfected “so far” the algorithm. I was needless to say happy about it. “But doug this is just one platform where are the other three??” Well my good friend, like I said, this was just prototyping. So I have now moved on to actually making all the chunks in the game that will populate my arrays! So I started doing this only to find that this was extremely slow. Like VERY slow. I would go into blender modeling tool. And… model away…. Yeah… after about a few hours of that I was like… This will take my forever! So me being lazy decided to make a tool that would allow me to model within my game engine. After a bit of research, and some frustration I have a working modeling tool, I made, that I am happy with. This way I can quickly break and spawn my special blocks in with just a simple click… Those familiar with minecraft will know what I am talking about. This method will speed up my workflow and make things more optimized! Which is a plus ;) RIGHT?!

So I did make a video of this but am somewhat reluctant to post since I sound, well, tired and, groggy. Funny… it being 1 am or so when I did it. Okay okay, I’ll post it. Just below here. So anyways, now that I have this modeling tool going, the next step is making all of my platforms and then coding them to show up in a random fashion that makes the game fun and interesting! Then onto Hit detection and Raycasting of characters and such. I won’t give too much away. Enjoy.

Anyways, Questions? Ask them below. I’d be happy to answer them.

Tracker Program for music

As a kid that grew up with older brothers playing and programming/fooling around with older Commodore computers (AMIGA, Comm64) I was always amazed at the things you could do with them. One thing that I always wanted to do was to use the amazing program called OctaMED. This was a tracker program where you could make music you heard in the games themselves. This was very interesting to me. As I have been working on my game for the last few months I have also been coming up with music that I would like to add to the game. This is a time consuming process. Luckily, I have lots of ideas already laid out. Sadly I couldn’t find a good tracker program… UNTIL today.

With about 2 hours of fooling around with it I was able to spit out a simple song. Give me a good month and i’ll be able to really have some good stuff I hopefully will be happy with. The program I am working with is called MilkyTracker. I included a screenshot below.

The song in progress

The song in progress

Anyways. This has been a nice break to fool around with the songs I will be including in the game. So now, the decision how many shall I include in the game. I guess it will all come down to how fast and good I can get them out and meshing with the gameplay properly. Anyways, I am going to bed. I am up waaaay to late. ( and too lazy to proof read this post, So I typed this pretty quick and don’t care enough to  read through it ( that’s what proof reading is))

 

For those interested in the Tracker program I’ll give a link to in below.

 

http://www.milkytracker.org/

New Game Concept

So this is, again, the second time I am typing this. I think I might start typing stuff out in an external program, as I have lost two big posts to wordpresses web interface. Funny, I am still typing this in that interface. Maybe I am too lazy to even open such a program, as I would take me no time. Anyways, I am going to try and summarize this a bit more. Basically I had a strange idea come to mind right before I was to fall asleep about two weeks ago. I recorded this in my phone and then fell asleep. This idea was then later translated with the help of me drawing it into Photoshop the following day. This is basically the idea that I drew out.

It was to be a 3d third person runner… But not in the sense that most are used to. It would not be just on one plane. It would consist of platforms, as you can see in the picture. The character would avoid blocks and gaps by either moving on the platform jumping over them, or the funner part, is moving to another platform. This would be a fast paced game requiring some good reflexes. Anyways, I took this picture, and started working on a 3d engine and textured blocks to start the actual development of the game. I first created and textured one single block. Once that had taken place, I quickly decided, if I was to make an engine, to build levels in, I would need to make every combination of 3 section block capable. Once that was done, I decided to see how my simple start to my engine looked on a rendered out screen shot. This is what I have to date right now… Although I might need to do some optimization of the engine in some spots, other then that, I am quite happy with how this turned out so far. (refer to the picture below.)

Again as this is still quite early in development, this will most likely change considerably.
Anyways I hope to have more posts on this game as I continue development. Let me know what anyone thinks of the idea for this game. I don’t want to spoil much of the gameplay extras that I will be adding. So you’ll just have to stay tuned to find out more.

Doug.

Matrix Transformation

Well it’s been sometime since I posted. But I thought for those that are interested, I will post a random topic I have been working with. That would be as the title suggests transformation of object via matrix and vector math. So in general there are 3 basic transformations those include: translation, Rotation, and scaling. These are the three that move object through out 3D space. In addition to those, projection transformation is used to go from view space to projection space. The D3DX library contains APIs that can conveniently construct a matrix for many purposes such as translation, rotation, scaling, world-to-view transformation, view-to-projection transformation, etc. An application can then use these matrices to transform vertices in its scene. Conveniently for some an understanding of the math isn’t really required to do some basic stuff. The transformations I am doing will be as such.

So!

Translation

Translation refers to moving or displacing for a certain distance in space. In 3D, the matrix used for translation has the form

    1  0  0  0
    0  1  0  0
    0  0  1  0
    a  b  c  1

Rotation

Rotation refers to rotating vertices about an axis going through the origin. Three such axes are the X, Y, and Z axes in the space. An example in 2D would be rotating the vector [1 0] 90 degrees counter-clockwise. The result from the rotation is the vector [0 1]. The matrix used for rotating ΐ degrees clockwise about the Y axis looks like this:

    cosΐ  0  -sinΐ   0
     0    1     0    0
    sinΐ  0   cosΐ  0
     0    0     0    1

Scaling

Scaling refers to enlarging or shrinking the size of vector components along axis directions. For example, a vector can be scaled up along all directions or scaled down along the X axis only. To scale, we usually apply the scaling matrix below:

    p  0  0  0
    0  q  0  0
    0  0  r  0
    0  0  0  1

where p, q, and r are the scaling factor along the X, Y, and Z direction, respectively. The figure below shows the effect of scaling by 2 along the X axis and scaling by 0.5 along the Y axis.

These three I stated above can be multiplied with each other to combine their effect. This is where you can start to get certain effects and movements  that can get the idea you are trying to get across. I created three cubes in the directx sample I will show. The sample you’ll see will include 1 cube in the middle as a type of planet. and two smaller “moon” cubes orbiting in differing axis and speeds. I will show the main transformation source code below.

void Render()
{
// Update our time
static float t = 0.0f;
if( g_driverType == D3D10_DRIVER_TYPE_REFERENCE )
{
t += ( float )D3DX_PI * 0.0125f;
}
else
{
static DWORD dwTimeStart = 0;
DWORD dwTimeCur = GetTickCount();
if( dwTimeStart == 0 )
dwTimeStart = dwTimeCur;
t = ( dwTimeCur – dwTimeStart ) / 1000.0f;
}

// 1st Cube: Rotate around the origin
D3DXMatrixRotationY( &g_World1, t );

// 2nd Cube: Rotate around origin
D3DXMATRIX mTranslate;
D3DXMATRIX mXTranslate;
D3DXMATRIX mYOrbit;
D3DXMATRIX mXOrbit;
D3DXMATRIX mSpin;
D3DXMATRIX mScale;
D3DXMATRIX m3Scale;
D3DXMatrixRotationZ( &mSpin, -t );
D3DXMatrixRotationY( &mYOrbit, -t * 2 );
D3DXMatrixRotationX( &mXOrbit, -t * 4 );
D3DXMatrixTranslation( &mTranslate, -4.0f, 0.0f, 0.0f );
D3DXMatrixTranslation( &mXTranslate, 0.0f, 3.0f, 0.0f );
D3DXMatrixScaling( &mScale, 0.3f, 0.3f, 0.3f );
D3DXMatrixScaling( &m3Scale, 0.2f, 0.2f, 0.2f );

D3DXMatrixMultiply( &g_World2, &mScale, &mSpin );
D3DXMatrixMultiply( &g_World2, &g_World2, &mTranslate );
D3DXMatrixMultiply( &g_World2, &g_World2, &mYOrbit );

//3rd cube
D3DXMatrixMultiply( &g_World3, &mSpin, &m3Scale );
D3DXMatrixMultiply( &g_World3, &g_World3, &mXTranslate );
D3DXMatrixMultiply( &g_World3, &g_World3, &mXOrbit );
// D3DXMatrixMultiply( &g_World3, &g_World3, &mYOrbit );

//
// Clear the back buffer
//
float ClearColor[4] = { 0.0f, 0.0f, 0.0f, 1.0f }; //red, green, blue, alpha
g_pd3dDevice->ClearRenderTargetView( g_pRenderTargetView, ClearColor );

//
// Clear the depth buffer to 1.0 (max depth)
//
g_pd3dDevice->ClearDepthStencilView( g_pDepthStencilView, D3D10_CLEAR_DEPTH, 1.0f, 0 );

//
// Update variables for the first cube
//
g_pWorldVariable->SetMatrix( ( float* )&g_World1 );
g_pViewVariable->SetMatrix( ( float* )&g_View );
g_pProjectionVariable->SetMatrix( ( float* )&g_Projection );

//
// Render the first cube
//
D3D10_TECHNIQUE_DESC techDesc;
g_pTechnique->GetDesc( &techDesc );
for( UINT p = 0; p < techDesc.Passes; ++p )
{
g_pTechnique->GetPassByIndex( p )->Apply( 0 );
g_pd3dDevice->DrawIndexed( 36, 0, 0 );
}

//
// Update variables for the second cube
//
g_pWorldVariable->SetMatrix( ( float* )&g_World2 );
g_pViewVariable->SetMatrix( ( float* )&g_View );
g_pProjectionVariable->SetMatrix( ( float* )&g_Projection );

//
// Render the second cube
//
for( UINT p = 0; p < techDesc.Passes; ++p )
{
g_pTechnique->GetPassByIndex( p )->Apply( 0 );
g_pd3dDevice->DrawIndexed( 36, 0, 0 );
}

//
// Update variables for the third cube
//
g_pWorldVariable->SetMatrix( ( float* )&g_World3 );
g_pViewVariable->SetMatrix( ( float* )&g_View );
g_pProjectionVariable->SetMatrix( ( float* )&g_Projection );

//
// Render the third cube
//
for( UINT p = 0; p < techDesc.Passes; ++p )
{
g_pTechnique->GetPassByIndex( p )->Apply( 0 );
g_pd3dDevice->DrawIndexed( 36, 0, 0 );
}

//
// Present our back buffer to our front buffer
//
g_pSwapChain->Present( 0, 0 );
}

Any comments would be appreciated.

Thanks for reading.

Doug.

Time Management

Well, as those that follow this have noticed. I haven’t been around for quite sometime. This is due to the fact that having a new born baby takes up time. Though I have had time spent researching new optimization techniques in C++ I haven’t had time to really sit down and actually type some code out. I hope to get this chance sooner then later. But for now I hope to continue to research and eventually get another coding post out on this soon enough.

Never the less, I will try to post on here occasionally for those that are following.

 

Bye for now.

Direct X Squares and Lighting

Okay So, I actually did this more then a week ago. But decided to include it since well I spent a few hours working out lighting and Squares in 3d space. I was surprised how much trial and error was involved. While this demo video below isn’t perfect since I actually have to figure how much light is needed to bounce off of every side of the square. I ended up understanding but tried for another effect. In the video you’ll see two squares rotating. They have an ambient light lighting them constantly so we can see them, but I included a spot light….

The interesting thing about the spot light is that in direct x, you don’t just say “I want my spot light (X,Y,Z) and facing a certain way”. You actually have to indicate which vectors triangles are going to be lit. That means if I was to set random vectors to be lit, I could get a sort of random effect of light fading in and out of certain sides. While this is nothing really special it give a strange lighting effect. that I somewhat enjoy. Anyways, Why I haven’t been doing much with direct x for the last week as I stated above, was because I have been working on more of my coding  intermediate “basics”. This I am hoping will help me understand more later on down the road. Once I finish this book, I should be back to focusing more on graphical programming, as I need an engine to run my games…

Anyways here is the video.

One other thing is I forgot to deselect the option to record what you are listening to, As I was listening to some music it was recorded as well. It is also quite loud before starting the video turn your speakers down.

If you did like it… The guy is called DNTEL. Very good music to listen to.

Concept drawing

I am no artist.  But of course I have ideas of what I would want my character to look like… like gun, armor and so forth. So I had about an hour or so to use. So I decided to pull out the tablet and see if I could come up with some random art. So I started with just drawing a character from scratch… Trust me you don’t want to see that. It looks terrible. So instead I thought it might be easier for me to break the body up into parts to tackle. So I started with the leg armor, then I did an arm armor, then I finished off with a gun. Since I was thinking of having this take place in the future at some time.  I could easily get away with at little more “imagination”. Anyways I’ll post it below of all to see… AGAIN, I am no artist. But I think I am getting some of my ideas out on “digital” paper. Anyways…

enjoy.

Oh and if are wondering those Chinese characters mean “shell” or what I am more leaning towards is, Instance. (as in a point in time)

(that at least is what Google translate tells me, of course it is probably wrong)

Follow

Get every new post delivered to your Inbox.