AGS 3.1.0 Final - World's Heaviest Bridegroom Edition

Started by Pumaman, Sat 05/07/2008 23:21:19

Previous topic - Next topic

Pumaman

QuoteI know that I've been lobbying for better widescreen support forever, so at the risk of repeating myself, I'd just like to point out that it's unfortunate that the two highest resolutions of AGS don't have corresponding 16:10 modes

I've re-opened this discussion in this thread if you want to discuss it further.

QuoteHowever, when I mouse below 385 the game closes and the editor pops up and highlights the second of those two lines of code with a little error window:

"GUI.Y: co-ordinates specified are out of range.  Remember to use 320-res coordinates."
QuoteEdit:  One other apparent bug.  I spent about 30 minutes trying to figure out why my characters were suddenly becoming non-solid.  But I just noticed that they apparently are only non-solid on the right half of the screen.  Characters don't block anything x>320.  Another bug from the upgrade?

Thanks, these should be fixed in beta 6.

QuoteGUI Editor
I have seen the GUI editor coordinate problem previously reported and would add that the GUI background color is draw at twice the actual size (the border is drawn correctly).  When new controls are created they appear to be draw at coordinates half the distance from where ther where created. I know this is already reported and just adding my brief observation in case it may be of help. 

Hmm yeah this is a bit annoying ... originally it was deliberate but I can't remember why, and I think it just makes it confusing. I've changed this for beta 6.

QuoteError: There are no more files.
System.IO.IOException: There are no more files.

Hmm, this seems to be a bug in the .NET Framework, but I've put a workaround into beta 6 -- please let me know if it works.

QuoteI actually just tested it again and the objects baseline setting doesn't affect the place where object places its blocking chunk, it only affects whether character is drawn on top of the object or behind. I'm not sure if this is a bug or not, but this seems to be the case. The baseline used for blocking is always at the bottom of the object.

That's by design. If the object is a rock, for example, and you set its baseline to 1 so that characters will always be drawn on top of it, you wouldn't want its blocking area to be at the very top of the screen.


Anyway, beta 6 is now up which fixes some things.

SSH, I wasn't able to replicate any problems with DrawingSurface stuff so if you're still having a problem could you elaborate a bit more about what's going wrong?

I wasn't able to replicate these two crashes:
QuoteSystem.ComponentModel.Win32Exception: Error creating window handle.
   at System.Windows.Forms.NativeWindow.Creat eHandle(CreateParams cp)
QuoteSystem.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at new(UInt32 )
   at LineLayout.Resize(LineLayout* , Int32 maxLineLength_)
   at LineLayout.{ctor}(LineLayout* , Int32 maxLineLength_)

and they seem to be internal bugs in .NET and Scintilla, respectively.
Please let me know if they happen again.

RickJ

Quote
Quote
Error: There are no more files.
System.IO.IOException: There are no more files.
Hmm, this seems to be a bug in the .NET Framework, but I've put a workaround into beta 6 -- please let me know if it works.
It doesn't seem like it works.   Everything under the Build menu and create new game causes the error for me still.   Thanks for th quick response ;)

rich

#82
I moved this to the Wishlist.
I'm so excited!

RickJ

Not really a bug but I just noticed that the Textbox control does not have it's TextColor property exposed in the script.  It's useful for module/GUI designer who is using TextBox in conjunction with Buttons to make multiple input fields.   

freshpaint

Beta 6 is lovely!  Thanks for all the hard work you've put in on it.

Have a problem, however, with the new "loops running in background with dialog on screen" feature -- it doesn't seem to work in one of my rooms with a large dynamic sprite moving around via object.animate.

Also, on the opening screen of my Darkdevil County, it doesn't switch from  manual scaling to picking up walkable area scaling like it does without the flag set.  In this case I make a character walk in the background via character.addwaypoint.

My game is 800x600, 32bit color, with "use actual resolution" switch set and 3d9 drivers.

If you want me to pull out an executable code sample, let me know.


Pumaman

QuoteIt doesn't seem like it works.   Everything under the Build menu and create new game causes the error for me still.   Thanks for th quick response

