inkgd icon indicating copy to clipboard operation
inkgd copied to clipboard

Export web not working?

Open laurentlb opened this issue 10 months ago • 5 comments

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!

laurentlb avatar Feb 23 '25 23:02 laurentlb

did you add the export rule for JSON files ? (by default they are not exported) Look under the "Resources" tab in the export settings

francoisdlt avatar Feb 25 '25 08:02 francoisdlt

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: Image

Image

Is it working for you?

laurentlb avatar Feb 25 '25 21:02 laurentlb

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.

pipejakob avatar Mar 03 '25 23:03 pipejakob

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.

Josvanegmond avatar Sep 27 '25 20:09 Josvanegmond

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?)

laurentlb avatar Oct 19 '25 22:10 laurentlb