Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - monkey0506

#121
Okay so according to the official bug report the scaling issue is reportedly resolved. I tried looking at some images in the CL and I can't tell.

If I zoom in on a pixel image by pressing Ctrl and + then it seems like it's better. But I could be imagining it. Can anyone verify if this is now operating the same as FF2 did? Or is there a hidden setting somewhere I know nothing about?

Although it shows resolved I couldn't find any information on what was actually done about it. :-\
#122
I was just trying to load YouTube when I got a 500 Internal Server Error. Apparently YouTube has this in their error page:

QuoteSorry, something went wrong.

A team of highly trained monkeys has been dispatched to deal with this situation.

It made me absurdly happy to see that happen.
#123
I actually stole the idea for this directly from Lego Indiana Jones. I was playing it and in Barnett College there's a map and you use a magnifying glass to indicate where you want to go next. As I was playing around with it the first thing that came to my mind was "somebody should write that module," so of course, I did.

So this module creates a magnifying glass-style effect for your game. I tested it with scale factors as high as 2.65 (265% scale) and as low as 0.1 (10% scale) and still maintained 40 FPS, though in rooms with other effects, lots of characters, etc. it may run quite slowly.

It requires a GUI to display the effect and a sprite to be used as the "magnifying glass." It does work with sprites with an alpha channel so you can for example create a light blue tint over the magnified area (as done by the included magnifier.png file). However if you have an alpha channel around the outer edge of the "frame" then it will display the magnified image behind the outer edge instead of the normal background. This is due to the way that AGS handles drawing alpha channels and should be corrected in a future version. Also the only real reason it requires a GUI is for future compatibility with that, but I could probably add an Overlay mode if requested.

Download
Mirror
#124
Perhaps I'm being a bit daft, but I was wanting to do something such as this:

Code: ags
gMygui.Visible = false;
DynamicSprite *sprite = DynamicSprite.CreateFromScreenshot();
gMygui.BackgroundGraphic = sprite.Graphic;
gMygui.Visible = true;


That's a highly simplified version of what I'm actually doing but you get the basic idea. The problem is that the screenshot is being captured before the screen is refreshed to reflect the fact that the GUI was just turned off. Instead I'm having to work around it like this:

Code: ags
DynamicSprite *sprite = DynamicSprite.CreateFromBackground();
DrawingSurface *surface = sprite.GetDrawingSurface();
int i = 0;
while ((i < Game.CharacterCount) || (i < Room.ObjectCount)) {
  if (i < Game.CharacterCount) {
    if (character[i].Room == player.Room) {
      ViewFrame *frame = Game.GetViewFrame(player.View, player.Loop, player.Frame);
      int w = ((Game.SpriteWidth[frame.Graphic] * character[i].Scaling) / 100);
      int h = ((Game.SpriteHeight[frame.Graphic] * character[i].Scaling) / 100);
      surface.DrawImage(character[i].x - (w / 2), character[i].y - h, frame.Graphic, 0, w, h);
    }
  }
  if (i < Room.ObjectCount) {
    if (object[i].Visible) {
      int graphic = object[i].Graphic;
      if (object[i].View) { // I'm not 100% sure, does Object.Graphic already reflect this anyway?
        ViewFrame *frame = Game.GetViewFrame(object[i].View, object[i].Loop, object[i].Frame);
        graphic = frame.Graphic;
      }
      int w = Game.SpriteWidth[graphic];
      int h = Game.SpriteHeight[graphic];
      if (!object[i].IgnoreScaling) {
        int scale = GetScalingAt(object[i].X, object[i].Y);
        w = ((w * scale) / 100);
        h = ((h * scale) / 100);
      }
      surface.DrawImage(object[i].X, object[i].Y - Game.SpriteHeight[graphic], graphic);
    }
  }
  i++;
}
surface.Release();


