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 Classic Chat / v2 Feature Requests

Author
Message
Cybermind
Valued Member
21
Years of Service
User Offline
Joined: 28th Nov 2002
Location: Denmark
Posted: 2nd Mar 2020 12:13
DEBUGGER REQUEST: When debugging and the app crashes in a function, it would be nice to be able to choose to see call stack for that function. I just had this happen, I had to set a breakpoint where the error was and I tried re-creating the incident but it turned out the function was called from a totally different place than I thought, but luckily it didn't matter in this scenario.
13/0
EdzUp
21
Years of Service
User Offline
Joined: 8th Sep 2002
Location: UK
Posted: 7th Mar 2020 21:08
Yeah I can see where that would be useful it has happened to me quite a bit, in the end I had to make a log file so I can see what function was called before the issue.
-EdzUp
Scribble
6
Years of Service
User Offline
Joined: 2nd Apr 2017
Location:
Posted: 1st Apr 2020 05:12 Edited at: 1st Apr 2020 05:25
Please allow an option to make app to run without OpenGL/headless mode.

This will allow 'server' app made in AppGameKit to be run in a normal server, without graphic card attachment, which is significantly cheaper.

Because of OpenGL mandatory requirement, server app made for online multiplayer game need an expensive hosting service that includes graphic cards.

If AppGameKit app (stripped of graphics) can be run without OpenGL/headless mode, this will allow a whole kind of online multiplayer game to be made without restriction using AGK.
The affordability will enable AppGameKit users to launch their games on affordable servers, which will increase AppGameKit use.
Scribble
6
Years of Service
User Offline
Joined: 2nd Apr 2017
Location:
Posted: 1st Apr 2020 05:23 Edited at: 1st Apr 2020 11:05
Please preserve the 'SetRawWritePath( str )' command. It's rather convenient,.
If used with 'GetReadPath()', this command is VERY useful to redirect the file write/save to to the game executable folder.
This means, we can put the game app to USB/ anywhere, and it will save the game files locally to that USB, and it makes the game transferrable/playable very easily.

Thank you for your considerations.


By the way, I want to thank AppGameKit Team for the 'Raw' files commands. Definitely useful, by allowing more control for user.
Kevin Cross
20
Years of Service
User Offline
Joined: 15th Nov 2003
Location: London, UK
Posted: 8th May 2020 22:51
GetKeyboardHeight() or GetOnScreenKeyboardHeight(). I'd like a function to return the height of the keyboard on screen so that things can be centred appropriately in the remaining space. I want to add a dialog with text input to my OryUI framework as I can see that being useful so being able to centre the dialog correctly in the remaining space when the keyboard is visible.

I could guess and say just under 50% but getting the exact height would be better
OryUI - A WIP AGK2 UI Framework
gosukiwi
AGK Tool Maker
3
Years of Service
User Offline
Joined: 24th May 2020
Location: Argentina
Posted: 31st May 2020 23:58 Edited at: 1st Jun 2020 00:01
I'm sure there would be much more suggestions the more I use the language, but having played with it for the last few days, here are some suggestions:

Better array initialization
Why bother doing:



Where you can do



It can even be done in the syntactical analysis phase, just from looking at that you can tell it's an array and how big it is, no need for clutter. It shouldn't really be a hard change to do, and it would make the language look much nicer.

Optional Postfixes

When doing static analysis of the source code, the name prefix is not even needed to tell whether a variable is float, string or integer. If you are initializing it inline, then it would be simpler to just allow the user to define any value to the variable. This is not even consistent because you can get away this limitation by using `as`:



High Order Functions
Basically, allow to functions to return functions and allow functions to take other functions as arguments. This would make the language way more powerful and allow for many functional programming patterns to be implemented easily in AGK. Now this might be more tricky to implement. I wouldn't say this adds much complexity to the language as beginners would simply ignore this feature, but it's very powerful to have it.

Even if you can't make anonymous functions, at least allow us to take a function reference as parameter.

Default Arguments
Allow functions to have default values. This is not that important but it's a nice QoL improvement.



Allow devs to choose which functions to export (or hide!) in each file
It would make things easier and not require so many prefixes to keep things organized. Not a big deal but still would be nice

Built-in Configurable Linter
With BASIC being such a permissive language, it would be nice to have some kind of linter which checks for consistency in our code.

