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 / [STICKY] PureGDK 2.0 Beta - Introduction and download information

Author
Message
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 14th May 2011 01:40 Edited at: 14th May 2011 01:40
Unlike DBP and DarkGDK, in PureGDK the renderable area is separate from the actual window. This allows PureGDK to render to "any" window owned by the process and is not limited to any one implementation.

For example, you can use PureGDK with GLUT, Qt, Win32, wxWidgets, etc.

For PureBasic, use ResizeWindow() to adjust the window size and dbSetDisplayMode() to change the screen resolution.

There are a lot of changes in PureGDK compared to DBP/DarkGDK, but I think they're for the better.

Soul Reaper
13
Years of Service
User Offline
Joined: 31st Oct 2005
Location: England
Posted: 14th May 2011 13:45
Hi sorry in advance I should have been more detailed with the error problem

When i change resolution in (PGDK v2b6 with DBP 7.7) and try use
dbsetwindowsize(DesktopWidth(0),DesktopHeight(0))
I get an Error saying command not recognized, not an array or Macro or linkedlist

I am just trying to display the Cube rotating in 1024x768 fullscreen.

e.g.



Regards
Kevin
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 15th May 2011 04:08 Edited at: 15th May 2011 04:14
dbSetWindowSize does not exist in PureGDK because the renderable area is a completely separate element from the window whereas in DBP/DarkGDK, they are one and the same.

In PureGDK you have to set both the display mode and resize its parent window.

The documentation mentions this under "How to -> Fundamental Differences", however the code from this document has not yet been updated to be PureGDK 2.0 compatible.

Quote: "How to change the resolution

In PureGDK only the resolution of the render window can be specified at runtime. Additional steps are necessary to change the resolution of the user's screen and also to perform non-destructive resizing (resizing the window without changing its resolution). Refer to MSDN for the Win32 function "ChangeDisplaySettings" for more information.

..

PureGDK supports only the full screen windowed method of creating full screen applications. Full screen exclusive mode is not supported by PureGDK.

..

Unlike DarkBasic Professional, PureGDK does not stretch the resolution of the render window by default. If you want to use a lower resolution at a higher screen size then you can resize the window yourself."


This may seem more restrictive at first but it allows more flexibility in that you can combine PureGDK with any UI toolkit.

Here is an example on how to make a full screen application matching the desktop resolution:



Here is how to stretch a 1024x768 screen to match the size of the desktop resolution:



Is this what you were looking for?

Soul Reaper
13
Years of Service
User Offline
Joined: 31st Oct 2005
Location: England
Posted: 15th May 2011 13:35
Yes Thankyou Thats Perfect

Kind Regards
Kevin
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 17th May 2011 20:25
I broke the link on the first page by mistake. It's fixed now.

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 27th May 2011 05:17 Edited at: 27th May 2011 05:31
This is just to give everyone a heads up on what's in store for beta 7. The next release will have some minor enhancements (D3D callbacks and automatic ID allocations are back!) but will be focus primarily on sorting out the new documentation.

Now, this isn't anything like your old school DBP documentation! There will be a plethora of internal cross-referencing that evaluates output from multiple sources to ensure that not one command exists without a docs page and no docs page will exist for any 'phantom' command.

Each function will list all possible error codes which can be detected are caught at runtime by PureGDK for you to examine and respond to.

For example, dbMakeMatrix() can throw any of the following errors for you to catch:

RUNTIMEERROR_B3DMATRIXNUMBERILLEGAL
RUNTIMEERROR_B3DMATRIXALREADYEXISTS
RUNTIMEERROR_B3DMATRIXSEGMENTWRONG
RUNTIMEERROR_B3DMATRIXDIMENSIONWRONG
RUNTIMEERROR_B3DMATRIXTOOLARGE

Additionally, this new documentation will provide function name and parameters with types which are specific to their supported language, courtesy of the PureGDK library builder's plugin SDK.

This means that the documentation for PureBasic will provide PureBasic-specific syntax, C++ documentation will be C++-specific, etc. Any languages added by you can also generate its own specially formatted documentation by adding the necessary support to the language plugin, by following the examples provided in the PureGDK SDK.

This should bring a lot of improvements for everyone who uses PureGDK 2.0. I understand that one of the biggest problems has been trying to understand how to use it. Because this has been such a massive rewrite, everything has been in an incredible state of flux. I hope this will provide a mark of stability and encourage more people to use PureGDK with its friendly and informative documentation!

Olby
15
Years of Service
User Offline
Joined: 21st Aug 2003
Location:
Posted: 28th May 2011 02:00
Mistrel, I just wanted to give you a tap on your shoulder for all the work you've done so far. It looks, sounds and feels incredible. Thumbs up!

ACER Aspire 5920G: Core2Duo 2.2GHZ, 2GB, GeForce 8600M GT 1280MB, Windows Vista Ultimate SP1, DBPro 7.5 + PureGDK 2.0b
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 27th Jul 2011 14:13 Edited at: 27th Jul 2011 14:23
PureGDK 2.0 beta 7 is out! Major features of this release include the addition of Direct3D callbacks to recover from an invalid state, specifying an ID is now optional for all creation and load commands, and the first iteration of the brand new documentation. It's really great!

http://forum.thegamecreators.com/?m=forum_view&t=177817&b=38

Please delete any files installed by a previous release of PureGDK 2.0 beta before installing a new one! The default user path is "%appdata%\PureGDK", the default install path is "..Program Files (x86)\PureGDK"

PureBasic users: You "must" uninstall any previous release of PureGDK 1.0 before installing PureGDK 2.0. Older releases are not compatible and you will not be able to compile.


Brand new language-specific documentation!



Here is a screenshot of the DarkGDK documentation for a comparison:



The documentation is in the excellent .chm format with an index and full text search.

All source code and templates for the documentation builder will be available in the SDK for you to help extend the existing docs and also for you to apply to your own projects if you like.

Many of the commands have been renamed for clarity and others have had their parameters reordered to support default parameters and function polymorphism.

Here is an example of a function which will have its parameters reordered for automatic ID allocation:

Quote: "
dbLoadSound(string fileName[, int soundID])"


The "soundID" parameter is optional and therefore appears at the end of the function. If no ID is specified, one will be returned as the result.

For functions which take advantage of default parameters, the header might look like this:

Quote: "
dbLoadSound(string fileName, int soundID = -1)"


And for others which use function polymorphism, for example:

Quote: "
dbLoadSound(string fileName)
dbLoadSound(string fileName, int soundID)"


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

In DarkGDK 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 PureGDK 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.

PureGDK has built-in support for multithreading by providing function-level critical sections for your convenience behind the scenes as well as thread-aware error handling. Each function can have several possible error codes which can be detected are caught at runtime for you to examine and respond to.

For example, dbMakeMatrix() can throw any of the following errors for you to catch with dbGetLastError():

Quote: "
kGDK_Error_3D_Matrix_ID_Invalid
kGDK_Error_3D_Matrix_Exists
kGDK_Error_3D_Matrix_Segment_Invalid
kGDK_Error_3D_Matrix_Dimension_Invalid
kGDK_Error_3D_Matrix_Too_Large"


