Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Dark GDK / What DarkGDK 2.0 would need

Author
Message
Morcilla
21
Years of Service
User Offline
Joined: 1st Dec 2002
Location: Spain
Posted: 2nd Jun 2012 12:32
Hi all,

I'm very glad that we have a DGDK 2.0 coming to refresh the scene. It is indeed a great initiative, and I must congratulate Mistrel and his great job.

Now, I would like to contribute with my opinion. I'm sorry but I see things that I do not like.

What do I expect from DGDK 2.0?

Well, regarding the basics, I expect it to be like DGDK 1.0 definition, that is:

1 - C/C++ libraries that expose functions that are a clone of all the DBPro commands.

DGDK 2.0 is deviating from the DBPro line, why the order of some parameters have been changed? They should stay as defined in DBPro. Otherwise we will soon have a mix in our head, and it will be more difficult to move code from DBPro to DGDK and vice-versa.

This is error prone. I think this should be corrected as soon as possible, before people start coding with DGDK 2.0 spreadly. Any extra DGDK 2.0 parameters, that DBPro may not have, should be added as optional and at the end of the standard DBPro parameters.

This is crucial to keep DGDK community close to the DBPro one.

And about the improvements over DGDK 1.0, I just ask for this:

2 - To be aligned with the latest DBPro version.
3 - To be compatible with all the DBPro plugins.

I think these 3 basic points listed above should be the DGDK 2.0 baseline.

All the extra advantages, that DGDK 2.0 gives and that do not appear in that list, are of course welcome, but the three basic directives that I list should not be neglected in favour of other features.

As said, I appreciate very much the initiative, but I see that there is work left to do regarding the DBPRo - DGDK 2.0 alignment.

Also, DGDK 2.0 reminds me very much to PureGDK. I would like to see a list of the differences between DGDK 2.0 and PureGDK, because they seem to be the same product, as seeing from here.

I wish the best to DGDK 2.0, but if it goes its own line, ignoring original DGDK spirit, doing things in some other way, deviating from DBPro, it has the risk of falling into oblivion.

Please feel free to contribute with any of your ideas or requirements.
I think that if DGDK 2.0 fulfills people expectatives, it could be a great success, as DGDK is the most powerful tool among the TGC products.

Olby
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location:
Posted: 2nd Jun 2012 12:55
Quote: "Also, DGDK 2.0 reminds me very much to PureGDK. I would like to see a list of the differences between DGDK 2.0 and PureGDK, because they seem to be the same product, as seeing from here."


It's a re-branded version of PureGDK. TGC and Mistrel agreed to replace DGDK with PGDK hence the name change. As far as I understand there wont be anything released under PureGDK name any more.

Quote: "2 - To be aligned with the latest DBPro version.
3 - To be compatible with all the DBPro plugins."


Both of these are already there. All official and most 3rd party plugins are supported out of the box and if you find a 3rd party DBPro plugin which is not supported in DGDK2 it's a matter of writing a simple import template.

DGDK stems from the same code base as the latest DBPro but I heard Mistrel will also add his own improvements (?)

Quote: "DGDK 2.0 is deviating from the DBPro line, why the order of some parameters have been changed? They should stay as defined in DBPro. Otherwise we will soon have a mix in our head, and it will be more difficult to move code from DBPro to DGDK and vice-versa. "


Don't get me wrong, I've been working with DB since the days of Classic so I know the commands and I know they're such a mush. DBPro has been developed over the last 10+ years and some additions are not in line with the original commands. I find them very clearly named and grouped in DGDK which I can't say about DBPro.

Personally I don't see any reason why would anyone want DGDK to be in-line with DBPro (which is imho inferior). If you need a rapid prototyping language and think C++ is slow for some basic testing then go for PureBasic (supported out of the box) or even D (FlexiCat is working on a wrapper at the moment). It's kind of the same notion to ask TGC to make AppGameKit in line with DBP commands, which doesn't make sense at all. To me DBPro is a dying language (when was the last update released and how long they've been beta testing U77?) and TGC clearly has it's future focus on AppGameKit (fair enough). On the other hand here we have Mistrel a developer solely working on DGDK2 making it even better and easier to understand and command. So, please take his time and thank him for all his efforts as without him you probably wouldn't see any future updates for the original DGDK.

ACER Aspire 5920G: Core2Duo 2.2GHZ, 2GB, GeForce 8600M GT 1280MB, Windows Vista Ultimate SP2, PureBasic 4.60 + DarkGDK 2.0
Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 2nd Jun 2012 23:37 Edited at: 2nd Jun 2012 23:38
Quote: "DGDK 2.0 is deviating from the DBPro line, why the order of some parameters have been changed?"


