Preparations for AGS 3.3.0 Beta

Started by Crimson Wizard, Tue 05/03/2013 12:57:08

Previous topic - Next topic

SpeechCenter

I don't know if it's only my machine or something more general, but when I try to run the beta I get on startup System.AccessViolationException, the stack trace shows it comes from initialize_native() (which is called by AGS.Native.NativeMethods.Initialize())

If I replace AGS.Native.dll with the one from AGS 3.2.1 everything works fine.

The system is a fully patched Windows 7 Home Premium SP1 64 bits.

Crimson Wizard

#21
Quote from: s_d on Mon 18/03/2013 01:45:57
Should we acknowledge EvilTypeGuy (Shawn Walker) and Electroshokker (Tom Vandepoele) in the Linux credits?  They kinda carried the torch for all of us penguin fans, and it would make me feel better to see their contribution acknowledged, somehow (regardless of how much or little of their code we're still using).
I didn't know Shawn Walker gave his code for AGS. I thought that guy just wrote some library, that Chris Jones used. Ok, I'll add them too.

Quote from: s_d on Mon 18/03/2013 01:45:57
Regarding my name... good sleuthing CW!  However as talented as Denis may be, I am not him (and I do not know him).
Whoops! Probably mistyped the github username. I'll fix the credits then.

Quote from: s_d on Mon 18/03/2013 01:45:57
Ah, so we have to use real names?  I kind of don't like that. It's not that I'm anybody special (I'm not).
It's not about making anyone special... Well, everyone has personal opinion on that. For me, I like "human" names more, because they are... hmmm, "human" :)?
Forum nicknames may be good inside community, But I always thought it is a bit silly to use them when you release your work to wider audience.
Of course nobody forces to agree to this, if you don't like to use your real name, I'll put a nickname or pseudonym or whatever.





Quote from: SpeechCenter on Mon 18/03/2013 06:48:06
I don't know if it's only my machine or something more general, but when I try to run the beta I get on startup System.AccessViolationException, the stack trace shows it comes from initialize_native() (which is called by AGS.Native.NativeMethods.Initialize())
Eh, bad. I'll check this out.

Crimson Wizard

Well, I can't say I like this, but I think I am going for version 3.30.0  :-X. I know, there's a touch of absurd in this, but it's not good to have engine minor version 3 after 21 either (and this will cause complications when detecting compatible game versions). This is a compulsory measure, hopefully it won't hurt anyone too much.

Snarky

Well, I don't like that it means we're stuck with incrementing the sub-version number by 10 every update until AGS v4, but as long as it's understood that it's strictly a workaround for backwards compatibility, and that the version is really 3.3.X, I guess it doesn't really matter.

Crimson Wizard

Quote from: Snarky on Wed 20/03/2013 12:37:02
Well, I don't like that it means we're stuck with incrementing the sub-version number by 10 every update until AGS v4,
No, of course not! We may increase it by 1 as before. It's only about making single leap to 3.30.

Snarky

#25
Ugh, so the version progression would go (conceptually, whether or not all these versions exist):

3.1
-3.11
-3.12
-...
3.2
-3.21
-3.22
-...
3.30
-3.30.1
-3.30.2
3.31
-3.31.1
-3.31.2
-...

That's fucked up.

Crimson Wizard

#26
Not exactly...

-----> real previous AGS versions:
3.0.0
- 3.0.1
3.1.0
- 3.1.1
3.2.0
- 3.2.1
- 3.2.2
-----> jump
3.30.0
- 3.30.1
- 3.30.2
3.31.0
- 3.31.1
- 3.31.2
3.32.0
etc

The internal engine version will receive 1 extra digit (3rd). That's true.
But this inconsistency started with the change to 3rd AGS generation. 2nd generation editor & engine had same version format, like 2.61 or 2.72.
3rd generation editor was 3.2.1, but the engine was 3.21...


EDIT: Oh, well, I can't say I like this too. Maybe we could leave everything as it is (different format styles)....

Snarky

My point was that if we'll be having updates like 3.31, it's confusing and ugly because it's not just a "very small" update on 3.30 (the way going from 3.2 to 3.21 was), but a whole sub-version increment. And it implies that there've really been 30 previous major versions of AGS 3.