dbGetLastError() will return the last error to occur in the current thread. It can safely and accurately be used across multiple threads.

Never have to use a vector or matrix "ID" again! PureGDK supports vector and matrix datatypes as structures. This means that you can access any part of this data and they can be written to and read from memory:

Quote: "PureGDK 2.0 beta 7
------------------
Bug fixes:
- dbCameraExist no longer has a default parameter.
- Fixed a few erroneous command names:
* dbLockpixels -> dbLockPixels
* dbStopRecodingSound -> dbStopRecordingSound
* dbGetBackbufferWidthWidth -> dbGetBackbufferWidth

Updates:
- Document commands are also now verified against existing commands in the template libraries to eliminate the documenting of erroneous parameters and non-existent commands. The documentation itself has gotten a major visual overhaul as well.
- The documentation builder now has the ability to create .chm documentation for multiple languages using shared templates. Any change to the documentation will propegate to every targeted language.
- Added runtime error constants to PureGDK.gdt as well as the documentation. Every command which returns an error is now documented.
- Added the dbSetD3DDeviceCallback command for recovering from an invalid render device.
- dbSyncRate now uses DBP's more accurate frame rate limiter.
- Added '-v' parameter to buildlibs.exe to provide additional verbose output for aggregating command documentation. Several parameters for this tool have also been adjusted for consistency.
- Updated the SDK specification and plugins to support verbose output and new arc/argv parameters. Changes are incompatible with previous beta SDK releases.
- Specifying an ID explicitly for creation and load commands which would normally accept an ID is now optional. Many commands have had their parameters reordered for support this behavior.

- New commands:
* dbIsAdvancedTerrain
* dbIsCloth
* dbIsCollider
* dbIsEffector
* dbIsEmitter
* dbSetD3DDeviceCallback
* dbSetNVPerfHUD

- Renamed commands to be more specific and/or consistent with other commands:
* dbAddMeshToBuffer -> dbAddMeshToVertexBuffer
* dbAnimationExist -> dbIsAnimation
* dbBitmapExist -> dbIsBitmap
* dbCameraExist -> dbIsCamera
* dbChangeMesh -> dbReplaceMesh
* dbCreateObjectTerrain -> dbCreateAdvancedTerrain
* dbCSGDifferenceOnVertexData -> dbCSGDifferenceOnVertexBuffer
* dbCSGIntersectionOnVertexData -> dbCSGIntersectionOnVertexBuffer
* dbCSGUnionOnVertexData -> dbCSGUnionOnVertexBuffer
* dbDeleteMeshFromBuffer -> dbDeleteMeshFromVertexBuffer
* dbDestroyTerrain -> dbDeleteAdvancedTerain
* dbEffectExist -> dbIsEffect
* dbFreeAllClothPoints -> dbDeleteAllClothPoints
* dbFreeAllClothPointsOnAllObjects -> dbDeleteAllClothPointsOnAllObjects
* dbFreeAllClothPointsOnObject -> dbDeleteAllClothPointsOnObject
* dbFreeAllRagdollPoints -> dbDeleteAllRagdollPoints
* dbFreeClothNearestPoint -> dbDeleteClothNearestPoint
* dbFreeClothPoint -> dbDeleteClothPoint
* dbFreeClothPoints -> dbDeleteClothPoints
* dbFreeClothPointsRadius -> dbDeleteClothPointsRadius
* dbFreeNetGame -> dbDeleteNetGame
* dbFreeNetPlayer -> dbDeleteNetPlayer
* dbGetBufferIndexCount -> dbGetVertexBufferIndexCount
* dbGetBufferIndexData -> dbGetVertexBufferIndexData
* dbGetBufferVertexCount -> dbGetVertexBufferVertexCount
* dbImageExist -> dbIsImage
* dbLimbExist -> dbIsLimb
* dbMakeBasicEmitter -> dbCreateBasicEmitter
* dbMakeBitmapFromMemblock -> dbCreateBitmapFromMemblock
* dbMakeBoxEmitter -> dbCreateBoxEmitter
* dbMakeCamera -> dbCreateCamera
* dbMakeChaosEffector -> dbCreateChaosEffector
* dbMakeCloth -> dbCreateCloth
* dbMakeCollisionBox -> dbCreateCollisionBox
* dbMakeCollisionDisc -> dbCreateCollisionDisc
* dbMakeCollisionPlane -> dbCreateCollisionPlane
* dbMakeCollisionSphere ->dbCreateCollisionSphere
* dbMakeCollisionSquare -> dbCreateCollisionSquare
* dbMakeColorEffector -> dbCreateColorEffector
* dbMakeDampingEffector -> dbCreateDampingEffector
* dbMakeDragEffector ->dbCreateDragEffector
* dbMakeFireParticles -> dbCreateFireParticles
* dbMakeFlockEffector -> dbCreateFlockEffector
* dbMakeForceEffector -> dbCreateForceEffector
* dbMakeGravityEffector -> dbCreateGravityEffector
* dbMakeImageFromMemblock -> dbCreateImageFromMemblock
* dbMakeLight -> dbCreateLight
* dbMakeMatrix -> dbCreateMatrix
* dbMakeMemblock -> dbCreateMemblock
* dbMakeMemblockFromBitmap -> dbCreateMemblockFromBitmap
* dbMakeMemblockFromImage -> dbCreateMemblockFromImage
* dbMakeMemblockFromMesh -> dbCreateMemblockFromMesh
* dbMakeMemblockFromSound -> dbCreateMemblockFromSound
* dbMakeMeshFromMemblock -> dbCreateMeshFromMemblock
* dbMakeMeshFromObject -> dbCreateMeshFromObject
* dbMakeObject -> dbCreateObject
* dbMakeObjectBox -> dbCreateObjectBox
* dbMakeObjectCollisionBox -> dbCreateObjectCollisionBox
* dbMakeObjectCone -> dbCreateObjectCone
* dbMakeObjectCube -> dbCreateObjectCube
* dbMakeObjectCylinder -> dbCreateObjectCylinder
* dbMakeObjectFromLimb -> dbCreateObjectFromLimb
* dbMakeObjectPlane -> dbCreateObjectPlane
* dbMakeObjectSphere -> dbCreateObjectSphere
* dbMakeObjectTerrain -> dbCreateObjectTerrain
* dbMakeObjectTriangle -> dbCreateObjectTriangle
* dbMakeParticles -> dbCreateParticles
* dbMakePointEffector -> dbCreatePointEffector
* dbMakeSizeEffector -> dbCreateSizeEffector
* dbMakeSnowParticles -> dbCreateSnowParticles
* dbMakeSoundFromMemblock -> dbCreateSoundFromMemblock
* dbMakeSphericalEmitter -> dbCreateSphericalEmitter
* dbMakeStaticCollisionBox -> dbCreateStaticCollisionBox
* dbMakeStaticLimb -> dbCreateStaticLimb
* dbMakeStaticObject -> dbCreateStaticObject
* dbMakeTerrain -> dbCreateTerrain
* dbMakeVortexEffector -> dbCreateVortexEffector
* dbMakeWindEffector -> dbCreateWindEffector
* dbMakeWrapAroundEffector -> dbCreateWrapAroundEffector
* dbMatrixExist -> dbIsMatrix
* dbMatrixTilesExist -> dbIsMatrixTextured
* dbMemblockExist -> dbIsMemblock
* dbMeshExist -> dbIsMesh
* dbMusicExist -> dbIsMusic
* dbNetGameExist -> dbIsNetGame
* dbNetMessageExist -> dbIsNetMessage
* dbObjectExist -> dbIsObject
* dbParticlesExist -> dbIsParticles
* dbPixelShaderExist -> dbIsPixelShader
* dbSetImageColorkey -> dbSetImageChromaKey
* dbSetStaticPortalsOff -> dbHideStaticPortals
* dbSetStaticPortalsOn -> dbShowStaticPortals
* dbSoundExist -> dbIsSound
* dbSpriteExist -> dbIsSprite
* dbTerrainExist -> dbIsTerrain
* dbUnlockBuffer -> dbUnlockVertexBuffer
* dbVertexShaderExist -> dbIsVertexShader
* dbChangeMeshFromMemblock -> dbReplaceMeshWithMemblock

