List of simple yet useful suggestions

Started by stuh505, Sat 15/05/2004 03:38:10

Previous topic - Next topic

stuh505

Everything that I propose here is something that I wanted to be able to use in my game.Ã,  Some of them would just make programming easier and more efficient, others would add new functionality.Ã,  Some of the issues I have found workarounds for, many of them not.Ã,  But one thing is for sure, I think they would all be good additions to AGS.

in the order that I ran into them...

1) complete String class support (including arrays of strings)

2) for loops

3) switch statements (i must have hundreds of "if=0 / if=1 / if=12 / etc)

4) infinite string capacity (or at least 1000 chars).Ã, 

5) increase maximum character length for text boxes and text labels to whatever maximum string size is.Ã,  even if you do not choose to increase the 300 char string limit, you could at least remove the extremely low cap on the text box / tex labels.Ã,  this is causing some real problems in my game because I'm trying to display descriptions for different parts of my guis when they click there, but i can only get in about 1 sentence worth of description :/

6) Be able to save with errors…sometimes we don't have time to debug it when we have to leave the computer!

7) when deleting objects from a GUI, don't automatically rename all objects with subsequent labels…then all the code must be changed!

8) remove the room maximum of 300 (i havent gotten there yet but this project has more than 300 areas and i dont wanna split the game up into 2 parts), allow rooms to be named anything, and even if you choose not to remove the 300 room cap, STILL allow rooms to be numbered greater than 300 please!

9) new GUI object: sprite image! currently, if someone wants to have images on their GUI, they need to make that area of the GUI transparent and then create a graphic overlay of the image which normally appears UNDER the gui but can now be visible through the hole...problem is this is UNDER the character so the character might be covering up this image.Ã,  this feature would be awesome, allow for much more versatile GUI's that looked like popular RPG games such as Diablo where you have inventory items visually pasted onto a character image, for example.Ã,  there are countless reasons to be able to put sprite images as gui objects though.

10) new GUI object: dropdown list box.Ã,  similar to the list box, only when you click the arrow it expands...this could allow more compact GUIS because if you want a list box to take up a small height than its difficult to view the contents you need to scroll too much.

11) function to gradually change music volume over a specified time duration to a new volume setting.Ã,  ie, FadeVolume(int targetvolume, int time)

12) new GUI object: rectangular outline.Ã,  people like to see similar GUI objects surrounded by a box.Ã,  this can be done by drawing a box around the specified area and using it as a background image, but this is more cumbersome than it needs to be.

13) function to gradually move overlays similar to the object move command.Ã,  i wrote a function to do this myself, but it can only slide them vertically/horizontally.Ã,  sliding diagonally would require use of decimels, sqrt's, and powers.

14) function to get coordinates of graphic overlay.Ã,  REALLY need this one, and its so easy.Ã,  you have a function to SET the coordinates but not one to GET them! (this makes my slide overlay function a bit crusty as well because they need to already have saved the coordinates to some global variable to use it..)

15) support for decimals, powers, and roots


16) ability to duplicate a GUI and give it a new name (if multiple GUIS are very similar this way it doesn't need to be made all over again)

17) allow built in support for multidimensional string/char/int arrays.Ã,  this can be done, as shown recently by indexing over a 1d array, but it shouldn't be so cumbersome...esp for 2d arrays which are used SO much.Ã,  and string arrays are a MUSt.

18) allow integer arrays to be defined at declaration.Ã,  i have probably 460 lines of code dedicated to setting each element of an array, and i dont want to load it by text file (i want it all condensed into the exe and i dont want to bother with text parsing).Ã,  Ã, this is one of my biggest requests also.

19) allow the ctrl+f find to be able to find more than just the first instance when searching through the code, can be helpful when making modifications

20) SetTextBoxColor(int color) function.Ã,  i am displaying damage in a text box and i want the color to change based on the damage type (green=poison, blue=psychic, etc)

