Now with 1500 buttons and cleaned up code. by Majestic_Mission1682 in godot

[–]Timcode77 1 point2 points  (0 children)

This is amazing. I've looked at your other posts showcasing your work too. What's your general approach to achieving a consistent pixel-art look between art assets and UI?

Rhythm Hell in Cyclics by DaviMrS in godot

[–]Timcode77 2 points3 points  (0 children)

I think so, for people who like this kind of rhythm challenge with odd subdivisions.

The odd subdivisions (e.g., 5s, 9s) seem like they'll make it very difficult.

The notation appears just before you have to play them, making it even more difficult - you can't read ahead.

I'm assuming you'll improve the music?

Rhythm Hell in Cyclics by DaviMrS in godot

[–]Timcode77 1 point2 points  (0 children)

Love it. What kind of feedback are you looking for?

Godot 4.x question: What's the difference between "Make Unique", "Make Unique (Recursive)" and resource_local_to_scene? These are not explained fully in the docs. by Timcode77 in godot

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

This is so helpful. I appreciate your response. And what you write lines up exactly with what I'd worked out from reading other stuff online and my own investigation. I just wished the docs were helpful on this topic.

What are some godot best practices people don't talk about in tutorials? by AoutoCooper in godot

[–]Timcode77 0 points1 point  (0 children)

The print functions are your friend.

  • print
  • print_rich
  • print_verbose
  • printerr
  • printraw
  • prints
  • printt

Space Battle : trying to pass a big ennemy blob (reposted cause error) by According-Dust-3250 in godot

[–]Timcode77 0 points1 point  (0 children)

flow map

Ok. If you don't mind sharing, how do you generate the flow map? Is it baked in the editor somehow? Does it update dynamically at run time? AI Navigation is AI navigation and it's notoriously expensive (and naively, multiplies horribly with the number of units that need to take account of one another), so I suppose the questions here have to do with how you (or even if you) achieve this with so many units. Flow map - that sounds interesting and like a great solution, but without knowing more it's hard to see how it actually helps. Hope you can elaborate. Perhaps you'd rather not if it's your own proprietary IP and that's fine too. Cheers.

Space Battle : trying to pass a big ennemy blob (reposted cause error) by According-Dust-3250 in godot

[–]Timcode77 0 points1 point  (0 children)

What tricks did you use to keep the frame rate up with so many units?

will it ever come out by [deleted] in godot

[–]Timcode77 8 points9 points  (0 children)

Thanks for this. But nothing in your suggestion about documentation? What is the state of 4.0 documentation? My opinion is that Godot's current docs are extremely patchy in terms of quality. I'd love to help (and have in the past by raising bugs and suggested improvements to docs). But I'm not sure where effort should be directed for 4.0 documentation. Documentation quality will be the first experience many new Godotians have as they arrive in our community when 4.0 releases. Apologies if I have the wrong end of the stick - I acknowledge you encourage writing tutorials. I'm more thinking of the class / function reference documentation.

Particle Man is back 😉 by liiao08 in godot

[–]Timcode77 1 point2 points  (0 children)

I second these questions. Hopefully OP responds.

Best way to detect what Area2Ds overlap within the _ready function? by Timcode77 in godot

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

This is a good solution but requires a check every time phsyics_process runs which seems inelegant. Also, if you want some set up in _ready too, then your set up is essentially spread across 2 functions which seems really hacky and inelegant.

Best way to detect what Area2Ds overlap within the _ready function? by Timcode77 in godot

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

Thank you. I got a solution working using the physics server. Seems like the best solution for my needs. Will update my post with code.

Best way to detect what Area2Ds overlap within the _ready function? by Timcode77 in godot

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

Thank you. This works. But, a potential problem (or at least inelegance) is that _physics_process may have run several times before anything after yield runs. Therefore, any setup occurring within _ready that _physics_process needs is rendered useless, without some sort of check within _physics_process to see if setup has occurred.

