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.

PureGDK / Please comment on your experience so far

Author
Message
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 29th Aug 2011 11:54
How has your experience been with PureGDK? Stability, documentation, speed, features?

Is there anything you would like to see changed or improved?

Dar13
15
Years of Service
User Offline
Joined: 12th May 2008
Location: Microsoft VisualStudio 2010 Professional
Posted: 29th Aug 2011 13:36
It's been great so far, I haven't had too much difficulty setting it up or using it. I even wrapped it so I could use a custom 3D vector class(overloaded operators, templated, the works), and all I had to do is put all the PureGDK stuff into a separate namespace.

I have been getting one problem recently, and I'm not sure if it's me programming badly or PureGDK's fault. What happens is that the automatic free ID finder is returning junk values(e.g. 23395848) instead of the real ID.
Example:

You would assume that oID would be 1, but it turns out to be some huge integer.

As for improvements, it would be nice to have a PureGDK command that allows access to the Direct3DDevice that's currently being used instead of the 'ugly' code you gave me earlier.

Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 29th Aug 2011 14:32 Edited at: 29th Aug 2011 15:00
Quote: "I have been getting one problem recently, and I'm not sure if it's me programming badly or PureGDK's fault."


If you pass an ID then it should be returned to you. Are you able to give me a reproducible example of this?

WLGfx
16
Years of Service
User Offline
Joined: 1st Nov 2007
Location: NW United Kingdom
Posted: 30th Aug 2011 16:22 Edited at: 30th Aug 2011 16:57
Initial setup was a little fiddly, but once that was over I got straight into it.

The differences in the engines speed is very noticeable between Dark GDK and Pure GDK as well as how noticeable the restrictions are, Pure GDK allows you access much easier to the rest of the system, such as WinApi. Plus the feature list is immense, just like Dark Basic Pro.

While I was fiddling with my last setup, I found that the 'simple window' setup was in a .h file which threw me a bit. I've put the declarations in a header file now.

I'll be sticking with PureGDK for as long as I can now and for the first time I'm going to experiment with it and VS2010 express.

I'm heading in the direction to make some 3D demonstrations all in one so hopefully I'll have something to show off soon.

What I would like to see is all the include files kept in one place and referenced from there instead of having to be copied on each project setup. I understand that these need compiling and I don't know if it is possible to pre-compile them and stick them in one place.

Still a big thumbs up from an old skool 8 bit programmer.

@Dar13 - I'd love to know how to setup my own namespaces and such. I'm still stuck in the past with my C knowledge and still learning the C++ side...

Warning! May contain Nuts!
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 30th Aug 2011 18:07 Edited at: 30th Aug 2011 18:38
Quote: "What I would like to see is all the include files kept in one place and referenced from there instead of having to be copied on each project setup. I understand that these need compiling and I don't know if it is possible to pre-compile them and stick them in one place."


Use the include path:

"$(appdata)"

With the following include directives:

#include <puregdk/c++/core/puregdk.h>
#include <puregdk/c++/plugins/puregdk-plugins.h>
#include <puregdk/c++/initPureGDK.h>
#include <puregdk/c++/simpleWindow.h>

This will reference the .h header files directly from the application data folder. To change the .cpp files to reference this path, include them as normal which will generate an absolute path; then edit the .vcproj file and update the application data path to refer to $(appdata) instead of the absolute path.

For example:



WLGfx
16
Years of Service
User Offline
Joined: 1st Nov 2007
Location: NW United Kingdom
Posted: 30th Aug 2011 19:17
Ah, going to do that. Thanks. I knew there was a simple way of doing it.

I've just removed VS2010 from my computer, even facebook apps went extremely slow after I installed it. So I'm going to test run with wxDev-C++. I've used Dec-C++ in the past so it shouldn't be much different, apart from the forms designer and it's still free.

I'll let you know how I get on.

Warning! May contain Nuts!
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 30th Aug 2011 20:51
I was able to create a project in Dev-C++ without any problems. The only major difference is that you have to use a period '.' instead of '$(ProjectDir)' to define the project directory in include paths.

I prefer programming in Notepad++ than a full-blown IDE.

Mireben
15
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 30th Aug 2011 23:03
Quote: "What I would like to see is all the include files kept in one place and referenced from there instead of having to be copied on each project setup. "

Quote: "....then edit the .vcproj file..."


