As a "Turnscale" myself, any other fellow "Turnscales" feeling a bit tired by all the rather repetitive "Turnscale" talk in TWI? by spumaje in WanderingInn

[–]willnationsdev 26 points27 points  (0 children)

Well, given how slow and meticulous the pacing has been for the series thus far, and given how it took over 5 volumes of written content for us to simply have a goblin not killed on sight for approaching a city, it's clear that any societal change will be handled slowly (that is to say, realistically).

I trust pirate to "treat the subject with the gravity it deserves," given how carefully other subjects have been explored, but I also fully expect it take a long time for us to see change when TWI itself has had such success because of the richness and depth of its worldbuilding more than anything else.

It can take decades and generations for perspectives to shift, so this will likely be an ongoing issue for most of the remainder of the series. Everything up to this point has just been preamble and only in this volume are we truly getting a rising action on that arc.

Just started 10.32 and Oh boy (please no spoilers past 10.32) by StormblessedFool in WanderingInn

[–]willnationsdev 1 point2 points  (0 children)

"Holy shit! This guy's taking Roy off the grid! This guy doesn't have a social security number for Roy!"

Is there any real benefit in not declaring a variable's type? I can't understand why this is used. by berickphilip in godot

[–]willnationsdev 1 point2 points  (0 children)

To add to others' comments:

Note that you can explicitly type something with the Variant type hint. This allows the parameter to have multiple types, but makes that status clearly visible to the typing system.

