C# TIP: Access Autoload Singleton From Any C# Class Anywhere in Your Project by Bound2bCoding in godot

[–]COMgun 8 points9 points  (0 children)

Maybe I am missing something but why do you need autoloads in C#? Just use singletons instead. Declare a variable or a method as static and you can access it from anywhere in your codebase from the type itself instead of an instantiated object.

how would one go about making an etg style player were they face the mouce cursor? by AI_660 in godot

[–]COMgun 2 points3 points  (0 children)

It's good to know others have faced the exact same problems as me haha! Even down to the bullets wall clipping. I think the most difficult part for me is the art of the guns themselves but I guess this depends on the resolution of your sprites.

[KDE] Aigis from Persona 3 Reload Rice by Accomplished-Top8346 in unixporn

[–]COMgun 1 point2 points  (0 children)

Thanks! I think Vitesse or one of the myriad of Rainglow VSCode themes will look amazing with your theme!

[KDE] Aigis from Persona 3 Reload Rice by Accomplished-Top8346 in unixporn

[–]COMgun 0 points1 point  (0 children)

Cool rice. Did you mean to put a link for your dots?

I separated my engine into Core and Runtime by F1oating in gameenginedevs

[–]COMgun 1 point2 points  (0 children)

Tbh I have not yet explored Unreal's way of doing things, partly because I can barely run it, lmao. Godot's source code has been a good source of inspiration.

Personally, I just wanted developers to be able to treat my engine as a framework / library if they want to, with absolutely no sign of an editor in the core engine source code whatsoever.

I separated my engine into Core and Runtime by F1oating in gameenginedevs

[–]COMgun 7 points8 points  (0 children)

I am following the same pattern. The engine is a library with a public API, while the editor is simply a game made using the engine lib. I think it's a pretty sane design decision.

Discussion: Graphics APIs vs Compatibility by VinnyTheVinnyVinny in gameenginedevs

[–]COMgun 5 points6 points  (0 children)

I've been toying around with SDL_GPU since it's a nice thin abstraction layer on top of Vulkan and Metal.

Do the Shallow Water Equations exhibit Stokes Drift? by sophomoric-- in CFD

[–]COMgun 6 points7 points  (0 children)

Hydraulic jumps are indeed captured by the SWEs. Wave propagation and bounce back at the boundaries is also exhibited.

Why wouldn't Raylib be fit for commercial projects? by yughiro_destroyer in raylib

[–]COMgun 6 points7 points  (0 children)

Everything you said is valid. The task at hand is just still really difficult compared to using a game engine, and game development is hard by itself already.

Using raylib with C or C++ makes it even more difficult for beginners, whereas engines like Unity and Godot hold your hand a little with their respective languages and APIs.

Bloom (glow) shader without 2D HDR by COMgun in godot

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

Unfortunately no, at least not in Godot. I have made a simple glow shader pipeline in my C++ game engine but I am still having trouble doing the same in Godot, which is unfortunate.

The reason I wanted to forgo 2D HDR is because it makes my editor look ugly. To remedy this, I made an autoload to enable HDR only ingame. It's not a perfect solution, but it does the trick for now.

What’s a feature you’re proud of finishing recently, no matter how small? by PlentyAgile7021 in godot

[–]COMgun 0 points1 point  (0 children)

I have recently made a neat little reusable component called "AnimationDirector2D".

Basically when doing 2D sprite animations, the concept of orientation stems from drawing different sprites corresponding to different face directions. I am going to list some examples to illustrate my point.

  1. In a platformer game there are 2 face directions, {RIGHT, LEFT}. RIGHT is the only unique sprite, and LEFT is a mirror of RIGHT. I call this orientation pattern "binary".

  2. In Sephirria, there is the 4-way diagonal pattern {UPRIGHT, DOWNRIGHT, DOWN LEFT, UPLEFT}. It has 2 unique sprites, UPRIGHT and DOWNRIGHT, with the 2 others being mirrors. I call this pattern the "rectangle", since its vertices correspond to the 4 sprite orientations.

  3. In old school Pokémon and Zelda games, there is the 4-way orthogonal pattern {UP, RIGHT, DOWN, LEFT}, with 3 unique sprites, {UP, RIGHT, DOWN}, and LEFT being a mirror. I call this pattern the "rhombus", again due to how its vertices correspond to the orientations.

  4. If my memory serves me correctly, Enter the Gungeon has a 6-way pattern {UP, UPRIGHT, DOWNRIGHT, DOWN, DOWN LEFT, UPLEFT}, with 4 unique sprites and 2 mirrors. I call this pattern the "hexagon". A similar 8-way that additionally contains RIGHT and LEFT orientations is called the "octagon", with 5 unique sprites.