Clearly a lot more work to try and achieve the same effect. However, I cannot use Wait in order to let the screen update. Short of that is there any other way to prevent the GUI from being seen in the captured screenshot?
#125
General Discussion / lim(sub)i->LAN
Wed 01/04/2009 09:52:04
lim(sub)
i->LAN
the LIMit of the data speeds of a given internet service provider's SUBscriber as Interference approaches their LAN. Except not really*.

Subliminal messages. What is it about the human psyche that makes it such that we can so easily fortify ourselves against that which we perceive to be obvious, yet never even realize we've left the back door wide open? Clearly if something is apparent then it's simpler to consciously decide for oneself what to think of it; however the answer is still somewhat lacking when really faced with the grim reality of how malleable the human mind truly is.

*
Spoiler
lim(sub)i->LAN = lim sub i lan = sub lim i nal
[close]

I'm a victim of my own frivolities. I am a fan of the Kingdom Hearts game series. I own both KH and KH2. The last two weeks however it's evolved from an issue of moderate fandom into a state of complete blithering obsession. I think about the game while I'm at home, while I'm at work, while I'm driving...and I can't seem to get it out of my mind. Inexplicably, I don't know why. But it has driven me to the point that I've taken up collecting the KH Trading Card Game, and purchased a rather nice scroll/wall poster. But I've been contemplating the reason behind it all and I think I may have discovered the cause.

I have a habit of leaving my music player on all the time, even while I sleep. It just constantly shuffles through my library. As part of a practical joke of the parodic birthday gift variety, I happen to have the entire KH2 soundtrack saved to my music library. So, it would seem, I happened to have inadvertently brainwashed myself.

I'm not entirely certain that the damages to my mind are reparable or even that I'd want to.

Conversely to the whole argument, I haven't been running out and stocking up on My Chemical Romance, Amber Pacific, or Taking Back Sunday (the bands marked as most-listened to by Zune) merchandise. So it's possible I'm just crazy. Or I'm a closet uberfanboy who's only just coming out. Hopefully both! ...uhh...what?

So does anyone else have any experience in being brainwashed?

P.S. Despite the date, this isn't a joke.
#126
Now presenting the Stack module, which introduces vectorized, generic stacks for all your data storage needs!

stack: Works very similarly to the way an array works. Stores a set of data within a single variable.

vectorized: Means that the size of the stacks does not need to be predefined anywhere. They will grow/shrink as needed. Great for memory management and dynamic scripting.

generic: Means that the stacks do not conform to any one specific data type. You can push any/all of the following types onto a stack:
  • int
  • float
  • String
  • Character
  • InventoryItem
  • GUI
  • GUIControl
The included documentation includes a full function list and some example scripts. What are you waiting for? Download it now, fool!

Requires AGS 3.4.0.3 (Alpha) or later

ALL VERSIONS of this module are now available on Github.

Upon request, other data types (such as Hotspot, Object, etc.) could be made available. The requested data must be able to be interpreted as one of the basic data types (int, float, or String) however or the request will be rejected (i.e., File, Overlay, etc. would be out). Anything requiring a persisting pointer would also be rejected (DynamicSprite, Overlay, etc.).

25 January 2015:

The Stack module v2.0 is out! Get it while you can!

21 August 2009:

Uploaded v1.3 which is more bug fixing. Specifically String.Format has a limit on the length of the returned String, so where applicable I've replaced it with instances of String.Append (which has no limit). Further I modified the way that stack objects get pushed in to make it more secure. Previously if you pushed the same stack copy onto a stack multiple times it could potentially corrupt the internal data structure. This version completely resolves that possibility.

29 March 2009:

Uploaded v1.2a which is just a quick bug fix. Stack::GetItemsArray would request a zero-sized array which AGS doesn't like for some reason so I just put a quick check to prevent that. I also retro-conned the information below which suggested it was written today. It wasn't. :=

28 March 2009:

Uploaded v1.2 of the module which includes:

- The new functions Stack.GetItemsArray, File.WriteStack, File.ReadStackBack, and Stack.LoadFromFile.
- Improved formatting of Stack::Copy to further prevent fatal error-inducing collisions.
- Bug fix for Stack.Push where if you were specifying an index the ItemCount was still getting increased.
- Adds the data type eStackDataInvalid to denote when the data stored is not valid StackData.
#127
Okay, the code is rather long so let me explain what I'm doing. I'm creating a generic vectorized stack which can have any type of data pushed into it. What's happening is that my game is crashing with this run-time error:

Quote---------------------------
Adventure Game Studio
---------------------------
An internal error has occurred. Please note down the following information.
If the problem persists, post the details on the AGS Technical Forum.
(ACI version 3.12.1074)

Error: Error running function 'game_start':
Error: Pointer cast failure: the object being pointed to is not in the managed object pool


---------------------------
OK   
---------------------------

No CrashInfo.dmp is generated by this error, but it is completely fatal. The offending line is this:
data[i] = mystack.Pop();
In which data is a dynamic String array and Stack::Pop returns a String. The problem only seems to occur within a while loop and assigning the data from Stack::Pop directly into a String. Each line independently (i.e., just calling the function, or just setting the String to a string-literal) works normally as expected.

Here is the source. I've uploaded it for reference.

Here's all relevant code. Don't say I didn't warn you.

Code: ags
#define StackData String

String StringMergeArray(String array[], String glue) {
  if ((array == null) || (String.IsNullOrEmpty(array[0])) || (array[0].AsInt <= 0)) return null;
  if (glue == null) glue = "";
  String buffer = "";
  int i = 1;
  int size = array[0].AsInt;
  while (i <= size) {
    buffer = buffer.Append(array[i]);
    if (i < size) buffer = buffer.Append(glue);
    i++;
  }
  return buffer;
}

String[] SplitByString(this String*, String otherString) {
  String s[];
  int i = this.IndexOf(otherString);
  if ((String.IsNullOrEmpty(otherString)) || (i == -1)) {
    s = new String[2];
    s[0] = "1";
    s[1] = this;
    return s;
  }
  s = new String[this.Length + 1];
  String buffer = this;
  int lineCount = 0;
  while (i != -1) {
    lineCount++;
    s[lineCount] = buffer.Substring(0, i);
    i += otherString.Length;
    if (i < buffer.Length) {
      buffer = buffer.Substring(i, buffer.Length);
      i = buffer.IndexOf(otherString);
    }
    else i = -1;
  }
  lineCount++;
  s[lineCount] = buffer;
  String t[] = new String[lineCount + 1];
  i = 1;
  while (i <= lineCount) {
    t[i] = s[i];
    i++;
  }
  t[0] = String.Format("%d", lineCount);
  return t;
}

enum StackPopType {
  eStackPopFirstInFirstOut,
  eStackPopFirstInLastOut,
  eStackPopRandom
};

struct Stack {
  StackPopType PopType;
  protected StackData Data;
  writeprotected int ItemCount;
  int MaxItems;
  import StackData Pop(bool remove=true, int index=SCR_NO_VALUE);
  // ... and so forth
};

String StackDataDelimiter;

StackData Stack::Pop(bool remove, int index) {
  if (index == SCR_NO_VALUE) {
    if (this.PopType == eStackPopFirstInFirstOut) index = 0;
    else if (this.PopType == eStackPopFirstInLastOut) index = (this.ItemCount - 1);
    else if (this.PopType == eStackPopRandom) index = Random(this.ItemCount - 1);
  }
  if ((index < 0) || (index >= this.ItemCount) || (!this.ItemCount) ||
  (StackData.IsNullOrEmpty(this.Data))) return null;
  StackData items[] = this.Data.SplitByString(StackDataDelimiter);
  int size = items[0].AsInt;
  if (index >= size) return null;
  StackData data = items[index + 1];
  if (remove) {
    this.ItemCount--;
    if ((!this.ItemCount) || (size == 1)) {
      this.Data = null;
      return data;
    }
    StackData buffer[] = new StackData[size];
    int i = 1;
    while (i < size) {
      if (i <= index) buffer[i] = items[i];
      else buffer[i] = items[i + 1];
      i++;
    }
    buffer[0] = StackData.Format("%d", size - 1);
    items = buffer;
  }
  this.Data = StringMergeArray(items, StackDataDelimiter);
  return data;
}

