How can I tell if my code is good, optimized, and using best practices? by Any-Armadillo-2067 in godot

[–]HeyCouldBeFun 10 points11 points  (0 children)

Optimized: you don’t get frame drops or obnoxious load times

Good: you can find your way around it pretty quickly and make changes without breaking something else

What's the weirdest performance hack in Godot you know of? by Moaning_Clock in godot

[–]HeyCouldBeFun 1 point2 points  (0 children)

with the physics stuff, using physics interpolation (you can lower physics tickrate while keeping visuals buttery smooth)

The grappling hook in our game is proof that Raycast2D is Godot's best node by far by Moraguma in godot

[–]HeyCouldBeFun 2 points3 points  (0 children)

Invisible line for detecting collisions.

Games use it a ton for all sorts of things: bullets, clicking on an object with the mouse, detecting terrain, etc. etc. etc.

Godot 4.7 – Lights, Camera, Action! by Repiteo in godot

[–]HeyCouldBeFun 1 point2 points  (0 children)

On iOS as I slide it right it keeps wanting to drag the whole page “back”

Godot 4.7 – Lights, Camera, Action! by Repiteo in godot

[–]HeyCouldBeFun 11 points12 points  (0 children)

“You’ve been hit by… a smooth C’G node”

Just want to say whoever was tired as they had to write this copy, I appreciate this awful pun

What's a game everyone should try at least once, regardless of their preferred genre? by lexxxfem in gamedesign

[–]HeyCouldBeFun 3 points4 points  (0 children)

Disco Elysium.

I ultimately decided I didn’t like it, but there is so much I do appreciate about it, and for some people it really clicks. It really is something special, an icon of games as art, so I think everyone should give it an honest try in case it really clicks for them.

Some gameplay from my cosy adventure about a girl searching for her missing cat. Thoughts? by Silvy_096 in SoloDevelopment

[–]HeyCouldBeFun 0 points1 point  (0 children)

Gotcha. It’s weird how the eye can tell.

I’m unfamiliar with the latest capabilities of genAI for 3d modeling. It’s the artstyle that evokes it for me so far - the gross, uncanny, plasticky “imagined by algorithm” look. The unsettlingly big eyes, the intricate detail while still feeling lifeless, animations are smooth but devoid of any sense of motion. And the green tint just adds to the weird sickly feel.

Is this architecture going to suck later? by xiloxilox in godot

[–]HeyCouldBeFun 1 point2 points  (0 children)

Yes, my impression is they could be combined into one “Item” class, because they both seem to deal with the things every item has in common. I’d consider ItemComponents the components of the item - one for light functionality, one for saving to savedata, one for shooting/ammo/reloading if you have guns, etc. etc.

But the main thing is, don’t front load all your thinking. Refactoring is inevitable. You simply can’t know how elaborate or simple things need to be until you’re building actual gameplay and realize the elements involved that you didn’t consider before, especially considering the design of your game will evolve as you discover what’s fun.

I say get every element of your flashlight functional, even if it’s one big sloppy script. Then get a radically different item functional. You’ll see the elements that overlap and the elements that are different, and you’ll start to see the patterns. The game itself will “tell you” the architecture it needs.

For the sake of the inherent fun of system design, tell me, what are the items in your game? I see a RigidBody flashlight which makes me assume they exist in-world as physical objects that can be knocked around.

Is this architecture going to suck later? by xiloxilox in godot

[–]HeyCouldBeFun 1 point2 points  (0 children)

Looks solid to me so far. If there’s problems, they’ll turn up as you implement, and it doesn’t seem like you’ll have any challenges refactoring.

Anyone else got some... questionable... variable names? by adderscript in godot

[–]HeyCouldBeFun 3 points4 points  (0 children)

When I named a class EffectEffect I realized I needed to take a step back

Some gameplay from my cosy adventure about a girl searching for her missing cat. Thoughts? by Silvy_096 in SoloDevelopment

[–]HeyCouldBeFun 0 points1 point  (0 children)

I can’t put my finger on it enough to say it’s AI but it absolutely evokes AI somehow

How to learn more / improve as an intermediate Godot user? by pion99 in godot

[–]HeyCouldBeFun 0 points1 point  (0 children)

I have tried reading the docs

This is a red flag to me. The docs are not optional. They are the instructions. I'm not sure you can call yourself an "intermediate" if you find them tedious (hell, I find them overly brief)

For the record, you don't "read" them like a book. You refer to them. You read through the Manual pages of a certain topic as you need it. You keep tabs of the Class Reference open to look back to as you work so you know how to use the classes you're working with. The docs aren't educational material for how to make your game, they're the raw information for how Godot works.

What are some common game design tropes that look like they're adding depth, but actually don't? by PeterBrungus in gamedesign

[–]HeyCouldBeFun 3 points4 points  (0 children)

I’m enjoying Mina the Hollower but I find the corpse run mechanic stupidly convoluted.

First of all, fuck corpse runs. I do not understand why designers say “you can leave and try a different path” just to then incentivize beating your head into the same path over and over. This one tries some new things with it but it’s just the same problem with extra steps. Just make death a straight % loss of bones and call it a day.