21) SetButtonTextColor(int color) function (could be used to represent an inactive button among other things)Ã,  an inactive button COULD be done by changing the button image to grey using SetButtonPic but the customary way in windows we are used to is grayed out letters not background.

22) you already know this one, but...allow overlays to use the alpha channel

Scummbuddy

8) 300 is not the real room max, its just stated as that, since all rooms above it will not have its state saved when loading it again(when playing)
room ints will still work

9) cant you just make a button, set its image, and then not have it have a function?

11) I can think of a scripting work around for this one.

15) we have a plugin that covers this one. plus workarounds in ags, like first multiplying it by 100, and then dividing

17) I understand in a C program that they are used so much, but not so much in ags games, i believe

19) F3 key, baby
- Oh great, I'm stuck in colonial times, tentacles are taking over the world, and now the toilets backing up.
- No, I mean it's really STUCK. Like adventure-game stuck.
-Hoagie from DOTT

TerranRich

#2
1) There IS string support. You can have arrays of strings. Search for it on the forums. You gotta use "char"

2) There are loops. Use "while". It's good enough.

3) No need. This has been brought up before.

10) Use a button, silly!

15) I think this is on CJ's list. :)

16) Might be useful!

Also, just a note, since you are new to AGS, you should've waited quite awhile until making suggestions. Half of these can already be done, some others can be implemented using plugins or work-around solutions. Usually members tend to wait awhile until making suggestions.. :)
Status: Trying to come up with some ideas...

stuh505

#3
Quote8) 300 is not the real room max, its just stated as that, since all rooms above it will not have its state saved when loading it again(when playing)
room ints will still work

can you elaborate on that explanation a little?Ã,  not quite sure what you mean

Quote19) F3 key, baby

thanks

Quote9) cant you just make a button, set its image, and then not have it have a function?

hah, i should have thought of that.Ã,  still it wouldnt be much work and it would be more intuitive.Ã, 

most of the other points you guys brought up fall under the same category...possible, but unintuitive, and less efficient for the programmer.Ã,  my understanding was that pumaman wanted to make this into a commercial product, which is why i am suggesting ways to make it easier and faster to use even if some of those things are already TECHNICALLY possible

MrColossal

when did CJ say he wanted to make AGS commercial?

That one thread was a joke, an April Fool's joke and he stated it a few times.

12: I fail to see why you can't just add the box to the image of the button?

13: What I'd do [so I could move diagonally] is just use invisible 1 pixel characters and use movecharacterdirect on them and set the overlay to their x and y with offset so that i'm moving their center
"This must be a good time to live in, since Eric bothers to stay here at all"-CJ also: ACHTUNG FRANZ!

Sylpher

A simple yet useful suggestion.

1. Spend a bit more time in the engine before making a suggestion.

(Time counted in months)

(If you ponder the nature of this seemingly rude but more accurately setting things straight post. Take a look at the Todo list included with AGS. If you still don't get it there may not be hope.)

(Okay to honestly explain. Half of your "suggestions" are either unexperienced mistakes in the engine or trying to solve a problem the way you want it to be solved rather then using an already efficient solution. I don't mean my post to discourge suggestions cause nobody can really turn them away except CJ but I mean.. blnahgah)

Pumaman

Quote from: stuh505 on Sat 15/05/2004 03:38:10
1) complete String class support (including arrays of strings)
2) for loops
3) switch statements (i must have hundreds of "if=0 / if=1 / if=12 / etc)

Whilst I understand why people want these, they are low priority because workarounds are already available. I prefer wherever possible to concentrate on adding new features for things that are currently not possible to do. That's not to say it won't happen, just that it won't happen yet.

Quote
4) infinite string capacity (or at least 1000 chars).Ã, 

This is a tricky one - on the one hand, I don't want to make the strings too large or it wastes memory - but on the other hand, they've got to be big enough to handle what most people want out of them.

I thought originally that 200 chars would be plenty, but have come to realise lately that it's actually rather a limitation. I am considering how best to resolve this.

