AGS 3.3 Wishlist

Started by subspark, Tue 09/12/2008 03:34:03

Previous topic - Next topic

Gepard

function SkipTimer (int timer, int loops);

:)
Drink up me 'arties! Yo ho!

Dataflashsabot

is it just me or is ags getting a bit off-putting to newbies? i mean now you HAVE to learn to script before being able to do anything at all. on the other hand tho, the interaction editor was way too slow for advanced users. maybe some sort of beginners mode?

Nickydude

QuoteThe ability to name walkable areas, walk-behinds and regions. So instead of

Walk-behind area ID 1
Walk-behind area ID 2
Walk-behind area ID 3
Walk-behind area ID 4
Walk-behind area ID 5
Walk-behind area ID 5
...
...

You can have something like:

Walk-behind (ID 1): Flowerpot
Walk-behind (ID 2): Open Door
Walk-behind (ID 3): Left Arch Piece
Walk-behind (ID 4): Right Arch Piece
Walk-behind (ID 5): Low Wall

or even:

WB[1]: Flowerpot
WB[2]: Open Door
...
...

;)
Best Regards,
Nickydude
www.madladdesigns.co.uk

AGS Beginner's Guide - All you'll ever need!

Vince Twelve

More walkable areas please!  I've run into this several times thanks to Ivy's crazy ideas!

Or the ability to draw walkable areas at runtime.  That would be wild!

HammerBlade

Quote from: OneDollar on Wed 10/12/2008 13:05:01
Multi-dimensional arrays?

Ditto to that. 

I've been wanting to create databases for arch-typical RPG elements (monster databases, character progression, inventory, etc.) and have had to write workarounds involving long lists of definitions as a sort of "index" in place of a 2nd (and sometimes 3rd) dimension, which involves having to come up with new unique nomenclature for each index, coupled with a string of "if" statements metaphorical of an individual element of another dimension.


monkey0506

I still fail to see the incredible difficulty (and difference) between:

Code: ags
int arr[5][10];

arr[3][7] = 42;


and:

Code: ags
int arr[];

arr = new int[5 * 10];

void SetArr(int a, int b, int val) {
  arr[(a * 10) + b] = val;
}

SetArr(3, 7, 42);


Obviously you would need to create a custom function, but you could even do it generically like this:

Code: ags
int[] SetArray(int arr[], int a, int b, int b_max, int value) {
  arr[(a * b_max) + b] = value;
  return arr;
}

my_array = SetArray(my_array, 3, 7, 10, 42);


Clearly it is a bit more complex than the built-in method...but it's not honestly difficult to work around when you understand the multidimensional indexing logic.

Khris

#86
Regarding that, two-dimensional arrays are (almost) possible already.

Code: ags
// header

struct twodim {
  int b[10];
}

import twodim a[10];

// script

twodim a[10];
export a;


The result is a global array of 100 elements in this case, a[0].b[0] to a[9].b[9]. Granted, it's not as short as a[0][0], but way better than doing this via functions.
Plus, you can name both dimensions, e.g. col[X].row[Y] which increases readability.


On topic:
I'd love to be able to replace existing functions (ideally by simply re-declaring them). I'm pretty sure this has been brought up already some time ago, don't know what happened to the suggestion then though.
It would really help people who want to use modules for existing games without having to edit, say, hundreds of .Say lines in all scripts manually.

EDIT:
It's high time the tutorial explained how to use player.ActiveInventory to find out which InvItem was used on a hotspot/object/character.
People open a thread asking this like ten times a month. :=

Joseph DiPerla

I actually think that these are minor suggestions easy to implement. Most are not necessary (But the idea of it WILL be implemented in my game one way or the other), but would help with having cleaner code, faster development and more convenience. Hope they are feasible. As I work on my Simpsons game and add more features to it and the template, these little things stand out to me.

My suggestions are:

1) Having an option for changing a character View when the mouse is over him/her without scripting it. --Its not essential, I can use getscreenatxy, but for less complicating code, an option like this would be nice. I want my character to interact with the mouse for a better user experience. And I think an animation of when the mouse is over my character would be far more fun.

2) GUI Preview window. I use mouseover images on the gui and I would like to be able to see what it looks like when the mouse is over the GUI without having to test the game. Can this be done?

3)Choosing Random idle/Blink/Thinking view. Instead of having it scripted, can we just specify multiple idle views that are comma seperated and the idle view will play one randomly?

4) Instead of having to code how long it takes to play the idle/Blink/Think views, can we just have an option where we can put it in?

5) Can we also have an option where the Blink view can have an option where its displayed at all times not just during speech?

6)Views-- Can we just have an option to copy one loop to the next? Most of the time my Right loop is a copy of the left loop just flipped. So rather than have to put in all the frames, can we just have a copy function?

