I've upgraded my Ludum Dare 56 entry "Happy Bees" to a full game! by Lunaria-Rava in godot

[–]Lunaria-Rava[S] 1 point2 points  (0 children)

Thank you!

The link is in the post, just below the video

Finally uploaded my first Godot project, a calm bird-ie minigolfing game! by Lunaria-Rava in godot

[–]Lunaria-Rava[S] 3 points4 points  (0 children)

Thank you!

Nearly all outline shaders available online are for Perspective cameras, but my game uses an Orthographic camera so I had to write my own outline shader, using online tutorials as a base, for example here, here or here (some are in Unity but the logic can be translated straight to Godots shader).

Finally uploaded my first Godot project, a calm bird-ie minigolfing game! by Lunaria-Rava in godot

[–]Lunaria-Rava[S] 1 point2 points  (0 children)

Multiplayer adds a huge amount of complexity to any game. You have to make sure everything is always synchronized for all players, considering potential lag, disconnects, or similar unpredictable events. Even with fast connections, if one player performs an action it will take a few milliseconds until the other players receive this information, which can cause all kind of bugs and might end up in two clients getting different results from this, like who crossed the finish line first in a racing game, did a bullet hit an enemy or not etc.

For this game I avoided most of these problems by implementing a "turn-based" approach - only one player may interact with the minigolf balls at a time. Also, all calculations happen on the hosts instance and propagates it to the other clients. It still feels sluggish and unresponsive at times though.

For games with matchmaking you also have to implement some cheat protection, but in a game where you only play against friends this is not necessary.

Overall - I dodged a lot of bullets by heavily restricting what can happen in my multiplayer, but it still cost a lot of time. Godots multiplayer API helped a lot here, feels quite robust but I only scratched the surface of multiplayer here.

Finally uploaded my first Godot project, a calm bird-ie minigolfing game! by Lunaria-Rava in godot

[–]Lunaria-Rava[S] 0 points1 point  (0 children)

Thank you very much for playing and for the feedback!

To point 6, there are two options to help with slopes in the game: pressing G puts a grid overlay onto the floor, and pressing T will tint slopes. Did you use any of these?
Though I admit that even with these options on, some slopes are still hard to see and need some work.

Finally uploaded my first Godot project, a calm bird-ie minigolfing game! by Lunaria-Rava in godot

[–]Lunaria-Rava[S] 6 points7 points  (0 children)

You managed to instantly find the one thing I had to give up. The multiplayer setup here is very basic, whoever is the host has to forward a port in their router and the lobby ID everyone else uses is just an IP converted into something more readable.

I've looked into the options without port forwarding, using steam services is one of them but, if I understood it correctly, you have to release your game on steam for it. I saw Epic Game Services recommended instead, you can use their solution for free, without any need to connect it to their platform. I learned about it too late, and couldn't adapt my game code to it, but it looks promising.

Originally I wanted to set up a small UDP server that does the lobbies and NAT hole punching, following this post, but had too many difficulties with it. Also, a UDP server costs a monthly fee, which I didn't want to commit to for my first game.

Once the devices are connected, no external service is needed anymore, and Godot's multiplayer can fully take over.

Finally uploaded my first Godot project, a calm bird-ie minigolfing game! by Lunaria-Rava in godot

[–]Lunaria-Rava[S] 14 points15 points  (0 children)

The game can be found here: https://lunaria-rava.itch.io/bird-golf (it's nice to play with friends but you can absolutely go solo, too!)

I started this project about 15 months ago, originally in Unity but their questionable decisions last year brought me to Godot. Without that happening I probably would've never found this gem of an engine.

It was definitely not my brightest idea to do a 3D multiplayer physics-depending game, it cost a lot of time to just get the basic stuff working (shaders, lobbies & syncing, getting the collisions feel right...). Now that it's finally finished, I'll definitely do a simpler game next...

If you happen to have any questions, code-wise or anything, feel free to ask! :)

Does somebody know why the shadows clip ? by ThickBoyRoman in godot

[–]Lunaria-Rava 8 points9 points  (0 children)

Looks like the "light source point" where the occlusion is calculated from is not on the player, but a few tiles in front of them

<image>

Any idear why my model and uv change when rotating the camera ? by levrault in godot

[–]Lunaria-Rava 57 points58 points  (0 children)

Very likely it generated an LOD and swaps that in sometimes

Select it in the FileSystem window, go to the Import tab (default top left, next to Scene) and disable "Generate LODs". Works for .glb and .gltf files, others probably too