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.

AppGameKit Chat / [STICKY] AppGameKit Vs DarkBasic - Feedback Wanted!

Author
Message
RickV
TGC Development Director
18
Years of Service
User Offline
Joined: 27th Apr 2000
Location: United Kingdom
Posted: 15th Jan 2018 14:00
Hi all,

We're keen to hear what you think about the commands in AppGameKit vs the commands in DarkBasic. Are there any in DarkBasic that you feel should be included in AppGameKit?

Both engines deal with some things differently and that's why there are differences (eg 3D bone animation, loading of 3D objects).

What have we missed? What will make AppGameKit better if we added a missing DB command?

Please vent below!

Development Director
TGC Team
Scraggle
VIP Member
14
Years of Service
User Offline
Joined: 10th Jul 2003
Location: Yorkshire
Posted: 15th Jan 2018 14:05 Edited at: 15th Jan 2018 17:51
Off the top of my head - and some already mentioned in the Feature request thread:
DBO Support! - I've got hundreds of them and it's your own format! Please support DBO import in AGK

FadeObject() - Great for increasing/Decreasing the apparent brightness of an object.
SetSphereMappingOn() - It was great for creating very metallic looking objects (amongst other things)
SetBumpMapingOn() - Self explanatory - We need some built in shaders in AGK
SetObjectAmbience() - I don't remember how this was different to FadeObject() but I recently noticed its absence while looking for a way to increase the apparent brightness of an object
SetObjectWireframe()
GetObjectScale()
AutocamOn
CumQuaT
AGK Master
8
Years of Service
User Offline
Joined: 28th Apr 2010
Location: Brisbane, Australia
Posted: 15th Jan 2018 14:09
First off, let me say, I still have an active DBpro project and working on it is PAINFUL now that I also make AppGameKit games. I love AppGameKit and my future games will all be in AppGameKit (until you guys release the next best thing).

That being said, loading of animated 3D objects in AppGameKit is fairly painful compared to what it was in DBpro. I know that's not command-based specifically, but more system-based. But really it's been the biggest thing making me avoid using 3D in my game projects. Objects would get brought in with their pivot points all over the place, animations wouldn't work at all, or be warped beyond repair... It was a mess. DBpro things just kinda worked.
Help out a fellow dev! Download and rate my games! They're free!

Wizzed Off! - (Android) (iOS)
God of Thunder - (Android) (iOS)
Extreme Lawn Mowing - (Android) (iOS)
Drunken Heroes - (Android) (iOS)

And you can get Fluffy Knuckleduster merchandise at our new store!
BatVink
Moderator
15
Years of Service
User Offline
Joined: 4th Apr 2003
Location: Gods own County, UK
Posted: 15th Jan 2018 14:14
Accessing the screen backbuffer directly.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Quidquid latine dictum sit, altum sonatur
TutCity is being rebuilt
SpecTre
Developer
15
Years of Service
User Offline
Joined: 24th Feb 2003
Location: UK
Posted: 15th Jan 2018 17:21
+1 backbuffer directly
Lance
14
Years of Service
User Offline
Joined: 22nd Jul 2003
Location: Third planet from Sun
Posted: 15th Jan 2018 18:53 Edited at: 15th Jan 2018 18:57
I just looked thru all the DBP commands . For me it's Camera commands , memblocks and array's . Wish we had better control over the windows 'title' bar so we could add a menu system like the add on Blue Gui (?) .

Lance
Ron Erickson
Moderator
15
Years of Service
User Offline
Joined: 6th Dec 2002
Location: Pittsburgh, PA, USA
Posted: 15th Jan 2018 20:35
Well, of course.... the addition of EZrotate and Enhanced Animations!
a.k.a WOLF!
Scraggle
VIP Member
14
Years of Service
User Offline
Joined: 10th Jul 2003
Location: Yorkshire
Posted: 15th Jan 2018 21:55
Quote: "the addition of EZrotate and Enhanced Animations"