Built-in Testing
It would be great to have a way to at least write some unit tests for our code. Nothing too fancy, just a simple runner and a few asserts would do. Having it integrated in the IDE would be awesome.
SFSW
21
Years of Service
User Offline
Joined: 9th Oct 2002
Location:
Posted: 2nd Jun 2020 19:34 Edited at: 2nd Jun 2020 19:36
gosukiwi wrote: "Better array initialization"


You can already declare arrays like that:



'as'
Variable markers by type are pretty standard (sometimes with '.A' letter markers) and can help provide visual cues in languages where forced declarations are not required. I would not recommend changing this and if defining is desired, it's certainly possible now by declaring its type with 'as'. Best to adapt to any language nuances for types, so with AppGameKit, no marker for integers, '#' for floats, and '$' for strings. Only a few to keep track of there and pretty easy to manage.

High Order Functions
Again, you can do that kind of thing now:



If that isn't what you are referring to, maybe you could detail what kind of thing you are trying to accomplish. That is, what specific capabilities this would open that aren't already available.

Default Arguments
Just put the default value in the function and check for any swapping/changing that may be needed. You can even specify global or local. There is no need or benefit to follow a particular format aside from personal syntax preference.

Sounds like AppGameKit already provides most of what you're looking for, just a matter of technique and method.
gosukiwi
AGK Tool Maker
3
Years of Service
User Offline
Joined: 24th May 2020
Location: Argentina
Posted: 12th Jun 2020 18:23 Edited at: 12th Jun 2020 19:50
SFSW wrote: "You can already declare arrays like..."


Thanks SFSW, I noticed that a few days after I posted. That surely helps, but still, doesn't help when you want to do:



Which is not the end of the world, but programmer happiness is important to me This is not really an urgent issue though, I think the most urgent would be default arguments.

As you've said, sure, you can assign default values in your function by defining them at the top one by one, but one line per value can clutter up the code easily, where you could easily do it in the function header/signature with minimal effort. KevinCross in the Discord shared this code:



That could be much easier with default arguments:



High Order Functions
What you used there is function composition, high order functions is basically passing functions around as if they were any other value. It would look something like this:



This is particularly useful if you have a way to define anonymous functions, that is, functions without a name, defined in-place.

I know that this feature might be too much for a dialect of BASIC though so it's unlikely we'll see it. It requires a lot of work on the type system for it to work. But it's pretty cool and it allows for a whole new way of programming. Just giving my 2cents

All in all, I think default arguments is the most urgent feature the language could use. Followed by more expressive literals.
SFSW
21
Years of Service
User Offline
Joined: 9th Oct 2002
Location:
Posted: 13th Jun 2020 17:20
gosukiwi wrote: "Thanks SFSW, I noticed that a few days after I posted. That surely helps, but still, doesn't help when you want to do:"


Yes, that would indeed come down to preference. I would personally prefer shorter individual lines aligned vertically for easier visual distinction, rather than multiple type elements containing multiple values all crammed into long lines and displaced horizontally (consider you have 9 elements with separate stop/start points all in a single line in your example). Using more dedicated lines with vertical alignment not only helps with faster visual cueing, but can also aid in error reporting when individual lines containing specific values/commands can be pinned down much more specifically. But that kind of thing does certainly come down to preference.

You can kind of do what you're after, but imo, you'd give up some precision in error reporting and lose some visual distinction/alignment in the process.

Quote: "What you used there is function composition, high order functions is basically passing functions around as if they were any other value. It would look something like this:"


Ah ok, I'll need to think on that one for a while. Not quite sure yet what the benefits of an approach like that might be over others. There should currently be a couple of different ways to achieve the same thing, perhaps even easier in some regards. But I'll ponder what advantages that specific approach might have over other methods currently available in AppGameKit using its existing string search, type, and function capabilities with minimal layers and interdependencies.

Quote: "I know that this feature might be too much for a dialect of BASIC though so it's unlikely we'll see it. It requires a lot of work on the type system for it to work. But it's pretty cool and it allows for a whole new way of programming. Just giving my 2cents"


It's an interesting line of discussion. I enjoy exchanging and exploring ideas like that as it can help discover new techniques and options. Another possibility for you might be to utilize Tier2 as that may align better with your objectives and methods.
gosukiwi
AGK Tool Maker
3
Years of Service
User Offline
Joined: 24th May 2020
Location: Argentina
Posted: 13th Jun 2020 22:39 Edited at: 14th Jun 2020 00:52
To me, more expressive power is always better. Being able to do something with less code not only producess less bugs (less code = less bugs), but also write code faster. Of course, balancing those features with making the language easy to learn is always tricky. In the case of default arguements though I wouldn't say it makes it harder to learn, considering 99% of popular programming languages out there implement those.