7) Can we have an option for a character that allows his eyes to follow the mouse? I know, its stupid, but I feel it adds better user interactivity and makes it more fun. Basically an option called "UsersEyesFollowMouseCursor?" with a true or false option. And then you just create a view as normal. Then when you move your mouse to a certain part of the screen, the characters animation will play accordingly. Basically its just to draw the loops where the characters eyes follow the mouse.

8) I always make this suggestion as it would simplify room area editing: Point Plotting. You click one spot, then you click another and a line is drawn from one point to the other and you continue until the last point meets the first and then fills in the area within the points. Gimp 2 has an option like this called "Paths Tools" only its for creating selections. Basically I want that concept, but to draw and fill in area's in the rooms.

9) This is another of my suggestions I always ask for: Regarding dialogues, can there be an option when you add a dialog option that says "show on all dialogs"?  In other words, we have a "say" option and a "show" option in the editor. But this option would allow that line to be displayed on all dialogs at the bottom. Is that possible?

10) I dont know if this is possible at all, but it is a nice feature to have. Instead of just assigning an image to an inventory object, can we also assign a view to it so we can have inventory that animates? Good for carrying cell phones that ring, etc...

------------------------------------------------------------------------


SUGGESTIONS FROM OTHER USERS THAT I LIKE:

Vince Twelves suggestion: I would like an IsWalkableAreaEnabled function.  I just came upon a place where I wanted to do this and was surprised that it wasn't in there.  Not sure about a work around yet...

RickJ's Suggestion: When the editor opens a game made with an older version it would be nice if the message say what the older version actually is instead of having to guess.I would be even better if the user was asked if he would like to open the selected game in that older version or at least asked if he would like launch that older version (provided the older version was installed)

ProgZMax: I think I suggested this a long time ago, but I think it would be highly useful for most people if there was a property for characters that let you specify their own speech font number, which AGS would internally switch to during the say functions.

NickyDude: Sorry if this has been asked, but an extra perimeter to the .Say command to specify the time the text is displayed on screen

F1ak3R: Seeing as you can now use ordinary code in the dialogue editor, and that code can have errors in it, which are reported in the usual way, I think it would be nice if the dialogue editor had numbered lines like the script editor does.
--------------------------------------------------------------------------------------------



SUGGESTIONS OVER TIME TO BE IMPLEMENTED(in fact I am not even expecting this to be implemented at all, but they would make life easier for ALL of us, I'm sure):

1) Patching system-- If I created a template or game, and I update it several times, I hate to have to upload it each time, or even to have to have my users download it again. If a file is about 100 megs to download, its a pain. Especially like games we saw recently updated like "Kings Quest 1". So this is an all around good feature for the developers as well as the gamers.

2) This would be very useful to me, but at the same time I can see this being a pain in the butt to code. None-the-less, I am putting it out there as a suggestion at some point. Object and character scaling that is not specific to a region or hotspot. Perhaps in the character and object editor itself add an option to enter a scale size. Even a script that will change the scale size. Helpful to use rather than editing an image and shrinking it and useful to do a Sam and Max effect where they are in a house where they keep shrinking down and enlarging and so forth.

3) GUI transitions: Similar to the rooms transition, only applied to how the GUI Shows up. A particular transition would be a SLIDE in from Top/left/bottom/right to X Y (Mouse coordinates valid too).

4) New screen transition: SLIDE IN (Much like the IPhone). Screen slides in from left/Right/Top/Bottom.

5) Inventory Categories: Where the inventory window can only show items that belong to a certain category. Useful if some items are considered something like spells, or weapons. Basically, multiple inventories of different types. It would be an interesting feature to have, and one that I have been wanting to use for a while now.
----------------------------------------------------------------------------------------



VERY VERY UNLIKELY TO HAPPEN, BUT THROWING IT OUT THERE ANYWAY:

1) Importing and using 3D Character and object files.
2) Continued development on the Linux and MAC port.
3) Development for Pocket PC.-- Not holding my breath for this until some decent programming libraries are released for this OS. If you need a solution, you can find it here: http://forum.xda-developers.com/showthread.php?t=445396 it lists all the libraries and tips and stuff for Pocket PC Development. A good thing to is that VS now has a mobile emulator so you can develop apps on it. DirectX on Pocket PC: http://www.monocube.com/forums/about28.html
4) A basic version of the interaction editor re-implemented.

