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 / Please help test PureGDK 2.0 beta with your favorite C++ compiler

Author
Message
Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 21st Dec 2010 10:56 Edited at: 31st Jul 2011 10:12


PureGDK 2.0 comes with support out of the box for the PureBasic language (building on previous PureGDK releases) as well as C++. It can generate headers to work with other languages by writing a simple plugin for the library builder tool.

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

Feature highlights:

All of DBP compressed down into a single DLL
Engine customization; basic 3D in less than 800 KB!
Future support is anticipated for additional programming languages.
Language agnostic interface; all exports are C function calls
Internal multithreading support. Go thread crazy!
Enhanced commands including true support for structured parameters
Potential support for rendering in a web browser
Rewritten, extremely fast 3D math library
New support for programmatically defining constants and structures
Improved documentation for all DarkBasic Professional commands
Superior runtime error support that is thread-aware
Easy to use command line tools for automated compiling
Plugin-based parser. Adding support for your own language is a breeze!

C++ Projects supported by PureGDK out of the box:

Visual Studio 2010
Visual Studio 2008
Visual Studio 2005
Visual Studio .NET 2003
Visual Studio .NET
Visual Studio 6
GNU make/GCC g++
Nmake/VC++

The new engine is extremely lightweight and highly customizable. And best of all, it's fully compatible with DBP's plugins. Now you can enjoy the power of DarkBasic Professional from your favorite language. And if you have multiple favorites-- no problem!

Program using your favorite IDE. Any IDE. Any language!

Screenshot of PureGDK and the PureBasic IDE:



Screenshot of PureGDK and the Qt Creator C++ IDE:



Here is a video of a C++ example project being run and debugged from the Qt Creator IDE. It also demos the flexibility of PureGDK by compiling from a UNIX (cygwin) command line using Make and the GNU g++ compiler. It should work with most any C/C++ compiler.

http://puregdk.com/files/upload/TGCForum/pgdk_cpp_demo_xvid.avi

Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 8th May 2011 09:43
PureGDK beta 4 is out. I would love to have some C++ buffs test it out. PureGDK is no longer just for PureBasic! It will work with any language which supports C libraries.

And it's compatible with DBP plugins too!

WLGfx
17
Years of Service
User Offline
Joined: 1st Nov 2007
Location: NW United Kingdom
Posted: 8th May 2011 14:53
I would give it a trial run but the last time I had a quick glimpse through the details, Pure Basic didn't have a free version (or it just had a trial version). I used to like Blitz Basic because of it's OOP programming but there's no free version of that floating around, so DBP and GDK (with c++) is ideal, much better than being stuck with Allegro.

I'm re-installing my main laptop in the next day or two so if you want to point me in the right directions for the SDK then sure I'll give it a full test. More so because c++ will be the main back bone of it. I was just about to create a dll version of a load of c++ stuff I've done for DBP.



Warning! May contain Nuts!
Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 8th May 2011 16:07 Edited at: 31st Jul 2011 20:19
Quote: "I would give it a trial run but the last time I had a quick glimpse through the details, Pure Basic didn't have a free version (or it just had a trial version)."


You do NOT need PureBasic to use PureGDK! It now uses a language agnostic 'C' interface and will work with any programming language which can load C libraries. It will also work with the free version of DBP (not the trial version!). Just be sure to update to 7.7 so that it will work with Windows 7 SP1.

PureGDK 1.0 was PureBasic-only. PureGDK 2.0 provides PureBasic and C++ headers but the SDK provides the source code for adding support for whatever language you want.

C++ Projects supported by PureGDK out of the box:

Visual Studio 2010
Visual Studio 2008
Visual Studio 2005
Visual Studio .NET 2003
Visual Studio .NET
Visual Studio 6
GNU make/GCC g++
Nmake/VC++

WLGfx
17
Years of Service
User Offline
Joined: 1st Nov 2007
Location: NW United Kingdom
Posted: 8th May 2011 18:42
Thanks for replying Mistrel.

The big difference I've noticed is that Microsoft have VC++ Express (free) and TGC have DBP and GDK for free. Ideal for those hobbyists. If someone finally manages to create something then they can purchase the license when they're ready. That's the position I am in. I cannot purchase anything currently so I'm developing.

I've come a cropper with DBP and read through some of your many replies on the other forums as to the similarities of PureBasic to C. ie the lack of 'else if' etc. All I'm finishing off at the moment is a demo game for the DBP community then I'm straight back into c++. I use VS C++.

The addition of the GUI interface from Purebasic, it's OOP capabilities, etc sound perfect for creating stuff. Most of the stuff I write I give away in the hope it helps others understand or learn from it. Maybe one day I'll do something big.