- Reordered parameters to support automatic ID allocation
* dbCloneObject(ObjectCloneID, SourceID, SharedDataFlag) -> (SourceID, ObjectCloneID, SharedDataFlag)
* dbCopyMemblock(SourceID, MemblockID, SourceStartPos, DestinationStartPos, Length) -> (SourceStartPos, DestinationStartPos, Length, SourceID, MemblockID)
* dbCreateAnimatedSprite(SpriteID, Filename.s, Across, Down, ImageID) -> (Filename.s, Across, Down, ImageID, SpriteID)
* dbCreateBasicEmitter(EmitterID, ParticleCount) -> (ParticleCount, EmitterID)
* dbCreateBitmap(BitmapID, Width, Height) -> (Width, Height, BitmapID)
* dbCreateBitmapFromMemblock(BitmapID, MemblockID) -> dbCreateBitmapFromMemblock(MemblockID, BitmapID)
* dbCreateBoxEmitter(EmitterID, ParticleCount) -> (ParticleCount, EmitterID)
* dbCreateFireParticles(ParticleID, ImageID, Frequency, x.f, y.f, z.f, Width.f, Height.f, Depth.f) -> (ImageID, Frequency, x.f, y.f, z.f, Width.f, Height.f, Depth.f, ParticleID)
* dbCreateImageFromMemblock(ImageID, MemblockID) -> dbCreateBitmapFromMemblock(MemblockID, ImageID)
* dbCreateMatrix(MatrixID, Width.f, Depth.f, xSegments, zSegments) -> (Width.f, Depth.f, xSegments, zSegments, MatrixID)
* dbCreateMemblock(MemblockID, Size) -> (Size, MemblockID)
* dbCreateMemblockFromBitmap(MemblockID, BitmapID) -> (BitmapID, MemblockID)
* dbCreateMemblockFromImage(MemblockID, ImageID) -> (ImageID, MemblockID)
* dbCreateMemblockFromMesh(MemblockID, MeshID) -> (MeshID, MemblockID)
* dbCreateMemblockFromSound(MemblockID, SoundID) -> (SoundID, MemblockID)
* dbCreateMeshFromMemblock(MeshID, MemblockID) -> dbCreateBitmapFromMemblock(MemblockID, MeshID)
* dbCreateMeshFromObject(MeshID, ObjectID) -> (ObjectID, MeshID)
* dbCreateObject(ObjectID, MeshIndex, ImageID) -> (MeshIndex, ImageID, ObjectID)
* dbCreateObjectBox(ObjectID, Width.f, Height.f, Depth.f) -> (Width.f, Height.f, Depth.f, ObjectID)
* dbCreateObjectCone(ObjectID, Size.f) -> (Size.f, ObjectID)
* dbCreateObjectCube(ObjectID, Size.f) -> (Size.f, ObjectID)
* dbCreateObjectCylinder(ObjectID, Size.f) -> (Size.f, ObjectID)
* dbCreateObjectFromLimb(ObjectID, NewObjectID, LimbID, CopyAllFlag) -> (ObjectID, LimbID, CopyAllFlag, NewObjectID)
* dbCreateObjectPlane(ObjectID, Width.f, Height.f, Orientation) -> (Width.f, Height.f, Orientation, ObjectID)
* dbCreateObjectSphere(ObjectID, Size.f, Rows, Columns) -> (Size.f, Rows, Columns, ObjectID)
* dbCreateObjectTriangle(ObjectID, x1, y1, z1, x2, y2, z2, x3, y3, z3) -> (x1, y1, z1, x2, y2, z2, x3, y3, z3, ObjectID)
* dbCreateParticles(ParticleID, ImageID, Frequency, Radius.f) -> (ImageID, Frequency, Radius.f, ParticleID)
* dbCreateSnowParticles(ParticleID, ImageID, Frequency, x.f, y.f, z.f, Width.f, Height.f, Depth.f) -> (ImageID, Frequency, x.f, y.f, z.f, Width.f, Height.f, Depth.f, ParticleID)
* dbCreateSoundFromMemblock(SoundID, MemblockID) -> dbCreateBitmapFromMemblock(MemblockID, SoundID)
* dbCreateSphericalEmitter(EmitterID, ParticleCount) -> (ParticleCount, EmitterID)
* dbCreateTerrain(TerrainID, HeightmapFilename.s) -> (HeightmapFilename.s, TerrainID)
* dbGetImage(ImageID, Left, Top, Right, Bottom, TextureFlag) -> (Left, Top, Right, Bottom, TextureFlag, ImageID)
* dbInstanceObject(ObjectID, SourceID) -> (SourceID, ObjectID)
* dbLoadEffect(FileName.s, EffectID, TextureFlag, DoNotGenerateExtraData) -> (FileName.s, TextureFlag, DoNotGenerateExtraData, EffectID)
* dbLoadEffect(FileName.s, EffectID, TextureFlag, DoNotGenerateExtraData) -> (FileName.s, TextureFlag, EffectID, DoNotGenerateExtraData)
* dbLoadImage(Filename.s, ImageID, TextureFlag) -> (Filename.s, TextureFlag, ImageID)
* dbLoadMesh(FileName.s, MeshID)
* dbLoadObject(FileName.s, ObjectID, TextureMode, TextureReduce) -> (FileName.s, TextureReduce, TextureMode, ObjectID)
* dbLoadPixelShader(FileName.s, PixelShaderID)
* dbLoadVertexShader(FileName.s, VertexShaderID)
* dbRecordSound(SoundID, Duration) -> (Duration, SoundID)
* dbReplaceMeshWithMemblock(MeshID, MemblockID) -> dbReplaceMeshWithMemblock(MemblockID, MeshID)"


Chris Tate
DBPro Master
10
Years of Service
User Offline
Joined: 29th Aug 2008
Location: London, England
Posted: 28th Jul 2011 12:06
I am currently using DarkGDK for some of my projects. I have downloaded your GDK to play around with it in VB.NET.

It seems like one of the greatest plugin ideas ever; particularly because it would allow you to use other plugins in your favourite programming language.

