Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

GuardianX

Member Since 28 Oct 2011
Offline Last Active Today, 02:24 PM
*----

#5046786 nill

Posted by GuardianX on 26 March 2013 - 01:23 AM

Oh, so Once I install Express Visual Studio 2012 I will also have DX11.1 which is the latest ?

 

That's right. DirectX SDK is now the part of Windows 8 SDK, which will be installed with Visual Studio, so you don't have to install anything by yourself and don't have to configure additional include folders in your project settings.

 

If you gonna use it, don't forget what I mentioned before about D3DX helpers (like D3DXVECTOR3, D3DXMATRIX, D3DXCreateEffectFromFile and others). Almost all of tutorials out there are based around using those helpers, but they are deprecated in Windows 8 SDK.




#5045856 Java or learn c++

Posted by GuardianX on 23 March 2013 - 01:25 AM

 

 

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

 

Edit: wrote something stupid, deleted something stupid

 

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage. 

 

I don't mean that as an insult in the slightest.  It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

 

Unless of course you think rolling your own basic libraries == control over your code.  You can do that in any language, it's just in C++, you often have to do it.  This of course, ins't a positive.

 

Yes, things like DirectX make C++ stand out of the crowd.

 

DirectX is just a library.  You can generate bindings in a variety of languages, in many of them with very little overhead.  A prominent poster on this sight for example created SlimDX, a DX wrapper for .NET languages.

 

I'm fully aware that there is a number of wrappers for DirectX for different languages. But still they will perform slightly less efficient than original one. This is another one reason as to why we don't see any AAA-titles on Java. The only advantage Java gives you is unmanaged memory (just like thousands of other languages out there). In C++ you can work both with OpenGL and DirectX natively, dont need any JVM environment, and one can learn everything he needs about different programming paradigms and how computer actually works. Heck, you can ever write low-level code with it. You are right that beginner dont need all of it, but he can choose the simple OOP approach and forget about others for now. But if he needs them - they are here, unlike in Java.




#5045759 Java or learn c++

Posted by GuardianX on 22 March 2013 - 04:24 PM

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

 

Edit: wrote something stupid, deleted something stupid

 

Yeah, this is a classic example of ignorance over the languages features, as opposed to an actual advantage. 

 

I don't mean that as an insult in the slightest.  It's just often brought up that C++ somehow gives you more control over your code, but in reality, for most day to day developers, it doesnt.

 

Unless of course you think rolling your own basic libraries == control over your code.  You can do that in any language, it's just in C++, you often have to do it.  This of course, ins't a positive.

 

Yes, things like DirectX make C++ stand out of the crowd.




#5045744 Java or learn c++

Posted by GuardianX on 22 March 2013 - 03:41 PM

I'm 99.9% sure you can do function overloading in Java... you can't do operator overloading though and lack of unsigned types might be a bit of a chore if dealing with hardware directly.

 

Ah yeah, just checked that. Long time ago when I was working on android project it didn't work for whatever reason =\

 

Anyway in 3D realm C++ blows anything.




#5045739 Java or learn c++

Posted by GuardianX on 22 March 2013 - 03:31 PM

If you enjoy Java more, then go with it. It is true that C++ is superior in performance, but at the beginner level you won't notice the difference. But if you are up to take a slightly complex, but better path - go with C++. In the end - the game you have made is all that matters, not the tool you have chosen.

 

Edit: wrote something stupid, deleted something stupid




#5045615 nill

Posted by GuardianX on 22 March 2013 - 08:47 AM

Introduction:

 

Hello everyone,

 

This is my first post on the forums, so I thought starting at "beginners" is always a good idea.

 

Basically I have completed a course on C++ as well as Java and wish to go into big game development.

 

Problem:

 

I have chosen C++ and DirectX (I suppose that will be Direct3D) due to maximum performance and most flexible control (low-level ?), in high hopes I have made the right decisions.

 

Unfortunately I am a "fresh A4 list" when it comes to graphics programming or non-web game development. I am lost with the choices I made and ask for guidance:

  • I can only guess that Visual C++ is the best compiler to be using ?
  • Which DirectX would I require and where do I get it ? There are so many different versions it's all confusing, I believe I should be getting a DirectX SDK ? The latest I found linked to something to do with Windows 8, I don't even want to go near Windows 8 or they "Windows store" and whatnot.
  • Just to make it clear, DirectX is free for whatever use right ?
  • Where would I find an up-to date tutorial, dealing with C++ ? Most are outdated and based on C.

 

Hey, I'm glad you have choosen the awesome path of C++ and DirectX. Both are great for maximum graphics performance and both are actively used for AAA titles, so make no mistake - you are on the right way.

 

