AGS 3.0 is now released!

Started by Pumaman, Sat 26/01/2008 12:14:04

Previous topic - Next topic

Pumaman

Well, it's been a long time coming, but AGS 3.0 is finally here!

It features the following changes over 2.72:

* Rewritten editor from scratch; includes various new features such as ability to have more than one script open at a time
* Hardware accelerated graphics driver in game engine, which speeds up rooms with lots of sprites, alpha blended objects, and more.
* Full support for 256-character ASCII, so European languages like French and Spanish are now supported if you use a TTF font.
* Added script debugger
* Added integration with Windows Vista's Game Explorer and Enhanced Save Games
* Added support for script extender functions.
* Added support for dynamic arrays in script
* Added source control integration
* Added crash dump file when engine crashes, to enable faster fixing of bugs
* New .NET-based editor plugin API.
* Added Game.DoOnceOnly, Character.ChangeRoomAutoPosition, Game.FontCount,  Game.MouseCursorCount, DynamicSprite.GetDrawingSurface, DrawingSurface.*, DynamicSprite.Create script functions/properties.
* Added syntax highlighting for struct types
* Overhaul of RawDrawing functions, including ability to draw onto dynamic sprites and various new features.
* Removed limit on number of views, GUIs and characters
* Removed limits on number of frames per loop and loops per view
* Increased max objects per room to 40 and max hotspots to 50.
* Fonts have a script enum eFontXXX rather than having to use a number.
* Engine will now automatically try 640x400 for 320x200 games if the player's PC doesn't support 320x200 (since this is becoming more common)
* Improved performance of Character.PlaceOnWalkableArea in large rooms.
* Workaround for teleportation problem in scrolling rooms with right edge incorrectly set.
* Fixed String.Format crashing if the string length was more than 1200 characters.
* Fixed engine crashing on startup if it was unable to load a plugin.
* Fixed issue when combining CreateXXXOverlay and Overlay.CreateXXXX
* Fixed changes to ViewFrame.Graphic not always being persisted in save games
* Improved script garbage collection, so that calling String.Append in rep_exec doesn't keep eating up more and more memory until you save the game.

Head over to the download page and get yourself a copy!

Ghost

Congratulations! And a zip too, just like the old days! A toast to CJ!

Groogokk

Three cheers for Pumaman!