Obviously!
I didn't mention those because they just go without saying
puzzler2018
User Offline
Joined: 8th Oct 2017
Location:
Posted: 15th Jan 2018 21:58
Liquid motion
Zigi
8
Years of Service
User Offline
Joined: 5th Jul 2009
Location:
Posted: 15th Jan 2018 23:10 Edited at: 15th Jan 2018 23:17
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.
Jeff Miller
13
Years of Service
User Offline
Joined: 22nd Mar 2005
Location: New Jersey, USA
Posted: 16th Jan 2018 00:56 Edited at: 16th Jan 2018 02:12
Ron made a version of EZRotate for AppGameKit, but it only works on Windows so I don't think he or TGC is going to sell it.

I miss the type of LoadArray that DBPro had, not loading a JSON file but fast load of whole arrays in binary files created with Save Array. No line-by-line reading.
Multiple cameras.
Spot Lights
Set Object Normals
Wrap Value
AutoCam
Vertexdata commands
Listing commands. One was usefull in obtaining a list of all resolutions supported by the user's card, another listed all files in a directory.
I really miss using the cloth pack add-on. I think Ravey developed it.
Backdrop color and image commands.
Hyperbolic functions (good for map projections). SinH, cosH, tanH They incorrectly assumed the argument was an angle expressed in degrees, but they worked OK if you multiplied the argument by PI/180.
3D sound commands.
ability to play midi files

And also something like ScanCode() where I can get the scancode of the key being pressed. I realize that the significance of a particular scancode may vary across platforms, but that should be my problem to resolve, not a reason to not include it.
xCept
15
Years of Service
User Offline
Joined: 15th Dec 2002
Location:
Posted: 16th Jan 2018 04:24
Quote: "Accessing the screen backbuffer directly."


+1. This is a huge one for me. While AppGameKit supports memblocks it cannot compare in speed to anything achievable in DBPro with direct backbuffer access. I have a few DBP projects that could be redone in AppGameKit if this existed. Related commands:

Lock Pixels
Get Pixels Pointer
Copy Memory
Unlock Pixels
Get Backbuffer Ptr
Get Backbuffer Width
Get Backbuffer Height
Get Backbuffer Depth
Get Backbuffer Pitch

Also a few 3D commands to simplify camera placement:

Set Camera To Follow
Set Camera To Object Orientation


Scraggle
VIP Member
14
Years of Service
User Offline
Joined: 10th Jul 2003
Location: Yorkshire
Posted: 16th Jan 2018 07:39
Quote: "And also something like ScanCode() where I can get the scancode of the key being pressed"

ScanCode() = GetRawLastKey()
If you really must have ScanCode the use:
BatVink
Moderator
15
Years of Service
User Offline
Joined: 4th Apr 2003
Location: Gods own County, UK
Posted: 16th Jan 2018 09:13

Quote: "I miss the type of LoadArray that DBPro had, not loading a JSON file but fast load of whole arrays in binary files created with Save Array. No line-by-line reading."


Array.save, Array.load

Quote: "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"


These would be available if we had ezRotate

Quote: "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"


Can you use SetSpriteVisible() for your needs?

Quote: "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"


You can use 2D Physics groups to achieve this (SetSpriteCategoryBit). You don't need to be using physics, just use the groups.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Quidquid latine dictum sit, altum sonatur
TutCity is being rebuilt
Jeff Miller
13
Years of Service
User Offline
Joined: 22nd Mar 2005
Location: New Jersey, USA
Posted: 16th Jan 2018 10:14
GetRawLastKey only does what it's name implies. If a key was pressed this command seems to keep reporting it as if the typist is continuously repeating it. Scancode() would report 0 to accurately show that no key is being pressed, whether or not a key was previously being pressed.
Scraggle
VIP Member
14
Years of Service
User Offline
Joined: 10th Jul 2003
Location: Yorkshire
Posted: 16th Jan 2018 12:15 Edited at: 16th Jan 2018 16:31

You're welcome

And for total giggles:
Jambo B
8
Years of Service
User Offline
Joined: 17th Sep 2009
Location: The Pit
Posted: 16th Jan 2018 17:16
+1 for the ezRotate commands
Markus
Valued Member
14
Years of Service
User Offline
Joined: 10th Apr 2004
Location: Germany
Posted: 16th Jan 2018 21:22
better a online survey for all thausends DarkBasic and BlitzBasic3D Commands where we can set thumbs up/down, star rating.
AGK (Steam) V2017.12.12 : Windows 10 Pro 64 Bit : AMD (17.12.1) Radeon R7 265 : Mac mini OS High Sierra (10.13)
Zigi
8
Years of Service
User Offline
Joined: 5th Jul 2009
Location:
Posted: 17th Jan 2018 09:22 Edited at: 17th Jan 2018 10:00
Quote: "Can you use SetSpriteVisible() for your needs?"