The best solution would be to change strings from fixed-length buffers into dynamically allocated pointers, but using pointers adds a large layer of complexity to the save game mechanism.

Quote5) increase maximum character length for text boxes and text labels to whatever maximum string size is.Ã,  even if you do not choose to increase the 300 char string limit, you could at least remove the extremely low cap on the text box / tex labels.Ã,  this is causing some real problems in my game because I'm trying to display descriptions for different parts of my guis when they click there, but i can only get in about 1 sentence worth of description :/

This is already the case. Labels and text boxes have a maximum length of 200, just like the max string length. However, because text boxes do not scroll you can only fit as much text as is visible into them.

GUI labels, on the other hand, assuming you've drawn them tall enough, can display 200 characters without problems.

Quote
6) Be able to save with errors…sometimes we don't have time to debug it when we have to leave the computer!

Fair comment - at least the Quick Save option, which doesn't attempt to create the EXE, should allow this.

Quote
7) when deleting objects from a GUI, don't automatically rename all objects with subsequent labels…then all the code must be changed!

Hehe yes - I hope you understand now why there are no options to delete characters, views, dialogs, etc  :)

Quote
8) remove the room maximum of 300 (i havent gotten there yet but this project has more than 300 areas and i dont wanna split the game up into 2 parts), allow rooms to be named anything, and even if you choose not to remove the 300 room cap, STILL allow rooms to be numbered greater than 300 please!

You can have up to 1000 rooms, but any numbered >300 will not have their state saved when the player leaves the room. This basically means that room script variables, object positions, etc will all be reset to their default values when you leave the room.

Quote
10) new GUI object: dropdown list box.Ã,  similar to the list box, only when you click the arrow it expands...this could allow more compact GUIS because if you want a list box to take up a small height than its difficult to view the contents you need to scroll too much.

I can see how that would be handy - would anyone else find this useful?

Quote
11) function to gradually change music volume over a specified time duration to a new volume setting.Ã,  ie, FadeVolume(int targetvolume, int time)

Again, since this is quite easy to do by scripting volume changes in repeatedly_Execute, it's low priority.

Quote
13) function to gradually move overlays similar to the object move command.Ã,  i wrote a function to do this myself, but it can only slide them vertically/horizontally.Ã,  sliding diagonally would require use of decimels, sqrt's, and powers.

I think this is a bit too specialized to add as a function. However, adding sqrt would be useful and has been on my to-do list for ages.

Quote14) function to get coordinates of graphic overlay.Ã,  REALLY need this one, and its so easy.Ã,  you have a function to SET the coordinates but not one to GET them! (this makes my slide overlay function a bit crusty as well because they need to already have saved the coordinates to some global variable to use it..)

Sounds reasonalbe to me.

Quote
15) support for decimals, powers, and roots

Floating-point numbers would open up a whole big can of worms. Originally when writing the script engine I considered this, but decided that they weren't really necessary for a scripting language.

There are 'workarounds', such as multiplying your integers by 1000 and then doing the calculations - MOD by 1000 to get the fractional part of the result.

Quote
16) ability to duplicate a GUI and give it a new name (if multiple GUIS are very similar this way it doesn't need to be made all over again)

I guess I could add this - but how often would people use it? Is it worth the effort?

Quote
17) allow built in support for multidimensional string/char/int arrays.Ã,  this can be done, as shown recently by indexing over a 1d array, but it shouldn't be so cumbersome...esp for 2d arrays which are used SO much.Ã,  and string arrays are a MUSt.

Again, because these are fairly easily done with the workarounds, it's low priority.

Quote
18) allow integer arrays to be defined at declaration.Ã,  i have probably 460 lines of code dedicated to setting each element of an array, and i dont want to load it by text file (i want it all condensed into the exe and i dont want to bother with text parsing).Ã,  Ã, this is one of my biggest requests also.