Can you post the new error message? You shouldn't be getting an identical error any more, though you may be getting a very similar one.

QuoteI hope this is the right place to put requests for a new version...

No, please use the Wishlist thread for that. This thread is for feedback and bug reports about the beta version only, to keep things clean.

QuoteHave a problem, however, with the new "loops running in background with dialog on screen" feature -- it doesn't seem to work in one of my rooms with a large dynamic sprite moving around via object.animate.

Can you clarify what doesn't work? The sprite doens't move? It doesn't animate? Can you post an example?

QuoteAlso, on the opening screen of my Darkdevil County, it doesn't switch from  manual scaling to picking up walkable area scaling like it does without the flag set.  In this case I make a character walk in the background via character.addwaypoint.

I'm not really sure what you mean here. What exactly is the problem? Maybe posting a sample would be the easiest thing to do, if you'd be so kind.

RickJ

Quote
Can you post the new error message? You shouldn't be getting an identical error any more, though you may be getting a very similar one.
Sure thing.  Here is an error dump from trying to run the compiler.

Code: ags

Error: There are no more files.

Version: AGS 3.1.0.53

System.IO.IOException: There are no more files.
 ---> System.IO.IOException: There are no more files.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)
   at System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption)
   at AGS.Editor.Components.MusicAndSpeechComponent.CompilePAMFiles(CompileMessages errors)
   at AGS.Editor.Components.MusicAndSpeechComponent._agsEditor_ExtraCompilationStep(CompileMessages errors)
   at AGS.Editor.AGSEditor.CompileScripts(Object parameter)
   at AGS.Editor.BusyDialog.RunHandlerOnThread()
   --- End of inner exception stack trace ---
   at AGS.Editor.BusyDialog.Show(String message, ProcessingHandler handler, Object parameter)
   at AGS.Editor.AGSEditor.CompileGame(Boolean forceRebuild, Boolean createMiniExeForDebug)
   at AGS.Editor.Components.BuildCommandsComponent.CompileGame(Boolean forceRebuild)
   at AGS.Editor.Components.BuildCommandsComponent.CommandClick(String controlID)
   at AGS.Editor.GUIController._mainForm_OnMenuClick(String menuItemID)
   at AGS.Editor.MainMenuManager.MenuEventHandler(Object sender, EventArgs e)
   at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


freshpaint

Regarding my problems with using the "run loops with dialog on screeen" issue:

Here's my familiar buggy test with roger.  In animating room 1, a big roger clone walks around in the background, going from manual scaling, through a scaled walkable region, and a region with lighting.  If you click on either the cup or the roger on the red center hotspot, you can have a brief dialog and see what I mean.  The dummy in the background walks for part of his path, then stops and doesn't resize or move until the dialog is off the screen.

Room 2 shows the screen freezing problem using an object animation rather than a walk cycle.  The hand follows roger around and does a simple animation using a dynamic sprite assigned to a view.  You can talk to the hand or to roger in this room and see what happens.

If the switch is off (ie, the way it used to be), both rooms work the way they do under 3.02.  The examples are based on code from my Darkdevil County demo that works fine without using the switch.

Buggy Test 3.10 beta 6.zip

Hope this helps.  Let me know if you need anything else.


Makeout Patrol

#88
There is a problem with translations. I'm not sure which version this came along in.