Thanks a lot, Chris! This is a great achievement. (Also, I'm happy about the zip as well).

ShiverMeSideways

Brilliant, I was just about to start a new project, perfect timing, CJ.

Also, good job and hip-hip-hooray!

OneDollar

I'm not sure if I should post this here or not, but I've found a very, very small bug. If you make a new string without assigning any text to it, then set, say, a GUI label's text to that string the game compiles then when that code is run crashes with "Error: Null string supplied to CheckForTranslations". Something to keep in mind for 3.01?

I've not found any other problems, but keep coming across stuff I really like. The new editor's fantastic CJ!

TheJBurger

Just a quick question:

In the old editor I used *.pcx files for everything, but that appears to be obsolete now? Would *.png be the preferred extension of choice?

Mortis

Quote from: Ghost on Sat 26/01/2008 12:17:23
Congratulations! And a zip too, just like the old days! A toast to CJ!

Seconded to the highest degree! This is fantastic news. I'll get me some toast to go with CJ's Big Blue Cup of hot smoking goodness.
The Slowdown - A video game blog for those who spend more time thinking about gaming than gaming

Radiant


twin-moon

                                    The Grey Zone

Ubel

I love the new editor, it's wonderful that it's finally complete! You've done a great job! :)

Also...

Quote from: OneDollar on Sat 26/01/2008 19:11:07
I'm not sure if I should post this here or not, but I've found a very, very small bug. If you make a new string without assigning any text to it, then set, say, a GUI label's text to that string the game compiles then when that code is run crashes with "Error: Null string supplied to CheckForTranslations". Something to keep in mind for 3.01?

I doubt that's a bug in the engine itself. Assigning a null value to anything, whether it's a string or an integer, would make the game crash, I believe. If you wish to assign an empty string to a label, give the string the value of "".

OneDollar

No, you missed my point. I understand where the crash comes from and how to fix it, it's the actual error message that's the problem:
Quote from: OneDollar on Sat 26/01/2008 19:11:07
"Error: Null string supplied to CheckForTranslations"
What I'm doing has nothing to do with checking for a translation file

Ghost

But still a check for translations would be made, wouldn't it, if only to check that there *are* no translations? And then the report of a null string is very careful, but still would make sense.

Ponch

CJ,

Downloaded it and played around with it a bit. It left me feeling tingly all over. Once all my ongoing (i.e. "old" AGS engines) projects are finished, I look forward to plunging into 3.0.

Thanks for all the hard work!  :D

- Ponch

OneDollar

Quote from: Ghost on Sat 26/01/2008 22:21:29
But still a check for translations would be made, wouldn't it, if only to check that there *are* no translations? And then the report of a null string is very careful, but still would make sense.
So you're saying AGS goes through all my text to see if a translation is available, regardless of whether I have any translation files or requests for translation, and having a null string upsets that and not the label I'm passing the text to? This is all I'm doing...
Code: ags

String somestring;
somelabel.text=somestring;  //just a label on a GUI

If its not a bug then that's fine. As I said its not really a problem either way.

Pumaman

QuoteI'm not sure if I should post this here or not, but I've found a very, very small bug. If you make a new string without assigning any text to it, then set, say, a GUI label's text to that string the game compiles then when that code is run crashes with "Error: Null string supplied to CheckForTranslations". Something to keep in mind for 3.01?

Well, the message might be slightly misleading but the alternative would be to add an explicit null check and error message to every property/method that you can pass a string into. This would take a while to do and probably not be worth the hassle.

For information, the reason that you get this message is because when you attempt to display any text (for example, setting the text on a GUI label), AGS passes it through the translation system to see if it needs to be translated. If there is no active translation then this will just return a "no" response very quickly -- but it also happens to ensure that the string is not null first. This is a good thing, because if it didn't do this check, you'd have probably got an Illegal Exception error instead, which would be a Bad Thing.

Anyway, this is not specific to 3.0 and so if you'd like to continue this discussion, please start a separate thread about it.

mchammer

I got this when I typed wrong brace to an enum and tried to save.
Code: ags

enum CharacterIcons [
};



Error: Index was outside the bounds of the array.
Version: AGS 3.0.0.23

System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at AGS.Editor.FastString.StartsWith(String text)
   at AGS.Editor.AutoComplete.ConstructCache(Script scriptToCache, Boolean isBackgroundThread)
   at AGS.Editor.ScriptEditor.SaveChanges()
   at AGS.Editor.Components.ScriptsComponent.BeforeSaveGame()
   at AGS.Editor.ComponentController.NotifyAboutToSaveGame()
   at AGS.Editor.ApplicationController._agsEditor_PreSaveGame(PreSaveGameEventArgs evArgs)
   at AGS.Editor.AGSEditor.PreSaveGameHandler.Invoke(PreSaveGameEventArgs evArgs)
   at AGS.Editor.AGSEditor.SaveGameFiles()
   at AGS.Editor.Components.FileCommandsComponent.CommandClick(String controlID)
   at AGS.Editor.ToolBarManager.ToolbarEventHandler(Object sender, EventArgs e)
   at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   at System.Windows.Forms.ToolStripButton.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.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.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)


Ps. Great job with 3.0  :)
My 40 bullets - An action/war game.

Pumaman

Hmm, I pasted that script into a script editor and saved the game, but I didn't get any errors. What were the lines of code before where you put that, and can you replicate the crash?

mchammer

Did you paste it into a script header? I get the error by putting that code anywhere into a script header. It doesnt crash if I put the code into a main script.
My 40 bullets - An action/war game.

naltimari

Quote from: Pumaman on Sat 26/01/2008 12:14:04
Well, it's been a long time coming, but AGS 3.0 is finally here!

Has anyone tried the new 3.0 editor on Linux+Mono? Is it worthwhile?

Ali

The new editor looks great, very inspiring.

Running the demo game I noticed something odd, which I don't think has been mentioned elsewhere. Black areas on the Save/Load GUI became invisible and during conversations, the mouse cursor 'painted' transparency onto the black of the dialogue GUI. This was using DX5.

I hope that's useful and not a waste of time!

SMF spam blocked by CleanTalk