If it prooves secure for VB.NET use, I will buy it and rewrite my DarkGDK game to use your PureGDK.

Thanks for all the effort; now downloading.

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 28th Jul 2011 15:19 Edited at: 28th Jul 2011 15:22
Thank you for your support. PureGDK 2.0 is still in a rough state but it's definitely stable enough to support writing code for right now as it nears completion.

This is the first release which uses the new documentation. There is still a lot of work to be done but it's finally starting to look polished. If you have any questions, please feel free to ask here on the forum or by contacting me directly at support@puregdk.com.

Olby
15
Years of Service
User Offline
Joined: 21st Aug 2003
Location:
Posted: 31st Jul 2011 02:06
I just noticed that the installer has some text references to Macromedia Dreamwaver instead of the PGDK.

ACER Aspire 5920G: Core2Duo 2.2GHZ, 2GB, GeForce 8600M GT 1280MB, Windows Vista Ultimate SP1, DBPro 7.5 + PureGDK 2.0b
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 31st Jul 2011 02:37 Edited at: 31st Jul 2011 02:47
Yes, this is fixed.

I was copying some of the text from that installer as filler and forgot to remove it.

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 31st Jul 2011 09:34 Edited at: 7th Aug 2011 22:59
PureGDK 2.0 beta 8 is out. This release fixes a small bug which broke dbCreateMatrix. It also adds a lot of changes to the installer which improves the user experience and adds important validation to ensure that all of the necessary prerequisites are in order.

http://forum.thegamecreators.com/?m=forum_view&t=177817&b=38

Please delete any files installed by a previous release of PureGDK 2.0 beta before installing a new one! The default user path is "%appdata%\PureGDK", the default install path is "..Program Files (x86)\PureGDK"

PureBasic users: You "must" uninstall any previous release of PureGDK 1.0 before installing PureGDK 2.0. Older releases are not compatible and you will not be able to compile.

Changelog:

Quote: "
PureGDK 2.0 beta 8
------------------
Bug fixes:
* Fixed a bug in Matrix.gdt which was preventing dbCreateMatrix from evaluating correctly.

Updates:
* The installer now creates start menu entries with links to the documentation, projects, and useful batch files.
* The installer now checks for licensing errors when it builds the engine dll during installation an will report the offending library if a problem has occurred.
* The installer now checks checks for the existence of a DarkBasic Professional and will provide useful information about where to download it if it cannot be found. This is in contrast to previous versions which simply asked for a directory path.
* The installer now verifies whether a compatible version of DarkBasic Professional has been selected. It will not continue unless the correct version (at least 7.7) has been detected. It will also provide useful information about where to download it if it was not detected.
* The installer now verifies that the engine dll has been created successfully after calling gdkc.exe.
* Various other small bits of polish, fixing typos, and textual changes to the installer."


Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 5th Aug 2011 03:42 Edited at: 5th Aug 2011 03:48
PureGDK 2.0 beta 9 is out. This release focuses primarily on improving the documentation and the documentation builder source code (which will eventually make it into the SDK). There was also a minor bug fix for plugin headers and an adjustment for vector/matrix structure defaults.

The default structure for the application data folder (%appdata%\PureGDK) has changed. The old folder should be deleted so that old files don't clutter it up and add to confusion when referencing the new documentation.

Instructions for how to setup projects in Visual Studio 2008, Visual Studio 2010, and PureBasic are also included in this release's revised documentation. No more guesswork on how to setup a project.

PureGDK is now extremely stable and is rapidly approaching release-candidate status!

http://forum.thegamecreators.com/?m=forum_view&t=177817&b=38

Please delete any files installed by a previous release of PureGDK 2.0 beta before installing a new one! The default user path is "%appdata%\PureGDK", the default install path is "..Program Files (x86)\PureGDK"

PureBasic users: You "must" uninstall any previous release of PureGDK 1.0 before installing PureGDK 2.0. Older releases are not compatible and you will not be able to compile.

ChangeLog:

Quote: "
PureGDK 2.0 beta 9
------------------
Bug fixes:
* Fixed a bug where plugin headers were not evaluating their include path correctly.

Updates:
* The documentation has received a lot of polish for this release including font style, text placement, new topics, index revisions, as well as a few minor bug fixes.
* puregdk_cpp.chm and puregdk_purebasic.chm have been merged into puregdk.chm. All documentation for language targets have been split into aliased folders within the Library/ path of the documentation. Searching the index will now provide links to all supported languages to eliminate ambiguity.
* Added new entries for PureBasic and C++ fundamentals, source examples in the documentation, and full walkthroughs on how to setup a project in PureBasic, Visual Studio 2008 and Visual Studio 2010.
* Vector and matrix structures now use their fully-qualified name by default (Vector2 vs. v2) for clarity."


Rampage
11
Years of Service
User Offline
Joined: 4th Feb 2008
Location: New Zealand
Posted: 7th Aug 2011 08:19
Haha wow. Mate. I've been working on a small DarkGDK game for some time now.
I should really research before I start coding because for the last month I've had a extremely bad bug that just stopped my whole game from working altogether, and I could not find out what was causing it.
Once I merged the code to the latest PureGDK. The problem seemed to fix itself.

There is really no denying this is by far superior. And it has brilliant support.

Mad props yo.

Regards,

Max
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 7th Aug 2011 10:53 Edited at: 7th Aug 2011 10:56
Quote: "Once I merged the code to the latest PureGDK. The problem seemed to fix itself."


I'm glad to see a success story already! No more will C++ be a second-class citizen with PureGDK.

I hope you didn't have too much trouble porting your game to PureGDK. I know the commands are all very similar but as you might already know, there are a number of "gotchas" where the parameter order has changed. Is there anything you think I should have mentioned in the documentation that might have helped you with the transition?

I hope you will show us your work when you're finished; in another thread so people will see it, of course.

Please let me know on the forum or by e-mail if you have any questions.

Also, how do you like the new documentation?

Rampage
11
Years of Service
User Offline
Joined: 4th Feb 2008
Location: New Zealand
Posted: 7th Aug 2011 11:33 Edited at: 7th Aug 2011 11:45
Quote: "I hope you didn't have too much trouble porting your game to PureGDK. I know the commands are all very similar but as you might already know, there are a number of "gotchas" where the parameter order has changed. Is there anything you think I should have mentioned in the documentation that might have helped you with the transition?"

Not at all really. The parameters were fine, a few changes, but I'm quite used to that sort of stuff, a small hardship of being a programmer.
The 'fundamentals' page under C++ in the documentation gave me pretty much all the information needed to make the transition.
I was EXTREMELY impressed with the documentation. It didn't miss anything and I had next to no problems as it covered everything I needed to know perfectly.
I got a level of my game running on the second compile!

I get a small hiccup when I try to play music though as I just figured.

Unhandled exception at 0x00e33363 in DarkGenesis_PureGDK.exe: 0xC0000005: Access violation reading location 0x00000000.

Part of the code the error links to in pgdk-music.cpp:


It's probably something extremely stupid that I am missing because I am tired. I seem to that a lot.
At the moment I am using a integer as a variable identifier, but I have tried the normal ID system to see if that was a problem but to no avail.