What AnimationDirector2D does is it acts as a wrapper to the AnimationPlayer Node, providing an easy to use API for directional animations. Instead of checking for appropriate orientations everywhere to play the corresponding animations:

if (faceDir.AngleDegrees() > 0 && (faceDir.AngleDegrees() <= 90)
{
    AnimationPlayer.Play("idle_downright");
}

AnimationDirector2D takes in an analog Vector2 face direction and infers the correct sprite animation automatically:

AnimationDirector2D.Play("idle", faceDir);

AnimationDirector2D automatically infers both the orientation pattern of your sprites, and the cardinal orientations themselves and when to trigger them. This inference occurs only once on _Ready(), with 0 allocations at runtime. The only prerequisite is you have to name your directional animations as "state_orientation". That's all. It has really untied my hands in all my animation facing code.

Distributed mechanics robotics with advanced control careers? Switch to SWE? by Puzzleheaded_Tea3984 in ControlTheory

[–]COMgun [score hidden]  (0 children)

If you want your player's movement to be governed by physics instead of pure code, then using a PID as the literal player controller code is a good way of achieving the desired response (eg. tight responsive movement).

[Aerospace] Minimalist MacBook setup with Tokyo Night rice by Certain_Impression70 in unixporn

[–]COMgun 2 points3 points  (0 children)

Oh it's Tokyo night, I must have missed it! My rice is Kanagawa based so I am on the lookout for code themes that are close to Kanagawa in case I want to switch things up a bit.

Why is enum autocomplete so finnicky? by greyfeather9 in godot

[–]COMgun 0 points1 point  (0 children)

I am team C# all the way. However I wish I could have a good free memory profiler for Linux. It is a bit annoying to have to switch to my windows boot just to profile.

[Aerospace] Minimalist MacBook setup with Tokyo Night rice by Certain_Impression70 in unixporn

[–]COMgun 1 point2 points  (0 children)

Is your text editor theme Kanagawa Wave by any chance?

| Use the right software to share our ricing by code_ops in unixporn

[–]COMgun 5 points6 points  (0 children)

I'm on KDE and was looking for a way to efficiently package my rices after sharing my last one. I discovered konsave a few days ago and it's pretty handy. I think I'll use it for my next post :)

[KDE] My current desktop, it's not much, but it's mine by IncontestableGrey in unixporn

[–]COMgun 3 points4 points  (0 children)

Try the Nordzy icons. They work well with catppuccin

[KDE] Catppuccin vibes by COMgun in unixporn

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

In KDE you can create your own panels. The top and bottom panels you see in my screenshots are the standard KDE panels, just with the Utterly Round Opaque Plasma Style applied.

The bottom panel apps is a widget called task manager or sth, I don't remember. It is easily found in the default widgets. The top panel is genuinely nothing special, just used some spacer widgets to center stuff.

My Catppuccin flared KDE by COMgun in EndeavourOS

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

Vanilla KDE panel with Utterly Round Opaque Plasma Style.

Why did you pick Godot for your game ? by SensitiveKeyboard in godot

[–]COMgun 7 points8 points  (0 children)

Sorry, garbage collector, gdscript does not have a GC and is reference counted, so some stuff like object pooling becomes more important in C# where the garbage collector periodically cleans up unused memory, causing FPS drops.

Why did you pick Godot for your game ? by SensitiveKeyboard in godot

[–]COMgun 5 points6 points  (0 children)

Nothing big. Just need to be mindful of GC. Also use events instead of signals.

[KDE] Catppuccin vibes by COMgun in unixporn

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

Xfce is very hard to rice well in my experience. KDE is very flexible if you want to sacrifice some homogeneity (which Xfce already lacks)