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 - Radiant

#901
So, how about we pick a time and date here?
#902
Editor Development / Re: Crash in 3.3.0
Mon 31/03/2014 09:01:37
The user says "move around", so I take that as meaning dragging the window to another location on-screen, not minimizing it.
#903
Editor Development / Re: Crash in 3.3.0
Mon 31/03/2014 08:21:13
I'm afraid we've got another one that may be related. One player points out that when playing in windowed mode, if he moves the window around, this may cause his game to crash and/or corrupt saved games. It only does this when he moves the window down while the game

The exception is as follows, "An exception 0xC0000005 occurred in ACWIN.EXE at EIP = 0x00469B98 ; program pointer is -1893, ACI version 3.3.0.1156, gtags (0,7)" and the crash dump looks like this (does that work for you? Apparently the user opened the .dmp file in visual studio),
Spoiler
Dump Summary
------------
Dump File:   CrashInfo.3.3.0.1156.dmp : C:\Program Files (x86)\Steam\SteamApps\common\Heroine's Quest\CrashInfo.3.3.0.1156.dmp
Last Write Time:   3/30/2014 7:53:14 PM
Process Name:   Heroine's Quest.exe : C:\Program Files (x86)\Steam\steamapps\common\Heroine's Quest\Heroine's Quest.exe
Process Architecture:   x86
Exception Code:   0xC0000005
Exception Information:   The thread tried to read from or write to a virtual address for which it does not have the appropriate access.
Heap Information:   Not Present

System Information
------------------
OS Version:   6.2.9200
CLR Version(s):   

