Why only DarkBasic commands? There are many game programming and scripting languages and frameworks with very useful commands.
These are not DB commands but in my opinion would be nice to be included in AGK:
RotateTowardPosition(id,x,y,speed) //rotate sprite toward the specified position at the specified speed
RotateAroundPosition(id,x,y,speed) //rotate sprite around the specified position at the specified speed
MoveTowardPosition(id,x,y,speed) //move sprite toward the specified position at specified speed
MoveTowardAngle(id,angle,speed) //move sprite toward angle at specified speed
SetPosittionAround(id,x,y,angle,distance) // set sprite position around a specific point and specific distance facing the specified angle
WriteValueIntoFile(value,group,filename) //write value as <group value> in to file
ReadValueFromFile(group,value,filename) //return value from <group value>
CreateGroup(id) //create an array and assign an ID
AddSpriteToGroup(sprID,groupID) //add sprite to group
RemoveSpriteFromGroup(sprID, groupID) //remove sprite from group
GetSpriteGroup(sprID) //return id of group the sprite is the member of
IsSpriteMemberOfGroup(sprID, groupID) //test if sprite is member of the group
For Each(groupID) //loop through each member of a group and execute something similar to a For Next loop
KillSprite(id) //remain in memory and remian member of a group but no longer rendered on the screen and agk ignore it, it position, rotation, physics no longer calculated
GetKilledSprite() //return id of a sprite currently killed
ReviveSprite() //similar to GetKilledSprite but it is not only return id of sprite currently killed but alos revive the first one found and also return it id so we can set it position, make it member of a group if not already...etc
Last 3 command would be useful to create a pool of sprites that we can recycle instead of creating and deleting constantly new sprites
SetLinkBetweenSprite(id1,id2) //create a logical connection between two specified sprites
GetAllSpritesLinkedTo(id) //return an array of sprites linked to the one specified
UnlinkAllSpritesFrom(id) //drop all links to specified sprite
UnlinkTwoSprites(id1,id2) //drop link between two specified sprites
SetSpriteDraggable(id) //sprite can be dragged
Finally, the feature to be able to use variable names as strings when assigning values to variables
a as integer = 1
b as string = "a"
c as integer = $(b)
c is going to return 1
I know most of the things I have mentioned can be done, I don't recommend because it can not be done but simply because easy to use commands makes programming fun. I take it TGC have no idea what else to add to AppGameKit, so I figured I try to come up with some new commands. Hope find it useful.
Otherwise, what I miss the most from AppGameKit are the advanced animation commands to be able to blend animations for different body parts. Built-in effect commands to easily generate clouds, weather effects, day and night cycles, water, reflection, visual shader editor, this sort of things. What I liked the most about DarkBasic is that it was not simply an easy programming language including 3D, input, networking, audio but it did offer complete solutions to certain game logic and this is what I miss the most from AGK. Can be done, but not as fun as DarkBasic was or other game frameworks and languages today.
Be creative, imagine making a certain game, think what kind of functions, features would be required and if it can be re-used for multiple purposes in different games, add it to AppGameKit and make it an unique language and more complete.