Again its probably something stupid.

Thanks for the great product!

EDIT: Doh! I knew it was something silly! In the transition process I took out a function that set the directory. Once I added it back in it worked fine.
It happens

Thanks!

Regards,

Max
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 7th Aug 2011 23:00 Edited at: 7th Aug 2011 23:10
PureGDK 2.0 beta 10 is out. This focuses primarily on C++ plugin support with a few bug fixes and improvements. There is also the addition of example Visual Studio projects for DarkAI, DarkClouds, DarkLights, and DarkPhysics. Also of note, Sparky's Collision and D3DFunc has been updated, and IanM's Matrix1Util library plugins 9, 12, 18, and 26 have been added.

C++ users: be sure to delete all of your old "plugin" headers .h and .cpp files before copying over the new ones otherwise you will compiler/linker errors. Some of the libraries have been consolidated and linking with the old ones will get you naming conflicts.

This was a fantastic beta release with a lot of really great improvements. Thank you, DarkGDK testers!

http://forum.thegamecreators.com/?m=forum_view&t=177817&b=38

Please delete any files installed by a previous release of PureGDK 2.0 beta before installing a new one! The default user path is "%appdata%\PureGDK", the default install path is "..Program Files (x86)\PureGDK"

PureBasic users: You "must" uninstall any previous release of PureGDK 1.0 before installing PureGDK 2.0. Older releases are not compatible and you will not be able to compile.

Changelog:

Quote: "PureGDK 2.0 beta 10
------------------
Bug fixes:
* Fixed a bug where plugin headers were not evaluating their include path correctly (really fixed it this time).
* Corrected some parameter name conflics that were illegal in C++ in a few third-party plugin templates.
* Fixed the PureBasic plugin examples to use the new parameter order convention update from beta 7.
* Fixed a bug with the C++ language plugin where return types for anything other than an integer weren't being resolved correctly for doubles and 64-bit integers.
* Fixed a bug with the C++ language plugin where function call typedefs for polymorphized functions were not being enumerated.
* Fixed a bug where dbCreateObjectTriangle was erroneously passing the wrong parameter type, causing it to fail.

Updates:
* Updated Sparky's collision library to support the latest 2.05 release.
* Updated the D3DFunc library to support the latest 3.7.1 release.
* PureGDK now also copies over the TGC certificates viewer application to help you verify whether a commercial plugin you've installed is properly licensed.
* Included plugin templates for third-party plugins have been reevaulated for consistency. Various prefixes have been adjusted align to the prefix-underscore convention.
* Updated the D3DFunc library to conform to beta 4 optional parameter specification.
* Added example C++ projects for DarkAI, DarkClouds, DarkLights, and DarkPhysics.
* The PureGDK installer will now build the gdkengine.dll with commercial and user plugins by default.
* Added support for IanM's Matrix1Util library plugins 9, 12, 18, and 26.
* Merged legacy third-party templates into a single file per-library instead of one file per-dll; to be resolved to a single header.
* gdkc.exe and buildlibs.exe now print their errors to stderr instead of stdout.""


Mireben
11
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 9th Aug 2011 11:32 Edited at: 9th Aug 2011 12:14
I'm trying out beta 10 and this is what I have noticed so far.

It's great that you return std::string from functions that used to return char* in Dark GDK. I saw in a wrapper function that you even try to delete the temporary string in DB Pro, taking care of any memory leak problem. I can only applaud that. However, not all char* functions are converted yet. The ones I spotted so far are dbLimbName and dbEntry (EDIT: and dbLimbTextureName): they have void return type instead of string, so they are currently not usable.

I tried dbGetD3DCapabilities and it works, but for some reason, the D3DCaps structure is not registered by Intellisense. It doesn't display the contents when I press point after the structure variable, and when I try to "go to definition", it says the symbol is undefined. But it compiles and works. Any idea why that happens? (It might be just a quirk of my Visual Studio 2008.)

The help is GREAT, but would it be possible to compile different help files for different languages? When I double-click something from the index, I always have to choose the language as well in the pop-up window and that gets annoying in the long run.

Will the finished help have keyword search as well? It would be easier to find the renamed functions.

These requests for the help are just niceties that I can live without, so no serious problem. Only the return types of the string functions should be really corrected.
Mireben
11
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 9th Aug 2011 11:49 Edited at: 9th Aug 2011 11:50
P.S. Forgot to say that the automatic ID allocation is another GREAT feature which I will definitely use. I was a bit surprised that the object ID numbers start from 22 and not 1, could you maybe say a few words about how the allocation works? Just curious.
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 9th Aug 2011 12:26
Quote: "The ones I spotted so far are dbLimbName and dbEntry: they have void return type instead of string, so they are currently not usable."


Fixed!

Quote: ".. the D3DCaps structure is not registered by Intellisense"


The D3DCaps structure is declare in the core/pgdk-puregdk.h file. If this file isn't in your project solution then you won't get Intellisense and you won't be able to jump to the definition.

I tested this in my project with Visual Studio 2008. If it's in the solution both features work great. If I remove it, then it doesn't work.

Even though you may only need to include .cpp files in your project for compiling, adding the .h files as well is important because it allows information only contained in the header files to also be parsed by Intellisense.

Quote: "The help is GREAT, but would it be possible to compile different help files for different languages?"


Because introductory language tutorials are bundled into the same help file, I thought it made more sense to bundle the commands too. But I can add a way to split it up too. It might work out better this way.

Quote: "Will the finished help have keyword search as well? It would be easier to find the renamed functions."


I actually pulled it out in beta 9 because after merging all of the languages into one file, you get multiple results for each language page hit. And it wasn't usable at all.

What I might end up doing is, instead of having a node for each language, combine them together with a language selector up at the top of the page. This way each page would only return one "hit" when searched.

Quote: "These requests for the help are just niceties that I can live without, so no serious problem."


Please keep it up! This kind of feedback is great.

Quote: "I was a bit surprised that the object ID numbers start from 22 and not 1, could you maybe say a few words about how the allocation works?"


Ideally, I wanted ID allocation to use binary trees (which are always in sorted order). So, if you use an ID it goes into the "used" ID pool. And when it's freed, it goes back into the "free" pool.

Because binary trees are always sorted, when an ID is requested, it always returns the lowest ID.

.. or this is how I wanted to do it. Right now it's using hash tables which arguable may or may not be faster. However, hash tables are not sorted and can return values in any order. It just-so-happens to start at 22. I noticed this too in testing.

Switching this code to use binary trees is a low priority since it's working as-is. This change has been a very low priority!

Mireben
11
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 9th Aug 2011 15:35
Thanks for the fast reply!

dbLimbTextureName also needs fixing of the return type (I edited the previous post, obviously after you already read it).

pgdk-puregdk.h is in the solution, that's why it is strange. It seems that it doesn't want to know about any struct in the header. Never mind, I've had problems with Intellisense before.

About ID allocation again: with the hash tables, do you still have a pool of free and used numbers, so a number of a deleted object can be re-used later? So far, when I deleted an object and created a new one, I got a different number, but maybe I would need a high number of objects to force a re-use.

In the meantime I tried error handling and found that dbGetErrorString is not in the help yet.

