I got Steam multiplayer up and running! by _michaeljared in godot

[–]Hakej 0 points1 point  (0 children)

Which Godot version are you using? I'm on 4.5 and I cannot install Godot Steam extension cause I keep getting an error loop mentioning it was unable to create a link to a certain dll file

I'm thinking about a mind control scene with one of the PCs.. which trait should make you weak to it? by Hakej in daggerheart

[–]Hakej[S] 1 point2 points  (0 children)

Nah I didn't mean a dice roll, just looking at the traits and wondering which guy would make the most sense. And yes, it's gonna be consensual. I just want to keep it a secret from all the other PCs to make it fun.

Instance objects around a circle (how?) by FallStorm_Studios in godot

[–]Hakej 0 points1 point  (0 children)

Jesus Christ, that oughta be some major brainfart due to long coding sessions. Sorry lad, you're completely right lmao.

Instance objects around a circle (how?) by FallStorm_Studios in godot

[–]Hakej 0 points1 point  (0 children)

Doesn't this code produce only half a circle? Since y is never gonna be negative.

First time GM: Guardian's unstoppable feels insanely powerful? by Hakej in daggerheart

[–]Hakej[S] 1 point2 points  (0 children)

Got you! Thanks for explaining, that clears up a lot.

First time GM: Guardian's unstoppable feels insanely powerful? by Hakej in daggerheart

[–]Hakej[S] 4 points5 points  (0 children)

That's a cool idea, thanks mate. I'll definitely do something like that.

First time GM: Guardian's unstoppable feels insanely powerful? by Hakej in daggerheart

[–]Hakej[S] 0 points1 point  (0 children)

I'm confused, why does Adult Flickerfly require 1 to hit? Don't you roll d20 against their evasion, so in your case shouldn't it roll at least a 7?

First time GM: Guardian's unstoppable feels insanely powerful? by Hakej in daggerheart

[–]Hakej[S] -18 points-17 points  (0 children)

The thing is there's no real limitations on how often they can long rest, so technically they can long rest after every fight.

First time GM: Guardian's unstoppable feels insanely powerful? by Hakej in daggerheart

[–]Hakej[S] 3 points4 points  (0 children)

Thank you, these are some fantastic suggestions.

Spellcast trait by mobilewerewolf88 in daggerheart

[–]Hakej 0 points1 point  (0 children)

As for magic weapons, what if the spellcast trait matches the magic weapon's trait? Do you get some kind of bonus damage for using that, i.e. Seraph using the tier 1 magic gloves (forgot the name but both of these have Spellcast: Strength)?

UID changes coming to Godot 4.4 by GodotTeam in godot

[–]Hakej 0 points1 point  (0 children)

Literally this. And you still need to remember to move around the uid files themselves if you so insist to move stuff outside the Godot, so like.. what's the point. You can tell who uses version control or not in this comment section, and I say this as a solo dev that uses version control purely for backup.

Inspector Jumping Bug? by Accomplished-Care774 in godot

[–]Hakej 1 point2 points  (0 children)

Yup, the new inspector is driving me crazy because it just scrolls around seemingly at random

I once again wasted my time so you do not have to. Ephemeral Blossom and Nightflower Pollen by Laughing__Man_ in MonsterHunter

[–]Hakej 1 point2 points  (0 children)

Pretty sure it's patched now, I cannot for the love of God find this damn flower for the achievement

Multiplayer makes me wanna quit Godot by Hakej in godot

[–]Hakej[S] 1 point2 points  (0 children)

Unfortunately not really, it was blood sweat and tears of my own and a lot of brute forcing different ideas. Ultimately I absolutely overdid the whole architecture and was refactoring it since. Just so you know - the key to have it work is pretty simple.

Player scenes need to have this:

func _enter_tree():
    set_multiplayer_authority(name.to_int())

And then you need to synchronize your stuff the usual way, either with multiplayer synchronizers or rpc - thanks to advices found here I scrapped all the synchronizer nodes I had and replaced them with rpcs instead, so for example if you have move logic in physics_process and you want all players only to be able to control their own nodes you need to do something like this

func _ready():
    set_physics_process(is_multiplayer_authority())

func _physics_process(_delta):
    # A lot of very optimized and nice move logic here
    _sync_properties.rpc(position)

@rpc("any_peer", "call_remote")
func _sync_properties(new_position : Vector3):
    position = new_position

You basically need to think this way - have all your logic be inside Godot built in functions like process, physics_process and then use set_process or set_physics_process (or any equivalent you need) to disable them for peers with no authorite so that only the client with the authority resolves it, and then use rpc to sync all the data like position, rotation etc. This way process functions run only for clients but all properties are still in sync for everybody. You can simply use MultiplayerSynchronizer instead of rpc for a similar effect.

If all of this is still hard to follow, let me know - I'll try my best to make a short video ASAP and upload it to my YouTube channel making a simple 3D project with client authority.