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

Messages - Crimson Wizard

#3301
Well, in regards to the technical issue, there's not much possible to do here, except to upgrade to 3.6.0 when you'll have a chance. In theory we maybe will be able to increase channels little more, because the new audio system in 3.6.0 may allow that, but I'd have to make a proper test first.

And, it's best to have some prototype scene to see how it works when there's that many cartoons with sounds playing at once; whether it's essential to have them all playing together, or limiting simultaneous plays may be an option, etc.
#3302
Quote from: Pajama Sam on Tue 28/12/2021 23:51:41
I also forgot to mention that the reason I need so many is because my game has an average of 20 small cartoon jokes per room that can be started by clicking on them. I have seen a few games with this many small cartoons per room and it give a certain fullness to the game.

Could you give an example of such game? i'm now curious to understand this use case.

How necessary it is to allow have them all playing at the same time?
#3303
Quote from: Pajama Sam on Tue 28/12/2021 23:40:49
          I suppose I meant to say 20 or even just 10.

Well, like I mentioned, the upcoming version 3.6.0 has 16, we did not increase further because no one ever mentioned they need more. The main reason for increase was not exactly the need to play more sounds at once, but rather to be able to reserve fixed channels to more sound types.

Quote from: Pajama Sam on Tue 28/12/2021 23:40:49
It varies because even though the sounds would become a little indistinguishable the amount of sounds played depends on how many clickpoints the player clicks on.Plus It would be better to be over each other instead of another sound cutting it off. It's important that no sounds are cut. Besides,these sounds are  in the background.Not too bad if its gets covered.

To be honest, I still have difficulty to imagine how this is supposed to work, because even the exact amount of sounds may become hard to notice when they begin cover each other.
Whether sound is in background or not does not matter, as they will merge with "foreground" sounds making these harder to distinguish as well.
Maybe I just don't understand what are you trying to accomplish with this.
#3304
Quote from: Pajama Sam on Tue 28/12/2021 21:56:22
Thanks for the tip Crimson Wizard. Not to get off the subject but is there any way to have more than 7 channels.like 50! It may seem extreme but I actually need that many.

No, but why do you need 50? Channels mean how many sounds play at the same time. If there is more than several simultaneous sounds they will likely become unrecognizable.
We raised this number to 16 in the next version to allow people arrange sound types on them more easily, but this is the first time someone mentions numbers like 50, and you had 90 all in one type. How do you suppose to use these?
#3305
AGS 3.5.1 - Patch 6
Full release number: 3.5.1.13


For Editor
Spoiler

For Android
Spoiler

For Engine/Editor developers
Spoiler

Released: 28th December 2021

Previous stable version: AGS 3.5.0 P10 forum thread


This release is brought to you by:

- Alan v. Drake
- Crimson Wizard
- eri0o
- James Duong (implemented "--console-attach" option for Windows)
- Morgan Willcock
- Nick Sonneveld
- rofl0r
- Thierry Crozat (bug fixing)



Summary

3.5.1 is a minor update after 3.5.0, which contains mostly utility additions, fixes and perfomance improvements.

For the reference, we currently have another major version in works, which is already usable although may be not as stable, and introduces a SDL2-based engine, planned to be released as 3.6.0. If you're interested you may find it here: https://www.adventuregamestudio.co.uk/forums/index.php?topic=58976.0



Changes in the Patch 6:

Editor:
- Added line numbers in the dialog script editor.
- Fixed Dialog script loosing changes if the pane is closed or redocked.
- Fixed controls arrangement on the Dialog pane getting broken when it's redocked.