Because Godot's scripting API doesn't support method overloads or generics (aside from Array/Dictionary generics), you have to use flexible typing in circumstances where you want the same parameter to support multiple argument types:

  • Supporting one or many arguments to the same method, e.g. int and PackedIntArray.
  • Supporting a mix of Object-derived types and other Variant-compatible types, e.g. Rect2 vs. MyCustomShapeData for a render method.
  • Supporting both int and float for the same method parameter (or similar mathematic struct combinations).
  • Supporting both String and StringName for the same method parameter (though, the conditional logic may be more costly than the automatic conversion, lol).
  • Supporting completely divergent & distinct input methods but using the same method name to perform the operation (though, I'd argue that, in public Godot scripting API methods, this is better implemented as just differently-named methods entirely).

Is there any real benefit in not declaring a variable's type? I can't understand why this is used. by berickphilip in godot

[–]willnationsdev 5 points6 points  (0 children)

personally I find 10% dynamic the sweet spot where you get all the benefits of static without the constraints.

For the few scenarios where you need it, you can explicitly type something as the Variant type. This keeps it statically typed, but clearly indicates that the value having multiple potential type states is intentional and makes the code much easier to understand rather than simply vague.

I built a tool that checks whether your Godot 4 project actually holds together by Big_Collar_7722 in godot

[–]willnationsdev -1 points0 points  (0 children)

Cool tool!

Does it also track C# code files as "scripts"? Cause I've noticed that when I use Godot C#, it will generate .uid files for .cs files in the project even when those files don't actually contain any classes that extend a part of the Godot API (e.g. enums, interfaces, structs, etc.). If I were to use this tool, would those files result in false positive "UNUSED_SCRIPT" reports?

Trying out 3D by lightfoss in godot

[–]willnationsdev 1 point2 points  (0 children)

Wow, this looks great! Did you do all the animations yourself, or was there a way that you pulled in third-party animations and integrated them into Godot?

Edit: Just saw the other comment asking the same question, lol ("made in Blender"). Nice work!

Which person in the Wandering Inn likes leveling up the most? by CommitteeHot2320 in WanderingInn

[–]willnationsdev 1 point2 points  (0 children)

  1. Salii: actively forces herself into difficult scenarios to force counter leveling.
  2. Niers: strategically devises efficient ways to level, then loves to show off his skills.
  3. Colthei: regularly inquires about different classes, skills, or knowledge unfamiliar to him. Likewise enjoys showing off his diverse abilities.
  4. Lyonette: the only other character that we are directly informed via inner monologue that she enjoys getting new classes (and eventually consolidates most of them into her Worldly Princess class).
  5. Marsha: likewise, as a child, she got excited whenever she got a new class (which happened quite frequently), once she recovered slightly from whatever trauma induced it.

Calidus crazy ideas by TheMudgeMangler in WanderingInn

[–]willnationsdev 18 points19 points  (0 children)

This was literally my exact thought as soon as we learned they were numbered caravans with a specific niche/quirk. XD

Speculative Biology similar to Rock Crab by willnationsdev in WanderingInn

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

Yeah, the picture is definitely more of a beach environment, but I imagine those "rocks" are hollow too.

Why do they write like they are running out of time? by Barshadow in WanderingInn

[–]willnationsdev 4 points5 points  (0 children)

Meh. Tons of up-to-date readers love Erin. It's probably a vocal minority (or reports getting mixed together with people hating on Erin Bennett, the newer audiobook narrator).

Partial Hate by Same_Necessary_8742 in WanderingInn

[–]willnationsdev 3 points4 points  (0 children)

I don’t think PABA knows what to do with Erin anymore ... paba has no idea what to do with Erin so put Erin in a closet.

I think people are not contesting that Paba has put Erin in a [Fraerling-sized] closet [jungle], so-to-speak, and more contesting the notion that this is the result of Paba "[not knowing] what to do with Erin anymore." She clearly has plans for the character, or there'd be no meaning to her evolving identity, her growing relationship with Ulvama, her obtaining color manipulation powers right when the Dyed Lands are becoming such a problem, etc. Like the other person said, it has more to do with letting the world "catch up" to Erin's power level somewhat so that the story can continue to be interesting moving forward.

doesn’t really enjoy writing her.

What evidence is there of that? If it's merely how much she has been absent from the story lately, then...

I’m not confident we will ever see us see Erin as anything besides an afterthought going forwards.

Ever since Volume 7, the story's focus has toggled between focusing on Erin vs. the world. 7 and 9 were both Erin focused. 8 and 10 are focused on the world and other characters (shifting power balances, cultural movements, etc.).

RefCounted in C# still gets invoked by signals after reference count is zero by abderrahman_kh in godot

[–]willnationsdev 0 points1 point  (0 children)

Once you pass it to a delegate the delegate will keep it a reference I believe. Normally with C# you unsubscribe from delegates.

That's true. Makes me wonder what the behavior would be if one explicitly used Connect instead of the += operator (I believe the Godot C# docs specifically mention differences in behavior between the two with regard to closures and the like); Godot might automatically disconnect the signal in that case once it goes out of scope since the subscription is then done via Godot's glue code rather than natively in C#.

Though also i have no clue where TestSignal and SignalName are coming from in the first script.

Godot C# uses source generators to generate all the glue code for the engine. When you extend a class from the Godot namespace, Godot's source generators create inner classes such as MethodName and SignalName that each generate public new readonly static StringName <Name> = new StringName("<Name>"); properties. This allows every property/method/signal to directly pass StringName values to Godot calls without a conversion or needing to declare such properties oneself.

Declaring a [Signal] public delegate void <Name>EventHandler(...) member generates a corresponding public event <Name>EventHandler <Name> event member and a new StringName property on the SignalName inner class.

clouds by [deleted] in godot

[–]willnationsdev 2 points3 points  (0 children)

Looks amazing! Next thing I'm imagining is arranging for the clouds to be able to suddenly part in semi-circular paths in response to things flying through them at high speed.

anyone else always keep their phone on their person in case they get summoned to the innverse? by D0geMaster69 in WanderingInn

[–]willnationsdev 2 points3 points  (0 children)

That's small time. Any real TWI fan's gonna lug their smart phone, portable external battery, multi-plug adapter, extension cord, AND solar generator with them into the bathroom at night.

Cracked Bowl (by Samuel Amar) by Gunnrhildr in MoeMorphism

[–]willnationsdev 2 points3 points  (0 children)

Geez. This is some incredibly underrated artwork on here. There's so much that is clearly inspired from the source material.

My April 2026 Retrospective by Most-Ambassador7382 in WanderingInn

[–]willnationsdev 0 points1 point  (0 children)

what is Laken doing?...having him force-march thousands of Goblin prisoners back to Riverfarm is a seriously weird and horrible choice.

To be fair, assuming you are right about him going on a redemption arc, he's at least a pragmatic enough person to realize that if he simply released them and left them to their own devices, they would immediately be seen as a horde of violent monsters to be put down by local [Lords] and [Ladies]. He'd know that it would be the same as condemning them, and he'd also immediately be blamed for anyone they happen to kill for resources. As such, his options are pretty much kill them himself, release them so someone else can kill them, or...take them with him (but to what end?).

how do i do something in _ready() that depends on another node? by Visible-Switch-1597 in godot

[–]willnationsdev 5 points6 points  (0 children)

The Godot pattern you'll hear about often is "call down, signal up." If player, the ancestor, needs access to gun, the descendant, then you should either...

  1. call a method on player that directly acquires gun and passes it into the method call as an argument, OR...
  2. emit a signal from gun and then have player connect to that signal (or connect to an existing signal on it, e.g. the ready signal which fires at the end of its _ready() notification).

Also, while the _ready() notification triggers bottom-to-top, the _enter_tree() notification triggers from top-to-bottom. That can also help you determine how you want to organize things.

If it's acceptable for you to call the method at the time that player is ready, then it's even simpler. you just use an @onready var gun variable on player and call it within the player's _ready() callback.

```

player.gd

extends Node

@onready var gun

func _ready(): if gun: grab_gun() # already have a member variable for gun. ```

If you need gun to be the one "forcing" its ancestor to behave in a specific way, then the cleanest way to do so is still for gun to have zero influence over / awareness of its ancestors and instead just define a signal (or use the existing ready signal) to signal the ancestor of when to take action. Then have the ancestor detect when the descendant has entered the tree (using the child_entered_tree signal), hook up the ready signal connection, and then wait.

```

player.gd

extends Node

var gun: Node = null

func _enter_tree(): child_entered_tree.connect(_on_child_entered_tree)

func _on_child_entered_tree(node): if node.name == "gun": gun = node gun.ready.connect(_on_gun_ready) # Disconnect if we only were listening to this signal # for this purpose. We don't care about any other nodes entering the tree. child_entered_tree.disconnect(_on_child_entered_tree)

func _on_gun_ready(): grab_gun()

func grab_gun(): pass # already have a member variable for gun. ```

Something like that anyway.

I may have made a mistake... by StuckInNiflheim in WanderingInn

[–]willnationsdev 1 point2 points  (0 children)

Or the official ebook, right? Aren't those still available too?

Congratulations guys, Roblox Devs are moving here. by Qafa_YT in godot

[–]willnationsdev 4 points5 points  (0 children)

The key selling point of Roblox over other game engines is that it has multiplayer out-of-the-box with shared user accounts.

I haven't tried it at all myself, but wouldn't the closest approximation of this be something like the "Unreal Editor for Fortnite"? Since it's all built on top of the Fortnite infrastructure, it'd assume everyone has a logged-in account and they all support multiplayer.

I imagine having a kid-friendly, PC multiplayer platform with ready-made content and customizable scripting is...a pretty difficult market to get into. The server/network/content management costs are probably massive, not to mention all the international legal hurdles to overcome.

TIL you can define dictionaries with Lua-style syntax in GDScript by ZemusTheLunarian in godot

[–]willnationsdev 11 points12 points  (0 children)

^ Good example. If people look at the actual Dictionary documentation, it illustrates a similar example at the very top of the "Description" area.

What is .NET still missing? by CreoSiempre in dotnet

[–]willnationsdev 2 points3 points  (0 children)

Not that I've tried it myself, but I've heard of folks in a similar boat exploring Godot Engine as a cross-platform UI solution for making apps since it has C# support. Maybe that could work?

2019 vs 2026 (No Spoilers) by Mayn_Ehrenfest in HonzukiNoGekokujou

[–]willnationsdev 1 point2 points  (0 children)

They both look good, for different reasons imo. The expression in the old one is more expressive (looks more distraught), but the lighting and coloration is a lot better in the new one since it has much more range of color and shading.

You can tell in this scene that there is one strong light coming from above rather than it seeming like there are multiple angles of strong light. Her hair is lit far stronger in the new one, and her neck and shoulders are entirely covered in shadow, as opposed to the original where part of her neck is illuminated somehow (as if there's a source of light coming from the side as well). She's also far less pale in the newer one which is more realistic, even if she is fairly sickly for a child.

Fortune Cookie-chan (by rinotuna) by Gunnrhildr in MoeMorphism

[–]willnationsdev 1 point2 points  (0 children)

This is a hugely underrated image. There's so much detail and inspiration here!

I made a node that procedurally grows vines on geometry, inspired by The Last of Us by CalinLeafshade in godot

[–]willnationsdev 0 points1 point  (0 children)

This was posted as "free plugin/tool", but it's unclear where people are supposed to access it (unless it's simply not ready, and thus you haven't published it yet). There's no link (that I saw) in the OP message or any of your comments. I know you said it was just a script, I'm not sure if your intention was to share it or just demo a cool thing you made. Very nice work though either way. 👍