godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.7k stars 21.11k forks source link

Windows version of godot editor fails if launched with an AppData path that contains non-latin characters #1693

Closed SuperUserNameMan closed 9 years ago

SuperUserNameMan commented 9 years ago

I think it's one of the bugs that could be involved into issue #1684.

I've made this test under a french version of Windows8.1 :

Godot seems to create the project, but when you try to open it, you come back to the project list which is empty.

Bellow is the log : (note : i did not put the "????????" into the log. they were already there.)

`EXEC PATHP??: C:\Users\??????????\Desktop\godot\godot.windows.tools.exe
EXEC PATHP??: C:\Users\??????????\Desktop\godot\godot.windows.tools.exe
opening pack C:\Users\opening pack C:/Users/DETECTED MONITORS: 1
ERROR: EditorSettings::create:  Cannot find path for config directory!
At:  tools\editor\editor_settings.cpp:192
ERROR:  Plugin dir does not exist!
At:  tools\editor\editor_settings.cpp:319
ERROR: EditorSettings::save:  Cannot save EditorSettings config, no valid path
At:  tools\editor\editor_settings.cpp:358
OPENING: C:/Users/??????????/Desktop/godot/godot-test (C:::Users::??????????::Desktop::godot::godot-test)
EXEC PATHP??: C:\Users\??????????\Desktop\godot\godot.windows.tools.exe
running cmdline: "C:\Users\??????????\Desktop\godot\godot.windows.tools.exe" "-path" "C:/Users/??????????/Desktop/godot/godot-test" "-editor"
EXEC PATHP??: C:\Users\??????????\Desktop\godot\godot.windows.tools.exe
EXEC PATHP??: C:\Users\??????????\Desktop\godot\godot.windows.tools.exe
ERROR: EditorSettings::save:  Cannot save EditorSettings config, no valid path
At:  tools\editor\editor_settings.cpp:358
DETECTED MONITORS: 1
ERROR: Memory::free_static:  Condition ' !MemoryPoolStatic::get_singleton() ' is true.
At:  core\os\memory.cpp:58
ERROR: EditorSettings::create:  Cannot find path for config directory!
At:  tools\editor\editor_settings.cpp:192
ERROR:  Plugin dir does not exist!
At:  tools\editor\editor_settings.cpp:319
ERROR: EditorSettings::save:  Cannot save EditorSettings config, no valid path
At:  tools\editor\editor_settings.cpp:358
ERROR: Memory::free_static:  Condition ' !MemoryPoolStatic::get_singleton() ' is true.
At:  core\os\memory.cpp:58
OlexiyKravchuk commented 9 years ago

By the way, my list of projects in the Project Manager was always clean when you run, every time I had to scan again to find a project, but I think that it is normal to be so, until today, when I now carry out tests on a different computer, it turned that it does not clear its list of projects with the last session, but on the computer (Windows 7 x64) is still a problem that it can not install itself, or even to find where were manually uploaded export templates, and there in the user directory name written English letters, but the Windows is not English localization ???

reduz commented 9 years ago

is this only in release or also debug?

OlexiyKravchuk commented 9 years ago

is possible question not to me, but I have just release version with download page.

SuperUserNameMan commented 9 years ago

@reduz : with the editor, debug. I have not yet tried with target=release.

I gave a look at https://github.com/okamstudio/godot/blob/master/drivers/windows/dir_access_windows.cpp it contains some // TODO, utf8 parser in it, as well as some hacks for windows95/98/ME.

OlexiyKravchuk commented 9 years ago

I have some idea, but rather than a compromise solution, but still it can help temporarily, until everything is repaired enough. I propose try to make the opportunity to Godot after starting first sought all necessary files in his local directory location respectively wherever they were, and if there is not found then look, APP_DATA ...

SuperUserNameMan commented 9 years ago

I've managed to fix some parts of this issue into this forked branch : https://github.com/SuperUserNameMan/godot/tree/fix_windows_unicode_path

Now, Godot successfully find and access the AppData folder. It can remember projects created or imported, but still can't open them.

I'm stuck there because there is no error message displayed.

SuperUserNameMan commented 9 years ago

Here are the diff :

Make has_environment() and get_envirnomeent() unicode : https://github.com/okamstudio/godot/commit/735ae20f216a023b58a2247516ef5421ff1b4fe4

And also this optional one that simplify WinMain by using Win32 API : https://github.com/okamstudio/godot/commit/241f19a79940b21f1294b7e8f8e667f79ddc772f

reduz commented 9 years ago

applied the environment variable fix, but the WinMain fix will not likely work because it returns widechar, while Main::setup expects utf8. I'm sure windows can convert from widechar to utf8 but haven't looked much into it. If you can figure out how to convert the commandline you obtained to utf8, then all should work fine

reduz commented 9 years ago

the todos in dir_access should have been removed, they are removed now. That should handle unicode fine

SuperUserNameMan commented 9 years ago

Yep, you are correct about the WinMain fix. I misinterpreted the functioning of the mb_to_utf8(). And I did not notice that WinMain was never actually called by the debug version of godot.

Now that I understood better, here is the fix that simplify the WinMain and that fixes this issue : PR #1807

SuperUserNameMan commented 9 years ago

@OlexiyKravchuk : could you please download and test Godot 1.1rc2 to see if the problem described here is solved on your computer ?

OlexiyKravchuk commented 9 years ago

@SuperUserNameMan Yes, I'll do that right now, very glad to hear that there is a new patch.

OlexiyKravchuk commented 9 years ago

1)It took a long time to all the tests, the problem has not disappeared Godot cuts as before. That's what I see in the console ... http://snag.gy/uwqwe.jpg

2)But now the project manager, do not forget to store all found projects from the last session, and I was able to install the export templates, and Godot was able to identify them, and I could even make the attempt to export projects, I tried to export (2D platformer). and isometric demo (with Troll), I tried to windows and HTLM and Godot create executable files, but they break when you try to run, and HTLM, completely refused to do the file, saying that there is no template, but the template is there but Godot simply did not recognize that, for reasons unknown to me :( The rest of the OS is not available to me.

reduz commented 9 years ago

your crash seems to be related to your sound hardware, DirectSound basically crashes, I've never seen this error

On Wed, May 6, 2015 at 4:52 PM, OlexiyKravchuk notifications@github.com wrote:

It took a long time to all the tests, the problem has not disappeared Godot cuts as before. That's what I see in the console ... http://snag.gy/uwqwe.jpg But now the project manager, do not forget to store all found projects from the last session, and I was able to install the export templates, and Godot was able to identify them, and I could even make the attempt to export projects, I tried to export (2D platformer). and isometric demo (with Troll), I tried to windows and HTLM and Godot create executable files, but they break when you try to run, and HTLM, completely refused to do the file, saying that there is no template, but the template is there but Godot simply did not recognize that, for reasons unknown to me :( The rest of the OS is not available to me.

— Reply to this email directly or view it on GitHub https://github.com/okamstudio/godot/issues/1693#issuecomment-99585836.

SuperUserNameMan commented 9 years ago

@reduz : I have updated the rtaudio source code to the latest version available here https://github.com/thestk/rtaudio

I've made some test on my system and everything seems to work as usual.

Maybe it will solve problems encountered by @OlexiyKravchuk ?

Here is a PR : #1841

godotengine commented 9 years ago

maybe, make a PR I guess but just in case check it because I think I added something like an #ifdef in there for RTAUDIO_ENABLED

On Wed, May 6, 2015 at 6:26 PM, SuperUserNameMan notifications@github.com wrote:

@reduz https://github.com/reduz : I have updated the rtaudio source code to the latest version available here https://github.com/thestk/rtaudio

I've made some test on my system and everything seems to work as usual.

Maybe it will solve problems encountered by @OlexiyKravchuk https://github.com/OlexiyKravchuk ?

Here is a PR : #1841 https://github.com/okamstudio/godot/pull/1841

— Reply to this email directly or view it on GitHub https://github.com/okamstudio/godot/issues/1693#issuecomment-99614415.

OkamStudio

SuperUserNameMan commented 9 years ago

@OlexiyKravchuk : Good to now the project manager works correctly now on you system. About the "%20" that appear into the console, I don't know why Windows Vista display them like that, but I know that "%20" is a way to encode "space" characters. So, I think it should be okay.

SuperUserNameMan commented 9 years ago

@okamstudio : Yes, I've done a PR already. #1841 I kept your modifications. It compiled fine with VC2010.

reduz commented 9 years ago

Is this issue still a problem? I would think it should be fixed with your PR

reduz commented 9 years ago

This is not an rtaudio bug On May 18, 2015 5:37 PM, "OlexiyKravchuk" notifications@github.com wrote:

I was hoping that today it will be fixed with a new RTAudio but it still breaks up with this error. Are there any alternatives that would prevent falls ?.

— Reply to this email directly or view it on GitHub https://github.com/okamstudio/godot/issues/1693#issuecomment-103203328.

SuperUserNameMan commented 9 years ago

I guess it is fixed. So let's close it !

As for rtaudio, we should have discussed it into issue #1684 instead. But @OlexiyKravchuk said he still have the related directsound crash issue.