Strange errors showing up in my project in Godot 3.2.2

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By JimG

I’m getting some strange errors in Godot 3 while following along with a Kids Can Code Intro to 3D tutorial. I am stuck with windows 10, because as far as I know, Linux doesn’t have the Lenovo normal vs gaming mode software or the software for my NVIDIA GeForce GTX 1650 graphics card (tried using Manjaro Linux, and it refused to work right with my monitor/tv—displayed half of the screen right, rest as noise, both set at the same resolution, etc.). So some of this may be M$ nonsense…not sure.

First, on switching between scenes, I sometimes see this error (in red):

Switch Scene Tab
core/math/quick_hull.cpp:402 - Condition “O == __null” is true. Continuing.
core/math/quick_hull.cpp:428 - Condition “!F2” is true. Continuing.
core/math/quick_hull.cpp:402 - Condition “O == __null” is true. Continuing.
core/math/quick_hull.cpp:428 - Condition “!F2” is true. Continuing.

Can someone please translate that into what’s actually going wrong with [whatever it is that’s causing this]?

Second, on some items, I get the following (yellow) text in the debugger:

drivers/windows/file_access_windows.cpp:105 - Case mismatch opening requested file ‘BlockHexagon.tscn’, stored as ‘blockHexagon.tscn’ in the filesystem. This file will not open when exported to other case-sensitive platforms

However, if I copy that file to another case-sensitive site, it’s fine. Not sure what’s going on here, but I’m fairly certain something odd is going on.

I’m not comfortable with seeing errors that aren’t present and explained in the tutorial, where I’m instructed to just ignore it. To me, those are saying I screwed up somewhere, but where?

Thanks,
–jim

Would need a project with the errors to be able to debug those.

The errors are because it is failing to get mesh faces, but no way of knowing without seeing the data its working with.

https://github.com/godotengine/godot/blob/362774c6176596f87506e3d330dd1d12b0b75e19/core/math/quick_hull.cpp#L399-L402

Then failing to find edges.

https://github.com/godotengine/godot/blob/362774c6176596f87506e3d330dd1d12b0b75e19/core/math/quick_hull.cpp#L427-L428

Perhaps there is an issue with the mesh. If your mesh is fine then it could be a bug, and I would recommend reporting it: Issues · godotengine/godot · GitHub

The case mismatch thing is that you might doing something like calling a load() or preload() and typing the name with different case than it has in the file system. This warning is saying that your script is only going to work on an OS that allows case-insensitive operations on file names in the OS.

IE - A file named hello.tscn
Code - load(Hello.tscn)

Works on Windows, crashes on Linux.

This is only a speculative example though, because there is no code to look at. It could be any other sort of file operation. So do a search on that file name in your scripts and such.

avencherus | 2020-07-20 09:42

I think I got all of the mesh stuff right, but yes, I was having trouble with that. I was failing to move back to the Scene tab and trying to add that from the Import tab. Once I started remembering to add the collision shape from Scene, the errors about collision shapes needing a shape went away. I’ll open the debugger window back up and see if its errors went away, too.

As for the filenames, using your examples, Hello.tscn is saved as Hello.tscn. But I just did a quick test:

(6:53) ~ % gvim t T

and gviim would not move on to T, and then “rm T” removed t, so who knows what M$ is doing to fsck up filenames. So I’m guessing that it’s all in how M$ stores the filename internally. Would it convert Hello.tscn to hello.tscn internally in the filesystem itself, and then waste space to store its name to display? I suppose that wouldn’t surprise me with M$.

So if I understand what’s going on here, if I want to be able to export my games to anything other than windows (e.g., Linux, Android (which runs on Linux), or MacOS X … NEVER iOS[1]), I’m going to need to use all lowercase filenames, and rename BlockLarge.tscn to blocklarge.tscn (or block_large.tscn?). Is that correct?

Here’s what’s surprising: tutorials on Youtube all suggest the mixed case filenames to split up words, which, as I understand it, is the current de facto standard these days. But none of the ones I’ve seen mention anything about this case-sensitive vs M$ issue.

[1] I will not even attempt to export to iOS for two reasons: First, I’m not going through Apple’s BS process and paying their insanely high fees to release anything there, and Second, my Mac Mini died years ago, and my understanding is that you need a Mac to release to iOS. Oh well, if, by some chance, one of my future games goes viral somehow, iphone/ipad people will have to buy an Android device if they want a mobile version. Not much I can do about that.

Thanks. I’ll check to see if those debugger errors are still there and report back if they are.

JimG | 2020-07-20 12:26

Ok, I went back to the Scene objects with mixed-case filenames (e.g., BlockLarge.tscn) and in some cases renamed them (e.g., large_block) and saved all of them, using “Save As” to force them to be all lowercase in the filename, regardless of how the Scene (object) is named. That got rid of some of the mixed-case warnings, but still left ground.tsn,. It still wanted to import them using their mixed-case filenames. So I closed the project, edited ground.tscn in gvim, and corrected the filenames. That eliminated the warnings about using mixed cases.

I didn’t find the exact cause of the following errors, but I found two objects (both Scenes) that had them. It had something to do with how I set the mesh instance, and from there, the collision shape. I deleted and re-imported each, and these errors also went away.

core/math/quick_hull.cpp:402 - Condition “O == __null” is true. Continuing.
core/math/quick_hull.cpp:428 - Condition “!F2” is true. Continuing.

Now the problem is figuring out how to set the position and angle of that blasted camera. But I should be able to learn that (again) from both docs and Youtube tutorials.

So thanks again for the help!

JimG | 2020-07-20 18:30

You’re welcome.

Regarding the file names. I’m not sure if that is a cause. Maybe, but I doubt there is an issue with using capitalization. Perhaps the editor isn’t up to date with the actual names in the OS?

What I was referring to is the actual file name, versus how you type that file name in GDScript. They should match exactly, otherwise you’ll get a warning like the one you mentioned.

Like if I were to use the load function:

# My tscn is called:  Node2D.tscn
func _ready() -> void:
	
	var unsafe = load("res://node2D.tscn")
	var safe = load("res://Node2D.tscn")

avencherus | 2020-07-20 18:40

Exactly, filenames were the cause for the warnings about case-sensitive systems. I’d started renaming things before I thought to just use “Save As” (the MUCH more obvious choice … blame cancer #1’s second metastasis, to my brain, for that little mental glitch).

For example, I still have FullSlope in Scenes. But I saved it as full_slope.tscn. Did the same for all of them, and that got rid of the errors about mixed case for good. I just have to remember to do it that way from now on.

JimG | 2020-07-20 18:51