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 Studio Chat / AGK Studio user interface as a set of commands to build apps

Author
Message
dooz
18
Years of Service
User Offline
Joined: 22nd Sep 2005
Location:
Posted: 10th Jun 2021 07:00
Hi GameCreators,

I raised this a long time ago, but haven't heard anything further on it.
AppGameKit the name, refers to a kit for building apps and games. While there is much capability for building games, there isn't must of significance for building apps, specifically user interfaces.

Has consideration been given to making a set of commands for building user interfaces (based on the AppGameKit Studio user interface) so we can build Apps?

Thanks!
Paul
fubarpk
Retired Moderator
19
Years of Service
User Offline
Joined: 11th Jan 2005
Playing: AGK is my friend
Posted: 10th Jun 2021 07:04
if its interfaces you want try this https://forum.thegamecreators.com/thread/226909#msg2660085
fubarpk on Itch...………...https://fubarpk.itch.io/
fubarpk on googleplay..https://play.google.com/store/apps/developer?id=fubarpk
Raven
19
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 10th Jun 2021 15:30
While there are Community derived solutions... I agree with the OP., AppGameKit has been out for almost 9 years now; and the name would strongly suggest that it's more General Purpose (Applications & Game Development) as opposed to purely being a Game Development Platform; akin to Android Studio or iCode (for example)... both of which have some quite robust Graphical User Interface Commands for building Applications.