Engine:
- Fixed filepaths in scripts that have backslashes ('\') fail on non-Windows systems.
   All the (script) File functions will now convert backslashes in filepaths into forward slashes for compatibility.
- Fixed engine was still creating standard directories for game saves and data, even if user provided the custom paths for these.
- Fixed TextBox control crashing the game if it's empty and player presses Backspace.
- Fixed controls on a fully transparent GUI were not interactive (this is an original AGS behavior, which was unintentionally changed in 3.5.0 by mistake).

Compatibility:
- When running 3.5.0 games, treat fully transparent GUI as non-interactable.
   In AGS transparent GUIs may be still interacted with, but 3.5.0 introduced an unintentional (and undocumented) change to this, which was reverted in 3.5.1.

Android:
- Support global engine's config file when the game is run from the Launcher: it's located in the AGS games' parent directory, same place where android.cfg is.

WinSetup:
- Added "Custom game shared data path" to complement "Custom save path" option.


Changes in the Patch 5:

Contained no changes and was a formal re-release with only fixed program build instructions for Linux.


Changes in the Patch 4:

Editor:
- Fixed swapping of inventory item's numeric ID could lead to errors.
- Fixed crash when importing pre-3.* games with multiple script modules.
- Renamed "Enforce object-based scripting" setting to "Enforce post-2.62 scripting". This is for clarity.

Compiler:
- Fixed potential memory corruption when user script reaches max nested if/else blocks.

Engine:
- Also tell module name and approximate source line when reporting script import errors for the variables and local functions.


Changes in the Patch 3:

Editor:
- Fixed sprite file over 2 GB could not be loaded (regression since the last patch).

Engine:
- Further improvement to GUI perfomance: don't redraw GUI when the mouse cursor is hovering over or interacting with controls not leading to an actual visual change.
- Fixed ListBox items could become unaccessible if its font or height is changed leading to a disabled scrollbar.


Changes in the Patch 2:

Engine:
- Fixed speech lipsync getting disabled after loading another game with RunAGSGame().
- Fixed MOD/XM clips fail to play (regression).
- Fixed certain OGV videos fail to play (regression).
- Fixed software renderer was not updating game screen correctly when running a game with legacy "letterboxed" feature (regression).


Changes in the Patch 1:

Editor:
- Fixed script compiler sometimes was not specifying actual Dialog number when reporting errors in the dialog scripts.

Engine:
- Fixed Game.TranslationFilename always returning empty string (regression).
- Fixed GUI controls which were toggled from disabled to enabled state not responding to the mouse clicks until the mouse is moved (regression).
- Fixed OpenGL did not apply a Linear filter when "Render sprites in screen resolution" option is off.


What is new in 3.5.1

Editor:
- Added "Attach game data to exe" option to General Settings. This lets you to package game data separately from the game.exe (only important on Windows at the moment).
- Deprecated "Limit display mode to 16-bit" property in Runtime Setup as it's no longer used by the engine.
- Display aspect ratio in game resolution dialog.
- Implemented classic Color Picker dialog for the Color type values in the property grid, instead of the default one which does not allow user-defined colors.
- Improved tab switching performance for script windows.
- Editor will now enforce full game rebuild after upgrading an older project, this ensures that all scripts are recompiled with the new version rules.
- Fixed room lists in property editor were not updated after room number is changed.
- Fixed importing pre-3.* projects broken by incorrect assignment of "Game file name" property.
- Fixed importing Characters and GUI without sprites still created empty sprite folders.
- Fixed crash when exporting/importing Characters with no Normal View.
- Fixed translation compiler did not correctly save some of the escaped sequences, such as "\n".

Scripting:
- Implemented correct parsing of a "const string" function return type.
- Fixed implementing imported functions was forbidden in the room scripts.

Script API:
- Added GUI.Shown readonly property that tells whether GUI is active on screen. This is primarily for GUIs with "Popup At Y" style, because they hide themselves regardless of Visible property. Note that since 3.5.0 GUI.Visible only tells a script-set value.
- File.Open() now supports $CONFIGFILE$ tag which will try to open user config file for reading or writing regardless of where config is located on disk.
- Added System.SaveConfigToFile() which writes current engine settings to the user config file. Only the options that can be changed at runtime are written back at the moment.
- GetTranslation() now returns "const string" (was "string"). This is to prevent modifying returned string using old-style string functions, such as StrCat(), as this string may be allocated in the internal engine memory for its own use.

Engine:
- Support loading audio and video from data packages larger than 2 GB.
- Improved game data loading times by introducing buffered file stream. Initial tests showed 3-4 times faster file reading.
- Improved game perfomance by not reupdating all of the GUIs each time anything changes, instead only affected GUI will be updated each time.
- Some improvement to general script perfomance.
- Some improvement to script Dictionary and Set types perfomance.
- Room Object's Graphic property now can be assigned a sprite with index over 32767 and up to 65535. This restriction is due to internal data format, which cannot be fully fixed without breaking compatibility with plugin API. This may still be worked around by assigning a View, as View's frames may contain sprites of any index available.
- Similarily, Object's View, Loop and Frame can now be assigned a value over 32767 and up to 65535; not that this was ever an issue...
- Removed arbitrary limit of 1000000 dynamic array elements (now supports over 2 billion).
- Dialogs with no enabled options left will be now stopped, instead of raising script error.
- Engine will not longer quit the game when failing to write a save, but simply display an error on screen (...why this was a thing in the first place?!).
- When restoring a save engine will now try to match game pack by GUID rather than using exe/pack name. This resolves potential problems when game package may have different name in distribution to another system. Also makes saves in multi-game collections more reliable.
- In Debug game mode allow to toggle infinite FPS mode (prior it could not be turned off).
- Expanded text parser error messages for easier debugging.
- Adjusted all the command-line options to have consistent prefix convention, where all full-name options must be preceded by double-dash, and one-letter options by single dash.
- Added "--localuserconf" command and similar global config option which tells engine to read and write user config in the game's directory rather than using standard platform path. Game dir must be writeable for this to work.
- Added "--conf" command which forces engine to read only explicit config file on startup.
- Added "--user-data-dir" and "--shared-data-dir" commands for setting save game directory and shared app data directory from command line (this corresponds to existing options in config).
- Fully configurable log output (in both game config and command line) allows to set up which message types and groups are printed by which output methods (sinks), including: file, system console, in-game console. "warnings.log" is now created only if file log was not requested by user.
- Added "--log-" set of command line options for setting up log output.
- Added "--tell-filepath" option for printing known engine's and game's file locations.
- Added "--tell-gameproperties" option for printing some of the game's general settings.
More information on log config and --tell commands currently may be found in following text file: OPTIONS.md
This has to be added to the manual eventually.
- Support proper lookup for Allegro 4 library resources (such as its own config and digital MIDI patches) in the game directory.
- Engine will no longer precreate directories for common files: saves, user config, shared files and so forth, - before actually having to write these. This ensures that no new directories are created on your disk without actual need. Also this fixed a problem that could happen if someone deleted e.g. a game's save directory while game was running.
- Fixed running game from another directory by passing its relative filename as command-line argument: in this case engine was incorrectly using its own directory to search for external game data, opening files for reading by script command, and so on.
- Fixed some of the engine's own hotkeys (such windowed/fullscreen mode toggle) not working during certain skippable game states.
- Fixed overlay was set to wrong position if it were using TextWindow gui and either its text or X, Y properties got changed.
- Fixed crash occuring when the speech is using text window gui with zero Padding and the speech text is an empty line.
- Fixed characters and room objects were not updating their looks if their current graphic was a Dynamic Sprite, and that sprite was modified with ChangeCanvasSize, CopyTransparencyMask, Crop, Flip, Resize, Rotate or Tint function.
- Fixed Views' frames keeping reference to deleted Dynamic Sprites causing crashes. Now they will be reset to dummy sprite 0 for safety.
- Fixed engine crash when button's graphic is set to sprite out of range.
- Fixed animated cursor's normal graphic reappearing in between animation frames if mouse mode is being repeatedly reassigned, for example in rep-exec script.
- Fixed certain interactions did not work with GUI if it was made fully transparent.
- Fixed ListBox.FillSaveGameList() search pattern, it included files which contain save filename pattern but do not exactly match; for example: "agssave.001_".
- Fixed engine was ignoring audio files in game directory when running games which use old audio system.
- Fixed crash in Direct3D and OpenGL renderers that occured if game uses a plugin that performs software drawing on screen, and one of the rooms is smaller than the game's resolution.
- Fixed Direct3D was assigning wrong fullscreen refresh rate sometimes, slowing alt-tabbing.
- Fixed "--test" mode was lost upon restoring a save.

Engine Plugin API:
- Added IAGSEngine::GetRenderStageDesc() function which returns current render stage parameters. As of this version these parameters include 3 transformation matrixes, allowing any 3D render plugin to stay compliant to engine's scene rendering.

Compatibility:
- Fixed engine was trying to read unnecessary data when loading pre-2.72 games.
- Fixed "upscale" mode for old games (was broken in 3.5.0). Also engine will now try to detect if "upscale" mode wanted by reading old config options (if they are present).
- Fixed GUI.Visible not returning expected values for GUIs with "Popup At Y" style in pre-3.5.0 games, breaking some older games logic.
- Fixed potential buffer overflow when reading pre-3.1.0 games with old dialog script texts.
- Fixed engine was applying player's position too early when ChangeRoom was called for 2.72 and earlier games, which could result in wrong placement in the new room if the character was walking right before the transition.

Android:
- Corrected game scanning in AGS launcher, now it will work consistently with the desktop ports, and detect any compatible game data files named "*.ags" or "*.exe".

OSX:
- When looking for game files engine will no longer use hardcoded filename, will search for any compatible pack file instead.

Windows:
- Windows version of the engine now reads global configuration file. It is looked up in "%USERPROFILE%/Saved Games/Adventure Game Studio/acsetup.cfg"
- Default log file location is now also in "%USERPROFILE%/Saved Games/Adventure Game Studio".
- Added "--no-message-box" command line option to hide message boxes when alerts are raised. These messages will be still printed to log (if one is enabled).
- Added "--console-attach" command line option to try attach to the parent process's console. This is useful if you run game from command line and want to see engine's log in the console.

WinSetup:
- Fixed changing fullscreen mode from "use current desktop" to explicit resolution on save.







Thanks to everyone who contributed to and tested this version!



#3306
Quote from: Pajama Sam on Tue 28/12/2021 20:13:56
maxchannels =90

AGS has a fixed number of 8 channels (16 in the new 3.6.0 version), one of which is reserved for the speech voice-over, so 7 total for your sounds.
As all the "MaxChannels" settings take these channels from the same pool, their total sum should not exceed this limit, or the remaining types will not be able to play.
#3307
Hello.
Quote from: Baguettator on Tue 28/12/2021 18:59:36
Is the 3.6 version of AGS will allow to do something with the "length" of ListBox Items ? As far as I know, there is no option to "cut" the text, it always go outside the list box.

Of course, it could be perfect that AGS "remembers" the full length of the item, even if it's displayed not fully in the listbox. For scripting reasons, it could be nice

TBH I only recently realized that it's happening for some reason, never paid much attention to this before, I guess.

To be clear, none of the gui controls in AGS seem to clip their textual contents, and buttons only clip the image when certain property is set.
This is not right, afaik any normal GUI system clips the control contents to its size. I think it's possible to make this change for 3.6.0, maybe even unconditionally, because it looks weird. Unless someone has an idea of a good use case for non-clipping the text (which cannot be solved by also adding a label somewhere).
Of course this will have nothing to do with the actual text property, the clipping is a drawing operation that does not change the control's data but only affects its look.



Also, I'm sorry for not answering earlier -
Quote from: TheNewSon on Fri 10/12/2021 00:25:07
Any ETA for the stable release?
Quote from: nightmarer on Sun 19/12/2021 11:26:53
Any news about how the 3.6.0 is going to be released? I'm longing to change from 3.5.1 and enjoy the new features included.

I believe that the main bulk of changes is already complete (in fact it has much more than I initially planned, considering it also has a new render, audio & input backend based on SDL2). And I know that at least few people already made or are making their games with this (I recall seeing a 3.6.0 game in the AGS database).

But it's difficult to say when exactly the "final" release will be. Some of the new features may require polishing, and the version needs more testing overall.
Unfortunately the developers team is really small (there are like 2-4 people working at irregular times, and not all of them are working on this exactly version), so the only realistic solution is if the AGS community participates in testing.
I do regularily use the engine to run the games (not make ones), so may notice if some issue stands out, but frankly don't know how "stable" overall this is, and have to also rely on what other people report.

There are several known problems in 3.6.0, after fixing which I may release it as "Beta" to encourage more use and testing.
#3308
Quote from: Cassiebsg on Tue 28/12/2021 16:37:32
MP3 used to be copyrighted, it no longer is, but you still need an exterior codex installed to play it, as far as I remember.

That's MPG/AVI videos, MP3 sounds do not require external codecs.

There was a problem of some MP3 or OGG sounds not playing an ending bit, which was never fixed, but I recall the solution was to add a tiny empty gap in the end (not sure).
#3309
Oh, I forgot to mention, if chosen to do in rep-exec - it should be rep-exec-always, so to make it work all the time, because regular rep-exec is disabled during blocking game actions.
#3310
@CaptainD, can't say I understand all the context, but it's absolutely true that you should test an object for null if it *may* be null, prior to using it further.

Another thing that I might mention, in asynchronous programming a usual tradition is to use time as a limitation, rather than the number of tries, e.g. if you'd use DateTime functions to remember the time before you start connecting and wait for X seconds max (where X is whatever you think is okay for players to wait).

Whether to check for connection in one same function or in rep-exec imho depends mostly on whether you want players to retain input while this work is being done. Because that would be the biggest difference: if the reconnect/upload is done within 1 script function, then players won't be able to interact with anything in game until the script ends; at the same time if it's done in rep-exec (one try at a time) then players will be able to interact with the game while this process is happening.

If there's concern about overloading rep-exec with stuff, the common solution is to set a variable telling whether this process is going, and only do these connection tasks if it's active, and not otherwise. Thus you will skip unnecessary actions for the rest of the game.
#3311
Quote from: Dualnames on Mon 27/12/2021 10:25:50
Would upgrading to 3.6 make sense? Cause that was my plan to be honest. Haven't fully decided to that part yet.

I can't tell whether it makes sense because don't know about your requirements. 3.6.0 is relatively usable now, but there were alot of internal changes and some secondary things may still be untested (just yesterday it was found that there's something wrong with the video playback).
#3312
Quote from: Snarky on Thu 23/12/2021 07:56:17And there are always requests for other improvements and updates: some people have asked for an upgrade to AGS 3.5, for example

So, this came completely on sudden, but we found out that 3.5.0 has a unintended and undocumented change in behavior where the fully transparent GUI (Transparency = 100) would not accept clicks on them (historically in AGS they would). Which would break something in this client from what I heard. Unfortunately 3.5.0 is long out and i prefer to not touch it, but 3.5.1 has this fixed, so if you're upgrading perhaps it will make more sense to upgrade to 3.5.1 (this is a minor release that contains only fixes and perfomance improvements).
#3313
AGS does not support creating most of the game objects at runtime*, the only alternate way is to use custom structs and script your own drawing and interaction.


* exceptions are: Overlays, Viewport, Camera and dynamic sprites.
#3314
Strictly speaking the acsprset.spr itself is not from 3.5.1, as it was saved in 2016 last time, but current version is supposed to open older spritefile too.

EDIT: the error message "Failed to open spriteset file nnn" means that the file could not be opened at all (so it's not because of the bad contents).

Is the file actually in the folder after you unpacked it? What it's size?
Do you open other projects normally?
#3315
Quote from: bx83 on Sat 25/12/2021 03:06:34
Got the file okay, but it says the acsprset.spr is corrupt, so I can't open the project.

What version of ags are you running?

You may check the version if you open Game.agf in any text editor. At the top there will be a line like:
Code: ags
<AGSEditorDocument Version="3.0.3.2" VersionIndex="27" EditorVersion="3.5.1.11">



Checked the project now, it opens fine in the latest stable version.
#3316
Quote from: Khris on Fri 24/12/2021 10:53:38
If the tile map sprite is imported as regular sprite, you can create a DynamicSprite from it, then crop it down to the individual tile.
I'd use a global array of dynamic sprites and prepare them at the start of the game (by doing the above in a loop).

I wanted to mention, as a future alternative, 3.6.0 adds extended DrawImage variant that lets you pass source rectangle coordinates, thus allowing to copy a tile from the source sprite.
The new function looks like
Code: ags

import void DrawImage(int x, int y, int spriteSlot, int transparency=0, int width=SCR_NO_VALUE, int height=SCR_NO_VALUE,
						int cut_x=0, int cut_y=0, int cut_width=SCR_NO_VALUE, int cut_height=SCR_NO_VALUE);

Thus you may save on creating separate tile images.
#3317
So, this is a side note, but I've been looking into the crash Slasher mentioned few posts above, and it turned out that TextBox crashes the engine if there's empty string and you press Backspace again (when there's nothing to delete).

There has to be another patch made for 3.5.1....
#3318
Look up "Custom Properties" in the manual, these are named variables that may be attached to game objects, set in the editor and read or changed in script.
#3319
Line numbers were added to 3.6.0 wip, but it's likely we're having another 3.5.1 patch with dialog-related bug fixed, so maybe it may be transferred there too.
#3320
This is strange. I might test this out myself, but in the meanwhile, would that work if you check ID instead?

i.e.
Code: ags

if (this.ID == Sara.ID) { anim_view = 242; }
SMF spam blocked by CleanTalk