Export web not working?
Hi,
I'm using inkgd with Godot 4 (using the godot4 branch of inkgd).
This works well when I run my project inside Godot and when I export it to a Windows Desktop app. However, inkgd fails when I do a Web export.
#@onready var _ink_player = InkPlayer.new()
@onready var _ink_player = $InkPlayer
func _ready() -> void:
# _ink_player.ink_file = load("res://stories/grocery.ink.json")
print("ink_file: ", _ink_player.ink_file.json)
_ink_player.connect("loaded", _story_loaded)
_ink_player.connect("prompt_choices", _prompt_choices)
_ink_player.connect("continued", _continued)
_ink_player.create_story()
func _story_loaded(successfully: bool):
# this is never called
pass
The print call above shows that _ink_player correctly has the compiled json file.
However, _story_loaded is not called.
When I call _ink_player.continue_story(), I get an error (in the JS console):
USER ERROR: The _story is 'null', was it loaded properly?
I'm new to Godot and to inkgd. Did I miss something, or is it a bug?
I've tried loading _ink_player in two different ways, but the same problem happens.
Environment:
- OS: Windows
- Godot version: v4.3.stable.official
- inkgd version: 0.6.0 (copied from https://github.com/ephread/inkgd/tree/godot4/addons/inkgd)
Thanks!
did you add the export rule for JSON files ? (by default they are not exported) Look under the "Resources" tab in the export settings
Yes, I tried with *.json (and other alternatives).
I wanted to check if it was a problem with my project, so I've tried the example in this repository.
Here's what I get:
Is it working for you?
I just started a new project to test this using Godot 4.4 (just released).
In order to get my Web export to work, I needed to enable thread support in the export template, since it is now off by default in newer versions of Godot:
Options -> Variant -> Thread Support = On (checked)
I don't know if this is expected (I am new to inkgd and ink in general), but it worked for me. There are caveats that come with having threading support turned on in Web exports, so I don't know if there's a better solution if you'd rather leave threading disabled.
Thanks for figuring this out @pipejakob , I got stuck here too. If you dont want threaded (it creates some hassle for web versions) you can disable background loading in the ink player:
_ink_player.loads_in_background = false
You can then leave thread support off and it will work. The reason I believe they turned thread support off by default is that it creates security vulnerabilities for web exports.
Just an update on this: I've used Inkgd on a new project and it's working. It was probably related to the thread support as mentioned in the previous messages.
This issue can be closed (after updating the documentation?)