I think I've made enough tries to start converting my existing project, which will need some redesign, but it will get better in the end. So I won't disturb you with more questions for a while, but will let you know if I find any problem along the way.
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 9th Aug 2011 15:48 Edited at: 9th Aug 2011 15:50
Quote: "dbLimbTextureName also needs fixing of the return type"


Fixed!

Quote: "So far, when I deleted an object and created a new one, I got a different number"


Deleted object IDs do go back into the free pool. But since it's a hash, there's no knowing where it got inserted.

You really don't need to worry about the speed though. The way this implementation works is that it caches 1,000 IDs at a time which is very fast and has a low enough "upper bounds" that you won't get an ID too far ahead of the total allocated ID pool, for performance reasons.

Quote: "In the meantime I tried error handling and found that dbGetErrorString is not in the help yet."


Yes, it's not there yet. But you can just pass one of the error constants to it to get the error string. Passing "kGDK_Error_Sprite_Unhandled_Exception" will give you "Unknown sprite error".

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 9th Aug 2011 17:42
Quote: "When I double-click something from the index, I always have to choose the language as well in the pop-up window and that gets annoying in the long run."


All documentation generated for a target language will now be compiled to its own .chm file. Now with full-text search!

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 9th Aug 2011 19:56 Edited at: 9th Aug 2011 19:58
PureGDK 2.0 beta 11 is out. This release adds a number of commands provided by the DarkShader runtime (which comes free with DBP), documentation improvements, and support for several new plugins.

Thank you for helping test, DarkGDK testers!

http://forum.thegamecreators.com/?m=forum_view&t=177817&b=38

Please delete any files installed by a previous release of PureGDK 2.0 beta before installing a new one! The default user path is "%appdata%\PureGDK", the default install path is "..Program Files (x86)\PureGDK"

PureBasic users: You "must" uninstall any previous release of PureGDK 1.0 before installing PureGDK 2.0. Older releases are not compatible and you will not be able to compile.

Changelog:

Quote: "PureGDK 2.0 beta 11
------------------
Bug fixes:
- Fixed a bug where dbLimbName, dbLimbTextureName, and dbEntry were not returning a string as expected.
- Fixed a bug where functions which set shader constants were not evaluating structures correctly.

Updates:
- Added support for full-text search to the documentation.
- All documentation generated for a target language will now be compiled to its own .chm file.
- Various textual improvements to the library documentation.
- Added support for IanM's Matrix1Util library plugins 9, 12, 18, and 26 (for real this time).
- Support for DKShop and DKAVM has been removed, as these plugins no longer work.
- dbSetDisplayMode now calls dbReloadDisplayPointer internally (part of the DarkShader runtime).
- Added a new command dbSetRuntimeErrorCallback to allow logging of runtime errors.
- Added several commands introduced by the DarkShader runtime.

- Added the following plugins to PureGDK for out-of-the-box support:
* A* Pathfinding : http://forum.thegamecreators.com/?m=forum_view&t=114240&b=5
* Advanced Audio : http://forum.thegamecreators.com/?m=forum_view&t=111325&b=8
* Advanced Sprites : http://forum.thegamecreators.com/?m=forum_view&t=113378&b=5
* DarkData : http://www.thegamecreators.com/?m=view_product&id=2067
* DarkInk : http://www.thegamecreators.com/?m=view_product&id=2075
* DarkNet : http://www.thegamecreators.com/?m=view_product&id=2070
* DarkVideo : http://www.thegamecreators.com/?m=view_product&id=2227
* GreenEar : http://www.thegamecreators.com/?m=view_product&id=2227
* Image Kit V2 : http://forum.thegamecreators.com/?m=forum_view&t=177340&b=5
* Matrix1Util : http://forum.thegamecreators.com/?m=forum_view&t=85209&b=18
* Object LOD : http://forum.thegamecreators.com/?m=forum_view&t=159658&b=5
* Quadtree : http://forum.thegamecreators.com/?m=forum_view&t=108837&b=18

- New Commands:
* dbApplyDynamicCubeMapToObject
* dbCreateDynamicCubeMap
* dbDeleteCameraEffect
* dbDeleteDynamicCubeMap
* dbGetCameraEffect
* dbIsCameraEffect
* dbIsDynamicCubeMap
* dbLoadCameraEffect
* dbRemoveCameraEffect
* dbRenderDynamicCubeMap
* dbSetCameraEffect
* dbSetCameraEffectConstantFloat
* dbSetCameraEffectConstantInteger
* dbSetCameraEffectConstantVector
* dbSetRuntimeErrorCallback
* dbSyncCamera"


WLGfx
11
Years of Service
User Offline
Joined: 1st Nov 2007
Location: NW United Kingdom
Posted: 9th Aug 2011 23:20
Now I've got mine working I shouldn't need to update just yet should I?

Warning! May contain Nuts!
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 10th Aug 2011 05:37
Besides the bug fixes, you might like the new documentation. It now supports full text search and when you select an option from the index, you won't get a popup asking you to pick a language anymore.

Also, the new command dbSetRuntimeErrorCallback might be useful to help you track down bugs.

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 10th Aug 2011 15:01
PureGDK 2.0 beta 12 is out. This release adds finalizes the addition of all remaining DBP commercial plugins to PureGDK with out-of-the-box support.

Thank you for helping test, DarkGDK testers!

http://forum.thegamecreators.com/?m=forum_view&t=177817&b=38

Please delete any files installed by a previous release of PureGDK 2.0 beta before installing a new one! The default user path is "%appdata%\PureGDK", the default install path is "..Program Files (x86)\PureGDK"

PureBasic users: You "must" uninstall any previous release of PureGDK 1.0 before installing PureGDK 2.0. Older releases are not compatible and you will not be able to compile.

Changelog:

Quote: "PureGDK 2.0 beta 12
------------------
Bug fixes:
- Fixed a bug where dbSetObjectFilter was passing its parameters in the wrong order.

Updates:
- Added out-of-the-box support for the following plugins:
* Blitzwerks Terrain : http://www.thegamecreators.com/?m=view_product&id=2286
* Box2D : http://www.thegamecreators.com/?m=view_product&id=2257
* DarkImposters : http://www.thegamecreators.com/?m=view_product&id=2293"


Mireben
11
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 12th Aug 2011 22:27
Hi Mistrel,
I have mailed TGC about not being able to activate the Dark Imposters plugin with the 7.7 update of DB Pro (see Bug Reports forum) and this is their answer:
"Please use update 7.61 the beta isn't ready for official use yet."

But I remember you posted once that the 7.7 release candidate version is absolutely required for PureGDK. Is that still the case?
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 13th Aug 2011 00:09 Edited at: 13th Aug 2011 02:15
Update 7.7 is absolutely required. PureGDK uses an alternate method of syncing for increased performance which is not implemented in previous versions. I would rather not roll back these changes for a single plugin.

You should be able to get it working with 7.7 though. The only thing that DBP uses to check whether a licensed plugin is known is DBPCompiler.exe in the Dark Basic Professional/Compiler directory.

PureGDK patches this file so you'll have to replace it in a 7.7 installation with one from a 7.61, then install PureGDK with that path.

