If someone reports that the game crashed when they examined a particular thing, what might be some likely causes for this? I was not able to reproduce the crash.
What kind of crash – did they get a runtime error, or did it just hang? And is it an especially big and/or memory-hogging game?
(I unfortunately don’t have any great ideas myself, but suspect those are questions whose answers can help the real mavens figure it out).
They didn’t say.
I don’t think it’s especially big. I don’t know what makes a game memory-hogging.
I don’t really know either – using lots of lists rather than tables can do it, I think? But in general if you’re just making a regular, Comp-sized game and haven’t had to manually increase the various compiler settings, I think it’s pretty hard to run into memory issues on a modern machine.
I don’t think I messed with any compiler settings.
One of the issues that would cause a crash would be an infinite recursion, i.e. if something within an action or an activity happened to cause that very action or activity to be run again, ad infinitum.
Usually, it would be reproducible, but it could be that there’s some conditional logic involved which starts the infinite descent only under special circumstances.
I guess I’d check whether you’ve established any special rules for examining, and whether the description of the item in question contains anything remotely “suspicious”, any dynamically constructed elements, something like that.
Given that we don’t know what crash means, we’re not likely to be able to help. If you haven’t already, try to get your user to reproduce the problem and tell you exactly what the steps were.
Actually, do you have a transcript? Runtime errors should show up in those, I think, and that might tell you the exact steps to hopefully reproduce the issue.
I don’t have a transcript, or even the name of the user, but I will take a look at the examining rules and the description. Thanks!
I’d second this, from personal experience. One thing that particularly catches me up is
check examining object1: try examining object2 instead; check examining object2: try examining object1 instead;
check pushing object1: try pulling object1 instead; check pulling object1: try pushing object1 instead;
These examples may seem cartoonish but often it just helps to know they exist, and often the problem is buried just one level beneath this.