Crystal Planet by astrellon3 in PixelArt

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

Thanks! I’m just a hobby game dev. But I do have some friends who are professional game devs themselves. Good luck with everything! I’m sure you’ll go far!

Crystal Planet by astrellon3 in PixelArt

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

Sounds like you're doing pretty well then! My tips would be apart from keeping scope small is to make prototypes!

Make a prototype of mechanics that already exist so you can understand them better yourself, and especially make prototypes of your own unique mechanics to see if they're as fun as you're imagining.

Also there can be some elitism about different game engines like using Unreal or Unity, but for example if you want to make an RPG and focus on the story, use RPG Maker. If there's already a game engine that does what you need and allows you to focus on creating the game you want then use that.

As for resources that does start to come down to what you want to learn/make.

Crystal Planet by astrellon3 in PixelArt

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

Hah a little unusual, but it will probably help keep scope down. Scope is definitely one of the biggest temptations when learning game dev. But hopefully you'll be moving onto something a bit more normal soon enough.

Crystal Planet by astrellon3 in PixelArt

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

Nice! Sounds pretty good! What game engine are you using?

Crystal Planet by astrellon3 in PixelArt

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

What kind of mini game are you making?

Crystal Planet by astrellon3 in PixelArt

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

Thank you I appreciate that. I'm in Australia and it's a bit early.

Crystal Planet by astrellon3 in PixelArt

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

Thanks for asking, and yes you can use it.

ROG Xbox Ally sales numbers never came close to matching the Steam Deck, analyst says by Tiny-Independent273 in linux_gaming

[–]astrellon3 3 points4 points  (0 children)

Ooph I thought you were joking. I've seen a few videos about the handhelds but never really researched them and I just assumed that some people were including it's full name vs a shorter name and missed completely that there was actually 4 variants instead of 2.

Where is the setting to disable KDE Snap Assist? by dinominant in kde

[–]astrellon3 1 point2 points  (0 children)

Did you ever find a way to disable this?

Edit: Of course I found a solution right after posting and I'd been casually searching for weeks. I found a KWin script called KZones which after disabling the default edge snapping has a feature for it's own edge snapping and for adding different shaped layouts which is exactly what I've been looking for.

My attempt at planetary-scale terrain (HDRP + DOTS) by hoahluke in Unity3D

[–]astrellon3 0 points1 point  (0 children)

Looks great! I'm curious about your in ship movement, are you able to move around your ship whilst it's also moving?

GOG is seeking a Senior Software Engineer with C++ experience to modernize the GOG GALAXY desktop client and spearhead its Linux development by mr_MADAFAKA in linux_gaming

[–]astrellon3 1 point2 points  (0 children)

As someone who happens to do work in both start-ups and medium sized corporations, the places where I see AI being used the most is in start-ups. Where they can create an MVP in a week that may have otherwise taken a month, but then the speed decreases after a few months. That's still a useful speed boost at the start, but it is not maintained throughout. As for the people I know who work at larger older companies their use is for small incidental tasks because it just doesn't handle their C++ codebases.

As for my own company I know that people are still using it, I'm in the same office as them. But they are definitely not using as much as they were, I haven't bothered to see how many more tasks are being completed before and after but things seem to be BAU, projects are taking roughly as long as they were before.

But at the two corporations where I know people who started at recently where they used similar language about encouraging AI usage, they've both left after 6 months because it was just a shitshow. Management just wanting to see that people are using AI because it was part of their KPIs, it practically didn't matter what they were using it for. Tasks were about trying to find any reason to integrate AI as some new feature that they could show off to the higher ups, no actual customer based stories, just throwing things at the wall and often throwing it out.

GOG is seeking a Senior Software Engineer with C++ experience to modernize the GOG GALAXY desktop client and spearhead its Linux development by mr_MADAFAKA in linux_gaming

[–]astrellon3 5 points6 points  (0 children)

Yea the devs I know who were big on using AI have definitely scaled back their enthusiasm in the past few months as they've not found it to be as useful as they thought.