SFSW wrote: "(consider you have 9 elements with separate stop/start points all in a single line in your example)."

Funny, this is the first time I see someone argue against default attributes May I ask what other languages besides AppGameKit do you use?

Anyways, I agree the list can get long, but:
a) A long argument list will suck be it with default arguments or not
b) The language already supports 9 elements argument lists
c) A function with so many arguments means there's something wrong with the program's design, meaning there's an object/type hiding in there, so you can refactor the arguments into one or more types and just pass that instead

SFSW wrote: "Using more dedicated lines with vertical alignment not only helps with faster visual cueing, but can also aid in error reporting when individual lines containing specific values/commands can be pinned down much more specifically. "

Also manually writing more code has a chance to introduce more bugs, and clutter the program with irrelevant, repetitive data, which ends up making it harder to read, especially when reading other person's code.


SFSW wrote: "Not quite sure yet what the benefits of an approach like that might be over others. There should currently be a couple of different ways to achieve the same thing, perhaps even easier in some regards. But I'll ponder what advantages that specific approach might have over other methods currently available in AppGameKit using its existing string search, type, and function capabilities with minimal layers and interdependencies."


Basically you get most benefits of functional programming! You can write code which is easy to test, extend, reuse, and decoupled from the rest of the logic.

A classic example:



The benefit of that approach is that any filter function will work with any of my filters, so if your system is designed that way, you can reuse a lot of code. An example of this in real apps is JavaScript's reduce, map, and filter, just to name a few.

Also, you can write callback-oriented code which is great for user interfaces, although it's known it can lead to callback hell, that is just bad code and it can be easily managed with proper refactoring.

Now, I know there's no way this is comming to AppGameKit but just wanted to show you how functional programming can make some crazy generic things and reduce interdependencies in your code

SFSW wrote: "Another possibility for you might be to utilize Tier2 as that may align better with your objectives and methods."


Yeah, Tier 2 seems like the way to go for "advanced" usage, but I'm just not a C/C++ guy. Anyways, it's good to know there's that option if everything else fails
EdzUp
21
Years of Service
User Offline
Joined: 8th Sep 2002
Location: UK
Posted: 14th Jun 2020 04:22
I'm all for default values in functions as it makes coding easier to have those in.
-EdzUp
Jack
19
Years of Service
User Offline
Joined: 4th Oct 2004
Location: [Germany]
Posted: 19th Jul 2020 01:32 Edited at: 19th Jul 2020 01:45
The posts above me are leading ideas.

- Calling created functions by a string for example: "Call( 'SetMyVar(22)' )"

- If we got a type structure like this:



a great addition would be using "vec.[0]" in order to get "vec.x#" as there is sometimes the need to interpret structures based on algorythmic outcomes.

- 3d animation blending, loading and appending
- Bone modification while playing 3d animation

All features will also fit Studio well.

CJB
Valued Member
20
Years of Service
User Offline
Joined: 10th Feb 2004
Location: Essex, UK
Posted: 19th Jul 2020 11:25
I'd like to see command line args exposed (if they're not already). Should be REALLY easy to implement. Something like:

argc as integer
argv as string[]
argc = GetArgC()
argv = GetArgV()

(If this is already possible in AppGameKit, please let me know how! thanks!)
basicFanatic
6
Years of Service
User Offline
Joined: 7th Jun 2017
Location:
Posted: 23rd Jul 2020 12:01
Xbox controller support would be nice.
Jack
19
Years of Service
User Offline
Joined: 4th Oct 2004
Location: [Germany]
Posted: 27th Jul 2020 06:03
Quote: " "Xbox controller support would be nice""

I already use an USB Xbox controller, or do I miss something?

Brian Lancaster
10
Years of Service
User Offline
Joined: 20th Dec 2013
Location: Oakland, CA
Posted: 7th Sep 2020 22:03
The SetRawMouseVisible() command doesn't work at all on my computer, so it's impossible for me to have custom cursors. This is a huge disappointment, because I don't know how to do targeting mode, and it just looks bad to have the default mouse cursor in the game.