Modules
-------
Module Name   Module Path   Module Version
-----------   -----------   --------------
Heroine's Quest.exe   C:\Program Files (x86)\Steam\steamapps\common\Heroine's Quest\Heroine's Quest.exe   3.3.0.1156
ntdll.dll   C:\Windows\System32\ntdll.dll   6.2.9200.16420
kernel32.dll   C:\Windows\System32\kernel32.dll   6.2.9200.16384
KERNELBASE.dll   C:\Windows\System32\KERNELBASE.dll   6.2.9200.16451
quartz.dll   C:\Windows\System32\quartz.dll   6.6.9200.16384
winmm.dll   C:\Windows\System32\winmm.dll   6.2.9200.16642
shlwapi.dll   C:\Windows\System32\shlwapi.dll   6.2.9200.16384
opengl32.dll   C:\Windows\System32\opengl32.dll   6.2.9200.16384
user32.dll   C:\Windows\System32\user32.dll   6.2.9200.16420
gdi32.dll   C:\Windows\System32\gdi32.dll   6.2.9200.16654
advapi32.dll   C:\Windows\System32\advapi32.dll   6.2.9200.16384
shell32.dll   C:\Windows\System32\shell32.dll   6.2.9200.16550
ole32.dll   C:\Windows\System32\ole32.dll   6.2.9200.16451
oleaut32.dll   C:\Windows\System32\oleaut32.dll   6.2.9200.16657
ddraw.dll   C:\Windows\System32\ddraw.dll   6.2.9200.16384
dinput.dll   C:\Windows\System32\dinput.dll   6.2.9200.16384
dsound.dll   C:\Windows\System32\dsound.dll   6.2.9200.16384
msvcrt.dll   C:\Windows\System32\msvcrt.dll   7.0.9200.16384
WINMMBASE.dll   C:\Windows\System32\WINMMBASE.dll   6.2.9200.16645
glu32.dll   C:\Windows\System32\glu32.dll   6.2.9200.16384
sechost.dll   C:\Windows\System32\sechost.dll   6.2.9200.16384
rpcrt4.dll   C:\Windows\System32\rpcrt4.dll   6.2.9200.16622
combase.dll   C:\Windows\System32\combase.dll   6.2.9200.16420
dciman32.dll   C:\Windows\System32\dciman32.dll   6.2.9200.16453
powrprof.dll   C:\Windows\System32\powrprof.dll   6.2.9200.16384
cfgmgr32.dll   C:\Windows\System32\cfgmgr32.dll   6.2.9200.16384
devobj.dll   C:\Windows\System32\devobj.dll   6.2.9200.16384
sspicli.dll   C:\Windows\System32\sspicli.dll   6.2.9200.16420
CRYPTBASE.dll   C:\Windows\System32\CRYPTBASE.dll   6.2.9200.16384
bcryptPrimitives.dll   C:\Windows\System32\bcryptPrimitives.dll   6.2.9200.16384
imm32.dll   C:\Windows\System32\imm32.dll   6.2.9200.16384
msctf.dll   C:\Windows\System32\msctf.dll   6.2.9200.16496
gameoverlayrenderer.dll   C:\Program Files (x86)\Steam\gameoverlayrenderer.dll   2.13.4.49
psapi.dll   C:\Windows\System32\psapi.dll   6.2.9200.16384
SHCore.dll   C:\Windows\System32\SHCore.dll   6.2.9200.16433
uxtheme.dll   C:\Windows\System32\uxtheme.dll   6.2.9200.16537
atiu9pag.dll   C:\Windows\System32\atiu9pag.dll   8.14.1.6268
version.dll   C:\Windows\System32\version.dll   6.2.9200.16384
FileBXH32.dll   C:\Users\Alex\Desktop\League of Legends\Deskpin\FileBX\FileBXH32.dll   2.1.0.0
dwmapi.dll   C:\Windows\System32\dwmapi.dll   6.2.9200.16384
hid.dll   C:\Windows\System32\hid.dll   6.2.9200.16384
setupapi.dll   C:\Windows\System32\setupapi.dll   6.2.9200.16496
wintrust.dll   C:\Windows\System32\wintrust.dll   6.2.9200.16666
crypt32.dll   C:\Windows\System32\crypt32.dll   6.2.9200.16666
msasn1.dll   C:\Windows\System32\msasn1.dll   6.2.9200.16384
clbcatq.dll   C:\Windows\System32\clbcatq.dll   2001.12.10130.16384
MMDevAPI.dll   C:\Windows\System32\MMDevAPI.dll   6.2.9200.16420
AudioSes.dll   C:\Windows\System32\AudioSes.dll   6.2.9200.16451
wdmaud.drv   C:\Windows\System32\wdmaud.drv   6.2.9200.16384
ksuser.dll   C:\Windows\System32\ksuser.dll   6.2.9200.16384
avrt.dll   C:\Windows\System32\avrt.dll   6.2.9200.16420
msacm32.drv   C:\Windows\System32\msacm32.drv   6.2.9200.16384
msacm32.dll   C:\Windows\System32\msacm32.dll   6.2.9200.16384
midimap.dll   C:\Windows\System32\midimap.dll   6.2.9200.16384
AGSteam.dll   C:\Program Files (x86)\Steam\steamapps\common\Heroine's Quest\AGSteam.dll   0.0.0.0
steam_api.dll   C:\Program Files (x86)\Steam\steamapps\common\Heroine's Quest\steam_api.dll   1.98.31.73
msvcr90.dll   C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6871_none_50944e7cbcb706e5\msvcr90.dll   9.0.30729.6871
profapi.dll   C:\Windows\System32\profapi.dll   6.2.9200.16384
d3d9.dll   C:\Windows\System32\d3d9.dll   6.2.9200.16384
aticfx32.dll   C:\Windows\System32\aticfx32.dll   8.17.10.1140
atiumdag.dll   C:\Windows\System32\atiumdag.dll   9.14.10.924
atiumdva.dll   C:\Windows\System32\atiumdva.dll   8.14.10.363
steamclient.dll   C:\Program Files (x86)\Steam\steamclient.dll   2.13.4.49
ws2_32.dll   C:\Windows\System32\ws2_32.dll   6.2.9200.16384
IPHLPAPI.DLL   C:\Windows\System32\IPHLPAPI.DLL   6.2.9200.16420
imagehlp.dll   C:\Windows\System32\imagehlp.dll   6.2.9200.16384
tier0_s.dll   C:\Program Files (x86)\Steam\tier0_s.dll   2.13.4.49
vstdlib_s.dll   C:\Program Files (x86)\Steam\vstdlib_s.dll   2.13.4.49
secur32.dll   C:\Windows\System32\secur32.dll   6.2.9200.16384
nsi.dll   C:\Windows\System32\nsi.dll   6.2.9200.16384
winnsi.dll   C:\Windows\System32\winnsi.dll   6.2.9200.16384
cryptsp.dll   C:\Windows\System32\cryptsp.dll   6.2.9200.16384
rsaenh.dll   C:\Windows\System32\rsaenh.dll   6.2.9200.16384
Steam.dll   C:\Program Files (x86)\Steam\Steam.dll   0.0.0.0
Steam2.dll   C:\Program Files (x86)\Steam\Steam2.dll   2.0.2117.156
dbghelp.dll   C:\Program Files (x86)\Steam\dbghelp.dll   6.7.5.0
CSERHelper.dll   C:\Program Files (x86)\Steam\CSERHelper.dll   4.50.0.0
[close]
#904
Since I hadn't written this earlier, I think the following would be good additions to the awards.


  • Best Resource. This was traditionally an AGS award, and given how many modules and plugins we get these days, we should have it back.
  • Best Game in Communal Series. I would like to recognize the effort put into the OSD, RON, and MMM 'verses, I beleive they're underappreciated in the awards.
  • Best Experimental Game. I'm fond of games that try something different. We'd have to word it carefully so that the big classic-style adventures we get each year don't qualify for this one.
  • Best Newcomer. Assuming we can find a definition that's fair and unambiguous.