I don't know what advantages PureGDK would have at the moment for me as I am used to C++ anyway and WinAPI (only recently though). My main aim would generally convert some of the stuff I have already written and hand it over to the PureBasic or GDK community to tear apart and use in there own projects.

If there was a license free version of PureBasic (I ain't got £30), I would have had that a long time ago. It sounds perfect as a programming language compared to learning C++. But my days of C++ and GDK will probably stand for some time yet.

Warning! May contain Nuts!
Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 9th May 2011 01:21
PureGDK is free during beta and is compatible with DBP free as well as any standards-compliant C++ compiler such as GNU g++ or any Visual Studio compiler from VS6 and up.

You're welcome to try it while the beta is going on. And if you make something super cool with it maybe I'll give you a license for free.

Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 9th May 2011 01:22 Edited at: 9th May 2011 01:22
PureGDK 2.0 beta 5 is out now. This release just adds some missing functionality.

WLGfx
17
Years of Service
User Offline
Joined: 1st Nov 2007
Location: NW United Kingdom
Posted: 9th May 2011 03:10
I'll have a blast with it tomorrow and see what comes out of it. By the look at what I've seen it does look interesting. I shall let you know how I get on.

Warning! May contain Nuts!
Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 9th May 2011 03:21
PureGDK 2.0 beta 6 is out. This release adds support for some DBP 7.7 internals to improve sync performance. Thread safety is now disabled by default (it can be reenabled) which boosts performance by 20% on average.

Holy Cow Coder
16
Years of Service
User Offline
Joined: 8th Sep 2008
Location: Somewhere on Mustafar
Posted: 12th May 2011 04:10
I am using the PureGDK with DarkGDK and all of the plug-ins for DBPro, as I have all of the plugins except the Box2D one. I am not sure about how to set this up for use with C++, but I am using
VS 2008 Pro SP 1 and VS 2010 SP 1 compilers to test this. Could someone please aid me in the setup ( I think I have it right, but am not sure...) for C++ use? I just want someone to walk me through the right directories to include, etc.

Thanks in advance.

"The Dark Side Clouds our vision...Only the Dark Lord of the Sith knows of our weakness. If informed the Senate is, multiply our enemies will." Master Yoda, Episode II.
Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 12th May 2011 07:11 Edited at: 12th May 2011 10:18
There is no setup required for C++; everything will compile out of the box. Install it and have a look at the examples in: "Program Files (x86)\PureGDK\examples\projects\c++\src"

When creating a custom project the only thing you will have to be aware of is making sure that the executable is able to find gdkengine.dll. Copying this file to the same directory as the .exe is all you need to do. Otherwise, initPureGDK() accepts a second parameter which is the path (relative or absolute) which tells PureGDK where to search for the engine.

Make sure that you install the DBP 7.7 update before installing PureGDK. It is REQUIRED for beta 6 and up.

Unlike DarkGDK, there is no setup required on the part of the IDE. You can use any compiler and any IDE. I use command line bash scripts with GNU make/g++ to to test the C++ projects.

Quote: "I just want someone to walk me through the right directories to include, etc."


You can examine the example Visual Studio projects for the includes or drop one of the makefiles into a text editor to see them even faster.

Core engine cpp and header files can be found in the "%appdata%\PureGDK\include\c++\core" directory.

C++ cpp files (to be compiled to objects):

Quote: "
pgdk-2ddrawing.cpp
pgdk-3d.cpp
pgdk-animation.cpp
pgdk-bitmap.cpp
pgdk-camera.cpp
pgdk-core.cpp
pgdk-display.cpp
pgdk-image.cpp
pgdk-input.cpp
pgdk-light.cpp
pgdk-math.cpp
pgdk-matrix.cpp
pgdk-memblocks.cpp
pgdk-multiplayer.cpp
pgdk-music.cpp
pgdk-particles.cpp
pgdk-physics.cpp
pgdk-puregdk.cpp
pgdk-sound.cpp
pgdk-sprite.cpp
pgdk-system.cpp
pgdk-terrain.cpp
pgdk-text.cpp"


There are individual header files but you can simply include "puregdk.h" which will include them all.

Header and cpp files for plugins that are supported out-of-the-box can be found in the "%appdata%\PureGDK\include\c++\plugins" directory. Like puregdk.h, the "puregdk-plugins.h" will include all of the headers automatically.

Just because you don't see a cpp and header file for your favorite plugin doesn't mean that it's not supported. These files are generated during installation using the tools found in the PureGDK program files directory. Simply add your own template for the target plugin, add an entry to the gdkc "libraries" file, click on the bat file to build the header files and recompile the engine, and you're good to go!

Holy Cow Coder
16
Years of Service
User Offline
Joined: 8th Sep 2008
Location: Somewhere on Mustafar
Posted: 12th May 2011 19:28
Thanks for that, Mistrel, that was most helpful.

"The Dark Side Clouds our vision...Only the Dark Lord of the Sith knows of our weakness. If informed the Senate is, multiply our enemies will." Master Yoda, Episode II.
Parry
AGK Developer
14
Years of Service
User Offline
Joined: 16th Dec 2009
Location: Swampstone
Posted: 28th May 2011 05:19
Are the commands the same as darkgdk? I was wondering how difficult it would be to move my darkgdk project over to puregdk.
Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 28th May 2011 23:18 Edited at: 29th May 2011 03:11
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 the next beta (beta 8!), which brings support for automatic ID allocation:

Result = 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:

dbLoadSound(string fileName, int soundID = -1)

And for others which use function polymorphism, for example:

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:

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 this command is:
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():

RUNTIMEERROR_B3DMATRIXNUMBERILLEGAL
RUNTIMEERROR_B3DMATRIXALREADYEXISTS
RUNTIMEERROR_B3DMATRIXSEGMENTWRONG
RUNTIMEERROR_B3DMATRIXDIMENSIONWRONG
RUNTIMEERROR_B3DMATRIXTOOLARGE

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

It's also important to understand that PureGDK, unlike DarkGDK, uses a customizable DLL engine based on the DarkBasic Professional plugin system. Everything is dynamically linked NOT statically linked by DarkGDK. See the example projects provided by the installer as well as here for additional information:

http://forum.thegamecreators.com/?m=forum_view&t=179245&b=22&msg=2200672#m2200672

The advantage to this is that it is compatible with ALL standards compliant C++ compilers. You can use any version of Visual Studio, g++, Borland, Watcom, Intel, Comeau, etc.

You can even use Visual C++ 6 if you really want to-- example projects are provided!

One major difference you must be aware of is that PureGDK does NOT use "DarkGDK()/LoopGDK()". It can use whatever entry point you want, be it main(), WinMain(), _tWinMain(), etc:



Additionally, unlike DBP and DarkGDK, in PureGDK the renderable area is separate from the actual window. As you can see from this example code, dbOpenScreen accepts a target window handle "hWnd" which tells it where to render the output. 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.

There are a lot of changes compared to DBP/DarkGDK. It is not targeted as being 1:1 compatible with DarkGDK and there will be growing pains while you encounter the differences. However, the idea behind PureGDK is to bring evolution to the engine to streamline it and in the end make it easier to use as well as being portable to other languages.

Don't forget! PureGDK is also compatible with all DarkBasic Professional plugins and includes many headers to provide support out-of-the-box. An SDK is also provided which allows anyone to add support for additional languages!!

PureGDK is designed such that whenever you decide to move to a different language, you can take the engine with you. You could say that compared to DarkGDK, that's even revolutionary!

At some point I hope to even provide a way of swapping the engine out for OpenGL to make the PureGDK cross-platform as well.

Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 27th Jul 2011 14:33 Edited at: 27th Jul 2011 14:34
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

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)"


Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 31st Jul 2011 09:42 Edited at: 31st Jul 2011 09:43
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

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 and 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."


