Posted: 1st Nov 2014 17:56
I like to see a command like getStringToken that works with text objects. So that you can get what word or characters the pointer/finger hits in a text object.
Posted: 2nd Nov 2014 2:39
@Rich - no word on it yet, but I imagine it is already on Paul's list so I'll keep it out of ours for now

@Tim - I don't see any commands for skinning either. I'm going to assume that it's in the works for now. The idea to get a particular word hit in a text object would be nice. I'm not sure if this is needed though yet. There is GetTexCharX/Y(). So feasibly you could simply get the bounding box for that word by knowing the index of the first and last characters in the word in the text object's string.
For example,
text = CreateText("This is a message. Click here.")
xMin# = GetTextCharX(text , 19)
yMin# = GetTextCharY(text , 19)
xMax# = GetTextCharX(text , 29)
yMax# = GetTextCharY(text , 28) + GetTextSize(text)

But that brings up an alternative idea that I thought of a while back:
It would be nice to underline, bold, or italicize characters in a text object or at least be able to set a different font for characters in a text object. That way we can do something other than change the color to indicate the area of text is clickable. I've actually been thinking of building something like this for Wordspionage so that when we send out news messages we can include links. I know I can at least do the color change and underline. Maybe I'll work up an example...
Posted: 2nd Nov 2014 3:12
@ Naphier

I agree, so I guess the suggestion could look something like:

More text commands to interact with and change the attributes of individual or group of characters in text objects.
Posted: 2nd Nov 2014 4:21
http://forum.thegamecreators.com/?m=forum_view&t=212505&b=41
Here's what I'm talking about. I'm not sure that much more than what AppGameKit already has is needed as I feel we already have to tools to write our own. I thought it might not be possible to do some things and then after writing this code up I can see plenty of ways to format text as needed.

Also, if Paul implements TTF then we might see bold, italic, and underline come along with it. If not, then we have ways to work with it anyway.
Posted: 2nd Nov 2014 13:36
Ability to show sprite shapes (i.e. base shape used for collisions) would be useful for debugging.
Posted: 2nd Nov 2014 14:32
You can show sprite shapes with SetPhysicsDebugOn().

Or do you mean something else?
Posted: 2nd Nov 2014 23:47
@ Naphier,

OK, here are some draft suggested SQLITE commands - anyone who knows anything about SQLITE will get the drift of where I am coming from:-

+ Code Snippet
flag = SQLITE DATABASE EXIST(databaseID)

success = SQLITE OPEN DATABASE(filename$, databaseID, username$, password$)

success = SQLITE CLOSE DATABASE(databaseID)

success = SQLITE DELETE DATABASE(databaseID)

success = SQLITE UPDATE STATEMENT(databaseID, sqlUpdate$) - a sql statement just updating the database - resulting in no recordset

success = SQLITE QUERY STATEMENT(databaseID, sqlQuery$) - a sql statement resulting in a recordset which can be interrogated

number = SQLITE COLUMN COUNT(databaseID) - get the number of columns in any recordset - starting with 0

name$ = SQLITE COLUMN NAME$(databaseID, column) - gets the name of any specified column in a recordset or NULL if no such column exists

definition$ = SQLITE COLUMN DEFINITION$(databaseID, column) - gets the definition or type of the specified column in a recordset

number = SQLITE ROW COUNT(databaseID) - get the number of rows in any recordset - starting with 1

success = SQLITE FIRST ROW(databaseID) - returns 1 if successfully pointed to first row of a recordset, otherwise 0 (no recordset exists)

success = SQLITE NEXT ROW(databaseID) - returns 1 if successfully pointed to next row (first one if this is called first in a recordset) of a recordset, otherwise 0 (if no next recordset exists)

success = SQLITE PREVIOUS ROW(databaseID) - returns 1 if successfully pointed to previous row in recordset, otherwise 0

success = SQLITE LAST ROW(databaseID) - returns 1 if successfully pointed to last (of any) row in recordset, otherwise 0

value$ = SQLITE RECORD STRING$(databaseID,column) - returns the string value of the numbered column in the current row of the current recordset generated by a sql query

value = SQLITE RECORD INTEGER(databaseID,column) - returns the integer value of the numbered column in the current row of the current recordset generated by a sql query