While I appreciate how annoying this is in your situation, generally speaking people don't initialize arrays with a large number of static values - in fact, I don't think I've had a request for this before. I'm not saying it couldn't be added, just that it's not a popular enough request to make it worthwhile.

Quote20) SetTextBoxColor(int color) function.Ã,  i am displaying damage in a text box and i want the color to change based on the damage type (green=poison, blue=psychic, etc)
21) SetButtonTextColor(int color) function (could be used to represent an inactive button among other things)Ã,  an inactive button COULD be done by changing the button image to grey using SetButtonPic but the customary way in windows we are used to is grayed out letters not background.

These sound reasonable enough requests to me, I'll add them to my list.



..

Quote6) Be able to save with errors…sometimes we don't have time to debug it when we have to leave the computer!
Plz.. Plz... Lol... How about a box like Do you want to correct it now? And you have the choice to save anyway.
I did a lot of work on some interfaces once  and made an error in one of them, I couldnt save cos of it and I oculdn't find the error. So I lost all my work when I had to go.

stuh505

#8
Pumaman: I completely understand that you don't want to spend your time adding a lot of new things just for ease of use.  The three that you added to your list will be quite heplful though, thanks.

Colossol:

Quotewhen did CJ say he wanted to make AGS commercial?

That one thread was a joke, an April Fool's joke and he stated it a few times.

No kidding?  I saw the thread, read a few replies...it didn't seem like a joke, I'm not sure where it is now but it's cool to hear that it will remain free.

Sylpher:

Quote from: Sylpher on Sat 15/05/2004 08:37:38
A simple yet useful suggestion.

1. Spend a bit more time in the engine before making a suggestion.

(Time counted in months)

(If you ponder the nature of this seemingly rude but more accurately setting things straight post. Take a look at the Todo list included with AGS. If you still don't get it there may not be hope.)

(Okay to honestly explain. Half of your "suggestions" are either unexperienced mistakes in the engine or trying to solve a problem the way you want it to be solved rather then using an already efficient solution. I don't mean my post to discourge suggestions cause nobody can really turn them away except CJ but I mean.. blnahgah)

Sylpher, I could offer you an equally condescending suggestion:

1) Don't post condescending replies without fully reading the post you are replying to

Observe the following 2 sentences from my original post:

QuoteSome of them would just make programming easier and more efficient, others would add new functionality.Ã,  Some of the issues I have found workarounds for, many of them not.

I'm sure you can agree that most workarounds, by nature, are less efficient for the game designer.Ã,  I guess we have a difference of opinion here...I would like to see the engine made more user friendly, and you would like the engine to take months and months for new people to get accustomed to.Ã,  Pumaman, understandably, would rather spend his time adding new functionality than increasing efficiency.Ã,  That's understandable, he's just one guy and it's a big project....but it doesn't make the suggestions unwarranted.

(And FYI you can measure the time I have been using it in months; 1.5 to be exact, and used it every day)

juncmodule

Quote from: Scuthbert on Sat 15/05/2004 12:19:14
Quote6) Be able to save with errors…sometimes we don't have time to debug it when we have to leave the computer!
Plz.. Plz... Lol... How about a box like Do you want to correct it now? And you have the choice to save anyway.
I did a lot of work on some interfaces once  and made an error in one of them, I couldnt save cos of it and I oculdn't find the error. So I lost all my work when I had to go.

That's insane, just comment out your new code dude!!

Anyway, I do agree that there should be an option, not something automatic. Could you maybe add a checkbox in the settings to disable this. I see why others would find this useful, but I would get annoyed by a box that asked me every time.

..

The thing is though, I'm not very neat when writing code, its everywhere. So I was trying to correct it when i had to go.. No time to comment out :PP

Relight

Quote

Ã,  Ã,  Ã, 7) when deleting objects from a GUI, don't automatically rename all objects with subsequent labels…then all the code must be changed!

Ã,  Ã,  Ã, Hehe yes - I hope you understand now why there are no options to delete characters, views, dialogs, etc