You will then have the 7.7 engine (all of the core plugins) but with a 7.61 DBP compiler which PureGDK uses to verify licensed plugins.

Dar13
11
Years of Service
User Offline
Joined: 12th May 2008
Location: Microsoft VisualStudio 2010 Professional
Posted: 13th Aug 2011 06:01
Mistrel, is there a way to get the currently used Direct3D Device from PureGDK? I looked through the documentation but the closest I seemed to get is setting the D3D callback function.

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 13th Aug 2011 10:09 Edited at: 13th Aug 2011 10:14
Quote: "Is there a way to get the currently used Direct3D Device from PureGDK?"


There isn't a friendly way to do this at the moment, no. If PureGDK is missing features that DarkGDK has or something else you think it should, let me know and I'll get it in. Make a list!

Here is how you can access these interfaces in the meantime:



Dar13
11
Years of Service
User Offline
Joined: 12th May 2008
Location: Microsoft VisualStudio 2010 Professional
Posted: 13th Aug 2011 14:24 Edited at: 13th Aug 2011 15:09
The only things that have been noticeable are the absence of the string manipulation commands(and those aren't horribly hard to remake with std::strings), and getting the Direct3D device.

Thanks for the code to get the Direct3D device in the meantime.

EDIT: Hmm...I'm getting a memory access violation when running the getDirect3D() function you gave me.

Mireben
11
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 13th Aug 2011 16:11 Edited at: 13th Aug 2011 16:25
EDITED:

I still couldn't get Dark Imposters working, but the good news is that other plugins, namely Sparky's and Blitz Terrain work, I tested their basic commands with the latest beta 12.

However, the version problem reminded me of this question: when I install Dark Basic Professional, am I supposed to install first the 7.61 upgrade and then 7.7 beta? If I left out the 7.61 upgrade and only installed 7.7, is that OK or should I reinstall the whole thing?
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 13th Aug 2011 16:44 Edited at: 13th Aug 2011 17:19
Quote: "Hmm...I'm getting a memory access violation when running the getDirect3D() function you gave me."


Just as a guess, when are you calling getDirect3D? It should be after dbOpenScreen, otherwise the engine might not be fully loaded yet. If you call it before initPureGDK then the DBProSetupDebug.dll won't be in memory yet and you certainly will get an access violation.

Break that call up to see what your result is for GetModuleHandle and GetProcAddress.

When initPureGDK is called it begins the process of initializing the engine and loading all of the plugins into memory. However, it returns immediately so any of these plugins may still be in the process of loading. When dbOpenScreen is called, then it will wait to ensure that everything is loaded before continuing.

The theory is that it's more efficient to allow you to start the engine initialization and perform other processing in the meantime until you actually need to use it.



If you're still having trouble, give me a small example of something that crashes so that I have something to test. Attach a complete project including your compiled gdkengine.dll.

Quote: "When I install Dark Basic Professional, am I supposed to install first the 7.61 upgrade and then 7.7 beta?"


Install 7.61 to one directory (c:\dbp7_61) and 7.7 to another (c:\dbp7_7). Copy dbpcompiler.exe from dbp7_61 to dbp7_7, reinstall PureGDK and target the modified dbp7_7 directory.

I think I may have misunderstood. If you're asking if you should install 7.61 before 7.7; you do not have to do this. 7.61 was released after 7.7 RC7, I think. So 7.7 never got this plugin update. Replacing the DBP compiler should be enough to make it work with PureGDK.

Mireben
11
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 13th Aug 2011 19:10
Quote: "Install 7.61 to one directory (c:\dbp7_61) and 7.7 to another (c:\dbp7_7). Copy dbpcompiler.exe from dbp7_61 to dbp7_7"


That's what I did, but it didn't help, because the modified 7.7 installation still says "unknown product" when trying to activate Dark Imposters.

I finally managed to make it work with this procedure:

- clean install Dark Basic Professional,
- install the 7.61 update,
- install and activate all plugins, including Dark Imposters,
- backup DBCompiler.exe, the two certificate viewers and the verifier (just be sure...),
- install the 7.7 update over the same installation,
- put back the EXE files, start the certificate viewer once to make sure that it still recognizes all plugins,
- reinstall PureGDK beta 12.

This way, the PureGDK engine DLL has been compiled error-free. Now I'm making some test projects to see the plugins working.
Dar13
11
Years of Service
User Offline
Joined: 12th May 2008
Location: Microsoft VisualStudio 2010 Professional
Posted: 13th Aug 2011 20:30
Turns out I placed the
before the dbOpenScreen() and that was the problem. Thank you!

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 14th Aug 2011 02:04
Quote: "the modified 7.7 installation still says "unknown product "


Ahh. I wonder if the activation program "TGCOnline.exe" changed as well. I was only thinking about the compile-time requirements.

I'm glad you got it to work. Unfortunately, 7.7 not supporting this plugin is just one big headache.

Mireben
11
Years of Service
User Offline
Joined: 5th Aug 2008
Location:
Posted: 14th Aug 2011 11:25 Edited at: 14th Aug 2011 11:26
Thanks for the code to get the 3D device, I would have requested that too. In the end, making CEGUI work was just two lines more than the Dark GDK counterpart (or three lines if the device pointer is stored in a variable first, as in your code):



It would be nice to have the dbGetDirect3DDevice function in PureGDK too, but this solution is also OK.
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 3rd Dec 2011 10:47
Quote: "It would be nice to have the dbGetDirect3DDevice function in PureGDK too, but this solution is also OK."


These commands have been added to the latest beta (beta 13). However, the return value must be cast to the correct type. This approach was chosen so that the inclusion of DirectX headers would remain optional.



Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 4th Dec 2011 02:06
PureGDK 2.0 beta 13 is out. This release continues to improve on the documentation with some other minor updates.

Thank you for helping test, DarkGDK testers!

http://forum.thegamecreators.com/?m=forum_view&t=177817&b=38

Please delete any files installed by a previous release of PureGDK 2.0 beta before installing a new one! The default user path is "%appdata%\PureGDK", the default install path is "..Program Files (x86)\PureGDK"

PureBasic users: You "must" uninstall any previous release of PureGDK 1.0 before installing PureGDK 2.0. Older releases are not compatible and you will not be able to compile.

Changelog:

Quote: "PureGDK 2.0 beta 13
-------------------
Bug fixes:
- Fixed a few typos which created problems for PureBasic-generated code for recently added plugins.
- The documentation for PureBasic wasn't building properly and instead contained the documentation for C++.
- Fixed a bug where dbDot with the optional color parameter did not set the ink color as expected.
- Fixed a bug in the documentation builder where command cross-references were not parsing outside of the library currently being evaluated.

Updates:
- Added dbCloseScreen to all example projects where it was missing.
- Added an entry for dbCloseScreen to the documentation under "Fundamentals".
- Tweaked gdkc.exe parameter prefixes to be more consistent.
- Fixed a typo in the buldlibs.exe commandline help.
- Corrected formatting inconsistencies and innacurate constant references in the documentation.
- Renamed dbSprite to dbCreateSprite to be more consistent with other commands names and reordered its parameters to support automatic ID allocation.
- Clarified some parameter names and corrected a few inconsistencies.
- Added support for RegisterFunctionPtr in Matrix1Util_20.dll.
- The gdkc.exe "libraries" file now only requires a dll name to be listed for it to be included as part of the white-list, greatly simplifying the process required to add support for new libraries.
- Added documentation entries for the command-line tools "gdkc.exe" and "buildlibs.exe".

- New commands:
* dbGetDirect3D
* dbGetDirect3DDevice"


mr_d
DBPro Tool Maker
12
Years of Service
User Offline
Joined: 26th Mar 2007
Location: Somewhere In Australia
Posted: 4th Dec 2011 07:34
Hi Mistrel,
I have 2 questions on your SDK; 1 of which you have made reference to previously, but the other I have not seen anyone raise the topic on.
Q1: Is this usable with, and wil you be able to provide the necessary headers/libs, etc. for FreeBASIC and VB6.0?
Q2: Is this compatible with the AppUp dll provided by TGC for DBP apps, or will this need to be looked at in the future? If it is usable now, what additional files are needed to included in the final MSI Installer? - You have mentioned that you actually make use of files copied from a valid installation of DBP - will these need to be included? If so, is that actually allowed by the EULA of DBP?

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 4th Dec 2011 08:32
Quote: "Is this usable with, and will you be able to provide the necessary headers/libs, etc. for FreeBASIC and VB6.0?"


Headers and libraries targeting a specific language are generated automatically by the PureGDK library builder and its language-specific plugins. These plugins parse templates which identify the characteristics of library functions and output the appropriate language-specific code.

To add support for another language, simple modify one of the example plugins to output code formatted for your language. The SDK provides the source code used by PureGDK for the PureBasic and C++ plugins.

As long as either of these languages can perform 'C' function calls, PureGDK should be compatible with it. The only requirement is that someone with knowledge of the language be able to create the appropriate plugin. Then all of the actual wrapper code will be generated for you.

The library builder is also designed to output additional templates which can then be used in turn by the library builder to compile a complete .chm documentation file for the target language.

To answer your question specifically, I cannot provide these headers for you myself because I don't know how to program in either of these languages. But what I have done is provide a framework so that someone who is knowledgeable enough can.

Quote: "Is this compatible with the AppUp dll provided by TGC for DBP apps, or will this need to be looked at in the future? If it is usable now, what additional files are needed to included in the final MSI Installer? - You have mentioned that you actually make use of files copied from a valid installation of DBP - will these need to be included? If so, is that actually allowed by the EULA of DBP?"


I didn't know about this plugin until you mentioned it. I can add support for it in the next beta release since it seems important enough.

The only files you would need to include as part of the actual application would be the compiled executable and the engine dll (gdkengine.dll).

Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 11th Dec 2011 15:39 Edited at: 11th Dec 2011 16:07
PureGDK 2.0 beta 14 is out. This release further improves on the documentation along with some additional updates. This will be the last beta before the release candidate.

Thank you for helping test, DarkGDK testers!

http://forum.thegamecreators.com/?m=forum_view&t=177817&b=38

Please delete any files installed by a previous release of PureGDK 2.0 beta before installing a new one! The default user path is "%appdata%\PureGDK", the default install path is "..Program Files (x86)\PureGDK"

PureBasic users: You "must" uninstall any previous release of PureGDK 1.0 before installing PureGDK 2.0. Older releases are not compatible and you will not be able to compile.

Changelog:

Quote: "PureGDK 2.0 beta 14
-------------------
Bug fixes:
- dbHideMouse now correctly hides the mouse as expected.

Updates:
- Added a new tool "strtable.exe" for extracting string tables from DarkBasic Professional plugins. This tool will work with both licensed and user plugins.
- Added several new pages to the documentation regarding command-line tools, engine extensibility, wrapping plugins, and how to add additional language support.
- The PureGDK SDK is now bundled as part of the installer.
- The builddocs tool and source code is now bundled with the installer but will not receive any attention or documentation until after PureGDK 2.0 is released.
- Minor changes to libbuilder.h and plugin sources which are incompatible with previous releases.

- Added out-of-the-box support for the following plugins:
* Intel AppUp Helper Plugin : http://appdeveloper.intel.com/en-us/node/1097
* DarkBasic Professional Enhancement Pack : http://www.thegamecreators.com/?m=view_product&id=2083
* FPSC ODE Physics : (Built into DBP)"


Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 29th Jan 2012 15:17
PureGDK 2.0 Release Candidate 1 is out! This is it. It's almost done.

The current release is still in release-candidate status. However, the new website provides a download link for the full commercial version (for those accounts who purchase it) which does not expire as the beta releases have.

http://forum.thegamecreators.com/?m=forum_view&t=177817&b=38

Please delete any files installed by a previous release of PureGDK 2.0 beta before installing a new one! The default user path is "%appdata%\PureGDK", the default install path is "..Program Files (x86)\PureGDK"

PureBasic users: You "must" uninstall any previous release of PureGDK 1.0 before installing PureGDK 2.0. Older releases are not compatible and you will not be able to compile.

Changelog:

Quote: "
PureGDK 2.0 Release Candidate 1
-------------------
Bug fixes:
- The gdkc.exe tool will no longer evaluate invalid string table entries which do not have exports.

Updates:
- Added registry keys to HKLM/HKCU which identify the PureGDK install path and version number for third-party developers.
- Added an uninstaller and an entry for it in the add/remove programs dialog in the control panel.
- The installer now expects a serial number to install. This number can be obtained from your user account at http://puregdk.com.
- Reverted renaming of "chroma" back to "color" as the key is actually 1-bit instead of a range of colors.
- Removed the builddocs tool and its source code from the PureGDK SDK for the time being.
- The installer now provides better context menu handling.
- Corrected some erroneous constants which did not match the documentation."


JohnFT
8
Years of Service
User Offline
Joined: 6th Apr 2011
Location:
Posted: 11th Feb 2012 00:59
I'm not able to get the latest release. It says my email address is invalid, even when trying to register! What's up with that? I bought PureGDK through The Game Creators... How can I get the latest release?
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 11th Feb 2012 03:01
Quote: "I'm not able to get the latest release. It says my email address is invalid, even when trying to register! What's up with that? I bought PureGDK through The Game Creators... How can I get the latest release?"


See here:

http://forum.thegamecreators.com/?m=forum_view&t=193819&b=38

You can still download the release candidate for free. Just sign up for an account at PureGDK.com and a link will appear in the products tab on your "My Account" page.

JohnFT
8
Years of Service
User Offline
Joined: 6th Apr 2011
Location:
Posted: 11th Feb 2012 05:33
It tells me my email address is invalid, so I can't register/sign up for an account.
Mistrel
Retired Moderator
13
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 12th Feb 2012 00:51
What is your e-mail address?

JohnFT
8
Years of Service
User Offline
Joined: 6th Apr 2011
Location:
Posted: 12th Feb 2012 03:24
JTrager@Carolina.rr.com

I sent you an email last night.

Login to post a reply

Server time is: 2019-08-21 01:23:10
Your offset time is: 2019-08-21 01:23:10