I don't think so, according to the documentation even if you set the sprite not visible it still update it animation, physics and AppGameKit probably continue calculating it position, rotation this command takes the sprite out of rendering only.
The point of my suggestion is that, once you "kill" a sprite, the sprite remain in memory but 'AGK' stop updating it and sort of ignore it to save resources.... Some engines offer this functionality to "improve performance" saying constantly creating and deleting sprites can be in some cases heavy task especially if the sprite using physics that need to be initialized each time a new sprite is created. What the engine offer and recommend you to do is create a pool of objects and only "kill" the sprite instead of deleting and "revive" the sprite when you need one again, this way things like physics and other properties don't need to be initialized again for example. But I guess it is also depends on how the actual engine works internally. Not sure if it makes any sense with AppGameKit though.

Quote: "You can use 2D Physics groups"

I thought this command is for collision only to set what is colliding with what. The point of my suggestion is basically to offer a simplified way of using arrays and For loops. For example if in my game I want different sprite to be the enemies I could create an enemy group, add all my enemy sprites to the group and so all the instances of this sprite will be also the member of the group automatically and if I want to apply a rule I can just say

Similar to using arrays and a For or While loop but it would be a bit more straight forward especially for beginners...

Maybe it is makes no sense for some of you but I have complete beginners in mind. Now that AppGameKit have a visual editor and in case it is going to improve to offer more functionality, beginners know nothing about coding more likely going to pick up AGK.
I'm suggesting not only groups but in general to offer a built in solution in AppGameKit to make certain game logic and mechanics easily so complete beginners come to AppGameKit because of the visual editor don't get disappointed. AppGameKit is easy but for someone coming from GMS or Construct or Unreal for example, it is still a completely different way of thinking.
For that reason I would also love to see things like AI commands to create pathfinding for example, to listen to events, to trigger events to send "messages" to sprites and groups to replace a bunch of variables, arrays and if statements for example if collision happened, send message "booom" to a group and say


Or Shout("booom") in which case every single sprite and group "listening" going to receive the message....
Or even create cameras that already have built in features for first person or third person control.
AGK is great to make things from scratch, my suggestion is let add a game engine layer now to make it even more simple (and unique way) to do certain games in AGK.
Blendman
4
Years of Service
User Offline
Joined: 17th Feb 2014
Location: Arkeos
Posted: 17th Jan 2018 11:05
@Zigi :
SetSpriteVisible() And SetSpriteActive() perhaps ?


Quote: "ForEachMember(groupID)
//Do something
End"


For the moment, You could probably do that :



Quote: "better a online survey for all thausends DarkBasic Commands where we can set thumbs up/down, star rating."

+1

And other commands / features .
AGK2 tier1 - http://www.dracaena-studio.com
Zigi
8
Years of Service
User Offline
Joined: 5th Jul 2009
Location:
Posted: 17th Jan 2018 12:55 Edited at: 17th Jan 2018 13:01
Quote: "SetSpriteVisible() And SetSpriteActive() perhaps ?"

Yeah, that is actually sounds like it but what if I'm looping through an array and do my things to move, scale and rotate staff?
I'm not an active AppGameKit user or programmer in any ways I used it when it released for a few months and now I'm only follow it development so apology if it obvious.
Point would be that by "killing" the sprite AppGameKit going to skip it whatever I'm trying to do with it don't waste any resource on it. If SetSpriteActive() does the same, that's cool

Quote: "For the moment, You could probably do that : "

Thank you for the code I'm appreciate it but again I'm not suggesting the command(s) because it is something can not be done or I need personally but only to make it even easier for people know absolutely nothing about coding.
Of course everyone is different but when I tried to code for the very first time in my life 10 years ago it took me literally a whole year to understand how to use arrays and loops.
I just didn't get it and for that reason coding didn't become my favourite way of developing anything not even with AGK. I understand it now of course and I did make some small games and programs in AppGameKit and with JavaScript game engines mostly but it is not something I enjoy. I prefer to drop a sprite in to a visual editor and say x += 1 to make it move. Job done.