A major nightmare of Application Development, especially Cross / Multi-Platform is UI / UX Development... as well you typically have to use a different UI Framework for each Platform., or alternatively you have to rely on Graphics APIs (like OpenGL / Vulkan / DirectX) all of which no longer support Native 2D and have some major limitations when trying to use them outside of a given Window Frame.
In fact the AppGameKit IDE is an excellent example of this., as ALL of the Windows are contained within the Main IDE Window; rather than being Floating (which would be exceptionally useful for things like Settings; or Media; where you could have these on another Display; but obviously you can't because the whole UI of the AppGameKit IDE is OpenGL-Driven; which further means there are problems with ATI / AMD Hardware (specifically GCN 1.0 - 1.2 Architectures; with lower performance, and higher overhead)

It would just make the most sense for the four major platforms (Windows / Linux / Mac / Android) to be supported by a Common Interface Library; but MORE than that., the Scene Editor be used to more specifically design the Interface Layout (akin to Forms in C# or VB) with the Script then being used for Functionality.
Loktofeit
AGK Developer
15
Years of Service
User Offline
Joined: 21st Jan 2009
Location: Sarasota, FL
Posted: 10th Jun 2021 16:31
I always thought "app" in the name meant "mobile program" not "productivity software". That seemed to be the intent and focus when it came out, no?

LynxJSA's web games/quizzes - LynxJSA's Android apps
AGK Resource Directory
"Stick to a single main loop (DO...LOOP) and loop through it every frame.
Do everything inside functions.
Use finite state machines to control your game.
Use lots and lots of source files.
Use virtual resolution instead of the default percentage system." - Digital Awakening
MikeHart
AGK Bronze Backer
20
Years of Service
User Offline
Joined: 9th Jun 2003
Location:
Posted: 10th Jun 2021 20:06
Quote: "I always thought "app" in the name meant "mobile program" not "productivity software". That seemed to be the intent and focus when it came out, no?"

Agreed.
PartTimeCoder
AGK Tool Maker
9
Years of Service
User Offline
Joined: 9th Mar 2015
Location: London UK
Posted: 11th Jun 2021 17:18
Quote: ""I always thought "app" in the name meant "mobile program" not "productivity software". That seemed to be the intent and focus when it came out, no?""


As game is a sub type of app(plication) and a kit implies that its self-contained the name is a bit misleading, but technically speaking it does produce an app, which is a game, which was made with the kit ... it does do what it says on the tin if you interpret it from a TGC or MVP (minimum viable product) bias

A UI would be fantastic but while waiting for never to arrive MadBits contribution is a fantastic placeholder but for multi-monitor support this will have to be added to the core.







Pfaber1
6
Years of Service
User Offline
Joined: 7th Jan 2018
Location: England
Posted: 13th Jun 2021 09:30
I followed the link and downloaded MadBits Nuklear add on and think it's very good . Gonna be a while until I've read the whole documentation but early impressions are very nice . 88 pages if I remember correctly . Really enjoyed playing with this plugin for a couple of hours . Another string to my bow.
Loktofeit
AGK Developer
15
Years of Service
User Offline
Joined: 21st Jan 2009
Location: Sarasota, FL
Posted: 13th Jun 2021 15:25
Quote: " the name is a bit misleading, "


The name is flat out weird.
LynxJSA's web games/quizzes - LynxJSA's Android apps
AGK Resource Directory
"Stick to a single main loop (DO...LOOP) and loop through it every frame.
Do everything inside functions.
Use finite state machines to control your game.
Use lots and lots of source files.
Pfaber1
6
Years of Service
User Offline
Joined: 7th Jan 2018
Location: England
Posted: 13th Jun 2021 17:53 Edited at: 13th Jun 2021 18:00
My biggest dislike about AppGameKit is the name I don't know why but it sounds to me like a toy language. I pretty much like everything else about it though. When someone asks what you program in and you can see the cogs turning as you say it AppGameKit that look of that sounds not very good . I think the word app has replaced the word program I might be wrong but that's the impression I get.
Pfaber1
6
Years of Service
User Offline
Joined: 7th Jan 2018
Location: England
Posted: 13th Jun 2021 18:14 Edited at: 13th Jun 2021 18:16
I was thinking would the windows made with Nuklear work with Android or is it just a windows and linux thing?
I just tried it and got my answer. And it's a no.
PartTimeCoder
AGK Tool Maker
9
Years of Service
User Offline
Joined: 9th Mar 2015
Location: London UK
Posted: 13th Jun 2021 20:32
Quote: "When someone asks what you program in and you can see the cogs turning as you say it AppGameKit"


I once had someone argue with me that GML (Game Maker Language) is not a real language, he made games with The Games Factory.

Don't say AppGameKit, say "A propriety cross platform BASIC language and IDE" and watch the cogs crunch a lil harder! lol


Quote: "And it's a no."


Yup, plugins are desktop only.

I have a project setup using Nuklear its a mobile game but the dev work is done on desktop, level creation, data tools and stuff because its just easier, all using the Nuklear UI, the project detects what platform its running on and on desktop it opens in dev mode and lets me edit or on mobile in game mode and all the desktop stuff is disabled so its still handy for any tools your mobile game may require, the spartan nature of AppGameKit kind of demands you write your own tools and Nuklear is by far the best UI solution AppGameKit has access to so yeah, I'd highly recommend getting to know it.
Pfaber1
6
Years of Service
User Offline
Joined: 7th Jan 2018
Location: England
Posted: 13th Jun 2021 20:44
Yes I certainly will learn to use it . The documentation looks really good which is half the battle when learning something new . Still learning stuff on a daily basis and been at this 2 years or more . I did take a year off which I wish I hadn't or I would be way ahead of where I am now . Still I'm getting there .
PartTimeCoder
AGK Tool Maker
9
Years of Service
User Offline
Joined: 9th Mar 2015
Location: London UK
Posted: 13th Jun 2021 21:17
I prefer learning from the examples but that's just me, I been at this over 20 years and still learning things, in fact the only thing I'm sure of is that I don't know enough, so many interesting languages and technology's its hard to focus on just one, I flit from one to another learning something new and achieving nothing special lol
Raven
19
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 14th Jun 2021 13:04
Quote: "As game is a sub type of app(plication) and a kit implies that its self-contained the name is a bit misleading, but technically speaking it does produce an app, which is a game, which was made with the kit ..."


App is more specifically derived from Applet as opposed to Application., and you'll notice that outside of Independent Studios the term App is used in a very specific capacity.
Now what makes the difference between an App(let) and an Application... is that an App(let) is a "Small Runtime that runs within the scope of another Widget / Plug-In Engine"

Today it more specifically refers to anything that isn't Natively Running.
For example Java, Python, LUA, etc... as these are all Scripting Engines that use a Runtime Interop that interact with the OS / Hardware; then all Software created with them are by their nature App(let) Programs.
Now when you consider that AppGameKit on Mobile Platforms (iOS and Android., as it has never supported Windows CE / Mobile) are using Java as the Backend; they are by their nature App(let) Programs.

It should also be noted that these Platforms DO NOT support Plug-ins meaning that while, yes... there are some Community Options for Desktop OS (Linux, Mac, Windows)., there are very few for Mobile; and worse is due to the performance of the AppGameKit Scripting Language., far from ideal.
Also true might be that AppGameKit is primarily or at least more focused on Game Development; if you read through the Website., there is a clear distinction made between "Games" and "Apps"; with both being listed as uses for AGK.

I don't think anyone is advocating a Comprehensive UI / Windows System., but support for Creating / Destroying new Windows, Context and Common UI Elements (Menus, Radio, Checkbox, Text, Button, Slider, Tab) would be both useful but also make AppGameKit a bit more "Feature Complete"
And what makes more sense here, is if you LOOK at the history of Dark BASIC and Dark BASIC Professional., or just Game Development in General; it's not uncommon for "In-House" Tools to be developed for a Project... and these tools ALWAYS end up having to be a bit janky BECAUSE there are no built-in UI Tools to aid in UI Design and Development.

You also consider the Biggest & Best Selling Products with DBC/DBP/AGK has been the "Learn to Drive" Apps created by TGC themselves., and again you have a headscratcher in regards to why there aren't some built-in functionality to help better aide in Productivity or Utility Application Development.
It would also be good from a Marketing / Audience perspective, as it would increase the reach if AppGameKit could be marketed and expanded into those create RIA (IoT), Desktop or Utility Apps.
Loktofeit
AGK Developer
15
Years of Service
User Offline
Joined: 21st Jan 2009
Location: Sarasota, FL
Posted: 14th Jun 2021 13:17
Quote: ""It would also be good from a Marketing / Audience perspective, as it would increase the reach if AppGameKit could be marketed and expanded into those create RIA (IoT), Desktop or Utility Apps." - Raven"


I like that idea! --^
LynxJSA's web games/quizzes - LynxJSA's Android apps
AGK Resource Directory
"Stick to a single main loop (DO...LOOP) and loop through it every frame.
Do everything inside functions.
Use finite state machines to control your game.
Use lots and lots of source files.
PartTimeCoder
AGK Tool Maker
9
Years of Service
User Offline
Joined: 9th Mar 2015
Location: London UK
Posted: 15th Jun 2021 15:24
I disagree, in fact I completely object ... I'm making a sign!!!

Lets focus on finishing the existing library's before we half add a bunch of code that sort of works but is very limited because 'MVP' appears to be the TGC model.

I agree it would be nice to expand AGK's functionally but building on broken foundations is not a great plan for longevity, I think time and effort would be better spent underpinning what is already there, some proper game sound like Raven alluded to, a more robust drawing system that supports alpha/gradients, and fix whatever is going on with animated 3D imports ...

Just saying, more half implemented libs are the lead weights that will sink AppGameKit!
XanthorXIII
AGK Gold Backer
12
Years of Service
User Offline
Joined: 13th May 2011
Location:
Posted: 15th Jun 2021 20:24
What I think TGC needs to do is focus on getting AppGameKit feature complete with what was promised and fixing a bunch of issues that are currently going on with it.
I would like to see them fix arrays. I've never seen a programming language where if you change the size of an array you get an extra element on it.
array.length should return and set the correct array size. If I say array.length = 3, it needs to be 3 elements, not four. That doesn't make any sense to me when they do weird stuff like that.

Not to nitpick, but from the last update I noticed that there is now a function labeled GetInAppPurchaseAvailable2. Why would you label a function name with a 2 at the end of it. That to me, doesn't look professional. I know it's hard to come up with names but that just looks like someone couldn't decide on a name.
I would have gone for GetInAppPurchaseDetail or GetInAppPurchaseInfo. How about get an emergency update pushed out with a fix for the function name.

I've see TGC send out the Surveys for what we want and what not, but I've not see a whole lot implemented from them. So ether they take our feedback, plan to do something with it and then nothing comes from it. We have Discord, Zoom and all these other useful tools. Why not gather those that have been in the community for a while and do a round table. I don't think it would hurt and if the devs have plans to introduce stuff, we can provide feed back. Such as that function name that ends in the 2. I think that could have been avoided.
Raven
19
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 19th Jun 2021 03:53
Quote: "I would like to see them fix arrays. I've never seen a programming language where if you change the size of an array you get an extra element on it.
array.length should return and set the correct array size. If I say array.length = 3, it needs to be 3 elements, not four. That doesn't make any sense to me when they do weird stuff like that."


It does return the correct array size.
Array As Integer[9] = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 )

That's 10 Elements. The difference is the Language is putting the 0 at the Start., where-as if you count it you're putting it at the end.
C / C++ Arrays work the exact same way; the reason you can use the length as a signifier "as-is" is because you're always using the < conditional., which is something most people learn or mimic from others code without ever understanding why.

for( int i = 0; i < array::count( ); i++ )
is IDENTICAL to
for( int i = 0; i == array::count( ) - 1; i++ )
which is also IDENTICAL to
For i = 0 To array.length - 1

Now as a note., ::count() is a StdC Libaray Function for Template Arrays (List/Map/Vector/etc.)... if you wanted to do this for built-in Arrays; well the easiest approach is:
sizeof(Array) / sizeof( ArrayType )

i.e.
int Array[10];
int ArraySize = sizeof(Array) / sizeof( int ); // this would return 11 as a note

but then this brings up another point to make... it's also common practice in C/C++ to write the number of arrays that you'd count., even though you'll never use 1 of those elements.
So for an 10 Element Array you'd write:
int Array[10];

But as any number from 0 ... 10 becomes valid; this is 11 Elements.
People do this again because OTHERS do this., without every questioning why; but it's partly because it's easier to understand (i.e. you'd count 1, 2, 3 ... 8, 9, 10... rather than from 0) but also it provides a buffer element; which allows concepts such-as "Null Terminator" say when working with Strings; where a value of 0 means "End"; as strictly speaking Arrays are just "easy" Pointers to Memory Addresses., without actually using a Pointer; so you can just KEEP reading Memory beyond the Allocated Array itself.
This will either cause an Access Error (in the case of Protected Memory) or it'll read unrelated Data; which as Memory is rarely purged to Zero (it's just allocated., meaning it's tagged to be used again) then this means whatever existed there before will remain until new information is allocated.

Allocation is usually what "Zeros" said Data Area; and why Allocation can be costly.

I'm actually unaware of ANY other language that handles this differently., you're just typically compensating; and if you think they work differently, I'd wager without you ever realising you are.
Loktofeit
AGK Developer
15
Years of Service
User Offline
Joined: 21st Jan 2009
Location: Sarasota, FL
Posted: 19th Jun 2021 07:54 Edited at: 19th Jun 2021 08:25
Quote: "I'm actually unaware of ANY other language that handles this differently., you're just typically compensating; and if you think they work differently, I'd wager without you ever realising you are."


C#

Not familiar with Java myself, but I was told this is 10 elements in Java : int arr[] = new int[10];

LynxJSA's web games/quizzes - LynxJSA's Android apps
AGK Resource Directory
"Stick to a single main loop (DO...LOOP) and loop through it every frame.
Do everything inside functions.
Use finite state machines to control your game.
Use lots and lots of source files.
PartTimeCoder
AGK Tool Maker
9
Years of Service
User Offline
Joined: 9th Mar 2015
Location: London UK
Posted: 19th Jun 2021 13:47
Java arrays are zero based so that's 11 items, I know there are 1 or 2 languages out there that use 1 based indexing but names do not spring to mind, I just know they exist.

AGK does demand that we take Ravens points into account regarding < and <= and == with array.length, while its handy that .length returns a 1 based index we have to be aware of this in conditionals and not compensate (ie: use <= or =) , most languages I use return zero based for array/list/map sizes so I must use (< or ,<= _ -1) depending on use case.

if coming from a zero based language that returns the 0th item in a count then it could catch you out but the compensation amounts to an equals sign = or lack of one, its trivial, and a quirk of AppGameKit, like constants, they are not exactly how constants work in most other languages they are more of a macro but I like it.

When ever I look at a new language I first look at data structures, arrays, loops and such, most new AppGameKit users don't even know that array help page even exists, if there is a problem with arrays its that no one can find a link in the help file!!!

maybe that important stuff should get a sticky?
XanthorXIII
AGK Gold Backer
12
Years of Service
User Offline
Joined: 13th May 2011
Location:
Posted: 24th Jun 2021 19:05
In C/C++, C# or Java when you allocate an array you do not get an extra element. int a[5] = {1,2,3,4,5}. The index starts at 0 and goes to 4 for a total of 5 elements, a[0] = 1.....a[4] = 5. In AppGameKit if do the following dim a[3], you get 4 elements. in Basic/QBasic if you do dim a[3] you only get 3 elements, a[1], a[2] and a[3]. The index starts at 1 which is fine, but you only get 3 elements. That's the whole point about this, that is not standard behavior in any programming that I know.
MikeHart
AGK Bronze Backer
20
Years of Service
User Offline
Joined: 9th Jun 2003
Location:
Posted: 25th Jun 2021 14:08
Quote: "In C/C++, C# or Java when you allocate an array you do not get an extra element. int a[5] = {1,2,3,4,5}. The index starts at 0 and goes to 4 for a total of 5 elements, a[0] = 1.....a[4] = 5. In AppGameKit if do the following dim a[3], you get 4 elements. in Basic/QBasic if you do dim a[3] you only get 3 elements, a[1], a[2] and a[3]. The index starts at 1 which is fine, but you only get 3 elements. That's the whole point about this, that is not standard behavior in any programming that I know."

Agreed. In my programming language, it is the same. You get the number of elements you told it to and the indexing starts at 0.
Loktofeit
AGK Developer
15
Years of Service
User Offline
Joined: 21st Jan 2009
Location: Sarasota, FL
Posted: 25th Jun 2021 15:49
Ok, so I'm not crazy. I'm an amateur at coding, so I just figured I was out of my depth here, but it seems some are under the impression that if other languages start at 0, they are adding an extra element to the array like AGK.
LynxJSA's web games/quizzes - LynxJSA's Android apps
AGK Resource Directory
"Stick to a single main loop (DO...LOOP) and loop through it every frame.
Do everything inside functions.
Use finite state machines to control your game.
Use lots and lots of source files.
jd_zoo
5
Years of Service
User Offline
Joined: 12th May 2018
Location: Nova Scotia
Posted: 26th Jun 2021 16:39
Can confirm Java is zero based, but the indexing is a little different:

Card[] cards = new Card[52];
public void print() {
for (int i=0; i < cards.length; i++)
System.out.println(cards[i]);
}

So you need to remember the loop runs as long as i is less than the length of the array. I actually prefer AppGameKit better but thats just me...
XanthorXIII
AGK Gold Backer
12
Years of Service
User Offline
Joined: 13th May 2011
Location:
Posted: 28th Jun 2021 04:51
I'm concerned this could open up to potential abuse. But I think what I'm going to try to do with this is create a function for setting array's for now, pass in a reference to the array, the size of the array and then the size of the array. In setting the length I would do myarray.length = sizeOfArray - 1, so if I pass in 5, it will set myarray.length to 4 which is actually 5 elements since it starts at element 0.

Then I'll just use Index 0 to start on. For example this for loop.

for t = 0 to myarray.length step 1
// Blah Blah Blah
next t

But know when you want to output the true number of elements you'll need to add 1 to when you print the length or doing a check.

I don't know what TGC would need to do to fix this, but my suggestion would be, fix the arrays so that they are the exact length you set them to and return the correct value for getting the length of the array. Ether start arrays at 0 or 1 by default and add in an option to allow us to set the array index at the beginning of a program, #ArrayIndex 0 or 1. No need to add an extra element.


@jd_zoo, I'm not sure I understand why you are saying the Indexing is a little bit different for Java. Were you expecting an extra element? Cause that could be super bad for array bound checking and preventing exploits.






PartTimeCoder
AGK Tool Maker
9
Years of Service
User Offline
Joined: 9th Mar 2015
Location: London UK
Posted: 28th Jun 2021 12:34
Quote: "I don't know what TGC would need to do to fix this"


Nothing, changing this behaviour now would be a breaking change.
XanthorXIII
AGK Gold Backer
12
Years of Service
User Offline
Joined: 13th May 2011
Location:
Posted: 28th Jun 2021 19:34
Quote: "Nothing, changing this behaviour now would be a breaking change."


Good opportunity for folks to learn that sometimes there are breaking changes introduced and how to fix their code. This is something that needs to be fixed and should have never been allowed in the first place.




Login to post a reply

Server time is: 2024-04-19 11:32:56
Your offset time is: 2024-04-19 11:32:56