1. Yes Visual C++ is the best by far. You can grab the free Visual Studio 2012 express for Desktop. It's completely free and can be used for product builds for free as well. You do have to register, but noone checks information you provide - key will be granted to you almost immediately after you push Submit. See this video.

2. You can choose between old SDK (June 2010) and new one which is already built in Windows 8 SDK, installed on your PC with VS 2012 Express. The last SDK doesnt have D3DX-helper components from previous one. But it's not a bad thing, since those part are never used in production. As a very big plus, you will actually learn how to handle model files, lights, textures and other type of things by yourself and understand this process instead of relaying on MS-provided D3DX library. Additionaly there won't be any D3DXVECTOR3 types from previous DirectX10 math library - DirectXMath is the new one, which is based on XNA Math and is now official math library for DirectX 11.

3. Yes DirectX is completely free.

4. I'd suggest you to start right from DirectX11, since it allows you to run your programs on DirectX9-DirectX11.1 hardware alltogether (by disabling new features on old hardware, ofcourse). Here is a good guide for DirectX11. However don't hesitate to look at DirectX10 examples as well, because DirectX10-DirectX11 interfaces are almost the same, excluding some few advanced features, provided in latest.

 

You will not find a good guide specially dedicated to Windows 8 DirectX SDK (well this one is the only one, which comes into my mind), but you can use the D3DX ones anyway, just wrap your head over getting reed of old D3DX-helpers. Learning without books is a hard choise for beginner. However, if you change your mind, I strongly recommend you to look at Frank De Luna DirectX 10-11 books - they are perfect.

 

If you don't want to use the lattest MS suggestions, just grab VS2012 Express and July 2010 DirectX SDK and copy-paste linked tutorials =)

 

Good luck!




#5044310 What language do I use?

Posted by GuardianX on 18 March 2013 - 12:38 PM

If you like C# and not against going further in learning it, I'd say go with it.

I know you want to start as perfect as you can, but honestly don't affraid to make mistakes - it's a natural part of the learning process. At this point language wont be the thing that is holding you from creating your personal Crysis =)




#5038775 Best way to do mouselook?

Posted by GuardianX on 03 March 2013 - 11:58 AM

You can use DirectInput to get relative mouse coordinates. Here is a good guide for this system http://www.rastertek.com/dx11tut13.html


#5037327 Can Directx do 2D graphics?

Posted by GuardianX on 27 February 2013 - 03:02 PM

There is a part of DirectX called Direct2D. This one serves for drawing 2D images on the screen surface. It has been updated with recent Windows 8 release. If you have a problem with C++, you can always use C# and third-party DirectX wrapper, like SharpDX. Creating 2D game with this library by using Direct2D is fairly easy, even for beginner.




#5035533 How to do "Ocean - Simulation" step 1 ?

Posted by GuardianX on 22 February 2013 - 02:15 PM

There are a lot of different techniques to model water plane.

 

This example is about generating geometry of water:

http://http.developer.nvidia.com/GPUGems/gpugems_ch01.html

 

and this is about texturing water plane:

http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter18.html

 

It shouldn't be that hard to implement those tutorials.




#5035007 I cannot seem to translate any of my models on the z axis using a model trans...

Posted by GuardianX on 21 February 2013 - 09:21 AM

Are you sure about what do you want to do in this code:

 

void TransformMatrix::Rotate( float x, float y, float z, float ang )
{
    if ( x * ang != 0.0f ) rotate *= XMMatrixRotationX( x * ang );
    if ( y * ang != 0.0f ) rotate *= XMMatrixRotationY( y * ang );
    if ( z * ang != 0.0f ) rotate *= XMMatrixRotationZ( z * ang );
}
 

 

Don't you want to rotate around vector with x, y, z coordinates actually? Because if so, rotating around each orthogonal axis for angle `ang` is not the same as rotating around specified vector for angle `ang` and you should use XMMatrixRotationAxis instead.

 

Also, I couldn't find any code, responsible for view and projection matrix creation.

 

To jump back an idea for a second, another suspicion was that I maybe shouldn't be transposing the matrices before sending them to the vertex shader.  The reason I am is because every example I have came across on msdn and some other places have always sent the matrices to the vertex shader after a XMMatrixTranspose().

 

You must use XMMatrixTranspose(), because matrices in shaders are transposed version of XNA SSE matrices by default.

 

Also make sure that you constant buffer structure has the same member's order as your shader constant buffer:

 

cbuffer ProjectionBuffer : register(b0)
{
    matrix p;
    matrix m;
    matrix v;
}; 



#4905487 Unlimited Detail Technology

Posted by GuardianX on 23 January 2012 - 11:03 AM

So in this video:
http://www.youtube.com/watch?v=hxtuZE5pOGA

They are showing that:
a) It can easily be animated
b) It has zero problems with memory size issues
c) It is unlimited

So seems all blaming comments here was just jealous.


PARTNERS