So all I recommend with the Visual Editor and GameGuru Loader in mind to add more functionality in less code to AppGameKit so people like me (limited resources in brain and talent) can get started with coding the "fun way" using simple scripts and commands and eventually work their way down to more advanced level with Tier1 then Tier2 if they want to.
Actually what I'm saying I guess is add a Tier0 language to AppGameKit which would be eventually a game engine with easy to use and short commands to achieve certain things like I mentioned above. It could be a DLC or part of the Visual Editor and GGLoader I guess.
Just imagine, if you would load a GG level in to AppGameKit you would get not only the level but new commands to customize gameplay and the same for the Visual Editor. There are many ways to do it, but not sure if TGC interested, so I don't insist any more on this I'm not even an AppGameKit user after all and was not a big DBP user either XD
Mobiius
Valued Member
15
Years of Service
User Offline
Joined: 27th Feb 2003
Location: The Cold North
Posted: 17th Jan 2018 13:16
@Zigi: I think you're confusing Game Engine (of which AppGameKit is not) and programming language. (Of which AppGameKit is)
All of your requests can be programmed yourself, therefore are not required commands. I'd therefore rather thay add actual functionality, or things we can't do ourselves in tier 1 code, rather than simply wrapping code we can write ourselves in tier 1.
Ortu
DBPro Master
10
Years of Service
User Offline
Joined: 21st Nov 2007
Location: Austin, TX
Posted: 17th Jan 2018 19:17 Edited at: 17th Jan 2018 19:50
Call Function Name(function$, arguments$)

(OK, this was from the Matrix1 .dlls, but those basically became part of the core language anyway :p )

exclude object on [objNum] (more than just hiding it, it removes it from all processing)
exclude object off [objNum]