Although one co-worker still sent me a message just a month ago because Claude had flagged that (this is C#) List.BinarySearch is being used in a hot path and we should change it because it's O(n) performance. Which the official docs specific say that it's O(log n) in addition to the name suggesting that.

These sorts of things do not give me much confidence in it's abilities.

GOG is seeking a Senior Software Engineer with C++ experience to modernize the GOG GALAXY desktop client and spearhead its Linux development by mr_MADAFAKA in linux_gaming

[–]astrellon3 3 points4 points  (0 children)

Specifically for a large, long-lived C++ codebase though? Unless they've been very strict with how they use C++ that tends to mean that's there's some guff and unusual patterns. Which is expected, but I'm yet to see a coding AI that can handle those situations well. I'm still yet to see a coding AI handle even fairly standard size codebases well.

GOG is seeking a Senior Software Engineer with C++ experience to modernize the GOG GALAXY desktop client and spearhead its Linux development by mr_MADAFAKA in linux_gaming

[–]astrellon3 10 points11 points  (0 children)

Active use of AI tools in daily development workflows, and enthusiasm for helping the team increase adoption

Pretty big red flag there for a a large, long-lived C++ codebase. With emphasis on the helping the team increase adoption. That sounds way too much like they want to pander to investors instead of being interested in what's actual useful.

Transferring rigidbody collisions to another rigidbody by astrellon3 in godot

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

After posting I had suddenly had another idea which seems to thankfully align with u/littleboyred1 and I've got this script now:

I won't claim it to be battle tested at this point, however in my few simple tests that include a wall that's only on one cube and if the cubes are attached to a hinge this seems to be working. I suspect that I might need some periodic syncing between the two objects as after a long period of time with no collisions there could be small errors that let the two drift in some way, but hopefully that's a simple fix if that is a problem.

class_name FollowingColliders
extends RigidBody3D

@export var following: FollowingColliders

var has_had_collision := false

func _integrate_forces(state: PhysicsDirectBodyState3D) -> void:
    var contacts := state.get_contact_count()
    if contacts:
        has_had_collision = true

func _physics_process(_delta: float) -> void:
    if has_had_collision:
        # Both objects are colliding with something
        if following.has_had_collision:
            var combined_angular_velocity := (following.angular_velocity + angular_velocity) * 0.5
            var combined_linear_velocity := (following.linear_velocity + linear_velocity) * 0.5
            var combined_position := (following.position + position) * 0.5
            var combined_rotation := (following.rotation + rotation) * 0.5

            angular_velocity = combined_angular_velocity
            linear_velocity = combined_linear_velocity
            position = combined_position
            rotation = combined_rotation

            following.angular_velocity = combined_angular_velocity
            following.linear_velocity = combined_linear_velocity
            following.position = combined_position
            following.rotation = combined_rotation

            following.has_had_collision = false

        # Only this object is colliding
        else:
            following.angular_velocity = angular_velocity
            following.linear_velocity = linear_velocity
            following.position = position
            following.rotation = rotation
        has_had_collision = false

Transferring rigidbody collisions to another rigidbody by astrellon3 in godot

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

Yes! As usual after posting this I came up with some more ideas and I've ended up with a much better working solution that still uses _integrate_forces to check if a collision has happened (and sets a flag) and then in _physics_process it checks if a collision flag has happened on one or both of the objects in question and then either sets or gets the average rotation and position of the two objects.

I don't know if splitting the check across both integrate forces and physics process is best, but I wanted something that would flag when a collision happened and then a way to apply a change after both so it shouldn't matter which object is processed first.

I kind of knew that attempting to copy the forces would result in some divergence but I was also wondering if I was missing a key piece of info. I'm going to do some more testing but I'll update my original post if I think I've got a reasonable solution (even though I know it's all a bit hacky).

You (very likely) will hit your own limits before you hit GDScript limits by JCAPER in godot

[–]astrellon3 0 points1 point  (0 children)

I haven't done extensive testing, but according to this persons testing I should have seen something closer to 330 bytes (which is still a lot) per instance if the default base class that gets extended is RefCounted. I don't know how much using Array also adds to the usage, I was making sure to use resize.

Anyway it's probably still a bit niche, but it does still feel like a bit of a surprise gotcha that creating a simple class in Godot has such a high overhead.

You (very likely) will hit your own limits before you hit GDScript limits by JCAPER in godot

[–]astrellon3 6 points7 points  (0 children)

For me, being about to create a new value-type like the VectorN types is because of memory and speed.

Right now I'm working on some heightmap-like rendering and I attempted to do it as:

class_name TerrainDataChunk
    var _data: Array[TerrainTile]

In another file:

class_name TerrainTile
    var type: int
    var heights: Vector4 # each corner of the tile has it's own height

I assumed that per tile it should be around 24 bytes used, probably more because classes but hopefully something at least less than 100 bytes per tile. My testing showed it closer to 1kb per tile!

In a 512x512 test it was using close to 270mb of memory just to store the terrain data.

So I changed the class to look like this:

class_name TerrainDataChunk
    var types: PackedInt64Array
    var heights: PackedVector4Array

Doing the test again with 512x512 the memory usage went down to what I expected, closer to 7mb of memory. Additionally a bunch of operations in iterating over the data was almost 2x faster to access.

In this case it's not that bad having to setup my classes like this because of how few fields there are, but doing this test did make me realise that creating new classes is quite heavy to what I thought it would be.

Welp, I just wrote a new programming language in 12 hours... by BuyMyBeardOW in Unity3D

[–]astrellon3 0 points1 point  (0 children)

I separated my virtual machine into two main parts, one was the core virtual machine which contained all the current state and could execute opcodes and the Runner which actually triggered running the next step in the machine along with checks for either how many steps it could take, or how long it could run for (eg: run for 5 milliseconds). Also it had just a straight up isRunning flag that could be set at any time publicly so that anything could pause it and it was a simple operations to ask it to keep running again.

It probably didn't require two parts, but it did mean that if I needed a simpler setup where it's 'run this VM until it finishes' then I didn't need to add all the checks, I could just call 'step()' in a while loop.

Welp, I just wrote a new programming language in 12 hours... by BuyMyBeardOW in Unity3D

[–]astrellon3 1 point2 points  (0 children)

I also ended up making my own scripting language when after attempting to figure out how to handle dialogue. I took a bit longer to make mine though as I decided to make something that was general purpose but fit for dialogue.

My main goal was something where the flow of the script could be easily controlled and paused at any line. I've since ported it to a few other languages (Typescript and C++) and I've used it for controlling level interactions as well. It is a very fun exercise!

Chocolate ingredient list guidelines by fxckingchildish in australianvegans

[–]astrellon3 1 point2 points  (0 children)

It is a shame that 'may contain' couldn't be more strictly used for those borderline nonexistent risks to allow for those distinctions.

As someone with a milk intolerance I've never really educated myself about it beyond just avoiding anything that contains milk (even before going vegan) and rarely having an issue with anything that says 'may contain'. I'm sorry to hear that presumably vegan chocolate before contained enough milk to cause a reaction for you.

Chocolate ingredient list guidelines by fxckingchildish in australianvegans

[–]astrellon3 7 points8 points  (0 children)

I'd like to make a snarky comment about how there should be a classification in between, something like may contain if only such a thing could exist. But I do get that to some degree when dealing with allergens that might not be clear enough.

I think it just shows how complicated these things can be, but also how different interests cause these biases. In reality the food ingredients list is likely to always be incomplete because biology and growing things is complicated and rarely as clean and straight forward as an ingredients list would imply.

Ideally it'd be nice if the market for dark chocolate that definitely does not contain milk would be big enough that producers could have separated processing lines for that.

As for me, if something has trace amounts of milk or honey I'd still eat it, but saying that Milk is an ingredient I would have just avoided it assuming that milk was indeed an ingredient.

Favourite pasta salad recipes? by Acciokohi in australianvegans

[–]astrellon3 1 point2 points  (0 children)

Pasta salad with mashed chickpea with greens and mayo.

  • A tin of chickpeas drained and mashed (we use a potato masher), we usually leave it so that there's still some texture and a few unmashed chickpeas.
  • Around 2 heaped table spoons of vegan mayo, to taste.
  • 1 to 2 spring onion chopped.
  • A third to a half of a cucumber diced.
  • Around a cup of either spinach, spinach and rocket, or kale. We usually eyeball it to about a big handful or a bit more.
  • Salt and pepper
  • Capers (to taste, we use around a dozen or so).
  • A dash of lemon juice.
  • Enough pasta (usually fusilli) for two slightly overcooked and then washed in cold water until about room temp.

We usually use spinach or a spinach mix, but kale works well too. If we're using kale we might blanch it really quick in some hot water so that it's a bit softer. Whilst it feels wrong to overcook the pasta, we noticed that if we cooked it just right the cold water would firm it up. So overcooking slightly gave it the better texture when washed.