There is an easier way than editing the project file by hand. I have added all PureGDK files to the project tree as "existing items" from their original directory, then added the PureGDK C++, core and plugins directories as "additional include directories" in the project properties. That's all. Just to be sure, I even made the PureGDK files read-only, so that I can't accidentally change them in the VS editor. The only thing I need to copy to the project working folder is the engine DLL. I've been using it like that from the first try, works smoothly and I don't even need to give a path in the include statements. It's just a question of taste how you configure the Visual Studio project, as long as it can find the files.
Mireben
15
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 30th Aug 2011 23:24
To Mistrel's original question: I only scratched the surface with my experiments, so I can't give an informed assessment yet, but what I've tried so far, worked. I like the increased possibilities in the system, the nice documentation and the examples, and also appreciate your continuous support.

Very soon I will be without computer for two or three weeks, so further progress must wait, unfortunately.
Dar13
15
Years of Service
User Offline
Joined: 12th May 2008
Location: Microsoft VisualStudio 2010 Professional
Posted: 1st Sep 2011 04:55 Edited at: 1st Sep 2011 05:04
Mistrel, I've attached a screen capture of the junk IDs returned by PureGDK and the code that generates it. Note: the std::map is defined as <int,int>, with the second int the returned object IDs.

EDIT: Just reread your post about the reproducible code. I've commented out everything that I could think of that might affect the code, but it occurs even when it's at it's most barebones.

Current code(heavily commented):


In regards to the strange namespaces, the pgdk namespace contains all original PureGDK functions. The d13 namespace contains all of my wrapper functions and classes.

@WLGfx: Actually, putting all the PureGDK functions into a different namespace actually wasn't all that hard. All I did was put
at the beginning of each header and source file and closed it at the end with
. Since PureGDK isn't statically linked to your program, you can pretty much edit the interface code to your heart's content.

Attachments

Login to view attachments
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 1st Sep 2011 06:06 Edited at: 1st Sep 2011 06:08
I removed everything that I couldn't compile with and dbCreateObjectCube() returns '1' as expected. It's possible one of the other commands you're calling is causing memory corruption:



Ideally when you provide example code, I should be able to just drop it into a project and have it compile. Because I had to modify your code, I have no way of knowing if it's an intermittent bug, my compiler settings, or if it's some other command you're using that I can't compile with.

Dar13
15
Years of Service
User Offline
Joined: 12th May 2008
Location: Microsoft VisualStudio 2010 Professional
Posted: 1st Sep 2011 13:30 Edited at: 2nd Sep 2011 02:58
Quote: "Ideally when you provide example code, I should be able to just drop it into a project and have it compile"


I understand that, but I didn't get the problem when PureGDK was in its original form. I'll try and make another PureGDK project that replicates the problem with the original PureGDK code sometime this week.

EDIT: I just stepped-through the dbCreateObjectCube function
and found that the object ID itself is generated properly, but when line 'result=Ptr(objectID,size);' is called, result is set to the junk integer. Hopefully this will help.

Mireben
15
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 3rd Sep 2011 14:21
Which PureGDK version are you using? In my code, this function - such as all the others that return an objectID - returns the ID number, not the result variable of the function call. Here is the function from my pgdk-3d.cpp (beta 12).

Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 3rd Sep 2011 15:07 Edited at: 3rd Sep 2011 15:08
Mireben has it right. The function call is essentially:



It's most likely that memory is being overwritten somewhere.

Dar13
15
Years of Service
User Offline
Joined: 12th May 2008
Location: Microsoft VisualStudio 2010 Professional
Posted: 3rd Sep 2011 18:55
I updated to Beta 12, and the problem was fixed. Thank you Mireben and Mistrel for all the help.

Siege1975
19
Years of Service
User Offline
Joined: 27th Jul 2004
Location: UK - Wiltshire
Posted: 2nd Oct 2011 06:31
I have just started out really, despite buying it a while ago, but so far so good. The documentation is excellent, the examples run fine. There is one thing I'm not entirely clear on. When i can distribute, which will no doubt be after you've released new version. What do I have to include. Just the gdkengine.dll file and my media associated files?

budokaiman
FPSC Tool Maker
14
Years of Service
User Offline
Joined: 24th Jun 2009
Playing: Hard to get
Posted: 8th Oct 2011 15:19
I've been using it for a little bit now, and I really like it. The portability of it is great, I love how the screen is handled through winAPI directly instead of how DarkGDK handles it. For fullscreen it starts much faster and smoother than DarkGDK ever did. It is a bit of a pain getting plugins working, but that's mostly just tedious work. Load time of the main .dll could be faster, but it's not slow enough to cause any problems. Great job with this!

Login to post a reply

Server time is: 2024-04-24 11:28:57
Your offset time is: 2024-04-24 11:28:57