In the documentation, How to > Basics for C++ > Fundamentals > Command Revisions:

Quote: "DarkBasic Professional uses a method called function overloading when declaring many of its function prototypes within its DLLs. Function overloading is not supported by some of the languages supported by DarkGDK and many commands have been altered to reflect this.

Several functions have also been removed from the DarkBasic Professional command libraries due to inconsistencies, compatibility, or for duplicating native functions. Don't expect your code to compile without modification."


Prextel
12
Years of Service
User Offline
Joined: 29th May 2012
Location:
Posted: 2nd Jun 2012 23:48
In the small amount of time I've spent with DGDK2.0, I already can see that the title is somewhat misleading. This "new" DarkGDK is nothing like the first versions, which I found somewhat dissapointing. This is, in essence, PureGDK relabeled. The simplicity that DGDK once held has been haphazardly lost, and it seems that once this project takes off we will all be paying for a shiny, new PureGDK with no added benefits whatsoever. Previous libraries, despite the misconceptions aroused by newbies, ALWAYS supported plugins: It just took some elbow grease to get them working (I found a physics lib for Java, and I found it VERY easy to wrap it for C++). The "main.cpp" file is much too cluttered with functions that we shouldn't have to worry about in a high-level library, and needs to be modified in such a way that it emulates the "main.cpp" file from DGDK1.0. Great idea, poor form.
FlexiCat
14
Years of Service
User Offline
Joined: 15th Jun 2010
Location:
Posted: 3rd Jun 2012 00:04
Quote: "If you need a rapid prototyping language and think C++ is slow for some basic testing then go for PureBasic (supported out of the box) or even D (FlexiCat is working on a wrapper at the moment)."


I am making a separate wrapper for D at the moment because swig doesn't properly support D but the current version of my swig wrapper completely works with the current version of DarkGDK 2.0 and python so if you want rapid prototyping right now its all there already takes min to set up and even has a build script for python so long as you have swig and python. based on the support of the wrapper for python at the moment, if you don't like python you can build the wrapper with swig for C# or anything else swig supports and it should immediately work, i have just only made a build script for python.

I think the way the commands in DarkGDK 2.0 are set out are fine, its like someone has gone over DBPro and noticed a bunch of things that need cleaning and just cleaned them instead of shouting "EWW its all messy" and well that seems to be just what Mistrel has done and a rather good job of it he has done as well i think.

By the way thanks for the mention, vindicates and motivates my work.

I swear to the programmers bible that I shall not harm the FPS.
Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 3rd Jun 2012 00:21 Edited at: 3rd Jun 2012 00:25
Quote: "This "new" DarkGDK is nothing like the first versions, which I found somewhat dissapointing."


The goals of DarkGDK 2.0 are different from the original. To support more users across different languages some sacrifices had to be made; namely the order of parameters. It would be even more of an issue if the parameters of DarkGDK were to change on a language-to-language basis rather than JUST between DarkGDK 1.0 and 2.0.

Command renaming for clarity is meant to remove much of the baggage gained from its DarkBasic roots. For example:

Quote: "
PERFORM CHECKLIST FOR CONTROL DEVICES"


Becomes:

Quote: "
dbControlDevicesChecklist"


Another example where a command might be different is "dbSetDisplayMode".

In DarkGDK 1.0 you can use these commands to change the resolution:

Quote: "
void dbSetDisplayMode (int iWidth, int iHeight, int iDepth)
bool dbSetDisplayModeEx(int iWidth, int iHeight)
bool dbSetDisplayModeEx(int iWidth, int iHeight, int iDepth)
bool dbSetDisplayModeEx(int iWidth, int iHeight, int iDepth, int iMode)
bool dbSetDisplayModeEx(int iWidth, int iHeight, int iDepth, int iMode, int iVertexProcessing)
bool dbSetDisplayModeEx(int iWidth, int iHeight, int iDepth, int iMode, int iVertexProcessing, int iLockable)
bool dbSetDisplayModeVSync(int iWidth, int iHeight, int iDepth, int iVSyncOn)
bool dbSetDisplayModeAntialias (int iWidth, int iHeight, int iDepth, int iVSyncOn, int iMultisamplingFactor, int iMultimonitorMode)"


In DarkGDK 2.0 the same command with optional parameters is:

Quote: "
dbSetDisplayMode(int width, int height[, int depth [, int vSync [, int multiSampling [, int multiMonitor [, int backBufferWidth [, int backBufferHeight [, int vrMode]]]]]]])"


In this function each parameter after width and height can be optionally specified.

Quote: "The simplicity that DGDK once held has been haphazardly lost, and it seems that once this project takes off we will all be paying for a shiny, new PureGDK with no added benefits whatsoever"


Much of the improvements from DarkGDK 1.0 to 2.0 are described in the sticky "DarkGDK 2.0 Summary of Features":

http://forum.thegamecreators.com/?m=forum_view&t=196866&b=22

Highlights include.. new documentation, multithreading support, support for DBP plugins, 250 new commands (with documentation), superior C++ support (Visual Studio 2012, for example), etc..

Quote: "The "main.cpp" file is much too cluttered with functions that we shouldn't have to worry about in a high-level library, and needs to be modified in such a way that it emulates the "main.cpp" file from DGDK1.0. Great idea, poor form."


The elimination of "void DarkGDK" and "LoopGDK" was necessary to support other languages. Additionally, this allows DarkGDK to render to "any" window owned by the process and is not limited to any one implementation, for example: you can use DarkGDK with GLUT, Qt, Win32, wxWidgets, etc.

Quote: "Previous libraries, despite the misconceptions aroused by newbies, ALWAYS supported plugins"


DarkBasic Professional plugins are not compatible with DarkGDK 1.0. They are in DarkGDK 2.0.

DarkGDK uses structures to instead of IDs to pass vector and matrix data between functions. No more Vector3ID or Matrix4ID.

There is so much which has changed for the better, I promise you. Much of it simply isn't obvious from the surface.

Olby
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location:
Posted: 3rd Jun 2012 00:53 Edited at: 3rd Jun 2012 01:01
Quote: "Much of it simply isn't obvious from the surface."


I think most of the people who complain here haven't even actually spent their time reading through all the documentation, which is by the way just amazing.

Quote: "This is, in essence, PureGDK relabeled."


And is there any problem with that? I find PureGDK/DarkGDK is far more polished and has a professional touch to it. Thinks have changed for better and if you don't like there's always an option to stick with DarkGDK 1.0.

ACER Aspire 5920G: Core2Duo 2.2GHZ, 2GB, GeForce 8600M GT 1280MB, Windows Vista Ultimate SP2, PureBasic 4.60 + DarkGDK 2.0
Prextel
12
Years of Service
User Offline
Joined: 29th May 2012
Location:
Posted: 3rd Jun 2012 03:19
Quote: "DarkBasic Professional plugins are not compatible with DarkGDK 1.0. They are in Darkgdk 2.0."
I can't help but notice that you removed my supporting evidence from your quote: Yes, DGDK 1.0 supports plugins, but it takes more effort from the programmer to get them to function than just an #include.

Quote: "I think most of the people who complain here haven't actually spent their time reading through all of the documentation"
Think again. I never make a complaint without verifying/researching my reasoning first.
Quote: " Much of the improvements made in DarkGDK 1.0 to 2.0 are described in the sticky..."
All right, I admit that I didn't word that complaint in the strongest way. What I meant was that this lib seems more like PureGDK (With few/no added benefits): It runs NOTHING like DGDK1.0, so it seems ludicrous to label it as a second DarkGDK. If anything, it should be PureGDK 2.0. It may grow on me, but until the library is more streamlined I'm probably going to continue using my modified version of DarkGDK 1.0, or maybe mod DGDK2.0 myself. Yeah, I'm skeptical about DGDK2.0, but that doesn't mean I'm stupid.

I don't care what your PC specs are, and chances are you don't care about mine: So I'll do you a favor and not post them.
Prextel
12
Years of Service
User Offline
Joined: 29th May 2012
Location:
Posted: 3rd Jun 2012 04:45
(Sorry for the double-post, new user restrictions are EVIL )

I'm sorry for being so abrasive, but my qualms with GDGK2.0 really boil down to the name. If it was named anything else, I would be praising the library. Good job, Mistrel. Sincerely. But if you are to name it DGDK2.0, then shouldn't it at least mirror the layout of DGDK1.0?

Quote: "It's a re-branded version of PureGDK. TGC and Mistrel agreed to replace DGDK with PGDK hence the name change."

Then why not call it PureGDK 2.0? My preconceptions of DGDK2.0 were shattered when I went through the easy-yet-cumbersome task of starting a project (Had to make my own wizard template...).