Once again, thanks for listening to my ramblings. And Chris, Thanks once again for all the hard work you put into making AGS the engine of my (And MANY MANY OTHERS) choice. And sorry once again for my suggestions... :(   
Joseph DiPerla--- http://www.adventurestockpile.com
Play my Star Wars MMORPG: http://sw-bfs.com
See my Fiverr page for translation and other services: https://www.fiverr.com/josephdiperla
Google Plus Adventure Community: https://plus.google.com/communities/116504865864458899575

HammerBlade

Okay, so the array for native types issue is a trivial one.  Because custom structs don't have dynamic array liberties like other types, however, situations crop up where a string of 'if' and 'else if' blocks of what are essentially the same code.

Such as making tables of encounters.  Declaring an encounter struct...

Code: ags

struct PossibleEncounter{
  int EnemyParty[7];   
  int TotalEncountersInTable;
};


followed by an array of encounters to represent a table...

Code: ags

PossibleEncounter Table0[ENCOUNTERS_TABLE0];  
export Table0;

PossibleEncounter Table1[ENCOUNTERS_TABLE1];
export Table1;


...forces the creation of a function which requires a tree of 'if' statements carrying essentially the same code due to the fact that ID's of the tables are tied to the variable names instead of variables values. 

Code: ags

  if (TableID==0){
    while (i<Table0[0].TotalEncountersInTable){
      TotalChances=TotalChances+Table0[i].EnemyParty[OCCURENCE_CHANCES];
      i++;
    } i=0;
    ChanceTable=new int[TotalChances]; 
    while (i<Table0[0].TotalEncountersInTable){
      while (j<Table0[i].EnemyParty[OCCURENCE_CHANCES]){
        ChanceTable[CTIndex]=i;
        CTIndex++;
        j++; 
      }
      i++;
    }
  }
  else if (TableID==1){
    while (i<Table1[0].TotalEncountersInTable){
      TotalChances=TotalChances+Table0[i].EnemyParty[OCCURENCE_CHANCES];
      i++;
    } i=0;
    ChanceTable=new int[TotalChances]; 
    while (i<Table1[0].TotalEncountersInTable){
      while (j<Table1[i].EnemyParty[OCCURENCE_CHANCES]){
        ChanceTable[CTIndex]=i;
        CTIndex++;
        j++; 
      }
      i++;
    }
  }


...Although in retrospect, maybe it would have been better to have EncounterTable as the struct name instead of PossibleEncounter, which could be implemented much more simply, thus only one struct array " EncounterTable TableDataBase[TOTAL_TABLES]" would be needed...just...Damn it, why do you always have to be right? 

I'm now terrified that if I suggest dynamic struct arrays for AGS 3.1.2 I'll immediately after have an epiphany as to why its rediculously unnecessary.

Dualnames

I wish for a small option (via script) to allow overlays to be on top of GUIs and the same option to disable that. And have that be per overlay:

Overlay*me;
me.OverGuis=true;//by default false.
Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

Papst Kasperle

I would love to have a printable Tutorial as a PDF File...
I use to print out those Instruction Stuff and do read it whenever/wherever I have time to...
And I don't like those .chm files.

Nickydude

Take a look at my sig. ;)
Best Regards,
Nickydude
www.madladdesigns.co.uk

AGS Beginner's Guide - All you'll ever need!

AdamM

Hi, I've noticed that cursors that have AnimateOnlyOnHotspots set to true, still fail to animate over inventory items in the GUI. Am I missing something, or can this be added?

Ghost

#93
Quote from: AdamM on Mon 02/02/2009 21:17:31
Hi, I've noticed that cursors that have AnimateOnlyOnHotspots set to true, still fail to animate over inventory items in the GUI. Am I missing something, or can this be added?

Inventory items do not count as hotspots, but it's possible to add such behaviour with the off self-made script. That would be something like a beginner/medium level technical question, and should go into the matching forum section.
(PMs are the way to go  :) )

I'd like to mumble my old line here again: Extend the sorting/renumbering functionality of ROOMS to characters and inventory items.
Please? With a cherry on top? With SPRINKLES? Made of money?

Khris

I'd find it really helpful if one could

a) change a bunch of sprite numbers at once (or at least disable the warning message when doing so)

b) input a slot number when importing a character so the sprites get that and all subsequent ones

SSH

When you've got lots of characters, the character list can get a bit unwieldy. Would it be possible to have character folders, like there are for views?
12

freshpaint


Shane 'ProgZmax' Stevens

I suggested folders for all the sections quite awhile ago, and CJ has added support for quite a few of them.  I'm sure he'll get around to it eventually, though he's already done the most important ones (imo).

SSH

Trying to write a "skip chapter" gui button for the AGS Awards ceremony, I found that you can't script up a trigger for Skipping a Cutscene. You can fake it for various things, but you can't skip already displayed foreground text from a  script. So basically, I had to re-write the whole speech display code in scripting in order to get what I wanted! Fortunately, most of the work was pre-done in the GuiDialog and Hypertext modules, but it would be nice to have some functions like:

Code: ags

SkipCutscene();
CancelForegroundSpeech();

// oh and one i''ve asked before:
GetSpeechStyle()
12

AdamM

It took me fifteen minutes to work out that the reason I was getting sprite and room background errors was because I had somehow managed to open a second process of AGS editing the same game. Perhaps AGS could detect and warn you that you're already running it when you boot it up?

SMF spam blocked by CleanTalk