I have a feeling I was the one who asked for lots of delete possibilities, some of which have been implemented. At the time, I said, why not just leave the # for whatever you delete blank, and then the next new item fills in that #, instead of re-numbering everything if you delete something. The workaround is that some things can be called by a name now, such as GUIs, but I still wish the re-numbering didn't happen and it worked the other way. I don't remember what Pumaman said at the time about how much of a pain that would be to implement.

Scorpiorus

#12
Yes, I think the main reason why CJ didn't make it that way is that we can refer to them by names.

Still, without renumbering there is a problem if we would like to change a property for each character, for example:

int id = 0;
while (id < CHARACTERS_MAX) {

   SetCharacterSpeed (id, 3);
   id++;
}

then we would need a function like IsCharacterCreated(int charID):

int id = 0;
while (id <= LAST_CHAR) {

   if (IsCharacterCreated(id)) SetCharacterSpeed (id, 3);
   id++;
}

SSH

I would find a "duplicate GUI " feature handy, and a "duplicate button", too. In fact a general GUI cut/paste feature...


As for infinite strings, am I right in thinking that CJ once siad that the String manipulation functions assume that strings are 200 long... it would be nice if they could cope with char longsting[1000] so that the usser can specify how long the strings need to be. Or have a global setting MAX_STRING_LENGTH...



12

Sylpher

Well, bravo stuh505 you answered in an educated and somewhat polite manner. I am impressed..

[CUT: crap]

My point still stands that there are many more important features that can and should be taken care of first. The reason I singled you out amungst the growing list of demands in this very forum (Yeah, you people.. chill out) Is the sheer amount of suggestions you listed.

I did not mean to direct it personally at you and I am sorry I did.. It just seems every couple of months people start suggesting loads of features that are not needed and the todo list gets so bloated many important or much more useful features get over shadowed over making things 'easier' and 'more efficient' (The same mentality that has made Windows and AOL such great pieces of software over the years).

Again. I am sorry I came off rude. It was directed more generally and I should have pointed that out the first time.

stuh505

Sylpher,

Yes, it is like me to make suggestions...but nobody else seems bothered by it so far.  And if Pumaman doesn't have the time, then he won't read them or implement them, it's as simple as that.

I understand your concern for new features being added first...but I believe your comments are misguided.  I don't expect all of my suggestions to be added.  But by listing all of them, it is possible to recognize overlaps between the wants of different users and more accurately determine which features are wanted most by the AGS community.  If we remain silent than no one knows.  The result of my post is that 4 new features have been added to the list:

1 - GetOverlayPosition
2 - SetTextBoxColor
3 - SetButtonTextColor
4 - alpha channel support for graphic overlays

So, as you can see...all of these functions are relatively quick and easy to implement, and offer new features (except for #1).

Your apology is accepted (even though you chose to condescend me further...)

Radiant

I would like to second request #18 (initializing arrays of integers), i.e.
Code: ags

int blup[5] = { 3, 5, 8, 9, -1 };


I appreciate they could have been read from a file, of course, and one can use a string instead. But still.

Ryukage

Quote from: SSH on Mon 17/05/2004 13:25:03
I would find a "duplicate GUI " feature handy, and a "duplicate button", too. In fact a general GUI cut/paste feature...

I as well.  I think most people make custom save/load guis once they're advanced enough, and those usually differ only by one or two controls.  And the custom command gui I've been working on for my project involved nearly a dozen completely identical buttons.  I think I have also occassionally wished for the ability to copy controls from one gui onto another.  So a full copy & paste would be excellent, but "duplicate GUI" and "duplicate button" at least would be useful.

Initializing arrays would also be useful to me.  I've never requested it before because
A) It's not absolutely necessary;
B) Arrays aren't an official feature anyway, so I figure there's not much chance of getting them enhanced; and
C) I'm not working with AGS very seriously just yet, so I don't really have much business making suggestions.
Ninja Master Ryukage
"Flipping out and kicking off heads since 1996"

SMF spam blocked by CleanTalk