Could you either make the above command work, or better yet, add support for custom mouse cursors? This would make me very happy.
blink0k
Moderator
11
Years of Service
User Offline
Joined: 22nd Feb 2013
Location: the land of oz
Posted: 8th Sep 2020 00:22
It works for me
Brian Lancaster
10
Years of Service
User Offline
Joined: 20th Dec 2013
Location: Oakland, CA
Posted: 8th Sep 2020 00:43 Edited at: 8th Sep 2020 00:50
The help files say it doesn't work on some systems. I'm using Windows 10 on an HP laptop. It's not working. I tried both full screen and windowed modes.
EdzUp
21
Years of Service
User Offline
Joined: 8th Sep 2002
Location: UK
Posted: 8th Sep 2020 08:10
I have a HP pavillion laptop and it works here
-EdzUp
Brian Lancaster
10
Years of Service
User Offline
Joined: 20th Dec 2013
Location: Oakland, CA
Posted: 8th Sep 2020 08:27 Edited at: 8th Sep 2020 08:35
Alright, the SetRawMouseVisible command works now. I wish I could tell you what I did, but now it's working.

(Damn, that was weird. Oh well, moving on.)
Brian Lancaster
10
Years of Service
User Offline
Joined: 20th Dec 2013
Location: Oakland, CA
Posted: 16th Sep 2020 15:49 Edited at: 16th Sep 2020 16:04
The hide cursor command only works about half the time, pretty much randomly. Any chance to fix this and make it work 100% of the time?

EDIT: It would be good to just allow changing the cursor. I heard somewhere that it wasn't allowed to "encourage" touch screen interaction, which seems like a pretty lame excuse. Cursor changing should be simple and easy, just like it was in DarkBASIC.

EDIT #2: Also, even if the windows mouse cursor was hidden, there's a problem with clicking on the windows status bar or the close button. You have to get custom mouse cursors going.
Conjured Entertainment
AGK Developer
18
Years of Service
User Offline
Joined: 12th Sep 2005
Location: Nirvana
Posted: 16th Sep 2020 15:51
Quote: "Better array initialization
Why bother doing:
...
Where you can do..."


For looping

Coding things my way since 1981 -- Currently using AppGameKit V2 Tier 1
Loktofeit
AGK Developer
15
Years of Service
User Offline
Joined: 21st Jan 2009
Location: Sarasota, FL
Posted: 10th Dec 2020 01:15
Would like a modular or configurable player, so that content that isn't being used or isn't needed can be removed. This would reduce the bloatware warnings that Google gives AppGameKit apps and also allow for things like policy-affecting ad components to be removed if they are not used.
NiftyBytes
3
Years of Service
User Offline
Joined: 14th Jan 2021
Location:
Posted: 21st Jan 2021 10:20
checking 3+ dim arrays overlapping with the graphic backbuffer
EdzUp
21
Years of Service
User Offline
Joined: 8th Sep 2002
Location: UK
Posted: 21st Jan 2021 14:14
If you wish to load the images into a memblock just read it as pixel data and encrypt that, when loading load it and decrypt the data then load the image from the memblock, that method removed the need to write external data to a drive where you might not have write permission or have no storage space on things like mobiles for example.
-EdzUp
Patreon: https://www.patreon.com/EdzUp
Buy me a coffee:https://www.buymeacoffee.com/EdzUp
NiftyBytes
3
Years of Service
User Offline
Joined: 14th Jan 2021
Location:
Posted: 22nd Jan 2021 08:26
overloading functions
fubarpk
Retired Moderator
19
Years of Service
User Offline
Joined: 11th Jan 2005
Playing: AGK is my friend
Posted: 20th Apr 2021 22:23
A simple one
the ability to have main.agc outside of the project directory
this would allow merging of projects so they could all share the same project folders

great when merging programs like editors etc which are all part of the same project

fubarpk on Itch...………...https://fubarpk.itch.io/
fubarpk on googleplay..https://play.google.com/store/apps/developer?id=fubarpk
Conjured Entertainment
AGK Developer
18
Years of Service
User Offline
Joined: 12th Sep 2005
Location: Nirvana
Posted: 8th Jul 2021 23:49 Edited at: 9th Jul 2021 01:13
EDIT

I found a work around for my last request.

On a side note though... the 64 bit unsigned integer ULONG data type for large whole integers ( ranging from 0 to 18446744073709551615 ) would be nice in the future.

Coding things my way since 1981 -- Currently using AppGameKit V2 Tier 1

Login to post a reply

Server time is: 2024-03-29 12:40:06
Your offset time is: 2024-03-29 12:40:06