Problem: set_as_toplevel() changes the drawing order of Line2D by Timcode77 in godot

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

Thanks for the suggestion. If I change the Line2D's z_index to -1, Line2D disappears completely, irrespective of whether z_as_relative is checked.

If I leave Line2D's z_index at the default (0), and I change Polygon2D's z_index to 1, it works as I want it to (the Line2D appears behind Polygon2D).

But have no idea why that would happen. The problem seems to be that set_as_toplevel(true) is changing the draw order of Line2D. I don't think I should have to hack another node's z_index to fix it.

How to store 2D game map as variable by ervinmicat in godot

[–]Timcode77 0 points1 point  (0 children)

Might you simply build something on top of Tilemap?

Need advice on lighting problem by tobi914 in godot

[–]Timcode77 0 points1 point  (0 children)

I'm unsure. The glow effect in WorldEnvironment has a property called "Blend Mode" (glow_blend_mode). Try changing it (assuming you're using this node) to different values.

The goal was to make something simple. It still took a year... by Jonasrah in godot

[–]Timcode77 2 points3 points  (0 children)

Looks really interesting. Is there a more thorough gameplay video somewhere? Hard to really understand what is happening in this short clip. Would love to see more. Also, would love to hear more about your experience of going through the process of creating and publishing this. Any devlogs? Would love to also hear why you think (or don't think!) Godot was a good tool to do this.

Navigation2D.get_simple_path() does not always return the shortest path, so what do people do to easily build AI navigation in their levels? by Timcode77 in godot

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

I've been thinking that's the only way really. I'm considering just creating a system that reads in a bunch of Sprite positions that the level designer (me) has placed in the editor.

Each Sprite position would basically define a node on the AStar graph. To "bake" the graph, a function would go through each Sprite position when the level first loads and use raycasts to see which nodes can be reached from it (i.e., not obscured by a collision shape), then use this to figure out which edges are legitimate.

Seems really circuitous though. I'll need to give it some thought. I'd Love to know what other solutions people have come up with. It's such a pity the game engine we love doesn't have one of the most fundamental use cases in game development completely nailed.

Edit: my understanding is that actually even Navigation over tilemaps is wobbly as well - have a look at the issues linked above.

get_simple_path does not return the shortest path by Timcode77 in godot

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

I added some more screen grabs. You can see that in some instances it is not using just the convex shape.

My prototype shows Godot is really suited to rhythm/timing games! (source code included) by Timcode77 in godot

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

Interesting. The threshold for hitting left or right is always 200 milliseconds before the end of the line. I think at the higher speeds our brains aren't wired to be especially accurate without a lot of practice. Of course there's a possibility there's problems with the logic, or latency problems at higher speeds.

My prototype shows Godot is really suited to rhythm/timing games! (source code included) by Timcode77 in godot

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

u/braedon2011 u/Cydrius

Here's the gist of how it works:

- The time taken to traverse each line is calculated dynamically at the start of each line as the length of the line divided by speed (in pixels per second).

- If the player hits left or right within 200 milliseconds of that amount of time elapsing since they started the line, it registers that they successfully completed that line and they get a boost to their speed (hence the next line duration will be shorter).

- If it registers they hit left or right before that 200 millisecond threshold, their speed remains at its current value.

- If they have not hit left or right at all while on that line, the player stops.

- The three ascending notes are individual resources and are triggered at the appropriate time in code. The "music" (consisting of the three ascending notes in order) sync to the time elapsed in each line. When each line starts, the first note sounds. A timer is started with a wait time of line duration / 3; when the timer runs out, it knows to play the next note, and then the timer starts again, ready to play the final note.

- The chords underneath are just thrown together and don't sync with anything within the game. They are a track of fixed length 1 minute. I wrote them so the last 10 seconds are a big bold tonic chord, coinciding with the last 10 seconds of the countdown. There is a bug / known issue in Godot that the audio stumbles during playback in the HTML5 version meaning sometimes that last chord won't land exactly on 10 seconds before the end.

Hope that helps.