function game_start() {
  StackDataDelimiter = "**STACKDATA**";
  Stack mystack;
  mystack.MaxItems = 100;
  mystack.Push(Stack.IntToData(381));
  mystack.Push(Stack.StringToData("hello world"));
  mystack.Push(Stack.StringToData("goodbye."));
  mystack.PopType = eStackPopRandom;
  StackData data[] = new StackData[mystack.ItemCount];
  int i = 0;
  int size = mystack.ItemCount;
  while (i < size) {
    data[i] = mystack.Pop(); // CRASH!
    // data[i] = "anything else"; // no crash
    // mystack.Pop(); // no crash
    i++;
  }
}


If I'm being daft in any way, please someone point it out to me so I can slap myself. Thanks. :=
#128
So completely on a whim, I clicked on this advert I saw. It was for Swoopo apparently some "new" kind of auction site where every bid increases the auction by $0.15, and you purchase bids at a cost of $0.75. I supposedly just sat here and watched someone bid on $1000 cash, and won it for just over $101, after placing 43 bids (at a cost of $32.25) still netting him over $865.

Now we've all been warned against this type of thing before, and "if it seems too good to be true..." You know the rest.

But I would be above putting some money down if I felt that I could trust I would get such absurd returns as this. So, would you trust this site? :=
#129
I'm sure I mentioned my newest roommate who was so kind as to give me my first (owned) computer. He has several hobbies from comics to D&D. One of which I've actually adopted as a hobby myself.

Magic: The Gathering is a fairly well known game (being the original trading card game). My roommate has worked in a comic book store for several months up until very recently when he quit. Reportedly working there, people will just walk in and give him cards. Mostly in trade for other cards, but sometimes just cards that he wanted/needed.

I've played extremely casually in the past, but recently started playing in (unofficial, non-sanctioned) tournaments at another local games/comic store. I have yet to place or do anything spectacular, but I highly enjoy the interaction with other people, as well as the fantasy element of the game.

But I was thinking the other day...I used to be somewhat judgmental of these weirdos I used to see around the mall (amongst other places) playing Magic all the time...it occurred to me, that I am now officially one of those weirdos! :=

People can think whatever they want about me playing the game, but like I said, it's good to get out of the house and actually do something. Not that tinkering with AGS is nothing, but honestly everyone needs a break once in a while.

And as pathetic as it might sound, prior to this, AGS was my only real hobby. So...bah.

Just thought I'd share and ask if anybody else here plays Magic. My original deck that I've played the most with is a red goblin deck. My first tournament was draft and I played a red/white deck. My second tournament was standard and I played a green elf deck.
#130
I was pretty certain I knew all there was to know about this game as it is my most favoritest game of all time. But last night I started a speed run just for fun to see how fast I could beat the game...and I think I locked myself into a walking dead situation that I wasn't aware was even possible.

In Part Two: The Journey when you have to make the stew, I rampantly dumped every inventory item I could into the pot...except it blew up before I could add the Minutes of the last meeting of the Mêlée Islandâ,,¢ PTA.

Now I find myself at a point where I have no flame fodder...Guybrush refuses to light the cereal, he says the minutes can't be used, using the fire just burns his hands, and he for some reason doesn't want to ignite the gunpowder.

I tried taking the fuse back out of the cannon but it apparently just reforms itself with the giant piece of rope.

Does anyone have any other suggestions? I've checked several walkthroughs, but none of them have provided any insight on my situation.

Worst case scenario, I just do it all again... :-\
#131
I'm using AGS 3.1.2, but IIRC this used to cause me grief on prior versions of AGS as well. I'm working with the Flashlight module, and I think I've discovered a bug...I've managed to replicate the problem several times...

