renaudbedard / fez-1.12-issues

A public repository for FEZ 1.12 testers to log issues
9 stars 0 forks source link

Game exits when entering doors #159

Open GabrielPagano opened 7 years ago

GabrielPagano commented 7 years ago

I'm in the fourth region shown in the game (the first to have water) and whenever I try to go through the doors in the area, the ones that should take me to the other layer of the level, the game exits.

Log: [2016-09-27] Debug Log #4.txt

flibitijibibo commented 7 years ago

Some excerpts from the log...

...
(04:32:31.712) [FNA] INFORMATION : OpenGL Device: Intel(R) HD Graphics 3000
(04:32:31.716) [FNA] INFORMATION : OpenGL Driver: 3.1.0 - Build 9.17.10.4229
...
(04:32:31.776) [Instancing] INFORMATION : Hardware instancing is disabled
...
(04:33:24.271) [Unhandled Exception] ERROR : System.ArgumentException: A matriz de destino não era longa o suficiente. Verifique destIndex e o comprimento, bem como os limites inferiores da matriz.
   em System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
   em System.Array.Copy(Array sourceArray, Array destinationArray, Int32 length)
   em FezEngine.Structure.Geometry.ShaderInstancedIndexedPrimitives`2.<>c__DisplayClass33_3.<UpdateBuffers>b__2()
   em FezEngine.Tools.DrawActionScheduler.Process()

So the good news is that the driver is recent, which is rare for Intel hardware... thanks for keeping that up! The bad news is that Intel's Windows driver still doesn't support hardware instancing, unlike its Linux counterpart, so it ends up falling back to the shader instancing path, which is mysteriously less stable than the fancier rendering path.

At the moment the best I can recommend is seeing if the Singlethreaded mode works better (you can find this in the Game Options menu). If you've been looking for any motivation to try Linux out, there's a pretty good chance that the game will work better on the HD 3000 GPU without the singlethreaded path, but that's only if you really want to do this.

I'll let Renaud drive from here, as he's more familiar with this specific bug than I am.

EDIT: Should also point out that we've had this bug for a really long time, but have no idea why it writes over the buffer despite us having checks for this...?!

GabrielPagano commented 7 years ago

Singlethreaded mode fixed it! Thanks a lot! I'm having a blast with this beautiful game...

renaudbedard commented 7 years ago

I just tried reproducing it quickly on my setup (with hardware instancing force-disabled) and couldn't get it to trigger. I did do a few fixes to potential problems related to non-HW instancing in the latest update to 1.12, which you're running on, but looks like I missed something... I'm glad Singlethreaded mode at least makes you able to play the game, I'll take another look later!

jecs commented 7 years ago

I experienced this issue on 1.12. Singlethreaded set to On fixed the issue.

Here is my log:

(16:36:00.827) [Intro] INFORMATION : Intro is done and game is go!
(16:36:16.652) [Unhandled Exception] ERROR : System.InvalidOperationException
   at Microsoft.Xna.Framework.Graphics.OpenGLDevice.CloneEffect(IGLEffect cloneSource)
   at Microsoft.Xna.Framework.Graphics.Effect..ctor(Effect cloneSource)
   at Microsoft.Xna.Framework.Graphics.Effect.Clone()
   at FezEngine.Effects.BaseEffect.TryCloneEffect(Effect sharedEffect)
   at FezEngine.Effects.BaseEffect..ctor(String effectName, Boolean skipClone)
   at FezEngine.Effects.DefaultEffect..ctor(String effectName)
   at FezEngine.Effects.DefaultEffect.Textured..ctor()
   at FezGame.Components.GlitchyRespawner.Initialize()
   at Microsoft.Xna.Framework.Game.OnComponentAdded(Object sender, GameComponentCollectionEventArgs e)
   at Microsoft.Xna.Framework.GameComponentCollection.OnComponentAdded(GameComponentCollectionEventArgs eventArgs)
   at Microsoft.Xna.Framework.GameComponentCollection.InsertItem(Int32 index, IGameComponent item)
   at System.Collections.ObjectModel.Collection`1.Add(T item)
   at FezEngine.Tools.ServiceHelper.AddComponent(IGameComponent component, Boolean addServices)
   at FezGame.Services.Scripting.VolumeService.SpawnTrileAt(Int32 id, String actorTypeName)
   at (Object , Object[] )
   at FezGame.Components.Scripting.ScriptingHost.<>c__DisplayClass19_1.<ProcessTrigger>b__2()
   at FezGame.Components.Scripting.ActiveScript.StartAction(RunnableAction runnableAction)
   at FezGame.Components.Scripting.ActiveScript.Update(TimeSpan elapsed)
   at FezGame.Components.Scripting.ScriptingHost.ForceUpdate(GameTime gameTime)
   at FezGame.Services.GameLevelManager.ChangeLevel(String levelName)
   at FezGame.Components.Actions.EnterDoor.DoLoad(Boolean dummy)
   at FezEngine.Tools.Worker`1.Act()
   at FezEngine.Tools.PersistentThread.DoActualWork()
   at Common.Logger.Try(Action action)