If a line in the translation includes an escaped quotation mark (\"), the translated line does not appear in the game, even though it is in the .trs file and translated properly. If I change the line in the game to include a single quotation mark instead of the escaped double, the translated line shows up while playing, but so does the backslash, if it is included in the .trs file.

I've worked around it by replacing double quotes in the game with single quotes, but I could see this being a pretty serious problem in games with Sierra style speech.

EDIT: Simple, non-escaped quotation marks in the .trs file show up normally in the translated game.

visionastral

Hello there,
Transparency doesn't work in characters at all, it just ignores it and shows the character fully opaque.
I'm using 32 bits sprites with alpha channel in screen res 800x600 32bits.
:-\

visionastral

#90
Transparency doesn't works for the GUI too...
Tryed with D3D and DDraw, no result, it just ignores the Transparency propertie, neither thru the IDE than scripting.
It seems the new properties are just unplugged.
:P

Another bug:
If you flip a sprite inside a view, it will render ok in the preview and  in the game when the room fade-in too, but after that it desapears from the screen.
All the frames flipped will not render, the others (non-flipped), will render well.

Another one:
If you export a character and then re-import it else were, it will lose some properties like displacement speed x,y , wich is not very important, but what truely is important is you will lose an arbitrary number of sprites of your character and the view animations (walk animations) will be corrupted.

Lt. Smash

Also one:
When using an alpha transparent sprite as button image, it doesn't show correctly (even when the gui has an alpha channel). Only when the gui background image is fully transparent then the button image shows correctly as it should. (so my experience)

Pumaman

QuoteRegarding my problems with using the "run loops with dialog on screeen" issue:

The problem here is that the Repeatedly Execute event is not running because the script is blocked in the Dialog.Start call (see Understanding Blocking Scripts).

You'd have the same problem if you used a Wait() statement.

The workaround for this situation is to add a repeatedly_execute_always function to the room script. Since this runs on a separate script thread it will not be blocked and you can put your logic in there.

QuoteIf a line in the translation includes an escaped quotation mark ("), the translated line does not appear in the game, even though it is in the .trs file and translated properly. If I change the line in the game to include a single quotation mark instead of the escaped double, the translated line shows up while playing, but so does the backslash, if it is included in the .trs file.

Thanks for the report, I'll look into it.

QuoteTransparency doesn't work in characters at all, it just ignores it and shows the character fully opaque.
I'm using 32 bits sprites with alpha channel in screen res 800x600 32bits.

Currently AGS does not support using the Transparency property on alpha-channel sprites -- you can only have one type of transparency or the other. This is an area for future improvement.

QuoteIf you flip a sprite inside a view, it will render ok in the preview and  in the game when the room fade-in too, but after that it desapears from the screen.
All the frames flipped will not render, the others (non-flipped), will render well.

Can you be more specific? Flipped view frames are used very commonly in almost every character walking animation and seem to be working fine for me. Can you provide more details of what you're trying to do?

QuoteIf you export a character and then re-import it else were, it will lose some properties like displacement speed x,y

Thanks, I'll look into this.

Quotewhat truely is important is you will lose an arbitrary number of sprites of your character and the view animations (walk animations) will be corrupted.

I tried exporting and importing a character and it seemed fine. Can you provide an example of this?

QuoteWhen using an alpha transparent sprite as button image, it doesn't show correctly (even when the gui has an alpha channel). Only when the gui background image is fully transparent then the button image shows correctly as it should. (so my experience)

What do you mean, "doesn't show correctly"? Have you tried the new AdditiveOpacity option in the beta?

freshpaint

In re running loops behind dialogs  in room rep-ex:

I guess I thought the new "loops in background" feature would magically switch things around to run on the correct execution thread and read my mind too.  Renamed my room rep-ex functions to repeatedly_execute_always, removed the "rep-ex" from the sidebar list, and both examples now run perfectly.  THANKS.

A bug does remain: When the character passes through the tinted region he shows up properly tinted in 3d9, but not tinted in Directx5.

Lt. Smash

Quote from: Pumaman on Tue 12/08/2008 21:02:52
QuoteWhen using an alpha transparent sprite as button image, it doesn't show correctly (even when the gui has an alpha channel). Only when the gui background image is fully transparent then the button image shows correctly as it should. (so my experience)

What do you mean, "doesn't show correctly"? Have you tried the new AdditiveOpacity option in the beta?

Yes I tried AdditiveOpacity. No difference.
You can see the problem here:

Both buttons have the same sprite.
  The left button is on a completely transparent gui above the blue gui.
  The right button is put directly onto the blue gui. - You see that it doesn't show the transparency just black pixels?

Also pixel-perfect click detection doesn't work on the fully transparent parts. Even if I use top-left pixel when importing.
I'm using 1024x768.

visionastral

#95
Quote from: Pumaman on Tue 12/08/2008 21:02:52
Currently AGS does not support using the Transparency property on alpha-channel sprites -- you can only have one type of transparency or the other. This is an area for future improvement.
I'll have to live with that, I suppose  ;)  But, this apply to GUIs too?

Quote from: Pumaman on Tue 12/08/2008 21:02:52
Can you be more specific? Flipped view frames are used very commonly in almost every character walking animation and seem to be working fine for me. Can you provide more details of what you're trying to do?

I'll make a zip for it, but I must admit I am making huge animations with huge sprites (300x475,32b), so I suppose that's why I'm facing problems no one else has encounter before.
Could it be because of the sprites size?

Quote from: Pumaman on Tue 12/08/2008 21:02:52
I tried exporting and importing a character and it seemed fine. Can you provide an example of this?

I can't provide you an example of that (because of the size), but I have verified once again, and it makes the same:
I have a character with 31x8 animations (248 sprites)
Each sprites has a size of 300x475 in 32bits (with alpha channel, of course!  ;) )

When I export the character and reimport it, it creates a new sprite folder with only 160 sprites in it. (88 less!)

The loops of the main view have only 20 frames each (instead of 31)
And when you start the game, the animation is corrupted, instead of playing only the 20 frames and make a truncated animation, it seems AGS trys to make the entire animation but fails (because it hasn't load all the sprites of course) and replace the empty slots of animation (wich weren't visible in the IDE) with random sprites. (and I suppose this could lead AGS to crash in the case it weren't enough sprites else were)

However, the sprites wich do loaded are ok. (no corruption even with huge sprites like mines)

edit:
Each loop has the correct 20 first frames of the animation, but the rest isn't saved/loaded.
I suppose the code is analysing every loop and exporting each sprite used in each frame secuentialy.
I don't know if it's a bug exporting or importing the character, but it's clear it doesn't want to go farther than 20 frames...
The sprites missing match with the missing loop frames.

visionastral

About the flipping sprite disapearing, it's an issue with the THEORA plugin.
Sprites flipped don't render in screen if in the background there is a Theora video playing.
But this only happen with flipped sprites (weird) and with the Direct3D driver ON, not with DirectDraw5 driver...
I'll talk about this with the plugin creator, but perhaps it has something to do with the order things are drawn in screen, I don't know...
???

Pumaman

QuoteA bug does remain: When the character passes through the tinted region he shows up properly tinted in 3d9, but not tinted in Directx5

This happens in your Buggy Test game because tinting is not supported on 8-bit sprites, and Roger is 8-bit.
But because Direct3D does not support 8-bit, AGS automatically converts all 8-bit sprites to 16-bit when you're running in D3D mode, when then means that the tinting does work after all. So this isn't a bug as such, more a limitation of using 8-bit graphics in hi-colour games.

QuoteYes I tried AdditiveOpacity. No difference.
You can see the problem here:

What colour are the alpha-transparent pixels on that sprite? If they're black, then although the alpha channel is being additively added, the black pixels from the sprite will be overwriting the blue pixels on the GUI and you'll end up with opaque black pixels.

QuoteAlso pixel-perfect click detection doesn't work on the fully transparent parts. Even if I use top-left pixel when importing.

Pixel-perfect click detection does not apply to GUIs, only to characters and objects. This is because generally you want the entire area of a button to be clickable, and not just the parts that happen to have non-transparent pixels.

However, optionally supporting this on GUIs would be an interesting suggestion for a future version.

QuoteI'll have to live with that, I suppose    But, this apply to GUIs too?

Yes, it does. It's a limitation of the AGS DirectDraw rendering engine (but applied to D3D too for consistency); and is just something that there hasn't been a particular call from people to improve, so it hasn't been changed yet.

QuoteAbout the flipping sprite disapearing, it's an issue with the THEORA plugin.
Sprites flipped don't render in screen if in the background there is a Theora video playing.
But this only happen with flipped sprites (weird) and with the Direct3D driver ON, not with DirectDraw5 driver...

Interesting, glad you found the cause.

QuoteWhen I export the character and reimport it, it creates a new sprite folder with only 160 sprites in it. (88 less!)
The loops of the main view have only 20 frames each (instead of 31)

Ahh that explains it. AGS exports the character into a file format that is compatible with AGS 2.x, which only allowed 20 frames per loop -- therefore it's not surprising that it's corrupting it.
I'll look into a fix.

visionastral

#98
Quote from: Pumaman on Wed 13/08/2008 21:40:50
Yes, it does. It's a limitation of the AGS DirectDraw rendering engine (but applied to D3D too for consistency); and is just something that there hasn't been a particular call from people to improve, so it hasn't been changed yet.
Well, it could be usefull for doing things like making the GUI appear smoothly over the screen by transparency or (like my case) making a shadow sistem wich allow lighter or harder shadows related to the light of the room. I just made a semi-transparent shadow and load it already done, but it doesn't let me control de amount of hardness. Well, it's not that important after all (as I can do more sprites for that) however it could be usefull for plenty of things.

Another bug I found (sorry for that  ;) ) is, reading the scaling level of a point directly (using GetScalingAt(character.x, character.y) ) often give back the good scaling level, but not always!
I have done a function wich constantly read the scaling level of the player position in order to change the character.z value to match the actual position of the sprites foots in the distance (because by default the character.z isn't afected by scaling level).
If I use the character.Scaling for that, it's ok, no problem aplying the same scale to character.z
But when I use GetScaling directly, sometimes (quite often) it aparently get the wrong value:

Code:


int HeightAdj=10; // in my code this is a global variable I use as a constant for the correct placement of sprites

player.z=0-((player.Scaling*HeightAdj)/100);    //this works

player.z=0-((GetScalingAt(player.x, player.y)*HeightAdj)/100);   //this don't always work  :P

(you only have to put this code in the function repeatedly_execute() to see the diference between them)

EDIT: this seem to happen in rooms with active walk-behind zones. Don't know if it happen in room without walk-behinds.

This is important because I am making a function for being able to use sprites at diferent scales in order to use high definition sprites for the main characters but poor definition sprites for other non player characters.
By default, if I let the engine scale the sprites by itself, a sprite with 200 pixels height will always be bigger than a 100 pixels height sprite, as the engine asume them being at the same scale.
So, in order to use diferent resolutions sprites to render at the same screen size, I have to do it manualy using a custom propertie defined in each character ("scale" of course  ;) ) wich let my function know if this character have to be drawn in screen bigger than the others or not at this distance.
And the only way for me to know is using GetScalingAt, wich actualy don't always get right values.


Pumaman

Quote from: visionastral on Wed 13/08/2008 22:40:59
Well, it could be usefull for doing things like making the GUI appear smoothly over the screen by transparency or (like my case) making a shadow sistem wich allow lighter or harder shadows related to the light of the room. I just made a semi-transparent shadow and load it already done, but it doesn't let me control de amount of hardness. Well, it's not that important after all (as I can do more sprites for that) however it could be usefull for plenty of things.

Yeah, I agree that it would certainly have its uses. Feel free to post in the Wishlist thread about it.

QuoteAnother bug I found (sorry for that  ;) ) is, reading the scaling level of a point directly (using GetScalingAt(character.x, character.y) ) often give back the good scaling level, but not always!

Are you getting a bad value when the character is walking along the edge of a walkable area? It is possible that while moving, the character can skim the edge of the walkable area, and thus GetScalingAt(player.x,player.y) would return 100 (or whatever walkable area 0 was set to). Does this seem to be the problem you are having?

Quote
This is important because I am making a function for being able to use sprites at diferent scales in order to use high definition sprites for the main characters but poor definition sprites for other non player characters.
By default, if I let the engine scale the sprites by itself, a sprite with 200 pixels height will always be bigger than a 100 pixels height sprite, as the engine asume them being at the same scale.

Have you considered using the "Resolution" property of the sprites in the editor? You could set the low-resolution sprites to the "320x200" setting which would then lead the engine to automatically double their size in-game.

SMF spam blocked by CleanTalk