wrapvalue(myVal#) but let's improve on it to wrap between arbitrary values: wrapvalue(myVal#, minVal#, maxVal#)

Does AppGameKit have pick object / pick screen ?

add object LOD / automatic LOD swapping

object frame [objNum] -> GetObjectAnimationFrame(objNum) :: AppGameKit has SetObjectAnimationFrame but not GetObjectAnimationFrame, it has GetObjectAnimationTime but I'm not certain that this does the same thing. I just want a simple return the current frame number.
http://games.joshkirklin.com/sulium

A single player RPG featuring a branching, player driven storyline of meaningful choices and multiple endings alongside challenging active combat and intelligent AI.
hakimfullmetal
3
Years of Service
User Offline
Joined: 17th Feb 2015
Location:
Posted: 18th Jan 2018 00:12 Edited at: 18th Jan 2018 00:14
Ability to calll DLLs? Those were the bombs

And Dbpro 3rd party plugins were better. I'm no pro but probably let plugin maker have more access to things

And file manipulation read/wrie thingy. Can we make it direct like DbPro? Now it reads media file and explore it on its own. Not sure if it was fixed because I havent code in a long time
SpecTre
Developer
15
Years of Service
User Offline
Joined: 24th Feb 2003
Location: UK
Posted: 18th Jan 2018 20:55 Edited at: 18th Jan 2018 20:57
Quote: "
Lock Pixels
Get Pixels Pointer
Copy Memory
Unlock Pixels
Get Backbuffer Ptr
Get Backbuffer Width
Get Backbuffer Height
Get Backbuffer Depth
Get Backbuffer Pitch
"


All good with the Back buffer control

and although DB Pro didn't have it, a built in flood fill command as even with lock pixels it wasn't always fast to do and can't imagine it would be super fast on mobile.
Jeff Miller
13
Years of Service
User Offline
Joined: 22nd Mar 2005
Location: New Jersey, USA
Posted: 18th Jan 2018 21:25
Batvink: Array.save saves an integer array as a text file, not a binary file, since I can open it with Notepad and make sense of it. Also, it looks suspiciously like a JSON text file. Is there an existing way to save and load a numeric array as a binary file?

Scraggle: thank you for the extremely compact code equivalent for Scancode!
BatVink
Moderator
15
Years of Service
User Offline
Joined: 4th Apr 2003
Location: Gods own County, UK
Posted: 19th Jan 2018 07:07
Quote: "Array.save saves an integer array as a text file, not a binary file, since I can open it with Notepad and make sense of it. Also, it looks suspiciously like a JSON text file"

Yes, it parses to and from JSON, but saves from and loads into an array. It was introduced with the JSON commands, I imagine Paul just added a couple more useful commands now there is a save format.

I presume you want binary to obscure the contents, or make it difficult to edit? I use a hash in my files to detect any unauthorised changes to the contents.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Quidquid latine dictum sit, altum sonatur
TutCity is being rebuilt
Jeff Miller
13
Years of Service
User Offline
Joined: 22nd Mar 2005
Location: New Jersey, USA
Posted: 19th Jan 2018 12:44
Batvink - I'm not concerned with readability; I can edit the data in the source I use to assemble it. This may sound very strange, but I "program" a DBP or AppGameKit project in MS Access for the most part (including logic as well as data for tons of object positions, angles, etc.) This keeps the AppGameKit program small which I need to do because I'm old and find keeping track of large main programs increasingly difficult. I can only get Access to export numeric files as text. Cattlerustler's DLL for DBP also read Access numeric tables into text as I recall. So about 10 years ago I made a "side" program in DBP that read the text files representing numeric arrays and spit them out as binary with the DBP SaveArray command, for DBP to later read into the main program with the LoadArray command. My recollection is that the files were smaller and loaded much faster than the text files.
prashant121
User Offline
Joined: 15th Jan 2018
Location:
Posted: 19th Jan 2018 13:21
things we can't do ourselves in tier 1 code, rather than simply wrapping code we can write ourselves in tier 1.
Scraggle
VIP Member
14
Years of Service
User Offline
Joined: 10th Jul 2003
Location: Yorkshire
Posted: 20th Jan 2018 10:12 Edited at: 20th Jan 2018 10:21

I'm not really sure if this belongs here or the Feature Request thread - both probably - but it's here now.

I have written a Windows-style GUI system for tool programming within akg and it looks and works great ... until I tried it on a different PC with a different resolution!
I thought I'd done everything I could to ensure it would work regardless of display but I was wrong.

So, long story short, it would be great if we could set the display much like we do in DBP. If you set the window size to be 1024x768 then you can absolutely guarantee that you will get a window of that size with the resolution of the current display and with no scaling.
Obviously, a set up like that would only be useful - and indeed usable - on a non-mobile platform but why not? Why not have a command that will create a fixed, non-scaling window even though calling that command guarantees that the resulting app can only be run on desktop platforms? Obviously it would also need to come with a fullscreen mode and commands to determine the current width/height that takes into account border, title bars etc.

I know agk wasn't written with the idea of it being used for tool creation but that doesn't mean that it can't be and being able to create a fixed resolution display is pretty much essential for that.
Meanwhile - I'm about to re-install DBP just so that I can continue developing tools for agk - not an ideal solution but it's all I've got.
hoyoyo80
2
Years of Service
User Offline
Joined: 11th May 2016
Location:
Posted: 20th Jan 2018 23:50
Someone mention blitz3d and i really miss some of blitz3d command like:

1.For Each Type for iteration through type

2.Easier non physic collision detection(old post and new post imethod is doable but i wish it was easier)
c0d3r9
User Offline
Joined: 2nd Oct 2017
Location:
Posted: 21st Jan 2018 22:45 Edited at: 22nd Jan 2018 00:03
Maybe not especially from db.....
-real parenting between objects(similar to blitz)
-linked lists
-foreach in arrays/lists
-per pixel commands ( i would code retro games like lemmings/worms )
xCept
15
Years of Service
User Offline
Joined: 15th Dec 2002
Location:
Posted: 21st Jan 2018 23:45
Quote: "So, long story short, it would be great if we could set the display much like we do in DBP. If you set the window size to be 1024x768 then you can absolutely guarantee that you will get a window of that size with the resolution of the current display and with no scaling."


I'd be interested in learning more about what issues you encountered. The SetWindowSize() function has an extra optional parameter, allowOverSized. If true then it will ensure the window resolution is indeed 1024x768 (or whatever dimension specified) even if the desktop resolution would otherwise cause it to scale. With that and setting the virtual resolution to be GetDeviceWidth() and GetDeviceHeight() it should be consistent.
David Gervais
Moderator
12
Years of Service
User Offline
Joined: 28th Sep 2005
Location: Montreal, Canada
Posted: 22nd Jan 2018 10:45 Edited at: 22nd Jan 2018 10:50
I miss the granddaddy of all 2D commands.. the DOT x,y, Color Value and the Point x,y. I'm not sure if AppGameKit would need the Lock Pixel command but I'll mention it anyways. Also, I'd make a slight modification to the DOT command, Make it DOT x,y,RGBA so that we also gain control of the alpha. Cheers!
Ortu
DBPro Master
10
Years of Service
User Offline
Joined: 21st Nov 2007
Location: Austin, TX
Posted: 24th Jan 2018 17:42 Edited at: 24th Jan 2018 17:43
how about CL$

this returned a string that was was passed to the .exe as a command line argument:

c: >myapp.exe "log=1 win=1 sw=1024 sh=768"

c: >myapp.exe "someFileToWorkOn.ext"
http://games.joshkirklin.com/sulium

A single player RPG featuring a branching, player driven storyline of meaningful choices and multiple endings alongside challenging active combat and intelligent AI.
EdzUp
15
Years of Service
User Offline
Joined: 8th Sep 2002
Location: Citadel Cyberspace
Posted: 24th Jan 2018 19:54
For me its:
1) Compiled code not interpreted this would alone give us a huge speed boost.

