Very nice game, very simple to play but fun and addicting. The only thing a bit bothersome is that there are some moments where I feel the RNG would not allow me to survive no matter what, but maybe I just need to git gud.
Congrats!
This does seem really cool on the onset, I like the mood and I believe others who say it’s very fun. Unfortunately, like some players, I do not understand the mechanics. I don’t need necessarily an in-game tutorial, but just some way to understand what I’m doing. Sometimes I push a thing; sometimes I switch places; sometimes the thing can attack me; and sometimes not. I find no logic to these different events. Just an image card with some base interactions would get me going.
Same here. We’re considering itch as a primary store, but we need regional pricing for two reasons:
From a purely cynical and interested perspective, not having regional pricing leaves a lot of money on the table. A $80 product is simply out of the reach of half the planet; the same people would pay $40 or $20 happily though, and that can double, tripe, or multiply by ten your addressable market.
From an ethical perspective, regional pricing is necessary for justice and fairness. Otherwise, you send a “poors not allowed” message; this is always true, no matter what the price is. A $3 game on itch is cheap to me, but could really sting for someone in a poorer country. Putting it at 0.22c for them makes it cheap for them too, and they can make a purchase decision with the similar constraints to mine.
Further; regional pricing is challenging to implement, but not overwhelmingly so. You need to detect where people are from, show a banner that allows them to opt-in the regional price, and then create a coupon of sorts. The complicated parts are:
Please consider it!
Excellent art and style! I also like the music.
Issues:
I like the game, I think there’s a good loop and fun gameplay.
I think there are a lot of small problems as of right now:
But overall, pretty fun loop, pretty neat gameplay, I’ll be waiting for the next version!
I like this, but it was impossible for me to beat the two bosses, mostly out of confusion because of the bright colors which make it difficult to read what’s going on, and random slow-downs/speed-ups.
What I disliked:
What I’m not sure if I disliked or if it’s interesting:
What I liked:
Good feel overall
There’s something extremely interesting here which I enjoyed playing, but I have a legibility problem with it. I genuinely have to squint to see my character and understand what’s going on.
I think the camera should be more zoomed in, or, alternatively, colors should be more contrasted.
All in all a pretty cool idea and well realized!
I am one of the moderators of the Godot Discord, and a huge huge fan of your work, Mr Cavanagh. Super happy to see you try Godot!
Despite moderating the community, I don’t know everything about the engine, so if I can find the time, I’ll definitely pick up a new aspect to learn this weekend. Looking forward to participate.
And I’ll try to answer any questions here too, if anyone has any (though asking them in more public spaces like the Discord is probably more likely to be fruitful).
Good luck to everyone!
Interesting style, good music, fluid gameplay, cool ideas. I like it, would play more
Problems:
This is a very fun game, with a good hook, beautiful style. I would have the following wishes:
If there were some more mysteries and if the game was a tad longer (not too much! Maybe twice as long), I’d easily pay money to buy it. Heck, I’d ave bought it as it is, but there’s no “pay what you want” button?
Still, an excellent game
I would like to store JSON values as properties of characters, as well as be able to procedurally create dialogues from bits and pieces.
I propose that the method Dialogue.start_dialogue(json_path) receives a sibling method Dialogue.start_from_data(data, character), where data is pre-parsed json (or, in my case, generated).
A possibly better API would be:
Dialogue.set_data(data)Dialogue.set_data_from_file(json_path)Dialogue.start()Then the external Dialogue.start_dialogue API could stay as it is, but use the underlying set_data_from_file.
An additional though: if the two set_data* methods return self, then one can do:
Dialogue.set_data(data, character, context).start()
# or
Dialogue.set_data_from_file(json_path, character, context).start()
Hello! Great plugin.
I’m looking to use it in an RPG where talking with people might trigger actions on those people. For example, a person might be able to barter with you.
Or, a person may like/dislike you for saying certain things.
I know I can run global actions, but I would want to run methods in the context of the character you’re speaking to.
One way I’ve found to do this would be to have an autoload singleton like so:
# Interact singleton
var character
func dislike():
character.love = character.love - 1
func open_barter_dialog():
character.barter.popup()
Then, before starting a dialog, setting Interact.character = current_char, before Dialogue.start_dialogue.
Then, my script nodes can call dislike() and open_barter_dialog.
That works if every character has the same actions, but that means it’s very hard to call a specific command for a specific character.
A more flexible solution would be:
# Interact singleton
var character
func command(command_name: String, args: Array):
if character.has_method(command_name):
var func = funcref(character, command_name)
funcref.call_funcv(args)
And then use in my scripts: command("invoke_devil", ["candles", "sulfur"]).
That seems overly cumbersome and very easy to get wrong.
Slightly different, but related:
How would I get local variables in text variables?
For example, I need a class of characters to change their text based on if they saw the player steal before or not. But each character individually tracks if they saw the player steal or not.
How can do: if current_character.<some value>: branch 1 else: branch 2?
Seems to me like the only way is also to set the character, then read character.has_seen_player == true. Which is ok, but also less practical than having access to a context.
Much easier for both problems would be to be able to do:
Dialogue.start_dialogue(json, character, context), where context is usable to call methods or retrieve values. The @ could be used to denote the local context, rather than global context. Otherwise, another character could be used.
Luciano I have a request from you also, please package all your belongings and tell me when you’re ready, I’ll tell you where to send them.
It’s ok if some of your clothes are old, I’ll accept them. I need your stuff, all of it (you can leave one pair of pants and one shirt for yourself). Please hurry.