Quote: "Quote: "This is, in essence, PureGDK relabeled."

And is there any problem with that? "
Why yes, there is! This SHOULD be DGDK1.0 upgraded, as stated before. As ALSO stated before, the lib should at least attempt to mirror DGDK1.0. Sure, the functions are basically the same, but the drastic change to its layout makes porting old projects to the new lib cumbersome.

Don't get me wrong, this new library is a nice step up from DGDK1.0, but it ISN'T DGDK. It's PureGDK upgraded. All this is is an issue of false/misleading advertising.

I don't care what your PC specs are, and chances are you don't care about mine: So I'll do you a favor and not post them.
Dar13
16
Years of Service
User Offline
Joined: 12th May 2008
Location: Microsoft VisualStudio 2010 Professional
Posted: 3rd Jun 2012 05:17 Edited at: 3rd Jun 2012 05:20
Quote: " This is, in essence, PureGDK relabeled. The simplicity that DGDK once held has been haphazardly lost, and it seems that once this project takes off we will all be paying for a shiny, new PureGDK with no added benefits whatsoever."

DarkGDK was meant to be the C/C++ version of DarkBasic Professional. That doesn't mean that DGDK has to be an exact replica of DBP. In fact, each of them should share the same feature set but have differing implementation(syntax and etc, not functionality) so as to take advantage of the different languages that they are in. Like in the upgrade of the math libraries(moving them away from IDs to pointer/structs). That way, you can create a class where an internal method can modify the vector/matrix/etc without the overhead of a function call.

Quote: "The "main.cpp" file is much too cluttered with functions that we shouldn't have to worry about in a high-level library, and needs to be modified in such a way that it emulates the "main.cpp" file from DGDK1.0. Great idea, poor form."

Mistrel has supplied a basic way to setup and use PureGDK without going into the depths of window creation and rendering surface registration. Compared to this(
) the simpleWindow() function is easy and concise(it even sets up input handling!). The change of the major version number to 2.0 reflects that there is a fundamental change in the library. You are more than welcome, as Olby suggested, to keep using DarkGDK 1.0.

Olby
21
Years of Service
User Offline
Joined: 21st Aug 2003
Location:
Posted: 3rd Jun 2012 12:04
Quote: "But if you are to name it DGDK2.0, then shouldn't it at least mirror the layout of DGDK1.0?"

If you had an old house that was leaking would you make a hole in the roof so that the new house leaks as well? I suppose no. As mentioned already, it's a major release. It's like migration from DBClassic to DBPro - things changed, improved and old issues where resolved or are going to be resolved. Am sorry but I don't see any reason why TGC would want to maintain DGDK1.0 further seeing as there's a superior product right next to it called PGDK. No wonder they agreed to replace it. It's a simple marketing trick. If something you did in the past is not something you're strongly satisfied of you better improve upon it. Instead of just releasing yet another product we have to pay for - TGC is offering it for free.

Quote: "All this is is an issue of false/misleading advertising."

If all advertising was this misleading. Imagine buying a car that claims to go only 100mph but when you try it out it goes up to 200mph fast. Nice perk. But based on what you've said earlier you should go back and complain why the hell this ad is misleading - give me the one that goes only 100mph.

ACER Aspire 5920G: Core2Duo 2.2GHZ, 2GB, GeForce 8600M GT 1280MB, Windows Vista Ultimate SP2, PureBasic 4.60 + DarkGDK 2.0
Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 3rd Jun 2012 12:36 Edited at: 3rd Jun 2012 12:37
Quote: "But if you are to name it DGDK2.0, then shouldn't it at least mirror the layout of DGDK1.0?"


Iterating to 2.0 indicates a major release and a significant jump in functionality. Labeling it as 2.0 is very appropriate.

Additionally, DarkGDK has historically been TGC's port of DBP for C++ users. Our partnership requires my commitment to inherit support for past DarkGDK Commercial users who choose to upgrade to 2.0. This allows TGC to further focus on AppGameKit while DarkGDK users continue to receive support, bug fixes, and additional features. If you are unsatisfied with the solution I provide then you are more than welcome to continue using DarkGDK 1.0.

Quote: "the drastic change to its layout makes porting old projects to the new lib cumbersome"


There will be growing pains from DarkGDK 1.0 to 2.0. However, the greatest reward will be the ability to take the engine with you if you should decide to move to a different language.

Login to post a reply

Server time is: 2024-11-19 01:39:08
Your offset time is: 2024-11-19 01:39:08