value# = SQLITE RECORD FLOAT(databaseID,column) - returns the float value of the numbered column in the current row of the current recordset generated by a sql query

success = SQLITE GET MEMBLOCK BLOB(databaseID, startColumn, targetMemblockID)
		-	actually grabs the blobdata from the named recordset in the current row and makes it in to the specified targetMemblock (see commands below)

success = SQLITE END QUERY(databaseID) - must always be called when you have finished interrogating any resultant recordset following a query

success = SQLITE ADD BLOB COLUMNS(databaseID,table$,memblockNameColumn$,memblockTypeName$,memblockSizeName$,memblockBlobDataName$) - adds 4 named columns to the end of the named table in the database
		- the columns are memblockName$, memblockTypeName$, memblockSizeName$,memblockBlobDataName$

success = SQLITE INSERT BLOB(databaseID,table$,memblockStartColumn,memblockName$,memblockType$,memblockSize,memblockID)
		- inserts a memblock in to the named table
		-	memblockStartColumn defines the first column (from 0) of the four columns detailing the memblock
		-	memblockName$ defines the name you want to give to the memblock
		-	memblockType$ defines the type of the memblock ie. image, sound, file, other
		-	memblockSize  defines the size of the memblock in bytes (which I think is necessary for putting in and getting blobs)
		-	memblockID defines the ID of the memblock you want to insert as a blob in the fourth specified column from the StartColumn

Posted: 3rd Nov 2014 0:07
@ Naphier,

And here are some very draft suggested additional commands for arrays...

+ Code Snippet
assuming myArray is the Array in question...

... and leaving it to wiser heads than I to figure out how to do this with multi dimensional arrays...

myArray.currentIndex - returns the current index posn of the current element within myArray

success = myArray.firstElement() - returns a 1 if can point to first element (0) in myArray, otherwise a 0

success = myArray.previousElement() - returns a 1 if can point to previous element in myArray, otherwise a 0 if already at first element (0), otherwise a -1 if no elements in myArray

success = myArray.nextElement() - returns a 1 if can point to next element in myArray, otherwise a 0 if already at last element in myArray, otherwise a -1 if no elements in myArray

success = myArray.lastElement() - returns a 1 if can point to last element in myArray, otherwise a 0

value = myArray[] = ie gets the appropriate value from the current element within myArray

myArray.emptyArray - empties myArray

myArray.undim - undims myArray ie. destroys it / removes from memory

myArray.reverseSort() - reverse sorts myArray - opposite of myArray.sort()

myArray.udtSort([number]) - sorts myArray by reference to the [number] user defined type rather than simply the first

myArray.reserveUdtSort([number]) = a reverse sort version of myArray.udtSort

success = Save NonUDT Array([nameOfArray.save], filename$)

success = #include NonUDT Array(filename$,nameOfArrayToBeCreated.load)

and the tall order:-

success = Save UDT Array([nameOfArray.save],null as [name of udt type], filename$)

success = #include UDT Array(filename$,nameOfArrayToBeCreated.load,null as [name of udt type to be created from udt in file])
Posted: 3rd Nov 2014 0:18
To be brutally honest, I think most of these are a bit pointless.

MyArray.index : How does an array contain an index?
Posted: 3rd Nov 2014 2:21
@ JimHawkins,

See what you mean. I've amended post above so it hopefully makes more sense. What I was after was something more akin to the enhanced DBPro Array commands and IanM Plugin array commands together...
Posted: 3rd Nov 2014 9:23
@ Duffer - I think those kind of operations are better conducted on lists rather than arrays. A dynamic list type would certainly enhance AppGameKit Basic.
Posted: 3rd Nov 2014 10:20
Posted: 3rd Nov 2014 15:51
1. AStar path finding on a user definable grid. Settings for higher costs should be possible too.
2. Steam API integration
3. Flurry integration.
4. Google play complete integration.
5. Support for OGG sound format.
Posted: 3rd Nov 2014 16:22
I would second Flurry & Google PLay integration.

Also, loops for tweens - Like the original tween library I think was used as the basis for the AppGameKit implementation.
Posted: 3rd Nov 2014 17:14
I've added my couple of wishes too:

1) A sprite wrap-round function, whereby setting a single parameter, as and when your sprite goes off the screen, say left hand side, it automatically appears to come in on the right. Good for scrolling game backgrounds instead of juggling with 2 or more individual sprites.