In the module I'm using the DrawingSurface functions to build a Dynamic sprite based on this pattern:

Code: ags
Flashlight.ScreenSprite = DynamicSprite.CreateFromExisting(Flashlight.BeamSprite.Graphic, true);
Flashlight.ScreenSprite.Resize(FloatToInt(Flashlight.Radius * 2.0), FloatToInt(Flashlight.Radius * 2.0));
Flashlight.ScreenSprite.ChangeCanvasSize(System.ViewportWidth, System.ViewportHeight, Flashlight.X, Flashlight.Y);
DrawingSurface *surface = Flashlight.ScreenSprite.GetDrawingSurface();
// draw rectangles on each side of the sprite
surface.Release();


The problem is this, if the module is set to GUI mode:

Code: ags
Flashlight.AGSGUI.BackgroundGraphic = Flashlight.ScreenSprite.Graphic;


And then in my updating method which is called from repeatedly_execute, the GUI is turned off (whether it was on or not):

Code: ags
Flashlight.AGSGUI.Visible = Flashlight.Enabled;


Then it goes all weird.

What it's doing is this:

  • If the very first sprite (BeamSprite) drawn has an alpha channel and then I later try to switch to a sprite without an alpha channel, I get this:



    The non-alpha sprite is missing entirely. If I save the DynamicSprite to a file it appears fine (tested with both BeamSprite and ScreenSprite).

  • If the very first sprite (BeamSprite) drawn does not have an alpha channel, anything I draw that has an alpha channel then becomes flattened.

    I've spent the better part of the last 2 hours debugging my code and I can't find anything wrong with it. As a matter of fact now it appears that I can only use alpha sprites if the GUI has been explicitly turned off, otherwise they're all now being flattened. But if I do turn it off, then non-alpha sprites disappear entirely. >:(
#132
Is it possible to play a character's speech in a non-blocking fashion? I'm trying to take advantage of the built-in voice-speech methods while displaying the speech in the background and running the speech animation (non-blocking).

Display seems to prevent the animation from getting run, and Character.Say prevents the Overlay getting created. Further, both of these block the game.

Now a Any suggestions?
#133
General Discussion / Silly Beginners...
Wed 31/12/2008 18:18:09
I was just toying around in AGS when I looked up and I saw this...it made me chuckle greatly:



P.S. The filename is "absurdlyIMMATURE" haha.
#134
General Discussion / Only a month...
Thu 18/12/2008 20:55:41
Just in case you didn't all notice....:P...I've been inactive for the last month (I've logged in a couple of times but not really posted anything). My roommates all (3) moved out, taking their computer with them. I now have 3 new roommates, one of which felt it would be a good idea to give me a computer. So...for the first time ever...I now officially have my own computer.

I spent last night formatting, installing Windows XP Home SP 1, installing updates (SP2 ughhh...). Today I bought a mouse and speakers the only thing missing from the set. I've just installed AGS 3.1.1 Final and now I'm attempting to retrieve the files that I had backed up off my previous roommates' computer so I may begin plaguing the forum with half-finished modules once again. :=

Oh, BTW 1.66 GHz AMD Athlon, 512 MB RAM. It's functional... ;)...now I just need to download some DVD playback drivers so I can watch my movies....
#135
The dialog_options_mouse_click function is a bit misleading IMO as the name would seem to suggest it gets called when you click the mouse on a dialog option. Instead it works if you click outside of any option...

I would actually find it useful to be able to run additional scripts when the user selects a dialog option. Or at the very least be able to check whether a dialog option has been used (read). I was actually trying to implement a custom system for tracking whether the option has been used so that I can make use of the game.read_dialog_option_color in my custom dialog rendering script. Without the ability to capture a dialog option click and/or test whether an option has been used the property is useless to custom dialogs... :-\
#136
General Discussion / T-Mobile G1 with Android
Wed 22/10/2008 00:04:40
I don't know if I mentioned it but I now work indirectly for T-Mobile who will be officially launching their new phone the G1 tomorrow. As such I've been given the opportunity to play with this phone. It has a full touch screen, track ball, and full QWERTY keyboard. It's pretty nice. We've also collaborated with Google in designing the phone and it has lots of built-in features. Basically I just wanted to post from the phone. Also it uses the open-source Android platform which seems nice.
#137
Critics' Lounge / WIP: Pixel art attempt...
Tue 21/10/2008 07:03:25
There's a long-standing running joke of sorts with a friend of mine and the gifts I give him for his birthday directly involving Kingdom Hearts 2. So I was thinking that maybe it's high-time I actually got around to making a game with this program already.

My biggest hindrance has always been graphics, but I thought I'd bite the bullet and give it another shot. They don't have to be particularly great as much of the game is going to be in parody of the official title.

Updated version


2x

Original

I'm not trying to work within any specific palette, but I don't want the number of colors to get completely out of hand. I don't really know what I'm doing here, especially as far as shading, so this is what I've got. I also cheated somewhat because I had no idea where to start, so I scaled the image down and did a paint-over. Here's the source image:

http://i.neoseeker.com/ca/kingdom_hearts2_conceptart_1KxWO.png

His arms, legs, and hands I did over completely, as well as the coloring on his hair.

Any suggestions would be appreciated.
#138
I did a bit of research to ensure I wasn't being daft, so I'll quote my source:

QuoteIn Discworld, the mouse cursor is an intelligent 'sparkly thing', which leaves a trail of stars behind it as it moves...
Nick Fenwick, <http://www.mismatch.co.uk/discworld1.htm>. Retrieved 18 October 2008.

For the record, as of this writing AGS doesn't allow alpha-channels to be copied via the DrawingSurface.DrawImage function onto a transparent background (it flattens), so they won't work.

As for the name of the module, it's in tribute to one of the greatest movie-films of all time, Donnie Darko. If you've seen the film, you'll know all about it. ;)

Requires AGS 3.0.2 or higher!

v1.02 Update:

Fixed the bug if the x- or y-coordinate of a "spark" was 0, thanks to Ghost for the report! Also added gravity and wind to allow for more dynamic "spark" animation, thanks to ProgZmax for the suggestion! The demo has also been updated and now has example usage of gravity, wind, and both modes (pixel and sprite).

Also removed demo code from the body of the module (for example, turning debug mode on).

v1.01 Update:

Added support for sprite "sparks" loaded from a view. Two important notes are that I have not done extensive testing of sprite mode and it could quite probably slow down the game, and also that alpha channeled sprites will not work properly as "sparks." This is due to a limitation in the DrawingSurface.DrawImage function. Further, the demo game has not been updated as of this release, so to see sprites as sparks you'll have to try it out for yourself.

v1.0

This is a very preliminary sort of cursor animation, using single-pixel "sparks" in the same way that the Discworld cursor would leave a trail of stars. It currently accepts a primary color as well as a deviation parameter to allow multiple color sparks. If this module "sparks" enough interest, I may look into expanding it to use sprites instead of just single pixels.

Download the module
Download the module+demo



#139
Why Your Game Is Broken:
Part X: RTFM!

a.k.a. Part Zero: You're A n00b!
a.k.a. Part -1: You Posted In All Caps!
a.k.a. Part Infinity Billion Plus One: You're still a n00b!


In this, the original, uncensored, unofficial, undocumented, unsupported, somewhat superfluous, completely ostentatious edition of Why Your Game Is Brokenâ,,¢ we will be discussing the number one primary cause of all broken AGS games, especially those that were never released! So sit down, shut up, and strap in because this is gonna be a bumpy ride.


I just joined the forums.

Congratulations. You've managed to prove that you are a human being or at least equivalent thereof enough to supply all the required information to register an account. Just to be current I have reviewed the process required to register an account. One of the first things you must do in order to register is to take a very simple quiz.

This quiz is not anything extravagant. It won't give you your IQ score at the end. It's just a method of trying to weed out trolls, bots, and morons. The problem is it doesn't work. Mostly you're just looking for the longest of the answers. Aside from that you might have to use a bit of logic and or a reading level equivalent to about that of a 5th Grade US student...Are You [As] Smart[ As] a 5th Grader? anyone? Most of the contestants are at least capable of selecting an answer in any case.

It's not to say we don't appreciate new members. A new face is always welcome. But this is not a defense if you break the established forum rules and customs! Obviously though if this applies to you, then you haven't read the quiz to register, you haven't read the rules, and you've thoroughly made sure to make no attempt to solve the problem yourself before demanding someone assist you. As such, I'll try to make this a bit more graphical. Perhaps the pretty pictures will catch your attention.

IT DOESN'T WORK!!!11 >:( >:( >:(

There's several things wrong with this. First off, it's in all caps. That's likely to get you reprimanded at minimum, and made fun of at best. Next you're not holding down the Shift key quite long enough while mashing the '1' key to produce the '!' symbol. Not that you should be repeating that key that many times anyway in a post, but it's just plain silly anyway using a number as a punctuation mark. Following that there's the issue of emotispamming. There's really not an excuse to repeatedly use the same emoticon more than once or maybe twice in a row. They're there for a reason, cluttering your post with images is not the reason.

The final thing wrong with this is that it does not describe the problem. Anytime you create a post you should have a well defined problem than you need help with as well as what you've done to try and resolve the issue yourself. But enough seriousness, time for some pictures! Once you've got AGS downloaded and installed, let's take a look at step one!



That's weird, it looks like that says don't post. If I don't post how am I supposed to get help?

This may strike you as odd, but your first line of defense in the battle against ignorance is yourself. If you're not willing to take some time to teach yourself, nothing anyone else can say is going to force you to learn it. You have to at least be willing to try. So the first thing you'll need to do is open your AGS folder, which should look reasonably similar to this:



Obviously you wouldn't have this Madden style magic marker going all over the screen, but that's there for clarification. We are not going to open the editor yet. The very first thing you need to know about before you ever even think of touching the editor is the help file. This is the first resource you will reference in regards to 99.9% of your issues when starting out using AGS.

At the very least you should take the time to familiarize yourself with the layout of the help file before you start using AGS. It will help you to be able to easily find the correct page when you need it, and in so doing can help you to assist yourself in solving many of your own problems with AGS.

One of the most important things you'll need to know about is the three different ways you can browse through the help file: Contents, Index, and Search.

Contents


When you select the Contents tab, you will see an itemized list with all of the articles in the help file listed in an easy to navigate directory tree:



If you have a general direction where you're trying to go this can definitely help to point you in the correct direction. For example, if you have a Scripting question you would open the Scripting tree. You can then work your way through the tree to find the appropriate help entry. If you cannot find what you're looking for however, don't fear there's more to the help file yet!

Index


If you know what you're looking for and you weren't able to find it in the Contents, or just want a faster method to pull it up the Index is a great option. The index contains a list of every page in the help file, listed by the title of the article. You can also type in a search term and it will automatically seek to the nearest page title. So if you're looking for information on blocking scripts and you type in "blo" you've already typed in enough to identify the article, "Blocking scripts, explained." So if you have an idea what the title of the page is it's definitely a great place to look. If you have no idea whatsoever what the title of the page would be, these two options haven't been much help. But there is one last option within the help file...

Search


This can often be the most useful option in the help file. Many times you don't know the exact title of the page you're looking for, so the other two options don't provide much help. But with the search function you can seek any page with a specific search term. Here I've done a search for articles related to "blocking" and found several pages with the word "blocking" within them. Based off the results I now have a better idea what page I'm looking for. If I'm still not completely sure, I can still look through the pages to find the specific answer I'm looking for.

What if I still can't find what I'm looking for?

Unfortunately even with all the great options the help file has built-in to assist you in finding the correct page, you may not always be able to find the help you need. Our next step is to open the editor. If you haven't yet started a game, that's wonderful. Go ahead and start your first game project. We won't be doing anything with it yet, we're only opening AGS so I can show you another self-help option.



AGS has a Help menu, the first item of which is Dynamic Help. Dynamic Help is, exactly as it says, a dynamic option to further assist you in finding that right page in the help file. What it can do is depending on where you are in AGS it can actually try to direct you to the correct page in the help file. Depending on your question it's not always a fail-proof solution, but it can be a major boost in the right direction.

This isn't helping. Some help file that is!

While the help file is your first resource to contact if you have a problem or question about AGS, it is not an all-inclusive help solution. There are other resources available that you should contact before you click that Post button.

The AGS Wiki and Beginner's FAQ


The AGS Wiki is a wiki based around AGS obviously. It contains many articles that can help you discover answers to questions you may have about AGS, so it is definitely recommended that you check it out and look over some of the articles there. It is also the location of the Beginner's FAQ (BFAQ) which are a set of frequently asked beginner's questions that may or may not be easily answered in the help file. You can search the wiki as well so if you're not sure of the title of the page you can search for words within the article to see if there are any relevant articles.

The Forum Search


If you click on "Search" at the top of the forums, right beneath the AGS banner, you will be taken to the forum search which will allow you to search through the forums. This is often the most important step, but very often the most neglected one. Very often new users will have a simple question that they would like a quick, easy answer to. If they use the forum search, they often will find that their question has not only been asked, but has been answered before.

You can enter keywords, search for posts by a specific user, sort by date, relevance, and much more with the forum search. It is a very useful tool for finding posts in the forum related to a specific question or issue.

I've done all that and I still don't have an answer!

If you have completed all these steps and you still haven't found your answer, you are now qualified to post in the forums. You should at this point have:

- A well formed question. Simply saying something such as "how do you do scripting" or the like is not a well formed question. There is actually a scripting tutorial in the help file which should have been the first resource you looked to. If you have a specific question, try to be clear what you are asking.
- The resources you have used. Have you read in the manual? The BFAQ? Have you searched the forums? If you've done this and have missed the answer it will say much more for you than if you are simply asking for the answer without having done anything to try and resolve the issue yourself. In short, the more you do to try and fix it yourself, the more willing we will be to try and help you get your problem resolved.
- Any relevant scripts, error codes, or screenshots. Any time you are asking a question regarding a specific script, error code, something you are seeing in AGS, etc. it is best to provide as much detail as you can. If your script for turning your GUI on isn't working, post the script you're using. If you're getting an error message, post the FULL error message (Ctrl+C to copy it when the error is displayed!). You can also use the PRT SCR (Print Screen) button to copy the screen to the clipboard and paste it into Paint or whatever picture editing software you use. You can then crop the relevant data and upload to an image server such as ImageShack or Photobucket so we can see exactly what you're seeing.

In Conclusion

As I said, the more you do, the more we're willing to do. So if you haven't taken the necessary steps yourself and you're having problems making your game (and this does apply retroactively to anyone who for the same reasons have failed to release their games), it is because your game is broken. Your game is broken because the author is unwilling to take the necessary steps to fix the game. It's not that there are no resources available, but if you cannot even make an attempt to resolve your issues yourself before you come crying to us, how can you expect us to take you seriously enough to make your game for you?

-monkey
#140
I've found that if I have an Object with no name set, that apparently Game.GetLocationName returns the string " " (a blank whitespace character (' ', ASCII 32)). However if I check the Object.Name property I actually get a zero-length string, "".

This caused a bit of confusion for me when I was trying to compare the two and they weren't the same. I knew that the location I was testing was within the realms of the object, but the two strings weren't equating so I displayed the results of the two.

Setting a name for the object corrected the discrepancy, but I wonder if it would be an issue for "status line"-less interfaces?
SMF spam blocked by CleanTalk