Dar13
16
Years of Service
User Offline
Joined: 12th May 2008
Location: Microsoft VisualStudio 2010 Professional
Posted: 1st Aug 2011 22:52
Since I'm looking for a somewhat-easy graphics engine for C++(and don't want to go through the set-up nightmare that is DarkGDK), I'll give this a try.

Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 1st Aug 2011 23:51 Edited at: 1st Aug 2011 23:54
Setting up PureGDK with any IDE is relatively straightforward; For example, I got it running in Dev-C++ after fiddling with it for about a minute yesterday. And I'd never done that before.

The only part that might be confusing is that there is nothing in the documentation which tells you where these files are. And taking apart the examples might not be obvious.

But have no fear! I'm working on adding examples for this to the documenation -right now-. So if you find yourself confused, don't worry. Help is on the way.

Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 5th Aug 2011 04:03 Edited at: 5th Aug 2011 04:09
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 few minor bug fixes.

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

ChangeLog:

Quote: "
PureGDK 2.0 beta 9
------------------
Bug fixes:
* Fixed a bug where plugin headers were not evaluating their include path correctly.
* Fixed creation and load functions which were failing to return the IDs passed to them.
* Fixed creation and load functions which were failing to return a unique ID when passed -1 as expected.

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."


Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 7th Aug 2011 23:01 Edited at: 7th Aug 2011 23:19
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

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 doubles and 64-bit integers weren't being resolved correctly.
* 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.""


Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 9th Aug 2011 19:59
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"

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"


Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 10th Aug 2011 15:02
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"

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"


Mistrel
Retired Moderator
19
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 4th Dec 2011 02:07
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"


Login to post a reply

Server time is: 2024-11-19 06:32:20
Your offset time is: 2024-11-19 06:32:20