2) I use Tier1 and one of the most important things to me is to start to sell in=app purchasing. I've followed all methods previously on here without success, so to have the IDE give the compile to APK and all associated options such as in-app purchasing etc would be great!

Cheers, Ian.
Posted: 3rd Nov 2014 21:24
@ JimHawkins,

Good idea - I'd love linked lists with udts too - but too tall an order?
Posted: 3rd Nov 2014 21:51
@Duffer -
SQLLite stuff all makes sense to me. I imagine there must exist a fairly inclusive C++ library that will do this. If someone can find it and do a successful t2 integration then I think Paul will be much more likely to take it seriously.
Regarding the array commands: currentIndex/first/last/next/previous just doesn't make any sense to me. There is no current index in an array, you just enter the specific index (i.e. myArray[10]). I'm not sure I get these at all. value = myArray[x] this already exists... undim already exists, empty is on the list. Save array is already listed as a feature that will be added. That leaves us with saving UDT arrays, reverseSorting, sorting UDT arrays on various subtypes. I don't think #include would be the way to go, I'm assuming you want this to load the array? Also we can write our own code to save/load UDT and standard arrays to file. It's actually really easy and I do it all the time.

@Stormforce -
"wrapping" a sprite to the other side of the screen is pretty simple. I don't think there needs to be a specific command to do this. If you want to show half of the sprite on on side and the other half on the other side then just use 2 sprites.
Many of us are using IAP. If you haven't tried my most recent guide to creating APK for Android, then you should check it out over on the Android forum. If you need assistance beyond that I can provided you with one on one. I've helped a number of people from the forums get going with this as well as publishing. Every person I've helped has had issues only because of human error. Not their fault though, the process is fairly complex! I was just looking through the new IDE and commands. There is now InAppPurchaseSetKeys ( szData1, szData2 ) which was the only thing that needed to be modified in java to set up IAP. So it looks like this is all covered.

@Mikehart -
I've no idea how A* path finding would work. I imagine this would be 3D only? Also I'm thinking that this might need to be created by some of us rather than AppGameKit implementing a library for something this complex.
Steam and Google Play Game services are already on the list.
OGG is added, though I remember Paul saying something that this has issue on various platforms. Can you be more specific on what commands we might need for Flurry? If it is just setup then we should be able to do that in java, but I imagine there are event triggers or something like that.

With Google Play SDK integration, let's work on a more specific list of commands. I'll start and you guys add to it:
ould be great if there were some more commands like this for Game Center too.
Posted: 3rd Nov 2014 22:20
I've no idea how A* path finding would work. I imagine this would be 3D only? Also I'm thinking that this might need to be created by some of us rather than AppGameKit implementing a library for something this complex.


No, it could be used for 2D too. But if you want to create it in AppGameKit, then imho it will be to slow to calculate new paths fast enough. I have a nice AStar lib running in another tool. I could port that but like I said, to slow I think.

Can you be more specific on what commands we might need for Flurry?


Oh, there are a lot, but Analytics are the ones I am looking for. And yes, you couldn't set it up for Tier1 yourself completely.
Posted: 4th Nov 2014 8:51
At its most basic, Flurry has 2 types of events that you can log.

Timed events & Single events. All are logged with a string event name.
Posted: 4th Nov 2014 9:16
@ Naphier,

re Arrays - ok then I go with a request for linked lists... which can be saved/loaded....

re Sqlite3, I have tier1 AppGameKit (not sure I have tier2 AGK) and I am only passable with C++. However, let's say I have/get tier 2 of the original AppGameKit, and let's say I created a Windows dll for it, how does that play out with Android and iOS AppGameKit, let alone AGK2?

(I created a Sqlite3 plugin for DBPro, eventually. I could probably do it much quicker this time, with what I know now.)

In the meantime, perhaps this would be useful for Paul on Sqlite3:-

http://www.sqlite.org/capi3ref.html

and this:-

http://www.sqlite.org/quickstart.html

this:-

http://www.sqlite.org/c3ref/funclist.html

the Sqlite3 database file format:-

http://www.sqlite.org/fileformat2.html

and finally this (but scroll down):-

http://www.sqlite.org/download.html