My take on it:
-3.21 and 3.2.1 are the same thing, just displayed differently.
-It's better to fix the inconsistency than to leave it.
-In formal and internal representations, the best version format is X.X.X.XXXX. The next version should then be 3.3.0.XXXX.
-If having the version progression go from 3.22 to 3.3.0 causes real, technical problems, it might be defensible to represent 3.3.0 as 3.30.0, just as a workaround.
-In that case, it should increment by 10 whenever it's updated, because the trailing 0 is just for convenience. So we would have 3.30.X followed by 3.40.0 (unless going straight to 4.0.0)


Crimson Wizard

Ok, sorry, this was complete bullshit. don't know what I was thinking.....

Crimson Wizard

#29
Ok, so.
The engine will treat previous X.XX.XXXX versions as X.X.X.XXXX.
To clarify:
Version 2.72.XXXX will be read and compared as 2.7.2.XXXX
Version 3.21.1115 will be read and compared as 3.2.1.1115

New version will be 3.3.0.1130).

This may cause some confusion for ppl who used ports (where they judged version only be engine output), but the engine did not change version since, and there wasn't any version numbers history, other than the date of build.

Snarky


Crimson Wizard

Updated distribution:
http://www.mediafire.com/?7tyq75kre5nzm0z

What has changed: consistent version number, also fixed and expanded credits in the Changes.txt.

@SpeechCenter, unfortunately I could not find anything suspicious in AGS.Native initialization function. If it still crashes for you, perhaps I could make a version with logging, unless you can run it under debugger?

What is left to do in editor:
1. Update version and "What's new" on Welcome Screen. I really hope tzachs can do that, because he did latest features to the editor.
2. Update version in help file. I need to remember how this is done. Hopefully one just need to edit an html file?
3. The Splash bitmap! Any idea was there a source image with layers? It won't be very easy to change the version numbers right on BMP.

SpeechCenter

#32
Ran it again, same result.
Unfortunately running it under the debugger does not reproduce the problem so it's probably something uninitialized and since this happens right at the beginning I can't attach to the process before the exception occurs. Note that AGS.Native was not built with debug symbols so even if we work around it, like adding a message box before loading the dll, debugging would not be easy (though I hope it still reproduces after adding debug symbols).

I also tried moving the msvc DLLs out of the directory so it uses the system ones but the problem doesn't go away.


Crimson Wizard

Here are debug versions of Native and Editor exe, also added some message boxes:
http://www.mediafire.com/?uxt04sp0uu88tmp

SpeechCenter

Seems to have trouble loading the DLL (even though I supplied it the debug versions of VC runtime).
Can you try building AGS.Native with symbols but in release?
(I would have tried building it myself but VC 2008 is currently not installed and I don't want to change something that will cause this error to magically disappear)

The good news is that attaching to the process after the second message box reproduces the problem. I suspect it might have something to do with stricmp and agsfnt0.ttf, but I didn't check this thoroughly.

Crimson Wizard

#35
Here: http://www.mediafire.com/?rpim6o9kfn50b2k
(hopefully I did the right thing)


EDIT: I think I found it :) thanks for the info about *.ttf and stricmp. I will make a new build shortly.
You were right about uninitialized thing.... urgh.


SpeechCenter

#37
Haven't tested it yet, but I also debugged it, the problem that I see is that _assetLib.AssetCount is not initialized to 0 so AssetManager::FindAssetByFileName goes into the loop if the value is above 0 (since it's random, sometimes it's negative so it doesn't go into the loop). Anyway, I'll take your new build now and test it.

Edit: Just ran it, seems to work fine, wondering if you fixed it the same way I thought it should :)

Crimson Wizard

#38
Quote from: SpeechCenter on Fri 22/03/2013 14:08:54
Edit: Just ran it, seems to work fine, wondering if you fixed it the same way I thought it should :)
Yes, it appears I forgot to add constructor to AssetLibrary. Just slipped out of my mind.
(Unlike C#, C++ does not init members with 0s or nulls)

Shane 'ProgZmax' Stevens

This version appears to be incompatible with the agsjoy.dll Wyz made.  I get illegal exceptions whenever it tries to use any functions from agsjoy and crashes back to the editor.  I don't know whether this is some internal issue with the way the dll was made (specific to the 3.2 version?) or if you changed how plugins and dlls are accessed.  I would ask wyz but I haven't seen him in awhile.

SMF spam blocked by CleanTalk