2) better drawing commands as has been said Dot or point would be a start.

3) Why not bring them over or wrap up DBClassic and DBPro comand sets so we can import all the Darkbasic stuff.
-EdzUp
BatVink
Moderator
15
Years of Service
User Offline
Joined: 4th Apr 2003
Location: Gods own County, UK
Posted: 25th Jan 2018 09:02
Quote: "how about CL$"


+1

Quote: "Compiled code not interpreted this would alone give us a huge speed boost."


I doubt that is possible for a "Code Once, Deploy Everywhere" language.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Quidquid latine dictum sit, altum sonatur
TutCity is being rebuilt
Mobiius
Valued Member
15
Years of Service
User Offline
Joined: 27th Feb 2003
Location: The Cold North
Posted: 25th Jan 2018 09:08
Quote: "Why not bring them over or wrap up DBClassic and DBPro comand sets so we can import all the Darkbasic stuff."

Dark basic is DirectX, AppGameKit is OpenGL. You can't just 'Bring them over'
RickV
TGC Development Director
18
Years of Service
User Offline
Joined: 27th Apr 2000
Location: United Kingdom
Posted: 25th Jan 2018 13:01
Hi all,

Thanks for all your feedback! I am in the process of summarising it .

I'd like a bit more detail on these points please:

@Lance what specifically about camera commands , memblocks and array's?

@Jeff Miller which image commands?

Cheers,

Rick
Development Director
TGC Team
CJB
Valued Member
14
Years of Service
User Offline
Joined: 10th Feb 2004
Location: Essex, UK
Posted: 25th Jan 2018 14:25
I liked the way you could create a "headerless" app with db-pro (i.e. no application window). Great for server-side applications, batch-processing jobs, custom file management tools etc. In fact, I still use it for that reason on occasion. I also liked the old db-c blur image command... it was slow as hell, but was definitely handy if used correctly.


EdzUp
15
Years of Service
User Offline
Joined: 8th Sep 2002
Location: Citadel Cyberspace
Posted: 25th Jan 2018 17:34 Edited at: 25th Jan 2018 17:37
Quote: "Dark basic is DirectX, AppGameKit is OpenGL. You can't just 'Bring them over'"


I'm not saying make it using DirectX however you could make a similar system using OpenGL. For all intents and purposes it would give a similar output BUT run on AppGameKit
-EdzUp
Lance
14
Years of Service
User Offline
Joined: 22nd Jul 2003
Location: Third planet from Sun
Posted: 25th Jan 2018 19:27
Array and memblock commands :

I guess these would help beginners getting started with AppGameKit more than others ..

Make Memblock from Array
Make Array from Memblock
Array delete Element
Array Insert at Element

Camera Control :

Set Camera to follow

Control Camera using Arrow Keys
'Example from DBP'
" if inkey$()="z" then set current camera 0 : c=0

if inkey$()="x" then set current camera 1 : c=1

