7 year Godot Engine Game Developer. TRPG & Graphics Designer. Open to inquiries, commission, contracting. Lead programmer on "Not Us" and "Nylon for Godot".
Nylon for
#GodotEngine
is now available in early access! (Link below.)
Nylon is a Deep Dialogue Addon for Godot Engine, allowing sequencing of complex dialogue trees and game actions. It comes with a fully functional example project, and loads more.
@danluu
Someone claiming to be an actual QA tester appeared in the reddit thread, and claims this is bollocks.
Given the same team shipped several expansions right after, this smells like BS.
Game Dev Tutorial: So to then detect the closest enemy in range, we first create a circle collision object and check it each frame for anything inside it. Then you can check the name of the objects and if it contains "enemy" just grab the first one.
Me: <groaning in anguish>
#GodotTips
#GodotEngine
: Here's a new code snippet (untested), a very basic implementation of a weighted pool for picking random entries from. Elements that have not been selected slowly raise to the top and become more likely to be chosen. Using this for random encounters.
#GodotEngine
tip: You can evaluate expressions within the Godot editor using CTRL/CMD + Shift + E. Including generating random numbers, and many other of the global functions.
#GodotTips
#GodotEngine
: How to export a resource without loading it, but still have an automatically updating reference to it, that will persist even if you move and rename the resource.
This circumvents cyclic references with exported PackedScene resources!
#GodotTips
#GodotEngine
: Investigate Task queues! They're neat and let you break down complex actions into nice and simple steps, and let you compose more complex ones easily.
Game Dev Tutorial: So to then detect the closest enemy in range, we first create a circle collision object and check it each frame for anything inside it. Then you can check the name of the objects and if it contains "enemy" just grab the first one.
Me: <groaning in anguish>
#GodotTips
#GodotEngine
: This is a button that cycles through a list of options. Starts on A, click to see B, click again for C, click again for A. Emits an integer index via the cycled button. I'm sure these have a fancy name.
Remember to make your own nodes for stuff! :P
#GodotTips
#GodotEngine
tip: You can configure an override.cfg to change the startup config for your game. This way settings like window mode, resolution, and more, are applied before the window is created. Avoiding an awkward windowed to fullscreen switch on startup.
#GodotTips
#GodotEngine
: Ever wanted to just, pin a Control element to a specific screen position in percent? Like, "10% off the edge of the top left and bottom" or "exactly centered, always".
Anchors can approximate that. (You need to math it out though.) This guarantees it:
#GodotTips
#GodotEngine
: I turned my Scene loading stuff from yesterday into a easily reusable resource.
This is still awful, asking the user to create a resource before they can assign a scene to a property. But at least it will work until the engine solves this issue.
I just added easy blending and masking of textures to
#GodotEngine
BlendedImageTexture2D allows use of almost all Photoshop blending modes right in the editor. And MaskedImageTexture2D allows per channel masking. And: You can NEST these!
No shaders required!
Nylon for
#GodotEngine
is getting prettier. Nodes now automatically rename themselves, including prefixes based on their parents, to better communicate what's happening.
Name an intermediate to advanced topic you wish there was a
#GodotEngine
learning resource on.
Something above "yet another platformer movement system" and below "continuum crowd gdextension" :P
#GodotTips
#GodotEngine
: While Autoloads can not be given a ClassName, they can still extend named classes. More of a funfact... but it can remove code duplication! I use autoloads for my various game states/modes, and that involves all of them having an enable/disable interface.
#GodotEngine
#GodotTips
: Capsule colliders are not your only option! Don't get stuck with "the default" and consider other options. Rays and Cylinders are predictable and feel good for platforming. Splitting the character into tops and bottoms is useful for implementing crouching
#GodotEngine
#GodotTips
: Use move_and_slide_and_snap, when you are in contact with the floor. And use move_and_slide when you jump/start falling.
I think there's a common impression of 'you can only use one' going around...
#GodotTips
#GodotEngine
: How I am **naively** generating UUIDs for tracking savegame -> scene object relationships.
My Scenes generate an ID in tool mode within the editor and stores it. Saves save under it. Objects can now easily pull their data back from the save when I load.
@DUSKdev
There is no *point* to consoles anymore except for the things you can only get on them. ¯\_(ツ)_/¯ The era of buying a cheap dvd/blue ray player that incidentally also plays games is long over.
#GodotTips
#GodotEngine
: A word of advice about Class Names. This is a convention I use in my own projects to achieve 100% strictly typed code where at all possible.
#GodotTips
#GodotEngine
: Got multiple places trying to set the same bool, and are too lazy to manage your responsibilities? Here's a quick and dirty bool object that tracks its state by owner. Could just be an integer, depending on your circumstances.
#GodotEngine
tip: You can easily expand the functionality of the standard and ORM 3D material by converting it to a shader. This includes all the optional features you can turn on and off. To see exactly how they work.
#GodotTips
#GodotEngine
tip: The debuggers 'misc' tab can tell you what control node has been clicked in your live project. And exactly what path it is at. Never wonder 'why aren't my clicks working?' ever again.
Spoiler: All Control nodes with a visual component will block input
Reminded that Godot's static typing is actually all fake, and that while Godot can store export type hints inside resources... it will do so with a hard filepath. Which ofc fucks all your resources when that path becomes invalid.
#GodotEngine
#GodotTips
I've set up a repo for my utilities, which I will start filling out over time. For now it includes my Photoshop-like Blending and Masking Texture types! Come check it out!
#GodotTips
#GodotEngine
: Since 4.0 moved text size to Nodes you can configure the text for each node individually. Yay? Sounds a bit tedious. But you can extend Label and Button with this to turn it into a simple, project wide configurable, dropdown instead!
Take some
#GodotEngine
project structuring inspiration.
Content: Shared Assets and Databases. Core: Generic Systems. Interface: UI stuff. Game: Game specific systems.
Autoloads as glue between systems.
I wish I had never discovered the Scene Inheritance trick in
#GodotEngine
2.1.
The fact it's become a feature still haunts me, having to maintain and support projects where people use it. And the solution is always, to remove it.
#GodotTips
#GodotEngine
tip: Make sure to save your Resources as files. (Materials, StyleBoxes, etc.) This lets you easily find them, and you can load() then anywhere in your project to edit them at runtime. Want to change the font size? load() your theme, and change it!
@LunaFoxgirlVT
Word files are zips full of xml. So are photoshop files. SQLite sounds like overkill, but at least it's not text based. So it'll actually load faster.
#GodotEngine
Themes should expose more defaults. Not just a default font and size. But at least a default_stylebox and default_focus_stylebox. Default text colors too.
There is SO MUCH redundant assigning of stuff in Themes.
TLDR: No you can't use this font. There is no legal means of acquiring the rights to it. There is only lies and dead ends.
At least there's also nobody to sue you over using it...
Figguring out if you are allowed to use a font is the biggest nightmare ever.EVERY font selling website is a scam. Every 'free fonts' website is lying to you.
Dug up the maker of "Scurlock". Turns out he's dead. Every site claims a different author, different license, and company
The number 1 help question for
#GodotEngine
is "how do I send data from script A>B"
The answer is always "use an autoload", which actually just sidesteps the problem of teaching people.
Especially since they just come back with "How do I connect my UI to my autoload?"...
@DannyMacFinn
Any filtering like that will happen after collisions are already performed.
You could put them on different layers. In Godot you get 20.
This doesn't scale well. And you'd still need to justify how an entire physics engine outdoes a for loop. A doubled for loop. See my repost.
#GodotTips
#GodotEngine
: About naming conventions!
I have some weirder ones I've been thinking on. And I think will present in the future once I implement them in my own projects. Namespacing doesn't official exist, but convention can achieve the same... :P
#GodotEngine
Someone wanna give this a shot? You put UI Elements into Sleds, which you can assign to Slots. Slots can share properties via Groups.
This detaches your Element from the usual Container hierarchy to allow animations and a cleaner tree.
Untested code.
#GodotEngine
I wanna make a 2D top down pirate game with semi accurate current, wind, and climate simulation.
Stop me. This is actually hell and not a good idea whatsoever!
#GodotEngine
I need a workaround for Scenes not being allowed to reference each other.
Scene A contains a Node that Exports a Property containing PackedScene B, and the same way the other way around.
It's really a must have...
@NagiDev
It's almost always dependencies.
Also, a Godot install is close to 1GB.
Export templates are part of its size.
In fact, the Godot runtime is quite a bit larger than unity and unreals.
After almost a year I have updated my "How to logically navigate the Godot SceneTree" graph. Enjoy version 2.0! With better visuals, and a new, smarter, way of using Signals among Siblings.
#Godot
#GodotEngine
#gamedev
#programming
@reduzio
Renaming and moving files containing named classes, especially when you move multiple files and they reference each other. Is basically a crapshot. And will require restarting the editor, deleting .godot, and deleting the editors cache. Then opening everything one by one. ->
#GodotEngine
tip: Buttons in 'toggle mode' can be assigned a ButtonGroup resource. This will make it so that only one button can be set to pressed at a time. Great for "Choose one of three." kind of options.
I do wish you could set allowed number of pressed buttons though.
Some of the crazy new magic you can pull of with
#Godot
#GodotEngine
3.2s new canvas layer properties. Here is the same particle effect, rendered _once_, displayed and modulated on several layers. It's similar to how
@teedoubleuGAMES
Door in the Woods might have been made.
I have found my first ever use for Inherited Scenes in
#GodotEngine
. Ask me anything.
They still shouldn't exist, and I **immediately** ran into their pitfalls. But at least I got an intern to take care of it ;P /s
Why is my feed so shit? Yeah no wonder. Twitter has me automatically subscribed to hundreds of things I am explicitly not interested in. Time to untick them all.
I've just published Nylon 0.10.0
#GodotEngine
This includes a complete overhaul of the example project to a new architecture, with clean separation of App, Game, and Interface structures. Also settings management, save games, user profiles and more!
@AlexStrook
get_node() (isn't 'finding' btw), has long been eradicated from my projects.
Either, I export a field of the corresponding type and set it in the editor. Or I use Scene Unique names, eliminating paths.
Nylon for
#GodotEngine
Bit of an example of a more complex scene. This one represents a location that can be visited multiple times. Can you follow the logic?
Feature rich text editor ahoy! Enables automatically when selecting specific types of nodes. GOing to use this for my TextGame/Engine asset.
#GodotEngine
How one might structure a basic Card system in
#GodotEngine
, this image is probably missing a few systems.
Of note is the separation of Card, State, and it's presence in the SceneTree and even its visuals.
(This approach can't do MTG, but it could do HS and Slay the Spire)
Did I mention that Nylon comes with an example project template, that can be used generically for any of your Godot projects too? GameState, Title and Pause menus, options menus, savegame management, simple audio system. Each meant to be easily edited and expanded on!
Nylon for
#GodotEngine
is now available in early access! (Link below.)
Nylon is a Deep Dialogue Addon for Godot Engine, allowing sequencing of complex dialogue trees and game actions. It comes with a fully functional example project, and loads more.
#GodotEngine
Not sure if I like the text and background colors for reading.
That aside, I wrote way too much text and will probably need to clean this page up. (It scrolls for quite a bit... <.<)
Soon!™
#GodotEngine
a Interactive Fiction Engine, Dialogue System, Dynamic Text System, addon. Capable of Sunless Sea, Pillars of Eternity, Visual Novels, JRPGs, and more.
@hiulit
Because fuck the mac ecosystem. Everything about it. I can't debug it. I can't test it. I **have to pay to deploy to it in the first place**.
I can't be relying on a third party to export my builds when I need to test changes dozens of times a day.
@TheAllenChou
I do neither.
It is the root node of a scene that is responsible for hooking up with children, and the children have 0 awareness of their parent.
Remember that you can @ export var my_component: Script, if you need components without nodes.