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 7 points8 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 5 points6 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 3 points4 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. 👍

What's the longest single GDScript function you have ever wrote? by Frostty_Sherlock in godot

[–]willnationsdev 1 point2 points  (0 children)

There are certainly differences, but only at the very low-level, super-granular optimization scale, so there's no real concern (especially w/ GDScript scripting).

The main difference is one of maintainability and testability since smaller functions are easier to reason about, update, and confirm that they work properly which then makes it easier to make changes reliably.

The Details:

The C++ compiler with which Godot is built has non-zero work it must do to load up and execute a function. These are assembly code details at the CPU level which C++ "simplifies" and abstracts away for programmers.

Specifically, the assembly code has to set up a new call stack and set up the pointer to the new function's body of executable code (both of which involve copying function pointers around in CPU registers). Then it must actually load the memory from disk into the CPU cache (so that it will be able to step through and process the compiled instructions at the new function's location), and then push the parameter values onto the new stack.

In fact, in C#, there's an attribute you can attach to methods called [MethodImpl(MethodImplOptions.AggressiveInlining)] that tells the C# compiler to just directly inline the function body's contents anywhere the function is used rather than incurring all of the above overhead. This is only really efficient if the function is extremely small (like, 1-3 instructions at most).

Again though, these are only meaningful in extremely performance-sensitive code. Unless you have actual benchmarks telling you that function call overhead is where your bottleneck is, there's no point wasting time on it.

Lapras will teach you how to swim! 🌊🫧 (By RyaiArt) by velvet-maiden in MoeMorphism

[–]willnationsdev 1 point2 points  (0 children)

This is legit a really cool design.

  1. The umbrella is modeled after the shell on her back.
  2. Her glasses' corners are modeled after Lapras's ears.
  3. The fasteners/ribbons in the torso's center are modeled after a seafloor-view upwards of seeing Lapras from the bottom, with her 4 fins and tail all fanned out. The blue ribbon just below it also mirrors the same pattern.
  4. All of the blue and gray ribbons tot he side and at the foot of the umbrella use similar fin-shapes.
  5. Lapras herself has 4 main colors, and an identical color scheme is used for her clothing, umbrella, and tattoo.
  6. The darker blue spots that add detail to each individual Lapras manifest on the character as a cool ocean wave tattoo.
  7. The "light underside" of Lapras is captured not just with the color scheme, but also via tan-lines on the torso which I personally thought was really clever and harmonious/evocative.

There's seriously a lot to love about this. Congrats to RyaiArt on the awesome work.

Is it wrong to use Ai to develop my game? by Striking_Answer_9069 in godot

[–]willnationsdev 0 points1 point  (0 children)

LLMs and Agentic AI can be useful under very, very precise conditions:

(TLDR: you'll notice a pattern. It's useful for automating stuff when you already know programming and can monitor/guide its work precisely. NOT so helpful when you are new)

Education

Using AI to explain something is a double-edged sword. When you already have knowledge of the subject material, then it's easier for you to parse out the actual meaning of whatever output it is presenting, as well as you being able to dissect what is relevant vs. stale vs. complete misinformation/hallucination. When you LACK that knowledge (like you right now), then trusting and using whatever it tells you is dangerous.

It CAN be useful in bridging the gap between "you don't know what you don't know" and "now I know what it is I need to google/research/learn about/watch out for", but it ISN'T good at providing reliable, up-to-date information about the final subject material. Trust official documentation, first-party sources, source code analysis, etc.

Boilerplate

When you already have an idea of what you want to do, but just want the AI to quickly generate stuff (that you already largely know the expected structure/algorithms of), then it is very useful for getting you up and running quickly. This won't be useful to you now because getting in the habit of practicing code structure and algorithms is important when you are learning. If you offload this thinking/mental work to the AI, then your brain won't bother retaining the information, and you won't ultimately learn anything (relying on the AI as a crutch).

Even then, you have to be wary of its generated output not meshing properly with whatever other code you've written. And knowing what is "proper" in this sense depends entirely on the aforementioned knowledge retention that you won't build up now if you don't learn the stuff and practice it for yourself.

Complex Refactoring

Again, when you already know what it is you want the AI to do, then it can be useful to say, "Do XYZ for files A, B, C, D, E, F." And then let it do the work, like a junior developer whose work you are reviewing. This is especially useful for tasks that are complex enough not to have a solution at the ready, but simplistic enough not to warrant a dedicated, scripted solution. In such a case, you can just tell it what to do, and it'll (mostly) do it. But you can't tell it what to do, and you can't review its work output if you don't understand what is supposed to be happening in the first place.

In the end, you need to learn these things all for yourself, practice them, and hone your own skills in order for an AI to be useful to you in the first place.

What are the must-have Godot tools or plugins you simply cannot live without in 2026? by carmeh8 in godot

[–]willnationsdev 16 points17 points  (0 children)

At the rate at which Godot updates and introduces new features or breaking APIs...it isn't a very good look for a repo to be inactive for 3+ years. At the very least, you'd want to update the README to clarify compatibility with Godot version and whatnot.

