Quote: "This is probably a ridiculous question. But how would you classify DarkGDK? Is it merely a library? Or would you call it a complete game engine? Or perhaps an API? "
DarkGDK is not a complete Game Engine API (without Plugins), however, it doesn't need to be. Its a awesome DirectX Wrapper Library for Programmers new to C++/DirectX Game Programming.
Quote: "I love how DarkGDK helps me focus on developing in game mechanics without having to worry about DirectX or OpenGL development. I had a professor in my former college who introduced us to it a year ago but I had to switch schools and the professors in my current college look down upon projects involving the Dark GDK library. "
If you enjoy using it, who cares what others think. Your skills will improve and evolve with C++/DGDK use. You have to at least enjoy using it, to stick with it for long enough for that to occur.
I was once afraid of DX and C++. Not anymore! In using DGDK, I have evolved as a software developer. My programming skills have significantly increased. My understanding of 3D Math has increased.
/**
* @brief Translates 3D Vector to Screen Point
* @param D3DVECTOR &position
* @return void
*/
void MAUI::Canvas::ScreenPositionGet(D3DXVECTOR3 &position, int &x, int &y){
// camera ptr
CameraData* Camera = (CameraData*)dbGetCameraInternalData(dbCameraID);
// get current camera transformation matrices
D3DXMATRIX matTransform = Camera->matView * Camera->matProjection;
// Transform object position from world-space to screen-space
D3DXVec3TransformCoord(&position, &position, &matTransform);
// Screen data
x=(int)((position.x+1.0f)*(dbScreenWidth()/2.0f));
y=(int)((1.0f-position.y)*(dbScreenHeight()/2.0f));
// leefix - 280305 - adjust coordinates using viewport of the target camera
float fVPWidth = Camera->viewPort3D.Width;
float fVPHeight = Camera->viewPort3D.Height;
float fRealX = ( fVPWidth / dbScreenWidth() ) * (x);
float fRealY = ( fVPHeight / dbScreenHeight() ) * (y);
x = fRealX + Camera->viewPort3D.X;
y = fRealY + Camera->viewPort3D.Y;
}
I owe it all to DGDK and I will not abandon its use because I now understand how to use TorqueEngine, ORGE, and other C++ engines.
I used to be a fanboy of certain Programming Languages. One day that mindset was shattered after I attempted to code a Virtual Machine/Compiler. In the process I had an epiphany and realized each language has it perks and quirks, but, eventually is all reduced machine code. I've written my own languages and can program in any language: C++, C, C#, Java, VisualBasic, DarkBasic/DBPro, PHP, Javascript, QBASIC, LOGO, MySQL, ColdFusion, blah, blah, blah.
Quote: "
I call it ignorance on their part, but they believe darkgdk is doing all the work for me. It frustrates me to no end that they can't even differentiate between the process of developing game mechanics and development related to openGl/DirectX. They all seem bent on pointing out that the functions (e.g. loadsprite, loadimage etc) are part of the DarkGDK library and therefore I don't deserve credit for creating any of the games despite the fact that I use semi sophisticated development techniques such as state design patterns."
I used to worry myself about the details of complex systems too, but, I've become an extremely lazy programmer over the years. Today, I seek out Libraries that make my low
-level programming life easier so I can focus on high level concepts. Epiphany #2: Complex Systems are built layer atop of layer, from simple constructs. A lib is a lib, and Programming is a
Blackbox art. All you need to know is what a function does, its inputs and outputs. You don't necessarily know how it does it. If they concern themselves with the internals of DGDK they can go
here for those details.