#905
Quote from: Monsieur OUXX on Sun 30/03/2014 09:04:02


*Thrivaldi Sign Of Approval*

(but Fremont always has some kind of shield :) )
#906
Editor Development / Re: Crash in 3.3.0
Sun 30/03/2014 00:09:39
Thank you very much.

(I've added the restart option to the tracker, for easy reference)

(edit:) the player in question confirms that it works now.
#907
Editor Development / Re: Crash in 3.3.0
Fri 28/03/2014 23:52:45
Quote from: Crimson Wizard on Fri 28/03/2014 23:18:35
3. If load fails restart the game.
I would suggest this approach. If the user tries to restore a game, it is already a given that he's throwing away his current game state, because that's what restoring a game means (and it's likely that he is restoring from a death screen). Therefore it shouldn't be necessary to create a complicated system to let the user continue his (unwanted) current game in the case that restoring fails. Restarting is simply a nicer approach than terminating to desktop. It should be easy to force a hard restart by invoking a ShellExecute on the game's executable file to get a new process, then silently terminating the current process.

QuoteAlternatively, there may be a special built-in restore/restart/quit menu.
This would be an interesting feature to consider for AGS 3.4.

Quote from: Radiant on Fri 28/03/2014 22:52:43
Yes, and in most cases it works that way. The reason this corruption got unnoticed was that there was a check missing on a single case (this is why I made a fix recently).
Then I think that most of the problem is solved now.

Quote from: Radiant on Fri 28/03/2014 22:52:43
What is possible to do: there's a way to tell the memory offsets which limit the corrupted region in file, then fill it with zeroes (e.g. in binary hex editor). This may at least fix the savegames. I may try that out.
If you can fix the most recent saved game (by timestamp) without too much trouble, that would be nice. If not, I'd ask him to restart; considering how far he is in the game it shouldn't take him that long to get back to his current position.

Thank you for your help!
#908
Editor Development / Re: Crash in 3.3.0
Fri 28/03/2014 22:52:43
That's a good point. Thinking about this, I suppose that many AGS functions, including restoring the game, assume that variables and structs have a valid value. That's fair, and it would be a ridiculous amount of work to add assert()s everywhere. So doing that is not the productive approach here. Rather, I believe there are three options worth considering.

First, is it possible to give the user a more friendly response than a crash message (to invalid saved games in general, not just this one). Rather than throwing an exception, it would be preferable if the engine showed a message "Sorry, this saved game is corrupt" and then abort. It would be even better if instead of aborting, the game would either continue or restart, although it depends on the internals of RestoreGame() whether that can be made to work.

Second, can we keep the situation from spreading? Currently restoring this saved game crashes, but restoring it from the title works, allowing the user to play on and make a second saved game, which will again crash when loaded; so now the user has two bad saves. Ideally, if a saved game doesn't load from within the game, then it shouldn't load from the title screen either. It is better to have a user lose one save, than to give that user a series of invalid saved games.

And finally, is it possible to find out what caused this? I'm inclined to say "no" at this point; as you told me, all five saves in that zipfile are corrupt, so it's not possible to compare the first corrupt with the last good saved game. All we know that this issue is rare, and that the player did something between starting the game and that save, and it might also have been caused by the Steam software, by some overly intrusive security package, or by a memory editor that some players use (to max out their stats or to claim Steam achievements). Unless we have a reliable way of reproducing it, the search space is simply enormous and finding this is not at all practical.

Your thoughts on this would be appreciated.
#909
Editor Development / Re: Crash in 3.3.0
Fri 28/03/2014 21:01:08
Quote from: Crimson Wizard on Fri 28/03/2014 20:53:19
This is a too optimistic view on problem. We can't add fixes that help to recover from one particular problem in one game. And I don't see an easy way to check if it is only one room that was corrupted. Such features as recovering from errors needs a systematic approach.
I agree. I can see two ways of being systematic about this. First, assumedly a saved game contains an array of room structs (among other things); if one element of this array is corrupt, the rest can still be loaded, which would be preferable to aborting the game. And second, you can apparently tell when a room struct is invalid by noticing that this value for the size of an array is out of bounds.

Alternatively, if this data is only for 2.71 games, can it just be ignored when running in 3.3?
#910
Thanks. Control-D shows the time of day, that is intentional. I'll look into the other issues you mention.
#911
Editor Development / Re: Crash in 3.3.0
Fri 28/03/2014 20:40:51
Ok, so the question is when the data became corrupted. That's a tough call considering how rarely it happens. Does this array size have a getter/setter function that can be traced?

Alternatively, would it be possible to recover from this error? For example, by loading the entire game but treating this particular room as "never visited" because its local data cannot be loaded? That and a warning or log message would be a graceful solution.
#912
Editor Development / Re: Crash in 3.3.0
Fri 28/03/2014 20:13:56
Quote from: Crimson Wizard on Fri 28/03/2014 19:55:20
Hmm, is not the room 81 a room with avalanche you first see in the intro?
Yes, it is.

QuoteThis probably happened when user tried to load save while being in game already.
That matches the error report, yes. The user states that he can still play by quitting the game and loading from the start screen. He also reports that the game likewise crashes when he quits, which matches your earlier statement.

QuoteI am not sure room #81 is necessarily a culprit,
Unlikely; it's one of the least complicated rooms in the game, with only two objects and 20 lines of room script.

Quotebut I can't tell much because I don't see the insides of your game.
I'd be happy to help, but I was hoping it would be possible to avoid this by adding a few nullpointer checks to the AGS code.

QuoteE: what I'd like to know, does this happen with any save in this version of the game? Has only one user reported this?
Only one user has reported this.
#913
Editor Development / Re: Crash in 3.3.0
Fri 28/03/2014 18:58:06
Ok. Assuming these counts are base-zero, that corresponds to the object that shows the location name ("Jarnvidr" in fancy lettering) in the forest. When the player enters a new area, this location text is shown (then slowly removed via object transparency) and a string is set for the auto-save. This is all done in the following function, which is called from the room's on_call function, which itself is called from the global script's on_event for Enter Room. Then the next time repeatedly_execute() triggers, it detects that the string is set, and does an automatic save (I'm doing it this way because saving games from the enter room event doesn't always work).

Code: ags
function SetCaption (int o) {
  String msg = "Unknown";
  SetObjectBaseline (o, 250);
  if (caption_loc == GetObjectGraphic (o)) {
    ObjectOff (o);
  } else {
    caption_loc = GetObjectGraphic (o);
    SetObjectTransparency (o, 100);
    ObjectOn              (o);
    caption_obj  = o;
    caption_time = 0;
    o            = GetObjectGraphic (o);
    if (o == 2377) msg = "Fornsigtuna";
    if (o == 2373) msg = "Munarvagir";
    if (o == 2379) msg = "Jarnvidr";
    if (o == 2378) msg = "Svartalfheim";
    if (o == 2381) msg = "Gandvik";
    if (o == 1262) msg = "Nidavellir";
    if (o == 2380) msg = "Gastropnir";
    SetGlobalString (9, String.Format ("Autosave - %s", msg));
  }
}
#914
Heroine's Quest :P


Also, I'd like to see David Lynch's take on the cult classic, Snail Quest. And of course, we already have a movie of The Secret Of Monkey Island!
#915
Editor Development / Re: Crash in 3.3.0
Fri 28/03/2014 11:39:30
Here you go:

https://www.dropbox.com/s/fv2g4yb0ulqa7yt/Heroine's%20Quest%201.2.rar

It reproduces for me if you open the second saved game ("Autosave Jarnvidr"). Given that the rooms of Jarnvidr use Rawdraws, it may have something to do with restoring the screen's background?
#916
The interesting question is, will you be releasing AGS games on Android?
#917
I appreciate the input, but it's not a performance issue. Rather, it turns out that it's a semi-known issue that AGS games conflict with Logitech Setpoint; this is also known to affect other AGS games, including Wadjet Eye's and AGDI's, over the past couple years.

Unfortunately, there doesn't appear to be a fix for it so far.
#918
Quote from: Ogon on Wed 26/03/2014 12:32:29And the composer's music work should be judged by free sound effects taken from some random website?
If a game's designer is stupid enough to ruin a good composition by taking bad sound effects from some random website, then the game clearly doesn't deserve an award for that. Remember that the awards are for games, not for individual composers. If as a composer, you want to win awards for standalone songs, there's other sites for that.

Quoteunless the composer is also the audio guy responsible for the sound effects. However, I disagree that is necessarily the case.
Please look over the games database and see how often you find a separate credit for sound effects. This may be common in films, but it's pretty rare in AGS games.
#919
Quote from: Darth Mandarb on Wed 26/03/2014 11:42:17So is this a demo for a game that is actually still in production?
No, it's actually for the OSD Plugin, so it should be moved to the Modules&Plugins forum.
#920
Quote from: Ogon on Wed 26/03/2014 10:12:33
As a composer, I think merging SFX and music makes no sense at all. I don't see why a composer should be barred from getting recognised for their work just because the sound effects guy wasn't doing a good job. It's just a different thing.
Because for most games, it's either the same guy doing the composing and sound effects, or the sound effects are taken from a free public website somewhere. In neither case does it make sense to give a separate award for the sound.
SMF spam blocked by CleanTalk