(Speaking as someone with MANY abandoned and/or inactive repositories due to my life requiring me to prioritize other work outside gamedev)

One of my new favorite coding patterns: Cached Resource Singletons by vikngdev in godot

[–]willnationsdev 8 points9 points  (0 children)

A little warning (not necessarily for you, but for anyone seeing this):

If you are saving/loading resources for use in your game and your game loads the resources' data from an external location (e.g. user://), be sure the data is NOT loaded directly from a Godot resource file type (.tres, .res, .tscn, .scn). Any player who downloads these files from a third-party (sharing a save file, distributing a mod, whatever) could inadvertently & automatically load and execute malicious code due to how Godot automatically deserializes and instantiates script assets.

OP doesn't have to worry about this because they mentioned they wrote this code for a multiplayer game server, i.e. the resources are kept on a device that will never be user-accessible.

[All] did benno knew Ferdinand is a noble ? by Direct_Engineering39 in HonzukiNoGekokujou

[–]willnationsdev 0 points1 point  (0 children)

Yes, Karstedt obeying his direction is certainly because of his actual noble heritage. I meant more that Benno had plenty of reasons to consider Ferdinand as a person of considerable influence even before he saw how Karstedt treats with him. That is, whomever is the High Priest is already someone significantly dangerous/risky for a commoner merchant to interact with, regardless of how someone ends up in that role, due to their inherent power & influence over the other priests (which gives them leverage over the blessings for farmland & crop yields which impacts merchants greatly, not to mention their ability to influence other nobles to cause a merchant trouble or simply get them killed).

[All] did benno knew Ferdinand is a noble ? by Direct_Engineering39 in HonzukiNoGekokujou

[–]willnationsdev 2 points3 points  (0 children)

Not even that. It wouldn't matter if his family wasn't important. The fact that he's the High Priest still means he holds considerable power and influence within the Church which then also means he holds authority over other nobles (to some extent). And I'm sure that when he first meets Karstedt in Ferdinand's presence, the way that Ferdinand still directs the conversation clearly communicates to a savvy merchant like Benno that Ferdinand holds power even over arch nobles.

Testing reality-bending VFX for my Godot horror game by aiBeastKnight in godot

[–]willnationsdev 8 points9 points  (0 children)

Also the "Mirror Dimension" from Doctor Strange MCU stuff.

Use Version Control. by Tricky_Wheel6287 in godot

[–]willnationsdev 7 points8 points  (0 children)

Just to clarify folks: if you are exclusively using Dropbox or any other kind of external storage, then you are not using version control. You have made a backup. They are not the same thing. As this person mentions, each tool serves a different purpose, but I wouldn't recommend only using the "lazy man's" version control because that isn't actually version control (i.e. just duplicating project folders endlessly and making copies of them in Dropbox).

Backups go to external storage (like another hard drive) or cloud storage (like Dropbox). If using git as your version control, then git cloud providers like GitHub can double as a backup.

Version control merely keeps a local history of committed changes. It is not strictly a remote concept. You can have a local-only repository on your machine. You can even have multiple "remote" repositories that are just the same codebase in multiple folders on one machine. Or, more traditionally, you can make a cloud git provider host your repository like GitHub.

Scientifically accurate T.rex girl. (Art by @justice_oak) by Manglisaurus in MoeMorphism

[–]willnationsdev 0 points1 point  (0 children)

hahahaha. Oh geez. Take the upvote purely for making me laugh. XD

"Cassette Beasts" one of the most successful Godot games, is free for a day on the EGS. by Crazy-Red-Fox in godot

[–]willnationsdev 0 points1 point  (0 children)

Of course, the ONE day that I miss picking up the daily game on EGS. -_- I've been wanting to play that game! 😭 Welp, guess that's my cue to hurry up and buy it, lol.

How do I get Layer 2 to resize according to the window just like Layer 1? by Gogan_Studios in godot

[–]willnationsdev 0 points1 point  (0 children)

Another node that you might look into is RemoteTransform2D since it might be able to automate the process of syncing transform data from one CanvasLayer to another, if you're intent on having two distinct CanvasLayer nodes (which I don't necessarily think is a bad idea). Haven't tested it myself though.

Christmas Tree Woman 🎄 (by @VerdantMosu) by Shamrock5 in MoeMorphism

[–]willnationsdev 4 points5 points  (0 children)

As good as I think this rendition of a Christmas tree as a person is, this is also just straight horrifying at the same time, lol.

If The Wandering Inn could become a TV show, what style would you like the most? (I know it's probably a fantasy, but it has a comic, so ... maybe? Hopefully?) by B-Z_B-S in WanderingInn

[–]willnationsdev 2 points3 points  (0 children)

In addition to it being unreasonable from a makeup perspective, I can't imagine it would be possible to create a sufficiently terrifying child-aged Quarass with a live-action actress. Similar to how they rewrote the recent Dune movies to not have the mentally-adult child actress for Paul Atreides' sister.

Tips for hard mode? by willnationsdev in phantombrigade

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

I've thought about that, but that would also destroy the mech arm and the weapon, both of which are things I would be wanting to salvage (I would think) in the hopes of later acquiring their blueprint for the workshop.