control camera using arrowkeys c,1,1 "

Lance
Jeff Miller
13
Years of Service
User Offline
Joined: 22nd Mar 2005
Location: New Jersey, USA
Posted: 25th Jan 2018 22:53 Edited at: 25th Jan 2018 23:06
Rick: I meant two commands relating to the Backdrop. The Backdrop was a default color (different for each camera). But you could Set the Backdrop color to something else. You could also set a Backdrop image. That command was scrapped for a while, but then resurrected when FPSC was written in DBP.

Edit: You could also Scroll the Backdrop image. I think that have been one of the resurrected commands when FPSC came out.

Ortu: I think you are right about the clearcolor.
Ortu
DBPro Master
10
Years of Service
User Offline
Joined: 21st Nov 2007
Location: Austin, TX
Posted: 25th Jan 2018 23:01
Doesn't setClearColor set the backdrop color?
http://games.joshkirklin.com/sulium

A single player RPG featuring a branching, player driven storyline of meaningful choices and multiple endings alongside challenging active combat and intelligent AI.
CJB
Valued Member
14
Years of Service
User Offline
Joined: 10th Feb 2004
Location: Essex, UK
Posted: 26th Jan 2018 07:48
You can set a sprite as a backdrop image and scroll it using UV offsets in AGK.

@Lance: AppGameKit has a set of new array functionality including the ability to insert and delete elements (see: https://www.appgamekit.com/documentation/guides/12_array_changes.htm). You can even save and load arrays as JSON
Lance
14
Years of Service
User Offline
Joined: 22nd Jul 2003
Location: Third planet from Sun
Posted: 26th Jan 2018 14:41
CjB :

I saw those commands and JSON .

I think JSON looks too complicated for 'beginners' .

This is the example from AppGameKit for Insert .
#insert "myUtilityFunctions.agc"
#insert "player.agc"

For a beginner this command (Insert) doesn't say anything about using it in an array unless you look at https://www.appgamekit.com/documentation/guides/12_array_changes.htm which isn't mentioned or referenced in the AppGameKit file folder.
If you look at the Command list or References you won't find anything about 'remove' . Remove is shown in the examples on arrays , but if you start a project and use the commands Insert or Remove and use Help you won't find anything about them .
To me Array Delete Element or Array Insert Element is more informative to what it does than just the words insert or remove (insert/remove what ?) . There should have been a separate Command/Reference folder for Array's just as there is one for MemBlocks ..

Lance





BatVink
Moderator
15
Years of Service
User Offline
Joined: 4th Apr 2003
Location: Gods own County, UK
Posted: 26th Jan 2018 15:54
Quote: "This is the example from AppGameKit for Insert .
#insert "myUtilityFunctions.agc"
#insert "player.agc""


This is not the array insert command. But I agree, the information on Arrays should be easier to find.

Quote: "To me Array Delete Element or Array Insert Element is more informative"

This is DB syntax, we have a different syntax in AGK. It's actually much clearer because it resembles other modern languages (e.g the .NET and Java based langauges).

Quote: "I think JSON looks too complicated for 'beginners' . "

You don't need to know anything about JSON, this is just the format in which it is saved. It unpacks it for you into a standard Array.
But learning JSON is a good step to take, it is found in many solutions now.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Quidquid latine dictum sit, altum sonatur
TutCity is being rebuilt
DMJ
6
Years of Service
User Offline
Joined: 6th Sep 2011
Location: Australia
Posted: 27th Jan 2018 10:11
Load multitextured 3D objects! Please! Please! It would be nice to load a .x even and not have to texture it myself.
Scraggle
VIP Member
14
Years of Service
User Offline
Joined: 10th Jul 2003
Location: Yorkshire
Posted: 27th Jan 2018 15:39
While adding DBO support - you know you want to
Could you also add DDS support? Many FPSC object files use DDS textures
hoyoyo80
2
Years of Service
User Offline
Joined: 11th May 2016
Location:
Posted: 27th Jan 2018 21:51
Quote: "Load multitextured 3D objects! Please! Please! It would be nice to load a .x even and not have to texture it myself"


Yes...manual texture everything is kind of tedious.

Login to post a reply

Server time is: 2018-06-24 07:53:03
Your offset time is: 2018-06-24 07:53:03