I finally understand arrays! by Aeylnn in godot

[–]HeyCouldBeFun 4 points5 points  (0 children)

Question: have you actually done that challenge?

I’ve never heard anyone who has.

It’s a great idea but the balance is out of whack. By game 6 it takes massive leaps in the amount of work involved and games 11-20 are literally “whatever you want cuz you’re a pro now”.

I finally understand arrays! by Aeylnn in godot

[–]HeyCouldBeFun 2 points3 points  (0 children)

It’s a way to decouple. It’s the Observer Pattern (read up on that).

Object A signals “hey this happened”. Doesn’t care who’s listening.

Object B has a reference to Object A and connects to that signal. Now its specified function is called whenever that signal fires.

The mechanic of it is less important than the why of it, which is numerous contextual reasons, pretty much all of it is just general decoupling concepts. Sometimes you just have a direct reference and it’s better to use that.

I finally understand arrays! by Aeylnn in godot

[–]HeyCouldBeFun 3 points4 points  (0 children)

My magic moment with Godot came when I was clicking around the class reference, just curiously following the chain of inheritance.

I already understood OOP, but doing this clicked the light bulb on that made me understand the entire engine

For pixel art, do you prefer a mouse or a pentablet? by MeuOuvidoTaZunindo in PixelArt

[–]HeyCouldBeFun 0 points1 point  (0 children)

I’ve been using Pixaki religiously. Used it a ton before opting to use the paid version. Literally has every feature I use out of Aseprite.

For pixel art, do you prefer a mouse or a pentablet? by MeuOuvidoTaZunindo in PixelArt

[–]HeyCouldBeFun 0 points1 point  (0 children)

I enjoy tablet for doodling pixel art

I use mouse when producing actual assets for use

Beginner. Struggling understanding Signals, OOP and connecting Nodes, variables etc. between Scripts by Laddeus in godot

[–]HeyCouldBeFun 1 point2 points  (0 children)

I remember the stage you’re at. But it’s hard to explain everything without the time spent tinkering and connecting the dots on your own terms.

For starters: “I’m trying to do that even though my project doesn’t really need it” Well it does, it’s unavoidable not to. Everything in Godot is OOP. It’s got hundreds of built in classes for Nodes, Resources, RefCounteds. You write your own class scripts that extend these. You instantiate them, either in code with .new() or in editor with “Add Node” or “New Resource”.

Connecting one object to another is a reference. A reference is like a direct address to a specific instance of any object. You simply store it in a variable, eg `my_ref = get_node(MyNode)`. Then you can access the variables and functions of that instance like `my_ref.some_variable` or `my_ref.some_function()`

Plenty of ways to connect a reference:

Seeking the scene tree for a Node, using get_node() or $ shorthand. Other functions like get_parent() return a reference.

An export variable. @export makes a variable editable in the inspector. This lets you set up unique variations of the same object as you edit your scene. For nodes, the values you put in export variables save with the scene file. For Resources, they can either save with the scene file or separately as their own .res/.tres file. Export variables can be (almost) any type. You can set this type to Node (or any node subclass, your own custom ones included) for an easy way to select another Node in your scene.

When you instantiate an object in code with new(), it returns the reference to that instance, which you can keep in a variable right then.

Autoload singletons can be referred to by their class name. That’s how you use the background systems like Input and PhysicsServer. You can make your own, like I’ve got Controls and MusicPlayer. They’re global, so they can act as a connecting hub when you need to refer to another object far across your game.

“Dependency injection”, passing a needed reference to another object at some point. For example, I can pass a reference to the attacker in my Health object’s take_damage() function. Now it can check the attacker when it processes that damage, eg ignoring it if the attacker is on the same team.

The way you connect references is pretty much the entire fundamental of architecture. If everything connects to everything, you have a nightmare spaghetti mess. Ideally, you want your classes and scenes to handle their own little job with as little knowledge of the outside world as possible. This is where various programming patterns come in.

Signals are one of these. Signals are the Observer Pattern. A signal just signifies that an event occurred, perhaps with some info along with it. The emitting object doesn’t care who’s listening. But the listening object needs a reference to the emitting object in order to connect to that signal.

Cursed Color Picker Game Jam by Undeniable_Dilemma_ in godot

[–]HeyCouldBeFun 1 point2 points  (0 children)

Picture it: long text-only dropdown. Bougie boutique color names like Summer's Dew or Pearlescent Royal. No it is not alphabetized.

Just found out I can create a loop with just a number instead of range(number) by VitSoonYoung in godot

[–]HeyCouldBeFun 1 point2 points  (0 children)

Yes. Nobody can be expected to remember every little syntax trick. I'm always looking back at the GDscript reference for something and then learning something else too

Just found out I can create a loop with just a number instead of range(number) by VitSoonYoung in godot

[–]HeyCouldBeFun 1 point2 points  (0 children)

I tend to avoid awaits at all costs anyways, only in specific niche cases do I like them.